diff --git a/.gitattributes b/.gitattributes index 00934f6efe..0966454ca4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,7 @@ *.vcxproj merge=union *.sln text eol=crlf *.bat text eol=crlf +athena-start text eol=lf configure text eol=lf configure.in text eol=lf Makefile text eol=lf diff --git a/.gitignore b/.gitignore index 2a3be490db..1fe0e65709 100644 --- a/.gitignore +++ b/.gitignore @@ -46,10 +46,6 @@ Thumbs.db /3rdparty/libconfig/*.o /3rdparty/libconfig/obj -# /3rdparty/mt19937ar/ -/3rdparty/mt19937ar/Makefile -/3rdparty/mt19937ar/*.o - # /3rdparty/yaml-cpp/ /3rdparty/yaml-cpp/Makefile @@ -86,10 +82,6 @@ Thumbs.db /src/map/obj_sql /src/map/pcre.h -# /src/test/ -/src/test/Makefile -/src/test/obj - # /src/tool/ /src/tool/Makefile /src/tool/obj_all @@ -101,50 +93,11 @@ Thumbs.db /tools/*.ilk /tools/*.pdb -# /vcproj-15/ -/vcproj-15/char-server -/vcproj-15/login-server -/vcproj-15/mapcache -/vcproj-15/map-server -/vcproj-15/*.user - -# /vcproj-14/ +# Visual Studio .vs *.VC.db *.VC.opendb -/vcproj-14/char-server -/vcproj-14/login-server -/vcproj-14/mapcache -/vcproj-14/map-server -/vcproj-14/*.user -# /vcproj-13/ -/vcproj-13/char-server -/vcproj-13/login-server -/vcproj-13/mapcache -/vcproj-13/map-server -/vcproj-13/*.user - -# /vcproj-12/ -/vcproj-12/char-server -/vcproj-12/login-server -/vcproj-12/mapcache -/vcproj-12/map-server -/vcproj-12/*.user - -# /vcproj-10/ -/vcproj-10/char-server -/vcproj-10/login-server -/vcproj-10/mapcache -/vcproj-10/map-server -/vcproj-10/*.user - -# /vcproj-9/ -/vcproj-9/*.user -/vcproj-9/char-server -/vcproj-9/login-server -/vcproj-9/map-server -/vcproj-9/mapcache /.idea/.name /.idea/misc.xml /.idea/modules.xml diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..79e1657538 --- /dev/null +++ b/.mailmap @@ -0,0 +1,197 @@ +################################################################## +# This maps commits from different aliases to the same account # +# # +# Always try to map to the GitHub username and try to use the # +# @users.noreply.github.com mail addresses where possible. # +# The entries are sorted ascending by the username. # +# # +# If you want to have your mail changed feel free to contact us. # +# # +# If you know any of the missing commiters please also let us # +# know. # +# You can generate the list of commiters with: # +# git shortlog -sne # +################################################################## + +################################################################## +# SVN Users # +################################################################## +ai4rei +Akinari1087 +Akkarinage +aleos89 +Baalberith6 +brianluau +cydh +Daegaladh +Deadly Silence +euphyy +flaviojs +flaviojs +functor-x +functor-x +greenboxal +jguy1987 +j-tkay +Kenpachi2k13 +kisuka +Lemongrass3110 +lnkfish +Locien +lighta +Masao87 +missxantara +macabu +Paradox924X +Paradox924X +Playtester +Playtester +rAthenaAPI +rAthenaAPI +SeoRoman +SeoRoman +shennetsind +theultramage +trojal +Valaris <2738218+valaris@users.noreply.github.com> +Valaris <2738218+valaris@users.noreply.github.com> +wilkemeyer +Yommy + +################################################################## +# Git Aliases # +################################################################## +aleos89 +aleos89 +Akkarinage +Baalberith6 +brianluau +brianluau +Atemo +Atemo +cydh +cydh +cydh +Daegaladh +dentongrills +dentongrills +euphyy +icxbb-xx +Jeybla +Jeybla +Jeybla +GodLesZ +lighta +lighta +lighta +lighta +lighta +lighta +Lilith- +macabu +macabu +rAthenaAPI +secretdataz +secretdataz +secretdataz +Stolao +tr0n93 +wilkemeyer +vstumpf +zackdreaver + +################################################################## +# Unconfirmed ones # +# missing github username # +################################################################## +calciumkid +skotlex +skotlex + +################################################################## +# TODO # +# # +# If you know the GitHub account and/or mail address of any of # +# these please let us know. # +################################################################## + +# L0ne_W0lf +# Lupus +# celest +# Lance +# zephyrus +# amber +# toms +# shadowlady +# codemaster +# rud0lp20 +# Vicious +# samuray22 +# Kevin +# shadow +# mc_cameri +# evera +# SinSloth +# epoque11 +# DracoRPG +# littlewolf +# eaac +# ajarn +# wizputer +# Nasedo +# blackhole89 +# protimus https://github.com/protimus +# Komurka +# Poki#3 +# cookiecrumbs +# Zido +# akrus +# markzd +# xazax-hun +# flaid +# lordttseven +# musashiden +# Aria +# og2 +# reddozen +# KarLaeda +# Zephiris +# DZeroX +# ignizh +# kobra_k88 +# shinomori +# LuzZza +# spre123 +# Chilly0123 +# ediejohnny +# hipsterfont https://github.com/hipsterfont +# nsstrunks +# shadoweathena +# technote24 +# mandark022 +# Kargha +# Mass +# Sara +# nana +# jtynne https://github.com/jtynne +# veider +# Shinigami +# mercurial123 +# arcshiru +# davidsiaw +# foruken +# sirius +# Euph +# Kayla +# rikimaru17 +# Evera +# L0neW0lf.eAthena +# cleaverbeaver +# killercube +# salepate +# spira +# CIA-2 +# Protimus https://github.com/protimus +# lmaatl +# zapbomb +# zido diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 4ff5169bb3..9c373dd186 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -48,8 +48,6 @@ endmacro( CONFIGURE_WITH_LOCAL_OR_SYSTEM ) add_subdirectory( libconfig ) -add_subdirectory( msinttypes ) -add_subdirectory( mt19937ar ) add_subdirectory( mysql ) add_subdirectory( pcre ) add_subdirectory( zlib ) diff --git a/3rdparty/README.txt b/3rdparty/README.txt index a39a0dc974..06d04d0b87 100644 --- a/3rdparty/README.txt +++ b/3rdparty/README.txt @@ -2,8 +2,6 @@ This folder contains everything related to 3rdparty code or tools. cmake - scripts for the cmake build system (http://www.cmake.org) libconfig - library for processing structured configuration files (http://www.hyperrealm.com/libconfig/) -msinttypes - standard headers missing from Microsoft Visual Studio (http://code.google.com/p/msinttypes) -mt19937ar - code for Mersenne Twister pseudorandom number generator mysql - library for MySQL Community Server (http://www.mysql.com) pcre - library for Perl Compatible Regular Expressions (http://www.pcre.org) zlib - library for DEFLATE lossless compression algorithm (http://www.zlib.net) diff --git a/3rdparty/msinttypes/CMakeLists.txt b/3rdparty/msinttypes/CMakeLists.txt deleted file mode 100644 index c11c1d72a1..0000000000 --- a/3rdparty/msinttypes/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ - -if( MSVC ) -find_path( MSINTTYPES_INCLUDE_DIRS "inttypes.h" - PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include" - NO_DEFAULT_PATH ) -mark_as_advanced( MSINTTYPES_INCLUDE_DIRS ) -message( STATUS "Adding global include directory: ${MSINTTYPES_INCLUDE_DIRS}" ) -set_property( CACHE GLOBAL_INCLUDE_DIRS PROPERTY VALUE ${GLOBAL_INCLUDE_DIRS} ${MSINTTYPES_INCLUDE_DIRS} ) -endif() diff --git a/3rdparty/msinttypes/include/inttypes.h b/3rdparty/msinttypes/include/inttypes.h deleted file mode 100644 index 4b3828a216..0000000000 --- a/3rdparty/msinttypes/include/inttypes.h +++ /dev/null @@ -1,305 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include "stdint.h" - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/3rdparty/msinttypes/include/stdint.h b/3rdparty/msinttypes/include/stdint.h deleted file mode 100644 index cbb023bf93..0000000000 --- a/3rdparty/msinttypes/include/stdint.h +++ /dev/null @@ -1,251 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -#if _MSC_VER < 1300 -extern "C++" { -#else -extern "C" { -#endif -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] diff --git a/3rdparty/mt19937ar/CMakeLists.txt b/3rdparty/mt19937ar/CMakeLists.txt deleted file mode 100644 index 08eff57909..0000000000 --- a/3rdparty/mt19937ar/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ - -find_path( MT19937AR_INCLUDE_DIRS "mt19937ar.h" - PATHS "${CMAKE_CURRENT_SOURCE_DIR}" - NO_DEFAULT_PATH ) -find_path( MT19937AR_SOURCE_DIR "mt19937ar.c" - PATHS "${CMAKE_CURRENT_SOURCE_DIR}" - NO_DEFAULT_PATH ) -mark_as_advanced( MT19937AR_INCLUDE_DIRS ) -mark_as_advanced( MT19937AR_SOURCE_DIR ) - -set( MT19937AR_HEADERS - "${CMAKE_CURRENT_SOURCE_DIR}/mt19937ar.h" - CACHE INTERNAL "mt19937ar headers" ) -set( MT19937AR_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/mt19937ar.c" - CACHE INTERNAL "mt19937ar sources" ) diff --git a/3rdparty/mt19937ar/Makefile.in b/3rdparty/mt19937ar/Makefile.in deleted file mode 100644 index 9afddc81cb..0000000000 --- a/3rdparty/mt19937ar/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ - -MT19937AR_OBJ = mt19937ar.o -MT19937AR_H = mt19937ar.h - -@SET_MAKE@ - -##################################################################### -.PHONY : all clean help - -all: $(MT19937AR_OBJ) - -clean: - @echo " CLEAN mt19937ar" - @rm -rf *.o - -help: - @echo "possible targets are 'all' 'clean' 'help'" - @echo "'all' - builds $(MT19937AR_OBJ)" - @echo "'clean' - deletes $(MT19937AR_OBJ)" - @echo "'help' - outputs this message" - -##################################################################### - -%.o: %.c $(MT19937AR_H) - @echo " CC $<" - @@CC@ @CFLAGS_AR@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< diff --git a/3rdparty/mt19937ar/mt19937ar.c b/3rdparty/mt19937ar/mt19937ar.c deleted file mode 100644 index 211aefde9c..0000000000 --- a/3rdparty/mt19937ar/mt19937ar.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) -*/ - -#include -#include "mt19937ar.h" - -/* Period parameters */ -#define N 624 -#define M 397 -#define MATRIX_A 0x9908b0dfUL /* constant vector a */ -#define UPPER_MASK 0x80000000UL /* most significant w-r bits */ -#define LOWER_MASK 0x7fffffffUL /* least significant r bits */ - -static unsigned long mt[N]; /* the array for the state vector */ -static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */ - -/* initializes mt[N] with a seed */ -void init_genrand(unsigned long s) -{ - mt[0]= s & 0xffffffffUL; - for (mti=1; mti> 30)) + mti); - /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ - /* In the previous versions, MSBs of the seed affect */ - /* only MSBs of the array mt[]. */ - /* 2002/01/09 modified by Makoto Matsumoto */ - mt[mti] &= 0xffffffffUL; - /* for >32 bit machines */ - } -} - -/* initialize by an array with array-length */ -/* init_key is the array for initializing keys */ -/* key_length is its length */ -/* slight change for C++, 2004/2/26 */ -void init_by_array(unsigned long init_key[], int key_length) -{ - int i, j, k; - init_genrand(19650218UL); - i=1; j=0; - k = (N>key_length ? N : key_length); - for (; k; k--) { - mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL)) - + init_key[j] + j; /* non linear */ - mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ - i++; j++; - if (i>=N) { mt[0] = mt[N-1]; i=1; } - if (j>=key_length) j=0; - } - for (k=N-1; k; k--) { - mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL)) - - i; /* non linear */ - mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ - i++; - if (i>=N) { mt[0] = mt[N-1]; i=1; } - } - - mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */ -} - -/* generates a random number on [0,0xffffffff]-interval */ -unsigned long genrand_int32(void) -{ - unsigned long y; - static unsigned long mag01[2]={0x0UL, MATRIX_A}; - /* mag01[x] = x * MATRIX_A for x=0,1 */ - - if (mti >= N) { /* generate N words at one time */ - int kk; - - if (mti == N+1) /* if init_genrand() has not been called, */ - init_genrand(5489UL); /* a default initial seed is used */ - - for (kk=0;kk> 1) ^ mag01[y & 0x1UL]; - } - for (;kk> 1) ^ mag01[y & 0x1UL]; - } - y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK); - mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL]; - - mti = 0; - } - - y = mt[mti++]; - - /* Tempering */ - y ^= (y >> 11); - y ^= (y << 7) & 0x9d2c5680UL; - y ^= (y << 15) & 0xefc60000UL; - y ^= (y >> 18); - - return y; -} - -/* generates a random number on [0,0x7fffffff]-interval */ -long genrand_int31(void) -{ - return (long)(genrand_int32()>>1); -} - -/* generates a random number on [0,1]-real-interval */ -double genrand_real1(void) -{ - return genrand_int32()*(1.0/4294967295.0); - /* divided by 2^32-1 */ -} - -/* generates a random number on [0,1)-real-interval */ -double genrand_real2(void) -{ - return genrand_int32()*(1.0/4294967296.0); - /* divided by 2^32 */ -} - -/* generates a random number on (0,1)-real-interval */ -double genrand_real3(void) -{ - return (((double)genrand_int32()) + 0.5)*(1.0/4294967296.0); - /* divided by 2^32 */ -} - -/* generates a random number on [0,1) with 53-bit resolution*/ -double genrand_res53(void) -{ - unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; - return(a*67108864.0+b)*(1.0/9007199254740992.0); -} -/* These real versions are due to Isaku Wada, 2002/01/09 added */ diff --git a/3rdparty/mt19937ar/mt19937ar.h b/3rdparty/mt19937ar/mt19937ar.h deleted file mode 100644 index 1cc2f8d2f1..0000000000 --- a/3rdparty/mt19937ar/mt19937ar.h +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once - -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) -*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/* initializes mt[N] with a seed */ -void init_genrand(unsigned long s); - -/* initialize by an array with array-length */ -/* init_key is the array for initializing keys */ -/* key_length is its length */ -/* slight change for C++, 2004/2/26 */ -void init_by_array(unsigned long init_key[], int key_length); - -/* generates a random number on [0,0xffffffff]-interval */ -unsigned long genrand_int32(void); - -/* generates a random number on [0,0x7fffffff]-interval */ -long genrand_int31(void); - -/* These real versions are due to Isaku Wada, 2002/01/09 added */ -/* generates a random number on [0,1]-real-interval */ -double genrand_real1(void); - -/* generates a random number on [0,1)-real-interval */ -double genrand_real2(void); - -/* generates a random number on (0,1)-real-interval */ -double genrand_real3(void); - -/* generates a random number on [0,1) with 53-bit resolution*/ -double genrand_res53(void); - -#ifdef __cplusplus -} -#endif diff --git a/3rdparty/mt19937ar/mt19937ar.out b/3rdparty/mt19937ar/mt19937ar.out deleted file mode 100644 index 47abd073e3..0000000000 --- a/3rdparty/mt19937ar/mt19937ar.out +++ /dev/null @@ -1,403 +0,0 @@ -1000 outputs of genrand_int32() -1067595299 955945823 477289528 4107218783 4228976476 -3344332714 3355579695 227628506 810200273 2591290167 -2560260675 3242736208 646746669 1479517882 4245472273 -1143372638 3863670494 3221021970 1773610557 1138697238 -1421897700 1269916527 2859934041 1764463362 3874892047 -3965319921 72549643 2383988930 2600218693 3237492380 -2792901476 725331109 605841842 271258942 715137098 -3297999536 1322965544 4229579109 1395091102 3735697720 -2101727825 3730287744 2950434330 1661921839 2895579582 -2370511479 1004092106 2247096681 2111242379 3237345263 -4082424759 219785033 2454039889 3709582971 835606218 -2411949883 2735205030 756421180 2175209704 1873865952 -2762534237 4161807854 3351099340 181129879 3269891896 - 776029799 2218161979 3001745796 1866825872 2133627728 - 34862734 1191934573 3102311354 2916517763 1012402762 -2184831317 4257399449 2899497138 3818095062 3030756734 -1282161629 420003642 2326421477 2741455717 1278020671 -3744179621 271777016 2626330018 2560563991 3055977700 -4233527566 1228397661 3595579322 1077915006 2395931898 -1851927286 3013683506 1999971931 3006888962 1049781534 -1488758959 3491776230 104418065 2448267297 3075614115 -3872332600 891912190 3936547759 2269180963 2633455084 -1047636807 2604612377 2709305729 1952216715 207593580 -2849898034 670771757 2210471108 467711165 263046873 -3569667915 1042291111 3863517079 1464270005 2758321352 -3790799816 2301278724 3106281430 7974801 2792461636 - 555991332 621766759 1322453093 853629228 686962251 -1455120532 957753161 1802033300 1021534190 3486047311 -1902128914 3701138056 4176424663 1795608698 560858864 -3737752754 3141170998 1553553385 3367807274 711546358 -2475125503 262969859 251416325 2980076994 1806565895 - 969527843 3529327173 2736343040 2987196734 1649016367 -2206175811 3048174801 3662503553 3138851612 2660143804 -1663017612 1816683231 411916003 3887461314 2347044079 -1015311755 1203592432 2170947766 2569420716 813872093 -1105387678 1431142475 220570551 4243632715 4179591855 -2607469131 3090613241 282341803 1734241730 1391822177 -1001254810 827927915 1886687171 3935097347 2631788714 -3905163266 110554195 2447955646 3717202975 3304793075 -3739614479 3059127468 953919171 2590123714 1132511021 -3795593679 2788030429 982155079 3472349556 859942552 -2681007391 2299624053 647443547 233600422 608168955 -3689327453 1849778220 1608438222 3968158357 2692977776 -2851872572 246750393 3582818628 3329652309 4036366910 -1012970930 950780808 3959768744 2538550045 191422718 -2658142375 3276369011 2927737484 1234200027 1920815603 -3536074689 1535612501 2184142071 3276955054 428488088 -2378411984 4059769550 3913744741 2732139246 64369859 -3755670074 842839565 2819894466 2414718973 1010060670 -1839715346 2410311136 152774329 3485009480 4102101512 -2852724304 879944024 1785007662 2748284463 1354768064 -3267784736 2269127717 3001240761 3179796763 895723219 - 865924942 4291570937 89355264 1471026971 4114180745 -3201939751 2867476999 2460866060 3603874571 2238880432 -3308416168 2072246611 2755653839 3773737248 1709066580 -4282731467 2746170170 2832568330 433439009 3175778732 - 26248366 2551382801 183214346 3893339516 1928168445 -1337157619 3429096554 3275170900 1782047316 4264403756 -1876594403 4289659572 3223834894 1728705513 4068244734 -2867840287 1147798696 302879820 1730407747 1923824407 -1180597908 1569786639 198796327 560793173 2107345620 -2705990316 3448772106 3678374155 758635715 884524671 - 486356516 1774865603 3881226226 2635213607 1181121587 -1508809820 3178988241 1594193633 1235154121 326117244 -2304031425 937054774 2687415945 3192389340 2003740439 -1823766188 2759543402 10067710 1533252662 4132494984 - 82378136 420615890 3467563163 541562091 3535949864 -2277319197 3330822853 3215654174 4113831979 4204996991 -2162248333 3255093522 2219088909 2978279037 255818579 -2859348628 3097280311 2569721123 1861951120 2907080079 -2719467166 998319094 2521935127 2404125338 259456032 -2086860995 1839848496 1893547357 2527997525 1489393124 -2860855349 76448234 2264934035 744914583 2586791259 -1385380501 66529922 1819103258 1899300332 2098173828 -1793831094 276463159 360132945 4178212058 595015228 - 177071838 2800080290 1573557746 1548998935 378454223 -1460534296 1116274283 3112385063 3709761796 827999348 -3580042847 1913901014 614021289 4278528023 1905177404 - 45407939 3298183234 1184848810 3644926330 3923635459 -1627046213 3677876759 969772772 1160524753 1522441192 - 452369933 1527502551 832490847 1003299676 1071381111 -2891255476 973747308 4086897108 1847554542 3895651598 -2227820339 1621250941 2881344691 3583565821 3510404498 - 849362119 862871471 797858058 2867774932 2821282612 -3272403146 3997979905 209178708 1805135652 6783381 -2823361423 792580494 4263749770 776439581 3798193823 -2853444094 2729507474 1071873341 1329010206 1289336450 -3327680758 2011491779 80157208 922428856 1158943220 -1667230961 2461022820 2608845159 387516115 3345351910 -1495629111 4098154157 3156649613 3525698599 4134908037 - 446713264 2137537399 3617403512 813966752 1157943946 -3734692965 1680301658 3180398473 3509854711 2228114612 -1008102291 486805123 863791847 3189125290 1050308116 -3777341526 4291726501 844061465 1347461791 2826481581 - 745465012 2055805750 4260209475 2386693097 2980646741 - 447229436 2077782664 1232942813 4023002732 1399011509 -3140569849 2579909222 3794857471 900758066 2887199683 -1720257997 3367494931 2668921229 955539029 3818726432 -1105704962 3889207255 2277369307 2746484505 1761846513 -2413916784 2685127085 4240257943 1166726899 4215215715 -3082092067 3960461946 1663304043 2087473241 4162589986 -2507310778 1579665506 767234210 970676017 492207530 -1441679602 1314785090 3262202570 3417091742 1561989210 -3011406780 1146609202 3262321040 1374872171 1634688712 -1280458888 2230023982 419323804 3262899800 39783310 -1641619040 1700368658 2207946628 2571300939 2424079766 - 780290914 2715195096 3390957695 163151474 2309534542 -1860018424 555755123 280320104 1604831083 2713022383 -1728987441 3639955502 623065489 3828630947 4275479050 -3516347383 2343951195 2430677756 635534992 3868699749 - 808442435 3070644069 4282166003 2093181383 2023555632 -1568662086 3422372620 4134522350 3016979543 3259320234 -2888030729 3185253876 4258779643 1267304371 1022517473 - 815943045 929020012 2995251018 3371283296 3608029049 -2018485115 122123397 2810669150 1411365618 1238391329 -1186786476 3155969091 2242941310 1765554882 279121160 -4279838515 1641578514 3796324015 13351065 103516986 -1609694427 551411743 2493771609 1316337047 3932650856 -4189700203 463397996 2937735066 1855616529 2626847990 - 55091862 3823351211 753448970 4045045500 1274127772 -1124182256 92039808 2126345552 425973257 386287896 -2589870191 1987762798 4084826973 2172456685 3366583455 -3602966653 2378803535 2901764433 3716929006 3710159000 -2653449155 3469742630 3096444476 3932564653 2595257433 - 318974657 3146202484 853571438 144400272 3768408841 - 782634401 2161109003 570039522 1886241521 14249488 -2230804228 1604941699 3928713335 3921942509 2155806892 - 134366254 430507376 1924011722 276713377 196481886 -3614810992 1610021185 1785757066 851346168 3761148643 -2918835642 3364422385 3012284466 3735958851 2643153892 -3778608231 1164289832 205853021 2876112231 3503398282 -3078397001 3472037921 1748894853 2740861475 316056182 -1660426908 168885906 956005527 3984354789 566521563 -1001109523 1216710575 2952284757 3834433081 3842608301 -2467352408 3974441264 3256601745 1409353924 1329904859 -2307560293 3125217879 3622920184 3832785684 3882365951 -2308537115 2659155028 1450441945 3532257603 3186324194 -1225603425 1124246549 175808705 3009142319 2796710159 -3651990107 160762750 1902254979 1698648476 1134980669 - 497144426 3302689335 4057485630 3603530763 4087252587 - 427812652 286876201 823134128 1627554964 3745564327 -2589226092 4202024494 62878473 3275585894 3987124064 -2791777159 1916869511 2585861905 1375038919 1403421920 - 60249114 3811870450 3021498009 2612993202 528933105 -2757361321 3341402964 2621861700 273128190 4015252178 -3094781002 1621621288 2337611177 1796718448 1258965619 -4241913140 2138560392 3022190223 4174180924 450094611 -3274724580 617150026 2704660665 1469700689 1341616587 - 356715071 1188789960 2278869135 1766569160 2795896635 - 57824704 2893496380 1235723989 1630694347 3927960522 - 428891364 1814070806 2287999787 4125941184 3968103889 -3548724050 1025597707 1404281500 2002212197 92429143 -2313943944 2403086080 3006180634 3561981764 1671860914 -1768520622 1803542985 844848113 3006139921 1410888995 -1157749833 2125704913 1789979528 1799263423 741157179 -2405862309 767040434 2655241390 3663420179 2172009096 -2511931187 1680542666 231857466 1154981000 157168255 -1454112128 3505872099 1929775046 2309422350 2143329496 -2960716902 407610648 2938108129 2581749599 538837155 -2342628867 430543915 740188568 1937713272 3315215132 -2085587024 4030765687 766054429 3517641839 689721775 -1294158986 1753287754 4202601348 1974852792 33459103 -3568087535 3144677435 1686130825 4134943013 3005738435 -3599293386 426570142 754104406 3660892564 1964545167 - 829466833 821587464 1746693036 1006492428 1595312919 -1256599985 1024482560 1897312280 2902903201 691790057 -1037515867 3176831208 1968401055 2173506824 1089055278 -1748401123 2941380082 968412354 1818753861 2973200866 -3875951774 1119354008 3988604139 1647155589 2232450826 -3486058011 3655784043 3759258462 847163678 1082052057 - 989516446 2871541755 3196311070 3929963078 658187585 -3664944641 2175149170 2203709147 2756014689 2456473919 -3890267390 1293787864 2830347984 3059280931 4158802520 -1561677400 2586570938 783570352 1355506163 31495586 -3789437343 3340549429 2092501630 896419368 671715824 -3530450081 3603554138 1055991716 3442308219 1499434728 -3130288473 3639507000 17769680 2259741420 487032199 -4227143402 3693771256 1880482820 3924810796 381462353 -4017855991 2452034943 2736680833 2209866385 2128986379 - 437874044 595759426 641721026 1636065708 3899136933 - 629879088 3591174506 351984326 2638783544 2348444281 -2341604660 2123933692 143443325 1525942256 364660499 - 599149312 939093251 1523003209 106601097 376589484 -1346282236 1297387043 764598052 3741218111 933457002 -1886424424 3219631016 525405256 3014235619 323149677 -2038881721 4100129043 2851715101 2984028078 1888574695 -2014194741 3515193880 4180573530 3461824363 2641995497 -3179230245 2902294983 2217320456 4040852155 1784656905 -3311906931 87498458 2752971818 2635474297 2831215366 -3682231106 2920043893 3772929704 2816374944 309949752 -2383758854 154870719 385111597 1191604312 1840700563 - 872191186 2925548701 1310412747 2102066999 1504727249 -3574298750 1191230036 3330575266 3180292097 3539347721 - 681369118 3305125752 3648233597 950049240 4173257693 -1760124957 512151405 681175196 580563018 1169662867 -4015033554 2687781101 699691603 2673494188 1137221356 - 123599888 472658308 1053598179 1012713758 3481064843 -3759461013 3981457956 3830587662 1877191791 3650996736 - 988064871 3515461600 4089077232 2225147448 1249609188 -2643151863 3896204135 2416995901 1397735321 3460025646 - -1000 outputs of genrand_real2() -0.76275443 0.99000644 0.98670464 0.10143112 0.27933125 -0.69867227 0.94218740 0.03427201 0.78842173 0.28180608 -0.92179002 0.20785655 0.54534773 0.69644020 0.38107718 -0.23978165 0.65286910 0.07514568 0.22765211 0.94872929 -0.74557914 0.62664415 0.54708246 0.90959343 0.42043116 -0.86334511 0.19189126 0.14718544 0.70259889 0.63426346 -0.77408121 0.04531601 0.04605807 0.88595519 0.69398270 -0.05377184 0.61711170 0.05565708 0.10133577 0.41500776 -0.91810699 0.22320679 0.23353705 0.92871862 0.98897234 -0.19786706 0.80558809 0.06961067 0.55840445 0.90479405 -0.63288060 0.95009721 0.54948447 0.20645042 0.45000959 -0.87050869 0.70806991 0.19406895 0.79286390 0.49332866 -0.78483914 0.75145146 0.12341941 0.42030252 0.16728160 -0.59906494 0.37575460 0.97815160 0.39815952 0.43595080 -0.04952478 0.33917805 0.76509902 0.61034321 0.90654701 -0.92915732 0.85365931 0.18812377 0.65913428 0.28814566 -0.59476081 0.27835931 0.60722542 0.68310435 0.69387186 -0.03699800 0.65897714 0.17527003 0.02889304 0.86777366 -0.12352068 0.91439461 0.32022990 0.44445731 0.34903686 -0.74639273 0.65918367 0.92492794 0.31872642 0.77749724 -0.85413832 0.76385624 0.32744211 0.91326300 0.27458185 -0.22190155 0.19865383 0.31227402 0.85321225 0.84243342 -0.78544200 0.71854080 0.92503892 0.82703064 0.88306297 -0.47284073 0.70059042 0.48003761 0.38671694 0.60465770 -0.41747204 0.47163243 0.72750808 0.65830223 0.10955369 -0.64215401 0.23456345 0.95944940 0.72822249 0.40888451 -0.69980355 0.26677428 0.57333635 0.39791582 0.85377858 -0.76962816 0.72004885 0.90903087 0.51376506 0.37732665 -0.12691640 0.71249738 0.81217908 0.37037313 0.32772374 -0.14238259 0.05614811 0.74363008 0.39773267 0.94859135 -0.31452454 0.11730313 0.62962618 0.33334237 0.45547255 -0.10089665 0.56550662 0.60539371 0.16027624 0.13245301 -0.60959939 0.04671662 0.99356286 0.57660859 0.40269560 -0.45274629 0.06699735 0.85064246 0.87742744 0.54508392 -0.87242982 0.29321385 0.67660627 0.68230715 0.79052073 -0.48592054 0.25186266 0.93769755 0.28565487 0.47219067 -0.99054882 0.13155240 0.47110470 0.98556600 0.84397623 -0.12875246 0.90953202 0.49129015 0.23792727 0.79481194 -0.44337770 0.96564297 0.67749118 0.55684872 0.27286897 -0.79538393 0.61965356 0.22487929 0.02226018 0.49248200 -0.42247006 0.91797788 0.99250134 0.23449967 0.52531508 -0.10246337 0.78685622 0.34310922 0.89892996 0.40454552 -0.68608407 0.30752487 0.83601319 0.54956031 0.63777550 -0.82199797 0.24890696 0.48801123 0.48661910 0.51223987 -0.32969635 0.31075073 0.21393155 0.73453207 0.15565705 -0.58584522 0.28976728 0.97621478 0.61498701 0.23891470 -0.28518540 0.46809591 0.18371914 0.37597910 0.13492176 -0.66849449 0.82811466 0.56240330 0.37548956 0.27562998 -0.27521910 0.74096121 0.77176757 0.13748143 0.99747138 -0.92504502 0.09175241 0.21389176 0.21766512 0.31183245 -0.23271221 0.21207367 0.57903312 0.77523344 0.13242613 -0.31037988 0.01204835 0.71652949 0.84487594 0.14982178 -0.57423142 0.45677888 0.48420169 0.53465428 0.52667473 -0.46880526 0.49849733 0.05670710 0.79022476 0.03872047 -0.21697212 0.20443086 0.28949326 0.81678186 0.87629474 -0.92297064 0.27373097 0.84625273 0.51505586 0.00582792 -0.33295971 0.91848412 0.92537226 0.91760033 0.07541125 -0.71745848 0.61158698 0.00941650 0.03135554 0.71527471 -0.24821915 0.63636652 0.86159918 0.26450229 0.60160194 -0.35557725 0.24477500 0.07186456 0.51757096 0.62120362 -0.97981062 0.69954667 0.21065616 0.13382753 0.27693186 -0.59644095 0.71500764 0.04110751 0.95730081 0.91600724 -0.47704678 0.26183479 0.34706971 0.07545431 0.29398385 -0.93236070 0.60486023 0.48015011 0.08870451 0.45548581 -0.91872718 0.38142712 0.10668643 0.01397541 0.04520355 -0.93822273 0.18011940 0.57577277 0.91427606 0.30911399 -0.95853475 0.23611214 0.69619891 0.69601980 0.76765372 -0.58515930 0.49479057 0.11288752 0.97187699 0.32095365 -0.57563608 0.40760618 0.78703383 0.43261152 0.90877651 -0.84686346 0.10599030 0.72872803 0.19315490 0.66152912 -0.10210518 0.06257876 0.47950688 0.47062066 0.72701157 -0.48915116 0.66110261 0.60170685 0.24516994 0.12726050 -0.03451185 0.90864994 0.83494878 0.94800035 0.91035206 -0.14480751 0.88458997 0.53498312 0.15963215 0.55378627 -0.35171349 0.28719791 0.09097957 0.00667896 0.32309622 -0.87561479 0.42534520 0.91748977 0.73908457 0.41793223 -0.99279792 0.87908370 0.28458072 0.59132853 0.98672190 -0.28547393 0.09452165 0.89910674 0.53681109 0.37931425 -0.62683489 0.56609740 0.24801549 0.52948179 0.98328855 -0.66403523 0.55523786 0.75886666 0.84784685 0.86829981 -0.71448906 0.84670080 0.43922919 0.20771016 0.64157936 -0.25664246 0.73055695 0.86395782 0.65852932 0.99061803 -0.40280575 0.39146298 0.07291005 0.97200603 0.20555729 -0.59616495 0.08138254 0.45796388 0.33681125 0.33989127 -0.18717090 0.53545811 0.60550838 0.86520709 0.34290701 -0.72743276 0.73023855 0.34195926 0.65019733 0.02765254 -0.72575740 0.32709576 0.03420866 0.26061893 0.56997511 -0.28439072 0.84422744 0.77637570 0.55982168 0.06720327 -0.58449067 0.71657369 0.15819609 0.58042821 0.07947911 -0.40193792 0.11376012 0.88762938 0.67532159 0.71223735 -0.27829114 0.04806073 0.21144026 0.58830274 0.04140071 -0.43215628 0.12952729 0.94668759 0.87391019 0.98382450 -0.27750768 0.90849647 0.90962737 0.59269720 0.96102026 -0.49544979 0.32007095 0.62585546 0.03119821 0.85953001 -0.22017528 0.05834068 0.80731217 0.53799961 0.74166948 -0.77426600 0.43938444 0.54862081 0.58575513 0.15886492 -0.73214332 0.11649057 0.77463977 0.85788827 0.17061997 -0.66838056 0.96076133 0.07949296 0.68521946 0.89986254 -0.05667410 0.12741385 0.83470977 0.63969104 0.46612929 -0.10200126 0.01194925 0.10476340 0.90285217 0.31221221 -0.32980614 0.46041971 0.52024973 0.05425470 0.28330912 -0.60426543 0.00598243 0.97244013 0.21135841 0.78561597 -0.78428734 0.63422849 0.32909934 0.44771136 0.27380750 -0.14966697 0.18156268 0.65686758 0.28726350 0.97074787 -0.63676171 0.96649494 0.24526295 0.08297372 0.54257548 -0.03166785 0.33735355 0.15946671 0.02102971 0.46228045 -0.11892296 0.33408336 0.29875681 0.29847692 0.73767569 -0.02080745 0.62980060 0.08082293 0.22993106 0.25031439 -0.87787525 0.45150053 0.13673441 0.63407612 0.97907688 -0.52241942 0.50580158 0.06273902 0.05270283 0.77031811 -0.05113352 0.24393329 0.75036441 0.37436336 0.22877652 -0.59975358 0.85707591 0.88691457 0.85547165 0.36641027 -0.58720133 0.45462835 0.09243817 0.32981586 0.07820411 -0.25421519 0.36004706 0.60092307 0.46192412 0.36758683 -0.98424170 0.08019934 0.68594024 0.45826386 0.29962317 -0.79365413 0.89231296 0.49478547 0.87645944 0.23590734 -0.28106737 0.75026285 0.08136314 0.79582424 0.76010628 -0.82792971 0.27947652 0.72482861 0.82191216 0.46171689 -0.79189752 0.96043686 0.51609668 0.88995725 0.28998963 -0.55191845 0.03934737 0.83033700 0.49553013 0.98009549 -0.19017594 0.98347750 0.33452066 0.87144372 0.72106301 -0.71272114 0.71465963 0.88361677 0.85571283 0.73782329 -0.20920458 0.34855153 0.46766817 0.02780062 0.74898344 -0.03680650 0.44866557 0.77426312 0.91025891 0.25195236 -0.87319953 0.63265037 0.25552148 0.27422476 0.95217406 -0.39281839 0.66441573 0.09158900 0.94515992 0.07800798 -0.02507888 0.39901462 0.17382573 0.12141278 0.85502334 -0.19902911 0.02160210 0.44460522 0.14688742 0.68020336 -0.71323733 0.60922473 0.95400380 0.99611159 0.90897777 -0.41073520 0.66206647 0.32064685 0.62805003 0.50677209 -0.52690101 0.87473387 0.73918362 0.39826974 0.43683919 -0.80459118 0.32422684 0.01958019 0.95319576 0.98326137 -0.83931735 0.69060863 0.33671416 0.68062550 0.65152380 -0.33392969 0.03451730 0.95227244 0.68200635 0.85074171 -0.64721009 0.51234433 0.73402047 0.00969637 0.93835057 -0.80803854 0.31485260 0.20089527 0.01323282 0.59933780 -0.31584602 0.20209563 0.33754800 0.68604181 0.24443049 -0.19952227 0.78162632 0.10336988 0.11360736 0.23536740 -0.23262256 0.67803776 0.48749791 0.74658435 0.92156640 -0.56706407 0.36683221 0.99157136 0.23421374 0.45183767 -0.91609720 0.85573315 0.37706276 0.77042618 0.30891908 -0.40709595 0.06944866 0.61342849 0.88817388 0.58734506 -0.98711323 0.14744128 0.63242656 0.87704136 0.68347125 -0.84446569 0.43265239 0.25146321 0.04130111 0.34259839 -0.92697368 0.40878778 0.56990338 0.76204273 0.19820348 -0.66314909 0.02482844 0.06669207 0.50205581 0.26084093 -0.65139159 0.41650223 0.09733904 0.56344203 0.62651696 -0.67332139 0.58037374 0.47258086 0.21010758 0.05713135 -0.89390629 0.10781246 0.32037450 0.07628388 0.34227964 -0.42190597 0.58201860 0.77363549 0.49595133 0.86031236 -0.83906769 0.81098161 0.26694195 0.14215941 0.88210306 -0.53634237 0.12090720 0.82480459 0.75930318 0.31847147 -0.92768077 0.01037616 0.56201727 0.88107122 0.35925856 -0.85860762 0.61109408 0.70408301 0.58434977 0.92192494 -0.62667915 0.75988365 0.06858761 0.36156496 0.58057195 -0.13636150 0.57719713 0.59340255 0.63530602 0.22976282 -0.71915530 0.41162531 0.63979565 0.09931342 0.79344045 -0.10893790 0.84450224 0.23122236 0.99485593 0.73637397 -0.17276368 0.13357764 0.74965804 0.64991737 0.61990341 -0.41523170 0.05878239 0.05687301 0.05497131 0.42868366 -0.42571090 0.25810502 0.89642955 0.30439758 0.39310223 -0.11357431 0.04288255 0.23397550 0.11200634 0.85621396 -0.89733974 0.37508865 0.42077265 0.68597384 0.72781399 -0.19296476 0.61699087 0.31667128 0.67756410 0.00177323 -0.05725176 0.79474693 0.18885238 0.06724856 0.68193156 -0.42202167 0.22082041 0.28554673 0.64995708 0.87851940 -0.29124547 0.61009521 0.87374537 0.05743712 0.69902994 -0.81925115 0.45653873 0.37236821 0.31118709 0.52734307 -0.39672836 0.38185294 0.30163915 0.17374510 0.04913278 -0.90404879 0.25742801 0.58266467 0.97663209 0.79823377 -0.36437958 0.15206043 0.26529938 0.22690047 0.05839021 -0.84721160 0.18622435 0.37809403 0.55706977 0.49828704 -0.47659049 0.24289680 0.88477595 0.07807463 0.56245739 -0.73490635 0.21099431 0.13164942 0.75840044 0.66877037 -0.28988183 0.44046090 0.24967434 0.80048356 0.26029740 -0.30416821 0.64151867 0.52067892 0.12880774 0.85465381 -0.02690525 0.19149288 0.49630295 0.79682619 0.43566145 -0.00288078 0.81484193 0.03763639 0.68529083 0.01339574 -0.38405386 0.30537067 0.22994703 0.44000045 0.27217985 -0.53831243 0.02870435 0.86282045 0.61831306 0.09164956 -0.25609707 0.07445781 0.72185784 0.90058883 0.30070608 -0.94476583 0.56822213 0.21933909 0.96772793 0.80063440 -0.26307906 0.31183306 0.16501252 0.55436179 0.68562285 -0.23829083 0.86511559 0.57868991 0.81888344 0.20126869 -0.93172350 0.66028129 0.21786948 0.78515828 0.10262106 -0.35390326 0.79303876 0.63427924 0.90479631 0.31024934 -0.60635447 0.56198079 0.63573813 0.91854197 0.99701497 -0.83085849 0.31692291 0.01925964 0.97446405 0.98751283 -0.60944293 0.13751018 0.69519957 0.68956636 0.56969015 -0.46440193 0.88341765 0.36754434 0.89223647 0.39786427 -0.85055280 0.12749961 0.79452122 0.89449784 0.14567830 -0.45716830 0.74822309 0.28200437 0.42546044 0.17464886 -0.68308746 0.65496587 0.52935411 0.12736159 0.61523955 -0.81590528 0.63107864 0.39786553 0.20102294 0.53292914 -0.75485590 0.59847044 0.32861691 0.12125866 0.58917183 -0.07638293 0.86845380 0.29192617 0.03989733 0.52180460 -0.32503407 0.64071852 0.69516575 0.74254998 0.54587026 -0.48713246 0.32920155 0.08719954 0.63497059 0.54328459 -0.64178757 0.45583809 0.70694291 0.85212760 0.86074305 -0.33163422 0.85739792 0.59908488 0.74566046 0.72157152 diff --git a/3rdparty/mt19937ar/mt19937ar.vcxproj b/3rdparty/mt19937ar/mt19937ar.vcxproj deleted file mode 100644 index 3c6090c2d3..0000000000 --- a/3rdparty/mt19937ar/mt19937ar.vcxproj +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - - - - - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF} - Win32Proj - mt19937ar - - - - StaticLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - StaticLibrary - true - $(DefaultPlatformToolset) - MultiByte - - - StaticLibrary - false - $(DefaultPlatformToolset) - true - MultiByte - - - StaticLibrary - false - $(DefaultPlatformToolset) - true - MultiByte - - - - - - - - - - - - - - - - - - - $(SolutionDir).vs\build\ - $(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\ - - - $(SolutionDir).vs\build\ - $(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\ - - - $(SolutionDir).vs\build\ - $(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\ - - - $(SolutionDir).vs\build\ - $(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\ - - - - - - Level3 - Disabled - $(DefineConstants);WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDebug - - - Windows - true - - - - - - - Level3 - Disabled - $(DefineConstants);WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreadedDebug - - - Windows - true - - - - - Level3 - - - MaxSpeed - true - true - $(DefineConstants);WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - - - Windows - true - true - true - - - - - Level3 - - - MaxSpeed - true - true - $(DefineConstants);WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - MultiThreaded - - - Windows - true - true - true - - - - - - diff --git a/3rdparty/mt19937ar/mt19937ar.vcxproj.filters b/3rdparty/mt19937ar/mt19937ar.vcxproj.filters deleted file mode 100644 index a8eea02cbd..0000000000 --- a/3rdparty/mt19937ar/mt19937ar.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - - - Header Files - - - - - Source Files - - - diff --git a/3rdparty/mt19937ar/mtTest.c b/3rdparty/mt19937ar/mtTest.c deleted file mode 100644 index b274068022..0000000000 --- a/3rdparty/mt19937ar/mtTest.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using init_genrand(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - Copyright (C) 2005, Mutsuo Saito, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html - email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) -*/ - -#include -#include "mt19937ar.h" - -int main(void) -{ - int i; - unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4; - init_by_array(init, length); - printf("1000 outputs of genrand_int32()\n"); - for (i=0; i<1000; i++) { - printf("%10lu ", genrand_int32()); - if (i%5==4) printf("\n"); - } - printf("\n1000 outputs of genrand_real2()\n"); - for (i=0; i<1000; i++) { - printf("%10.8f ", genrand_real2()); - if (i%5==4) printf("\n"); - } - return 0; -} diff --git a/3rdparty/mt19937ar/readme-mt.txt b/3rdparty/mt19937ar/readme-mt.txt deleted file mode 100644 index 2d4c2e8a2d..0000000000 --- a/3rdparty/mt19937ar/readme-mt.txt +++ /dev/null @@ -1,79 +0,0 @@ -This is a Mersenne Twister pseudorandom number generator -with period 2^19937-1 with improved initialization scheme, -modified on 2002/1/26 by Takuji Nishimura and Makoto Matsumoto. -modified on 2005/4/26 by Mutsuo Saito - -Contents of this tar ball: -readme-mt.txt this file -mt19937ar.c the C source (ar: initialize by ARray) -mt19937ar.h the C header file for mt19937ar -mtTest.c the C test main program of mt19937ar.c -mt19937ar.out Test outputs of six types generators. 1000 for each - -1. Initialization - The initialization scheme for the previous versions of MT -(e.g. 1999/10/28 version or earlier) has a tiny problem, that -the most significant bits of the seed is not well reflected -to the state vector of MT. - -This version (2002/1/26) has two initialization schemes: -init_genrand(seed) and init_by_array(init_key, key_length). - -init_genrand(seed) initializes the state vector by using -one unsigned 32-bit integer "seed", which may be zero. - -init_by_array(init_key, key_length) initializes the state vector -by using an array init_key[] of unsigned 32-bit integers -of length key_kength. If key_length is smaller than 624, -then each array of 32-bit integers gives distinct initial -state vector. This is useful if you want a larger seed space -than 32-bit word. - -2. Generation -After initialization, the following type of pseudorandom numbers -are available. - -genrand_int32() generates unsigned 32-bit integers. -genrand_int31() generates unsigned 31-bit integers. -genrand_real1() generates uniform real in [0,1] (32-bit resolution). -genrand_real2() generates uniform real in [0,1) (32-bit resolution). -genrand_real3() generates uniform real in (0,1) (32-bit resolution). -genrand_res53() generates uniform real in [0,1) with 53-bit resolution. - -Note: the last five functions call the first one. -if you need more speed for these five functions, you may -suppress the function call by copying genrand_int32() and -replacing the last return(), following to these five functions. - -3. main() -main() is an example to initialize with an array of length 4, -then 1000 outputs of unsigned 32-bit integers, -then 1000 outputs of real [0,1) numbers. - -4. The outputs -The output of the mt19937ar.c is in the file mt19937ar.out. -If you revise or translate the code, check the output -by using this file. - -5. Cryptography -This generator is not cryptoraphically secure. -You need to use a one-way (or hash) function to obtain -a secure random sequence. - -6. Correspondence -See: -URL http://www.math.keio.ac.jp/matumoto/emt.html -email matumoto@math.keio.ac.jp, nisimura@sci.kj.yamagata-u.ac.jp - -7. Reference -M. Matsumoto and T. Nishimura, -"Mersenne Twister: A 623-Dimensionally Equidistributed Uniform -Pseudo-Random Number Generator", -ACM Transactions on Modeling and Computer Simulation, -Vol. 8, No. 1, January 1998, pp 3--30. - -------- -Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, -All rights reserved. -Copyright (C) 2005, Mutsuo Saito -All rights reserved. diff --git a/Makefile.in b/Makefile.in index 05e4d4e81e..8d58dc9ed5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -5,10 +5,10 @@ OMAP=@OMAP@ ifeq ($(HAVE_MYSQL),yes) ALL_DEPENDS=server tools SERVER_DEPENDS=common login char map import - COMMON_DEPENDS=mt19937ar libconfig yaml-cpp - LOGIN_DEPENDS=mt19937ar libconfig common - CHAR_DEPENDS=mt19937ar libconfig common yaml-cpp - MAP_DEPENDS=mt19937ar libconfig common yaml-cpp + COMMON_DEPENDS=libconfig yaml-cpp + LOGIN_DEPENDS=libconfig common + CHAR_DEPENDS=libconfig common yaml-cpp + MAP_DEPENDS=libconfig common yaml-cpp else ALL_DEPENDS=needs_mysql SERVER_DEPENDS=needs_mysql @@ -22,7 +22,6 @@ endif ##################################################################### .PHONY: all server sql \ common \ - mt19937ar \ login \ char \ map \ @@ -50,9 +49,6 @@ char: $(CHAR_DEPENDS) map: $(MAP_DEPENDS) @$(MAKE) -C src/map server -mt19937ar: - @$(MAKE) -C 3rdparty/mt19937ar - libconfig: @$(MAKE) -C 3rdparty/libconfig @@ -79,7 +75,6 @@ import: clean: @$(MAKE) -C src/common $@ - @$(MAKE) -C 3rdparty/mt19937ar $@ @$(MAKE) -C 3rdparty/libconfig $@ @$(MAKE) -C 3rdparty/yaml-cpp $@ @$(MAKE) -C src/login $@ @@ -91,7 +86,6 @@ help: @echo "most common targets are 'all' 'server' 'conf' 'clean' 'help'" @echo "possible targets are:" @echo "'common' - builds object files used for the three servers" - @echo "'mt19937ar' - builds object file of Mersenne Twister MT19937" @echo "'libconfig' - builds object files of libconfig" @echo "'yaml-cpp' - builds object files of yaml-cpp" @echo "'login' - builds login server" diff --git a/README.md b/README.md index d09a414db4..5a6eaa68d4 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ is broken down into Windows and Linux prerequisites. * Windows * MySQL ( http://www.mysql.com/downloads/mysql/ ) * MySQL Workbench ( http://www.mysql.com/downloads/workbench/ ) - * MS Visual C++ ( http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express ) + * MS Visual Studio ( https://www.visualstudio.com/downloads/ ) * TortoiseGIT ( http://code.google.com/p/tortoisegit/ ) - * MSysGit ( http://msysgit.github.io/ or https://github.com/msysgit/git/releases ) + * git for Windows ( https://gitforwindows.org/ ) * Linux (names of packages may require specific version numbers on certain distributions) * gcc @@ -181,13 +181,9 @@ Examples: * [CentOS](https://github.com/rathena/rathena/wiki/Install-on-Centos) * [Debian](https://github.com/rathena/rathena/wiki/Install-on-Debian) * [FreeBSD](https://github.com/rathena/rathena/wiki/Install-on-FreeBSD) - -* rAthena IRC Channel - * irc://irc.rizon.net/rathena - * Web Chat: https://rathena.org/board/page/chat.html * rAthena Discord Chat - http://discord.rathena.org + https://rathena.org/discord * rAthena Wiki https://github.com/rathena/rathena/wiki diff --git a/conf/atcommand_athena.conf b/conf/atcommand_athena.conf index 81fc0af6ae..53eff8088b 100644 --- a/conf/atcommand_athena.conf +++ b/conf/atcommand_athena.conf @@ -63,6 +63,7 @@ aliases: { cloneequip: ["eqclone"] clonestat: ["stclone"] reloadnpcfile: ["reloadnpc"] + changedress: ["nocosplay"] } /* Commands help file */ diff --git a/conf/battle/feature.conf b/conf/battle/feature.conf index cd31321d41..a3f920825f 100644 --- a/conf/battle/feature.conf +++ b/conf/battle/feature.conf @@ -67,3 +67,7 @@ feature.roulette: off // Achievement (Note 1) // Requires: 2015-05-13aRagexe or later feature.achievement: on + +// Homunculues Autofeeding (Note 1) +// Requires: 2017-09-20bRagexeRE or later +feature.homunculus_autofeed: off diff --git a/conf/battle/homunc.conf b/conf/battle/homunc.conf index c9121be644..c161c21d28 100644 --- a/conf/battle/homunc.conf +++ b/conf/battle/homunc.conf @@ -57,3 +57,7 @@ homunculus_S_max_level: 150 // Without this, a shuffle causes all levels of a Homunculus S to use their // growth tables, causing imbalanced stats homunculus_S_growth_level: 99 + +// Send auto-feed notice even if OFF (Note 1) +// Official: yes +homunculus_autofeed_always: yes diff --git a/conf/battle/player.conf b/conf/battle/player.conf index faec134cce..017d5870fa 100644 --- a/conf/battle/player.conf +++ b/conf/battle/player.conf @@ -75,8 +75,13 @@ max_extended_aspd: 193 // Maximum walk speed rate (200 would be capped to twice the normal speed) max_walk_speed: 300 -// Maximum HP. (Default is 1000000) -max_hp: 1000000 +// Maximum HPs depending on base level. Default values are: +// Lv 99: 330000 +// Lv150: 660000 +// Lv175: 1100000 +max_hp_lv99: 330000 +max_hp_lv150: 660000 +max_hp: 1100000 // Maximum SP. (Default is 1000000) max_sp: 1000000 @@ -261,3 +266,10 @@ fame_pharmacy_10: 50 // Be mindful that the more options used, the easier it becomes to cheat features that rely on idletime (e.g. checkidle()). // Default: walk (0x1) + useskilltoid (0x2) + useskilltopos (0x4) + useitem (0x8) + attack (0x10) = 0x1F idletime_option: 0x1F + +// Adjust the summoner class' special traits. +// 0: Summoners behave like other classes. +// 1: Summoners belong to brute race instead of demi-human +// 2: Summoners are small size instead of medium +// 3: Both of the above (official value) +summoner_trait: 3 diff --git a/conf/battle/skill.conf b/conf/battle/skill.conf index d59068e064..f28e41b6d4 100644 --- a/conf/battle/skill.conf +++ b/conf/battle/skill.conf @@ -122,7 +122,8 @@ gvg_traps_target_all: 1 // 0 = Always visible // 1 = Enable invisibility in versus maps (GVG/PVP/BG) // 2 = Enable invisibility in all maps -traps_setting: 0 +// Default on official servers: 0 for Pre-renewal, 2 for Renewal +//traps_setting: 0 // Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) // 1: Enable players to damage the floras outside of versus grounds. @@ -369,3 +370,8 @@ dispel_song: no // 0: Uses the official duration // X: Enter a custom duration in milliseconds. banana_bomb_duration: 0 + +// Should items that you try to create be dropped if you have no space left in your inventory? (Note 1) +// Official: no +// Legacy rAthena logic: yes +skill_drop_items_full: no diff --git a/conf/char_athena.conf b/conf/char_athena.conf index 79d037768b..a99d61632b 100644 --- a/conf/char_athena.conf +++ b/conf/char_athena.conf @@ -189,6 +189,14 @@ char_del_option: 2 // 3: Character cannot be deleted as long as he remains in a party or guild(default) char_del_restriction: 3 +// Restrict certain class from being created. (Only functional on 20151001aRagexe or later) +// 0: No character creation is allowed +// 1: Only novice is allowed to be created (pre-renewal default) +// 2: Only summoner is allowed to be created +// 3: Both novice and summoner can be created (renewal default) +// Uncomment to customize the restriction +//allowed_job_flag: 3 + // What folder the DB files are in (item_db.txt, etc.) db_path: db diff --git a/conf/groups.conf b/conf/groups.conf index d42fb8a510..ccdde95ff8 100644 --- a/conf/groups.conf +++ b/conf/groups.conf @@ -86,7 +86,7 @@ groups: ( level: 0 inherit: ( /*empty list*/ ) commands: { - /* no commands by default */ + changedress: true } permissions: { /* without this basic permissions regular players could not @@ -293,7 +293,6 @@ groups: ( item_unconditional: false bypass_stat_onclone: true bypass_max_stat: true - cashshop_sale: true /* all_permission: true */ } } diff --git a/conf/help.txt b/conf/help.txt index 8bcb8e3250..c5bd7ffbb5 100644 --- a/conf/help.txt +++ b/conf/help.txt @@ -103,6 +103,7 @@ jobchange: "Params: \n" "Changes your job.\n" "4046 Taekwon 4047 Star Gladiator 4049 Soul Linker 4050 Gangsi\n" "4051 Death Knight 4052 Dark Collector 4190 Ex. Super Novice 4191 Ex. Super Baby\n" "4211 Kagerou 4212 Oboro 4215 Rebellion 4218 Summoner\n" + "4239 Star Emperor 4240 Soul Reaper\n" "----- Baby Novice And Baby 1st Class -----\n" "4023 Baby Novice 4024 Baby Swordman 4025 Baby Magician 4026 Baby Archer\n" "4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief\n" @@ -119,7 +120,7 @@ jobchange: "Params: \n" "Changes your job.\n" "---- Expanded Baby Class ----\n" "4220 Baby Summoner 4222 Baby Ninja 4223 Baby Kagero 4224 Baby Oboro\n" "4225 Baby Taekwon 4226 Baby Star Glad 4227 Baby Soul Linker 4228 Baby Gunslinger\n" - "4229 Baby Rebellion\n" + "4229 Baby Rebellion 4241 Baby Star Emperor 4242 Baby Soul Reaper\n" "---- Modes And Others ----\n" " 22 Wedding 26 Christmas 27 Summer 28 Hanbok\n" " 4048 Star Gladiator (Union) 4238 Baby Star Glad (Union)\n" @@ -321,3 +322,5 @@ reload: "Params: \n" "Reload a database or configuration file.\n" " pcdb motd script\n" " questdb msgconf packetdb\n" langtype: "Params: \n" "Changes your language setting." +limitedsale: "Opens the limited sale window." +changedress: "Removes all character costumes." diff --git a/conf/login_athena.conf b/conf/login_athena.conf index ddd5ddd890..969b83bda2 100644 --- a/conf/login_athena.conf +++ b/conf/login_athena.conf @@ -98,7 +98,7 @@ chars_per_account: 0 // Increase the value of MAX_CHARS if you want to increase vip_char_increase. // Note: The amount of VIP characters = MAX_CHARS - chars_per_account. // Note 2: This setting must be set after chars_per_account. -// -1 will default to MAX_CHAR_VIP (src/config/core.h) +// -1 will default to MAX_CHAR_VIP (src/config/core.hpp) vip_char_increase: -1 // Create accounts with limited time? diff --git a/conf/maps_athena.conf b/conf/maps_athena.conf index 7c7cabde1b..e7972fa2d3 100644 --- a/conf/maps_athena.conf +++ b/conf/maps_athena.conf @@ -1174,6 +1174,7 @@ map: 1@glast // Biochemical Laboratory Nightmare map: lhz_dun_n +map: lhz_d_n2 // Copy of Old Glast Heim memorial map map: 1@gl_kh @@ -1271,91 +1272,79 @@ map: gef_d01_i // Illusion Ice (Frozen) map: ice_d03_i -// ?? +// Suspicious shipwreck map: 1@tre -// ?? +// Poring Town map: 1@begi // Illusion Turtle island (Archery) map: tur_d03_i map: tur_d04_i -// ?? +// Volcanic island Korodo map: 1@crd +// ?? +map: ordeal_a00 +map: ordeal_a02 +map: pprontera + +// ?? +map: niflxmas +map: sch_lab +map: nakhyang + +// Noodles Festival July +map: lasa_sea +map: 1@drdo + +// X anniversary +map: x_lhz +map: x_prt +map: x_ra + +// November hunting contest +map: prt_evt_in + +// Welcome Corridor +map: vis_h01 +map: vis_h02 +map: vis_h03 +map: vis_h04 + +// Illusion Teddy Bear Nasarian Empire +map: ein_d02_i + +// Illusion Ruande +map: com_d02_i + +// Soul Reaper Job Change +map: 1@soul + +// Star Emperor Job Change +map: star_frst +map: star_in + +// RWC Maps +map: 2009rwc_01 +map: 2009rwc_02 +map: 2009rwc_03 +map: 2009rwc_04 +map: 2009rwc_05 +map: 2009rwc_06 +map: 2009rwc_07 +map: 2009rwc_08 +map: 2009rwc_f01 +map: 2012rwc_01 +map: 2012rwc_02 +map: 2012rwc_03 +map: 2012rwc_04 +map: 2012rwc_05 +map: 2012rwc_06 +map: 2012rwc_07 +map: 2012rwc_08 + + //------------------------- Clone Maps --------------------------- //------------------------- Extra Maps --------------------------- - -// Ragnarok World Championship 2004 -// Requires: RWC 2004 Client -// or Akaru's SuperGRF 1.64 or newer -//map: rwc01 -//map: rwc02 -//map: rwc03 - -// Ragnarok World Championship 2009 -// Requires: RWC 2009 Map files -//map: 2009rwc_f01 -//map: 2009rwc_01 -//map: 2009rwc_02 -//map: 2009rwc_03 -//map: 2009rwc_04 - -// Ragnarok World Championship 2008? -// Requires: RWC 2008 Map files? -//map: 2008rwc_04 - -//Christmas & Sakura Special -//Requires Akaru's SuperGRF 1.1 or newer -//map: prontera_x -//map: alberta_x -//map: aldebaran_x -//map: geffen_x -//map: izlude_x -//map: prt_church_x -//map: prontera_s -//map: pay_arche_s - -//Fenced Lutie -//Requires Akaru's SuperGRF 1.23 or newer -//map: xmas_old - -//Alpha Maps -//Requires adata.grf containing alpha maps and data -//map: fay_vilg00 -//map: fay_vilg01 -//map: gef_vilg00 -//map: gef_vilg01 -//map: moc_dugn01 -//map: moc_dugn02 -//map: moc_fild01 -//map: moc_fild02 -//map: moc_fild03 -//map: moc_fild04 -//map: moc_intr00 -//map: moc_intr01 -//map: moc_intr02 -//map: moc_intr04 -//map: moc_vilg00 -//map: moc_vilg01 -//map: moc_vilg02 -//map: probemap -//map: probemap02 -//map: prt_cstl01 -//map: prt_dugn00 -//map: prt_dugn01 -//map: prt_fild00 -//map: prt_fild01 -//map: prt_fild03 -//map: prt_fild04 -//map: prt_fild05 -//map: prt_intr01 -//map: prt_intr01_a -//map: prt_intr02 -//map: prt_vilg00 -//map: prt_vilg01 -//map: prt_vilg02 -//map: tank_test -//map: tank_test2 -//map: test diff --git a/conf/msg_conf/char_msg.conf b/conf/msg_conf/char_msg.conf index 687a524371..a849dcab4c 100644 --- a/conf/msg_conf/char_msg.conf +++ b/conf/msg_conf/char_msg.conf @@ -125,7 +125,12 @@ 115: Baby Soul Linker 116: Baby Gunslinger 117: Baby Rebellion -118: Unknown Job +118: Star Emperor +119: Soul Reaper +120: Baby Star Emperor +121: Baby Soul Reaper + +199: Unknown Job //Auction 200: Auction Manager @@ -149,8 +154,8 @@ 216: No account with ID '%d' was found. 217: -- Account %d -- 218: User: %s | GM Group: %d | State: %d -219: Password: %s (PIN:%s) -220: **** +//219: FREE +//220: FREE 221: Account e-mail: %s | Birthdate: %s 222: Last IP: %s (%s) 223: This user has logged in %d times, the last time was at %s diff --git a/conf/msg_conf/map_msg.conf b/conf/msg_conf/map_msg.conf index f95c7905a6..81428aaa5e 100644 --- a/conf/msg_conf/map_msg.conf +++ b/conf/msg_conf/map_msg.conf @@ -690,7 +690,7 @@ 666: Pets are not allowed in Guild Wars. 667: You're not dead. 668: Your actual memo positions are: -669: You broke the target's weapon. +//669 free 670: You can't leave battleground guilds. 671: Friend already exists. 672: Name not found in list. @@ -831,7 +831,15 @@ // Achievements 772: Achievements are disabled. -//773-899 free +//773-775 reserved for refine UI +//776-781 reserved for tax system + +782: Star Emperor +783: Soul Reaper +784: Baby Star Emperor +785: Baby Soul Reaper + +//786-899 free //------------------------------------ // More atcommands message diff --git a/conf/msg_conf/map_msg_chn.conf b/conf/msg_conf/map_msg_chn.conf index 3c41d9ebaa..db259dd8b3 100644 --- a/conf/msg_conf/map_msg_chn.conf +++ b/conf/msg_conf/map_msg_chn.conf @@ -643,7 +643,7 @@ 666: 公會戰不允許有寵物 667: 你沒死亡 668: 你實際儲存點是: -669: 你破壞目標的武器 +//669 free 670: 你無法離開戰場公會 671: 這朋友已存在 672: 該名稱不在清單內 diff --git a/conf/msg_conf/map_msg_frn.conf b/conf/msg_conf/map_msg_frn.conf index b840ada28b..4279933589 100644 --- a/conf/msg_conf/map_msg_frn.conf +++ b/conf/msg_conf/map_msg_frn.conf @@ -655,7 +655,7 @@ 666: Pets non-autoriss lors d'une guerre entre guilde. 667: Vous n'tes pas mort(e). 668: Votre position memo actuelle est: -669: Vous brisez l'arme de la cible. +//669 free 670: Vous ne pouvez pas quitter votre guilde. 671: Cette personne est dj dans votre liste d'ami. 672: Nom introuvable dans la liste. diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 56f4be3de8..79bc84e611 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -689,7 +689,7 @@ 666: Peliharaan tidak diperbolehkan di Guild Wars. 667: Kamu tidak mati. 668: Posisi memomu saat ini adalah: -669: Kamu menghancurkan senajta lawan. +//669 kosong 670: Kamu tidak dapat meninggalkan guild battleground. 671: Teman sudah ada. 672: Nama tidak ditemukan di daftar. diff --git a/conf/msg_conf/map_msg_mal.conf b/conf/msg_conf/map_msg_mal.conf new file mode 100644 index 0000000000..4d98c7d925 --- /dev/null +++ b/conf/msg_conf/map_msg_mal.conf @@ -0,0 +1,3 @@ + +//Custom translations +import: conf/msg_conf/import/map_msg_mal_conf.txt diff --git a/conf/msg_conf/map_msg_por.conf b/conf/msg_conf/map_msg_por.conf index 4c50bc8952..dddb8543fe 100644 --- a/conf/msg_conf/map_msg_por.conf +++ b/conf/msg_conf/map_msg_por.conf @@ -635,7 +635,7 @@ 666: Bichinhos de estimao no so permitidos na Guerra de Cls. 667: Voc no est morto. 668: Seu ponto de retorno atual : -669: Voc quebrou a arma de seu oponente. +//669 livre 670: Voc no pode deixar os campos de batalha em uma guerra. 671: Amigo j existente. 672: Nome no encontrado na lista. diff --git a/conf/msg_conf/map_msg_rus.conf b/conf/msg_conf/map_msg_rus.conf index 7db5bf6ee0..45e85f3189 100644 --- a/conf/msg_conf/map_msg_rus.conf +++ b/conf/msg_conf/map_msg_rus.conf @@ -655,7 +655,7 @@ 666: . 667: . 668: : -669: . +//669 670: . 671: . 672: . diff --git a/conf/msg_conf/map_msg_spn.conf b/conf/msg_conf/map_msg_spn.conf index 68649dfe1d..14b7341dcc 100644 --- a/conf/msg_conf/map_msg_spn.conf +++ b/conf/msg_conf/map_msg_spn.conf @@ -690,7 +690,7 @@ 666: Las mascotas estn prohibidas en la guerra de clanes. 667: No ests muerto. 668: Tus puntos de memorizacin actuales son los siguientes: -669: Has roto el arma de tu enemigo. +//669 vaco 670: No puedes abandonar un clan especial de battleground. 671: Ese jugador ya es amigo tuyo. 672: No se ha encontrado el nombre que has introducido. diff --git a/conf/msg_conf/map_msg_tha.conf b/conf/msg_conf/map_msg_tha.conf index 023d73fe0c..758f03f575 100644 --- a/conf/msg_conf/map_msg_tha.conf +++ b/conf/msg_conf/map_msg_tha.conf @@ -649,7 +649,7 @@ 666: ѵ§١Ѻ͹حҵ㹾鹷 Guild Wars. 667: س. 668: ˹觷سѹ֡մѧ: -669: سظͧ. +//669 free 670: سö͡ҡ Guild 㹢 battleground. 671: ͹. 672: 辺¡. diff --git a/configure b/configure index 672d335780..ff74f6e053 100755 --- a/configure +++ b/configure @@ -584,7 +584,7 @@ PACKAGE_BUGREPORT= PACKAGE_URL= ac_unique_file="rAthena" -ac_unique_file="src/common/cbasetypes.h" +ac_unique_file="src/common/cbasetypes.hpp" # Factoring default headers for most tests. ac_includes_default="\ #include @@ -2736,7 +2736,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_files="$ac_config_files Makefile src/common/Makefile" -ac_config_files="$ac_config_files 3rdparty/mt19937ar/Makefile 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile" +ac_config_files="$ac_config_files 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile" ac_config_files="$ac_config_files src/char/Makefile src/login/Makefile" @@ -7749,7 +7749,6 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;; - "3rdparty/mt19937ar/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/mt19937ar/Makefile" ;; "3rdparty/libconfig/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/libconfig/Makefile" ;; "3rdparty/yaml-cpp/Makefile") CONFIG_FILES="$CONFIG_FILES 3rdparty/yaml-cpp/Makefile" ;; "src/char/Makefile") CONFIG_FILES="$CONFIG_FILES src/char/Makefile" ;; diff --git a/configure.in b/configure.in index 2715af8578..5220e46ef6 100644 --- a/configure.in +++ b/configure.in @@ -6,9 +6,9 @@ AC_REVISION($Revision$) AC_PREREQ([2.59]) AC_LANG([C++]) AC_LANG_COMPILER_REQUIRE -AC_CONFIG_SRCDIR([src/common/cbasetypes.h]) +AC_CONFIG_SRCDIR([src/common/cbasetypes.hpp]) AC_CONFIG_FILES([Makefile src/common/Makefile]) -AC_CONFIG_FILES([3rdparty/mt19937ar/Makefile 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile]) +AC_CONFIG_FILES([3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile]) AC_CONFIG_FILES([src/char/Makefile src/login/Makefile]) AC_CONFIG_FILES([src/map/Makefile src/tool/Makefile]) diff --git a/db/import-tmpl/item_group_db.txt b/db/import-tmpl/item_group_db.txt index 8d9e285b40..99f50c9f30 100644 --- a/db/import-tmpl/item_group_db.txt +++ b/db/import-tmpl/item_group_db.txt @@ -1,2 +1,4 @@ -//import: db/import/item_groupid.txt - +// Item Group Database +// +// Structure of Database: +// GroupID,ItemID,Rate{,Amount,Random,isAnnounced,Duration,GUID,isBound,isNamed} diff --git a/db/job_db2.txt b/db/job_db2.txt index b0fd6bfe83..526e87663c 100644 --- a/db/job_db2.txt +++ b/db/job_db2.txt @@ -310,4 +310,20 @@ // Baby Rebellion 4229,0,5,0,4,0,3,5,4,2,6,0,0,3,4,0,2,5,4,3,6,0,0,3,5,1,4,2,0,0,6,3,0,5,4,1,0,0,5,0,2,6,0,5,3,4,0,0,0,0,1 // Baby Star Gladiator (Union) -4238,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 \ No newline at end of file +4238,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 +//================================ +// Note: Star Emperor and Soul Reaper bonus stats are unknown. Using Star Gladiator and Soul Linker's +// bonus stats for now until I know the official ones. +// +// Star Emperor +4239,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 +// Soul Reaper +4240,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5 +// Baby Star Emperor +4241,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 +// Baby Soul Reaper +4242,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5 +// Star Emperor (Union) +4243,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 +// Baby Star Emperor (Union) +4244,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2 diff --git a/db/map_index.txt b/db/map_index.txt index 11873c0f24..469c63e9e9 100644 --- a/db/map_index.txt +++ b/db/map_index.txt @@ -1,13 +1,13 @@ //====================================================================================== // Map Index //====================================================================================== -//Contains the list of maps with their respective IDs for inter-server use. -//IDs must never change, therefore any new maps need to be added at the end, -//and old ones must not be removed, but may be replaced. -//Format: -//mapnameindex <- specifies index for this map -//mapname <- map will use index of previous map +1 -//Note that map index 0 is special and reserved for "error" status. +// Contains the list of maps with their respective IDs for inter-server use. +// IDs must never change, therefore any new maps need to be added at the end, +// and old ones must not be removed, but may be replaced. +// Format: +// mapnameindex <- specifies index for this map +// mapname <- map will use index of previous map +1 +// Note that map index 0 is special and reserved for "error" status. alb_ship 1 alb2trea @@ -942,6 +942,7 @@ job_gun 1@air2 1@glast lhz_dun_n +lhz_d_n2 1@gl_kh 2@gl_kh 1@lab @@ -1008,66 +1009,45 @@ ice_d03_i tur_d03_i tur_d04_i 1@crd - -// Only add maps under this line if they are not standard maps! - +ordeal_a00 +ordeal_a02 +pprontera +niflxmas +sch_lab +nakhyang +lasa_sea +1@drdo +x_lhz +x_prt +x_ra +prt_evt_in +vis_h01 +vis_h02 +vis_h03 +vis_h04 +ein_d02_i +com_d02_i +1@soul +star_frst +star_in +2009rwc_01 +2009rwc_02 +2009rwc_03 +2009rwc_04 +2009rwc_05 +2009rwc_06 +2009rwc_07 +2009rwc_08 +2009rwc_f01 +2012rwc_01 +2012rwc_02 +2012rwc_03 +2012rwc_04 +2012rwc_05 +2012rwc_06 +2012rwc_07 +2012rwc_08 //====================================================================================== // - Other/Extra maps - //====================================================================================== -//rwc01 1000 -//rwc02 -//rwc03 -//2009rwc_f01 -//2009rwc_01 -//2009rwc_02 -//2009rwc_03 -//2009rwc_04 -//2008rwc_04 -//prontera_x -//alberta_x -//aldebaran_x -//geffen_x -//izlude_x -//prt_church_x -//prontera_s -//pay_arche_s -//xmas_old -//ordeal_a00 -//ordeal_a02 -//fay_vilg00 -//fay_vilg01 -//gef_vilg00 -//gef_vilg01 -//moc_dugn01 -//moc_dugn02 -//moc_fild01 -//moc_fild02 -//moc_fild03 -//moc_fild04 -//moc_intr00 -//moc_intr01 -//moc_intr02 -//moc_intr04 -//moc_vilg00 -//moc_vilg01 -//moc_vilg02 -//probemap -//probemap02 -//prt_cstl01 -//prt_dugn00 -//prt_dugn01 -//prt_fild00 -//prt_fild01 -//prt_fild03 -//prt_fild04 -//prt_fild05 -//prt_intr01 -//prt_intr01_a -//prt_intr02 -//prt_vilg00 -//prt_vilg01 -//prt_vilg02 -//tank_test -//tank_test2 -//test diff --git a/db/pre-re/achievement_db.yml b/db/pre-re/achievement_db.yml index 8ce928a5bf..10f908e659 100644 --- a/db/pre-re/achievement_db.yml +++ b/db/pre-re/achievement_db.yml @@ -1729,7 +1729,7 @@ Achievements: Name: "Magic Insanity" Condition: " bInt >= 125 " Reward: - Script: " specialeffect2 EF_HASTEUP; bonus_script \"{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; }\",60,0,0,SI_STEAMPACK; " + Script: " specialeffect2 EF_HASTEUP; bonus_script \"{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; }\",60,0,0,EFST_STEAMPACK; " Score: 20 - ID: 200025 Group: "AG_GOAL_STATUS" @@ -1780,9 +1780,16 @@ Achievements: Name: "Reborn in Valhalla!" Condition: " Class == JOB_NOVICE_HIGH " Reward: - # ItemID: 22808 + # ItemID: 23575 Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; " Score: 10 + - ID: 200032 + Group: "AG_GOAL_LEVEL" + Name: "The start of another adventure!" + Condition: " BaseLevel == 100 " + #Reward: + # ItemID: 23585 + Score: 10 - ID: 230100 Group: "AG_TAMING" Name: "Poring is Love" @@ -2220,7 +2227,7 @@ Achievements: Count: 1 - MobID: 1120 Count: 1 - Score: 15 + Score: 20 - ID: 230203 Group: "AG_BATTLE" Name: "Exploring Poring's life (3)" @@ -2397,11 +2404,3 @@ Achievements: Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; " TitleID: 1024 Score: 10 - - ID: 220036 - Group: "AG_EAT" - Name: "The beginning of outdoor" - Score: 20 - - ID: 220037 - Group: "AG_EAT" - Name: "The first step becoming a chef" - Score: 20 diff --git a/db/pre-re/item_combo_db.txt b/db/pre-re/item_combo_db.txt index a51d627f27..665f8bfa2c 100644 --- a/db/pre-re/item_combo_db.txt +++ b/db/pre-re/item_combo_db.txt @@ -72,7 +72,7 @@ 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; } 2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; } 2376:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; } -2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,0; } +2377:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; } 2378:2435:2538,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; } 2379:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; } 2380:2436:2539,{ bonus2 bSubRace,RC_All,-300; bonus2 bSubRace,RC_DemiHuman,300; bonus2 bSubRace,RC_Player,300; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; } @@ -92,7 +92,7 @@ 2434:2530,{ bonus bFlee,10; } 2434:2551,{ bonus bFlee,10; } 2441:2546,{ bonus bFlee,5; } -2518:2648:2649:5126,{ bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; bonus bNoCastCancel,0; bonus bCastrate,25; } +2518:2648:2649:5126,{ bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; bonus bNoCastCancel; bonus bCastrate,25; } 2519:2650:2651:5127,{ bonus bStr,2; bonus bLuk,9; bonus bCritical,13; bonus bBaseAtk,18; bonus bFlee2,13; } 2527:13001,{ bonus2 bAddRace,RC_Dragon,5; } 2607:2677,{ bonus2 bSkillAtk,"AL_HEAL",50; bonus2 bSkillAtk,"PR_MAGNUS",30; bonus bSPrecovRate,9; } @@ -136,11 +136,11 @@ 4127:4166,{ bonus2 bAddEffWhenHit,Eff_Curse,600; } 4153:4247:4273,{ bonus3 bAddMonsterDropItem,544,RC_Fish,3000; bonus2 bAddEle,Ele_Water,30; } 4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bCastrate,-10; } -4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; } +4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone; } 4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } } 4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; } 4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } } -4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel,0; } } +4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel; } } 4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPDrainValue,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } } 4191:4208:4258:4309:4325:4327,{ bonus bMaxHP,500; bonus bDef,5; bonus bMdef,5; bonus2 bSkillAtk,14,10; bonus2 bSkillAtk,19,10; bonus2 bSkillAtk,20,10; if(BaseClass==Job_Mage) { bonus bMatkRate,3; bonus bCastrate,-15; } } 4193:4294,{ bonus bMaxHP,300; bonus bMaxSP,60; } diff --git a/db/pre-re/item_db.txt b/db/pre-re/item_db.txt index 21045a35f5..b709c31e2a 100644 --- a/db/pre-re/item_db.txt +++ b/db/pre-re/item_db.txt @@ -474,7 +474,7 @@ 1121,Tsurugi__,Tsurugi,5,51000,,1200,130,,1,0,0x000654E2,7,2,2,3,27,1,2,{},{},{} 1122,Ring_Pommel_Saber,Ring Pommel Saber,5,24000,,900,100,,1,2,0x000654E2,7,2,2,2,14,1,2,{},{},{} 1123,Haedonggum,Haedonggum,5,50000,,900,120,,1,1,0x000654E2,7,2,2,3,27,1,2,{ bonus bInt,3; },{},{} -1124,Orcish_Sword,Orcish Sword,5,20,,800,90,,1,0,0x000654E3,7,2,2,3,5,1,2,{ bonus bUnbreakableWeapon,0; },{},{} +1124,Orcish_Sword,Orcish Sword,5,20,,800,90,,1,0,0x000654E3,7,2,2,3,5,1,2,{ bonus bUnbreakableWeapon; },{},{} 1125,Ring_Pommel_Saber_,Ring Pommel Saber,5,24000,,900,100,,1,3,0x000654E2,7,2,2,2,14,1,2,{},{},{} 1126,Saber,Saber,5,49000,,1000,115,,1,2,0x000654E2,7,2,2,3,27,1,2,{},{},{} 1127,Saber_,Saber,5,49000,,1000,115,,1,3,0x000654E2,7,2,2,3,27,1,2,{},{},{} @@ -491,14 +491,14 @@ 1138,Mysteltainn_,Mysteltainn,5,20,,1000,170,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3; },{},{} 1139,Tale_Fing_,Tirfing,5,20,,1000,200,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000; },{},{} 1140,Byeorrun_Gum,Byeollungum,5,20,,900,150,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus2 bSubClass,Class_Normal,-10; bonus2 bAddClass,Class_Boss,50; bonus bAllStats,2; },{},{} -1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{} +1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,7,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon; },{},{} 1142,Jewel_Sword,Jeweled Sword,5,20,,2200,104,,1,0,0x000654E2,7,2,2,3,68,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Jewel,100; },{},{} 1143,Gaia_Sword,Gaia Sword,5,20,,2500,140,,1,0,0x000654E2,7,2,2,3,74,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Ore,30; },{},{} 1144,Sasimi,Sashimi,5,20,,1400,75,,1,0,0x000654E2,7,2,2,3,48,1,2,{ bonus bAtkEle,Ele_Wind; bonus3 bAddMonsterDropItem,544,RC_Fish,4000; },{},{} 1145,Holy_Avenger,Holy Avenger,5,450000,,1350,125,,1,0,0x00004000,7,2,2,3,75,1,2,{ bonus bAtkEle,Ele_Holy; bonus bVit,2; },{},{} 1146,Town_Sword,Town Sword,5,42000,,800,100,,1,1,0x00000001,7,2,2,3,30,1,2,{},{},{} 1147,Town_Sword_,Town Sword,5,42000,,800,100,,1,2,0x00000001,7,2,2,3,30,1,2,{},{},{} -1148,Star_Dust_Blade,Star Dust Blade,5,20,,1000,140,,1,1,0x00000001,7,2,2,4,45,1,2,{ bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon,0; },{},{} +1148,Star_Dust_Blade,Star Dust Blade,5,20,,1000,140,,1,1,0x00000001,7,2,2,4,45,1,2,{ bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon; },{},{} 1149,Flamberge_,Flamberge,5,60000,,1500,150,,1,2,0x00004080,7,2,2,3,27,1,2,{},{},{} // 2-Handed Swords 1151,Slayer,Slayer,5,15000,,1300,90,,1,2,0x00004082,7,2,34,2,18,1,3,{},{},{} @@ -510,18 +510,18 @@ 1157,Two_Hand_Sword,Two-Handed Sword,5,60000,,2200,160,,1,1,0x00004082,7,2,34,3,33,1,3,{},{},{} 1158,Two_Hand_Sword_,Two-Handed Sword,5,60000,,2200,160,,1,2,0x00004082,7,2,34,3,33,1,3,{},{},{} 1159,Two_Hand_Sword__,Two-Handed Sword,5,60000,,2200,160,,1,0,0x00004082,7,2,34,3,33,1,3,{},{},{} -1160,Broad_Sword,Broad Sword,5,65000,,2000,140,,1,1,0x00004082,7,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon,0; },{},{} -1161,Balmung,Balmung,5,20,,1000,250,,1,0,0xFFFFFFFF,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Holy; },{},{} -1162,Broad_Sword_,Broad Sword,5,65000,,2000,140,,1,2,0x00004082,7,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon,0; },{},{} +1160,Broad_Sword,Broad Sword,5,65000,,2000,140,,1,1,0x00004082,7,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon; },{},{} +1161,Balmung,Balmung,5,20,,1000,250,,1,0,0xFFFFFFFF,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy; },{},{} +1162,Broad_Sword_,Broad Sword,5,65000,,2000,140,,1,2,0x00004082,7,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon; },{},{} 1163,Claymore,Claymore,5,74000,,2500,180,,1,0,0x00004080,7,2,34,3,33,1,3,{},{},{} 1164,Muramasa,Muramasa,5,20,,1000,155,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bCritical,30; bonus bAspdRate,8; bonus2 bAddEff2,Eff_Curse,10; },{},{} 1165,Masamune,Masamune,5,20,,1000,200,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} 1166,Dragon_Slayer,Dragon Slayer,5,20,,1300,150,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{} 1167,Schweizersabel,Schweizersabel,5,20,,1600,160,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{} -1168,Zweihander,Zweihander,5,20,,2200,200,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,0; },{},{} +1168,Zweihander,Zweihander,5,20,,2200,200,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; },{},{} 1169,Executioner_,Executioner,5,20,,2200,155,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{} 1170,Katzbalger,Katzbalger,5,20,,2000,175,,1,0,0x00004082,7,2,34,4,48,1,3,{ bonus bVit,5; bonus bDef,10; },{},{} -1171,Zweihander_,Zweihander,5,20,,2200,200,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,0; },{},{} +1171,Zweihander_,Zweihander,5,20,,2200,200,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; },{},{} 1172,Claymore_,Claymore,5,74000,,2500,180,,1,2,0x00004080,7,2,34,3,33,1,3,{},{},{} 1173,Muramasa_C,Muramasa,5,1,,0,204,,1,0,0x00004082,7,2,34,4,1,0,3,{ bonus bCritical,30; bonus bAspdRate,8; },{},{} 1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,7,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{} @@ -533,11 +533,11 @@ 1180,Dragon_Slayer_,Dragon Slayer,5,20,,1300,150,,1,2,0x00004082,7,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{} 1181,Tae_Goo_Lyeon,Tae Goo Lyeon,5,20,,2000,250,,1,2,0x00004082,2,2,34,4,90,1,3,{ bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bCastrate,-20; bonus bDelayRate,-20; } },{},{} 1182,Bloody_Eater,Bloody Eater,5,20,,1200,200,,1,2,0x00004082,2,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{} -1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0; },{},{} +1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,7,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon; },{},{} 1185,Violet_Fear,Violet Fear,5,20,,2200,275,,1,2,0x00004082,2,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{} 1186,Death_Guidance,Death Guidance,5,20,,2000,200,,1,2,0x00004082,2,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20; },{},{} -1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; } },{},{} +1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,7,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; } },{},{} 1188,Veteran_Sword,Veteran Sword,5,10000,,2000,180,,1,1,0x00004082,7,2,34,4,80,1,3,{ if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1; },{},{} 1189,Krasnaya,Krasnaya,5,20,,3800,200,,2,3,0x00004082,2,2,34,2,50,1,3,{ if(readparam(bStr)>=95) { bonus bBaseAtk,20; } },{},{} 1190,Claymore_C,Claymore,5,0,,0,220,,1,0,0x00004080,7,2,34,3,1,0,3,{ bonus2 bAddSize,Size_All,40; },{},{} @@ -563,11 +563,11 @@ 1219,Gladius,Gladius,5,43000,,700,105,,1,2,0x028F5EEE,7,2,2,3,24,1,1,{},{},{} 1220,Gladius_,Gladius,5,43000,,700,105,,1,3,0x028F5EEE,7,2,2,3,24,1,1,{},{},{} 1221,Gladius__,Gladius,5,43000,,700,105,,1,0,0x028F5EEE,7,2,2,3,24,1,1,{},{},{} -1222,Damascus,Damascus,5,49000,,800,118,,1,1,0x028F5EEE,7,2,2,3,24,1,1,{ bonus bUnbreakableWeapon,0; },{},{} +1222,Damascus,Damascus,5,49000,,800,118,,1,1,0x028F5EEE,7,2,2,3,24,1,1,{ bonus bUnbreakableWeapon; },{},{} 1223,Forturn_Sword,Fortune Sword,5,20,,500,90,,1,0,0x028F5EEE,7,2,2,4,24,1,1,{ bonus bLuk,5; bonus bFlee2,20; },{},{} 1224,Sword_Breaker,Swordbreaker,5,20,,1000,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakWeaponRate,500; },{},{} 1225,Mail_Breaker,Mailbreaker,5,20,,1000,70,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bBreakArmorRate,500; },{},{} -1226,Damascus_,Damascus,5,49000,,800,118,,1,2,0x028F5EEE,7,2,2,3,24,1,1,{ bonus bUnbreakableWeapon,0; },{},{} +1226,Damascus_,Damascus,5,49000,,800,118,,1,2,0x028F5EEE,7,2,2,3,24,1,1,{ bonus bUnbreakableWeapon; },{},{} 1227,Weeder_Knife,Weeder Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15; },{},{} 1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; },{},{} 1229,Mama's_Knife,Kitchen Knife,5,20,,500,75,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000; },{},{} @@ -577,7 +577,7 @@ 1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; },{},{} 1234,Moonlight_Sword,Moonlight Dagger,5,20,,700,50,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{} 1235,Azoth,Azoth,5,20,,700,110,,1,0,0x00040000,7,2,2,4,36,1,1,{ bonus bClassChange,300; },{},{} -1236,Sucsamad,Sucsamad,5,20,,800,140,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{} +1236,Sucsamad,Sucsamad,5,20,,800,140,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon; },{},{} 1237,Grimtooth_,Grimtooth,5,20,,800,180,,1,0,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{} 1238,Zeny_Knife,Zeny Knife,5,20,,1200,64,,1,0,0x028F5EEE,7,2,2,3,70,1,1,{ bonus2 bGetZenyNum,100,40; },{},{} 1239,Poison_Knife,Poison Knife,5,20,,800,64,,1,0,0x028F5EEE,7,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{} @@ -605,9 +605,9 @@ 1260,Ghoul_Leg,Sharpened Legbone of Ghoul,5,52500,,1700,150,,1,0,0x00001000,7,2,34,3,65,1,16,{ bonus bAtkEle,Ele_Undead; },{},{} 1261,Infiltrator,Infiltrator,5,57000,,1500,140,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{} 1262,Nail_Of_Loki,Loki's Nail,5,20,,1200,115,,1,0,0x00001000,7,2,34,3,55,1,16,{ bonus2 bAddEff,Eff_Bleeding,300; },{},{} -1263,Unholy_Touch,Unholy Touch,5,20,,1250,151,,1,0,0x00001000,7,2,34,4,70,1,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} +1263,Unholy_Touch,Unholy Touch,5,20,,1250,151,,1,0,0x00001000,7,2,34,4,70,1,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon; },{},{} 1264,Various_Jur,Specialty Jur,5,20,,800,90,,1,4,0x00001000,7,2,34,1,1,1,16,{ bonus2 bAddEff2,Eff_Bleeding,10; },{},{} -1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} +1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,7,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-(readparam(bAgi)+BaseLevel); bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} 1266,Infiltrator_,Infiltrator,5,57000,,1500,140,,1,1,0x00001000,7,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{} 1267,Infiltrator_C,Infiltrator,5,1,,0,189,,1,0,0x00001000,7,2,34,4,1,0,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5; },{},{} 1268,Wild_Beast_Claw,Wild Beast Claw,5,20,,1450,160,,1,1,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_CRITICALWOUND",2,100; } else bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; },{},{} @@ -615,20 +615,20 @@ 1270,Drill_Katar,Drill Katar,5,20,,1400,110,,1,1,0x00001000,2,2,34,4,55,1,16,{ bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150; },{},{} 1271,Blood_Tears,Blood Tears,5,20,,1700,120,,1,2,0x00001000,2,2,34,4,55,1,16,{ if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30; },{},{} 1272,Scratcher,Scratcher,5,20,,0,120,,1,0,0x00001000,7,2,34,1,0,0,16,{ bonus2 bAddClass,Class_All,50; },{},{} -1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; },{},{} -1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0; },{},{} +1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bHPRegenRate,3,5000; },{},{} +1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon; },{},{} 1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{} 1276,Katar_Of_Thornbush_,Katar of Quaking,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500; },{},{} 1277,Katar_Of_Raging_Blaze_,Katar of Raging Blaze,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{} 1278,Katar_Of_Piercing_Wind_,Katar of Piercing Wind,5,45000,,1200,105,,1,3,0x00001000,7,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500; },{},{} -1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0; },{},{} -1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} -1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,7,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon; },{},{} +1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,7,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 1283,Katar_Of_Speed,Katar Of Speed,5,20,,0,175,,1,0,0x00001000,7,2,34,4,0,0,16,{ bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3; },{},{} 1284,Krishna,Krishna,5,20,,1200,120,,1,2,0x00001000,2,2,34,3,50,1,16,{ bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; } },{},{} 1285,Cakram,Chakram,5,20,,1000,130,,1,2,0x00001000,2,2,34,3,50,1,16,{ if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20; },{},{} -1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,7,2,34,3,1,0,16,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40; },{},{} +1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,7,2,34,3,1,0,16,{ bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40; },{},{} // 1-Handed Axes 1301,Axe,Axe,5,500,,800,38,,1,3,0x000654E3,7,2,2,1,3,1,6,{},{},{} 1302,Axe_,Axe,5,500,,800,38,,1,4,0x000654E3,7,2,2,1,3,1,6,{},{},{} @@ -639,7 +639,7 @@ 1307,Windhawk,Windhawk,5,18000,,1500,115,,1,0,0x000654E2,7,2,2,2,14,1,6,{ bonus bAtkEle,Ele_Wind; bonus bAspdRate,5; },{},{} 1308,Golden_Axe,Golden Axe,5,20,,3000,170,,1,0,0x00000001,7,2,2,4,45,1,6,{},{},{} 1309,Orcish_Axe_,Orcish Axe,5,20,,1500,75,,1,4,0x000654E3,7,2,2,3,3,1,6,{},{},{} -1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{} +1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{} 1311,Vecer_Axe,Vecer Axe,5,20,,1500,140,,1,2,0x000444A2,2,2,2,3,50,1,6,{ if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } },{},{} 1312,Orcish_Axe_C,Orcish Axe,5,0,,0,110,,1,0,0x000654E3,7,2,2,3,1,0,6,{ bonus2 bAddSize,Size_All,70; },{},{} 1313,Tourist_Axe,Tourist Axe,5,0,,500,77,,1,0,0x000654E3,7,2,2,1,1,0,6,{ bonus bStr,2; },{},{} @@ -674,10 +674,10 @@ 1376,Heart_Breaker,Heart Breaker,5,20,,2000,175,,1,1,0x000444A2,2,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{} 1377,Hurricane_Fury,Hurricane's Fury,5,20,,3500,332,,1,1,0x000444A2,2,2,34,4,80,1,7,{ bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20; },{},{} 1378,Great_Axe_C,Refined Great Axe,5,1,,0,215,,1,0,0x000444A2,7,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000; },{},{} -1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{} +1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,7,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} 1381,N_Battle_Axe,Novice Battle Axe,5,0,,0,100,,1,3,0x000444A2,7,2,34,1,3,0,7,{},{},{} -1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{} +1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,7,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{} 1383,Holy_Celestial_Axe,Celestial Axe,5,20,,1500,200,,1,0,0x000444A2,7,2,34,4,60,1,7,{ bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50; },{},{} 1384,Veteran_Axe,Veteran Axe,5,10000,,3000,250,,1,2,0x000444A2,7,2,34,3,80,1,7,{ if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2; },{},{} 1385,Bradium_Stonehammer,Bradium Stone Hammer,5,20,,2700,210,,1,0,0x000444A2,2,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{} @@ -706,15 +706,15 @@ 1417,Pole_Axe,Pole Axe,5,20,,3800,160,,3,1,0x00004082,7,2,2,3,71,1,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} 1418,Gungnir_,Gungnir,5,20,,500,120,,3,2,0x00004082,7,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{} 1419,Pole_Axe_C,Pole Axe,5,1,,4800,159,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} -1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{} +1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon; },{},{} 1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3; },{},{} 1422,Hunting_Spear,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{} 1423,Pole_XO,Pole XO,5,20,,0,120,,3,0,0x00004082,7,2,2,1,0,0,4,{ bonus2 bAddClass,Class_All,50; },{},{} 1424,Skewer_C,Refined Brocca,5,1,,0,149,,3,0,0x00004082,7,2,2,4,0,0,4,{ bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20; },{},{} -1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} -1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{} +1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,7,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} +1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,7,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{} 1427,Spear_Of_Excellent,Spear Of Excellent,5,20,,0,160,,3,0,0x00004082,7,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{} -1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0; },{},{} +1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,2,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon; },{},{} 1429,Hunting_Spear_M,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,2,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500; },{},{} 1430,Pike_C,Pike,5,0,,0,74,,3,0,0x00004082,7,2,2,1,1,0,4,{ bonus2 bAddSize,Size_All,70; },{},{} 1431,F_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,7,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} @@ -753,11 +753,11 @@ 1479,Spectral_Spear_,Spectral Spear,5,20,,2000,170,,3,1,0x00004082,7,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{} 1480,Gae_Bolg_,Gae Bolg,5,20,,2000,160,,3,2,0x00004082,7,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10; },{},{} 1481,Zephyrus_,Zephyrus,5,20,,2000,170,,3,3,0x00004082,7,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{} -1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,0; },{},{} +1482,BF_Lance1,Assaulter Lance,5,,,0,160,,3,0,0x00004082,7,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon; },{},{} 1483,Ivory_Lance,Ivory Lance,5,20,,1000,160,,3,1,0x00004082,2,2,34,3,50,1,5,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5; },{},{} 1484,Cardo,Cardo,5,20,,5600,150,,3,1,0x00000080,2,2,34,4,70,1,5,{ bonus bAspdRate,-10; bonus bDef,getrefine()/2; },{},{} 1485,Battle_Fork,Battle Fork,5,20,,700,112,,3,4,0x00004082,2,2,34,2,50,1,5,{},{},{} -1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{} +1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,7,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{} 1487,Lance_C,Lance,5,0,,0,220,,3,0,0x00004082,7,2,34,3,1,0,5,{ bonus2 bAddSize,Size_All,50; },{},{} 1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,7,2,34,4,1,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{} // Maces @@ -784,13 +784,13 @@ 1521,Chain__,Chain,5,23000,,800,84,,1,3,0x0004C5B2,7,2,2,2,14,1,8,{},{},{} 1522,Stunner,Stunner,5,60000,,2000,140,,1,0,0x00008110,7,2,2,3,27,1,8,{ bonus2 bAddEff,Eff_Stun,1000; },{},{} 1523,Spike,Spike,5,20,,700,85,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} -1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{} +1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon; },{},{} 1525,Long_Mace,Long Mace,5,20,,800,135,,3,0,0x00008110,7,2,2,4,40,1,8,{ bonus bLongAtkDef,10; },{},{} 1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{} 1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{} 1528,Grand_Cross,Grand Cross,5,20,,1500,140,,1,0,0x00008110,7,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{} 1529,Iron_Driver,Iron Driver,5,20,,3000,155,,2,0,0x00008100,7,2,2,3,78,1,8,{},{},{} -1530,Mjolnir,Mjolnir,5,20,,6000,250,,1,0,0x000444A2,7,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon,0; },{},{} +1530,Mjolnir,Mjolnir,5,20,,6000,250,,1,0,0x000444A2,7,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon; },{},{} 1531,Spanner,Wrench,5,20,,2500,115,,1,0,0x00008110,7,2,2,3,55,1,8,{ bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100; },{},{} 1532,Stunner_,Stunner,5,60000,,2000,140,,1,2,0x00008110,7,2,2,3,27,1,8,{ bonus2 bAddEff,Eff_Stun,1000; },{},{} 1533,Warrior_Balmung,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,8,{ bonus bAllStats,5; },{},{} @@ -799,14 +799,14 @@ 1536,Good_Morning_Star,Good Morning Star,5,20,,0,120,,1,0,0x0004C5B2,7,2,2,1,0,0,8,{ bonus2 bAddClass,Class_All,50; },{},{} 1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,7,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{} 1538,Spike_,Spike,5,20,,700,85,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} -1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0; },{},{} +1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,7,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon; },{},{} 1540,Grand_Cross_,Grand Cross,5,20,,1500,140,,1,1,0x00008110,7,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{} 1541,Nemesis,Nemesis,5,20,,900,120,,1,0,0x00008110,7,2,2,4,60,1,8,{ bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{} -1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,7,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 1544,Lunakaligo,Lunakaligo,5,20,,700,110,,1,3,0x00008110,2,2,2,3,50,1,8,{ if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; } },{},{} 1545,N_Mace,Novice Mace,5,0,,0,57,,1,3,0x0004C5B3,7,2,2,1,2,0,8,{},{},{} -1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,7,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{} +1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,7,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{} 1547,Mace_Of_Madness,Mace Of Madness,5,20,,0,150,,1,0,0x0004C5B2,7,2,2,3,0,0,8,{ bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2; },{},{} 1548,Veteran_Hammer,Veteran Hammer,5,10000,,1800,160,,1,2,0x00008110,7,2,2,3,80,1,8,{ bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1; },{},{} // Books @@ -834,10 +834,10 @@ 1571,Book_Of_Gust_Of_Wind_,Book of Gust of Wind,5,35000,,750,90,,1,3,0x00410100,7,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Wind; },{},{} 1572,Principles_Of_Magic,Principles of Magic,5,20,,300,60,,1,2,0x00410100,7,2,2,3,60,1,15,{ bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5; },{},{} 1573,Ancient_Magic,Ancient Magic,5,20,,700,30,,1,2,0x00410100,7,2,2,3,70,1,15,{ bonus bMatkRate,15; },{},{} -1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; },{},{} -1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{} -1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{} +1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90,,1,0,0x00410100,7,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; },{},{} +1576,Krieger_Book1,Glorious Tablet,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{} +1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90,,1,0,0x00410100,7,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; } },{},{} 1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{} 1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,7,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{} 1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145,,1,0,0x00410100,7,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{} @@ -877,16 +877,16 @@ 1629,Walking_Stick,Gentleman's Staff,5,20,,500,40,,1,1,0x00818314,7,2,2,4,50,1,10,{ bonus bMatkRate,15; bonus bDex,1; },{},{} 1630,Release_Of_Wish,Release of Wish,5,20,,500,30,,1,0,0x00810204,7,2,2,3,50,1,10,{ bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{} 1631,Holy_Stick,Holy Stick,5,20,,500,50,,1,1,0x00008100,7,2,2,4,70,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25; },{},{} -1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{} -1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0; },{},{} -1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{} -1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0; },{},{} +1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon; },{},{} +1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon; },{},{} +1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon; },{},{} +1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon; },{},{} 1636,Thorn_Staff,Thorn Staff of Darkness,5,20,,700,60,,1,0,0x00018314,2,2,2,4,75,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine(); bonus bDelayRate,-(getrefine()*3/2); },{},{} 1637,Eraser,Eraser,5,20,,500,80,,1,0,0x00018314,2,2,2,4,70,1,10,{ bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0; },{},{} -1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10,,1,0,0x00008110,7,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{} +1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10,,1,0,0x00008110,7,2,2,3,1,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{} 1639,N_Rod,Novice Rod,5,0,,0,15,,1,3,0x00818315,7,2,2,1,1,0,10,{ bonus bMatkRate,16; },{},{} -1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; } },{},{} -1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; } },{},{} +1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; } },{},{} +1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70,,1,0,0x00818314,7,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; } },{},{} 1642,Staff_Of_Darkness,Staff Of Darkness,5,20,,0,100,,1,0,0x00818314,7,2,2,2,0,0,10,{ bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2; },{},{} 1643,Dead_Tree_Cane,Dead Tree Cane,5,20,,100,100,,1,0,0x00818314,7,2,2,4,70,1,10,{ bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; } },{},{} 1644,Piercing_Staff_M,Staff of Piercing,5,20,,500,80,,1,0,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine(); },{},{} @@ -931,12 +931,12 @@ 1735,Kkakkung,Kkakkung,5,20,,0,120,,5,0,0x000A0848,7,2,34,1,1,0,11,{ bonus2 bAddClass,Class_All,50; },{},{} 1736,Double_Bound,Double Bound,5,20,,900,70,,5,3,0x00000800,2,2,34,3,70,1,11,{ bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10; },{},{} 1737,Ixion_Wing,Ixion Wings,5,20,,300,135,,5,1,0x00000800,2,2,34,4,70,1,11,{ autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3; },{},{} -1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1739,BF_Bow2,Brave Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,0; },{},{} +1738,BF_Bow1,Valorous Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1739,BF_Bow2,Brave Battle CrossBow,5,0,,0,100,,5,0,0x000A0848,7,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon; },{},{} 1740,Nepenthes_Bow,Nepenthes Bow,5,20,,1000,105,,5,2,0x00000800,2,2,34,4,60,1,11,{ bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20; },{},{} 1741,Cursed_Lyre,Cursed Lyre,5,20,,1250,125,,5,1,0x00080808,2,2,34,4,80,1,11,{ bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400; },{},{} 1742,N_Composite_Bow,Novice Composite Bow,5,1,,0,49,,5,3,0x000A0848,7,2,34,1,4,0,11,{},{},{} -1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,7,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{} +1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,7,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{} 1744,Bow_Of_Evil,Bow Of Evil,5,0,,0,170,,5,0,0x000A0848,7,2,34,4,1,0,11,{ bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2; },{},{} 1745,Falken_Blitz,Falken Blitz,5,0,,1000,100,,5,2,0x00080808,2,2,34,3,50,1,11,{ bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10; },{},{} // Arrows @@ -986,11 +986,11 @@ 1820,Electric_Fist,Electric Fist,5,20,,650,80,,1,3,0x00008100,7,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10; },{},{} 1821,Seismic_Fist,Seismic Fist,5,20,,650,80,,1,3,0x00008100,7,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10; },{},{} 1822,Combo_Battle_Glove,Combo Battle Glove,5,20,,500,30,,1,4,0x00008100,7,2,2,3,60,1,12,{ bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20; },{},{} -1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0; },{},{} -1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0; },{},{} +1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon; },{},{} +1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon; },{},{} 1825,Horn_Of_Hilthrion,Horn of Hillslion,5,20,,600,95,,1,3,0x00008000,2,2,2,3,60,1,12,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100; },{},{} -1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{} -1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{} +1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); } },{},{} +1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,7,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{} 1828,Monk_Knuckle,Monk Knuckle,5,20,,0,150,,1,0,0x00008100,7,2,2,4,0,0,12,{ bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25; },{},{} 1829,Fist_C,Fist,5,0,,0,150,,1,0,0x00008100,7,2,2,3,1,0,12,{ bonus2 bAddSize,Size_All,40; },{},{} // Instruments @@ -1006,7 +1006,7 @@ 1910,Harp_,Harp,5,62000,,900,114,,1,2,0x00080000,7,1,2,3,27,1,13,{ bonus bInt,2; },{},{} 1911,Guh_Moon_Goh,Gumoongoh,5,54000,,1300,126,,1,1,0x00080000,7,1,2,3,27,1,13,{},{},{} 1912,Guh_Moon_Goh_,Gumoongoh,5,54000,,1300,126,,1,2,0x00080000,7,1,2,3,27,1,13,{},{},{} -1913,Electronic_Guitar,Electric Guitar,5,20,,1800,110,,1,0,0x00080000,7,1,2,4,70,1,13,{ skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; bonus bUnbreakableWeapon,0; },{},{} +1913,Electronic_Guitar,Electric Guitar,5,20,,1800,110,,1,0,0x00080000,7,1,2,4,70,1,13,{ skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; },{},{} 1914,Guitar_Of_Passion,Burning Passion Guitar,5,20,,900,110,,1,0,0x00080000,7,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Fire; },{},{} 1915,Guitar_Of_Blue_Solo,Loner's Guitar,5,20,,900,110,,1,0,0x00080000,7,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Water; },{},{} 1916,Guitar_Of_Vast_Land,Green Acre Guitar,5,20,,900,110,,1,0,0x00080000,7,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Earth; },{},{} @@ -1016,11 +1016,11 @@ 1920,Berserk_Guitar,Berserk Guitar,5,20,,1800,10,,1,0,0x00080000,2,1,2,4,70,1,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{} 1921,Guh_Moon_Gom,Gun Moon Gom,5,20,,0,120,,1,0,0x00080000,7,1,2,1,0,0,13,{ bonus2 bAddClass,Class_All,50; },{},{} 1922,Oriental_Lute_,Oriental Lute,5,20,,1200,150,,1,2,0x00080000,7,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{} -1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{} +1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon; },{},{} 1925,Cello,Cello,5,20,,700,110,,1,3,0x00080000,2,1,2,3,70,1,13,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{} 1926,Harp_Of_Nepenthes,Harp of Nepenthes,5,20,,1000,120,,1,2,0x00080000,2,1,2,4,60,1,13,{ bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; } },{},{} -1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} +1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,7,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} 1928,Berserk_Guitar_I,Spirited Guitar,5,0,,0,40,,1,0,0x00080000,2,1,2,4,0,0,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{} 1929,Guitar_C,Guitar,5,0,,0,177,,1,0,0x00080000,7,1,2,3,1,0,13,{ bonus2 bAddSize,Size_All,40; },{},{} // Whips @@ -1051,17 +1051,17 @@ 1974,Carrot_Whip,Carrot Whip,5,20,,1300,185,,2,0,0x00080000,2,0,2,4,70,1,14,{ if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10; },{},{} 1975,Queen_Is_Whip,Queen Is Whip,5,20,,0,120,,2,0,0x00080000,7,0,2,1,0,0,14,{ bonus2 bAddClass,Class_All,50; },{},{} 1976,Queen's_Whip_,Queen's Whip,5,20,,1100,150,,2,2,0x00080000,7,0,2,4,65,1,14,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{} -1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0; },{},{} +1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon; },{},{} 1979,Stem_Of_Nepenthes,Stem of Nepenthes,5,20,,1000,120,,2,2,0x00080000,2,0,2,4,60,1,14,{ bonus bInt,2; if( getrefine()>=9 ) { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,2000; } else { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,1000; } },{},{} 1980,Whip_Of_Balance,Whip of Balance,5,20,,700,110,,2,3,0x00080000,2,0,2,3,70,1,14,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{} -1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} +1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,7,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} 1982,Phenomena_Whip,Phenomena Whip,5,20,,0,160,,2,0,0x00080000,7,0,2,4,0,0,14,{ bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25; },{},{} 1983,Rante_C,Rante Whip,5,0,,0,170,,2,0,0x00080000,7,0,2,3,1,0,14,{ bonus2 bAddSize,Size_All,40; },{},{} // Additional 2-Handed Staffs 2000,Destruction_Rod,Staff of Destruction,5,20,,2500,130,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50; },{},{} 2001,Divine_Cross,Divine Cross,5,20,,1500,120,,1,0,0x00008100,7,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{} -2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{} +2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70,,1,0,0x00018314,7,2,34,4,80,1,23,{ bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{} 2003,Destruction_Rod_M,Staff of Destruction,5,20,,2500,130,,1,1,0x00000200,2,2,34,4,80,1,23,{ bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50; },{},{} 2004,Kronos,Kronos,5,20,,1000,30,,1,0,0x00010204,2,2,34,4,50,1,23,{ bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }"; },{},{} 2005,Dea_Staff,Dea Staff,5,20,,1000,30,,1,1,0x00008110,2,2,34,3,50,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }"; },{},{} @@ -1078,7 +1078,7 @@ 2108,Mirror_Shield_,Mirror Shield,4,60000,,1000,,4,,1,0x00404082,7,2,32,,0,1,4,{ bonus bMdef,5; },{},{} 2109,Memorize_Book,Memory Book,4,20,,1000,,3,,0,0x00810204,7,2,32,,0,1,5,{ bonus bInt,1; bonus bMdef,2; },{},{} 2110,Holy_Guard,Holy Guard,4,85000,,1400,,5,,0,0x00004000,7,2,32,,68,0,4,{ bonus bVit,2; bonus bMdef,2; },{},{} -2111,Herald_Of_GOD,Sacred Mission,4,128000,,1600,,5,,0,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{} +2111,Herald_Of_GOD,Sacred Mission,4,128000,,1600,,5,,0,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield; },{},{} 2112,Novice_Guard,Novice Guard,4,1,,1,,3,,0,0x00000001,7,2,32,,0,0,1,{},{},{} 2113,Novice_Shield,Novice Shield,4,5000,,1000,,3,,1,0x00000001,7,2,32,,40,1,3,{ bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{} 2114,Stone_Buckler,Stone Buckler,4,30000,,1500,,3,,1,0xFFFFFFFE,7,2,32,,65,1,2,{ bonus2 bSubSize,Size_Large,5; },{},{} @@ -1092,10 +1092,10 @@ 2122,Platinum_Shield,Platinum Shield,4,20,,1200,,5,,0,0xFFFFFFFE,2,2,32,,68,1,4,{ bonus bMdef,5; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; bonus2 bSubRace,RC_Undead,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0; },{},{} 2123,Orleans_Server,Orleans's Server,4,20,,1000,,5,,1,0xFFFFFFFE,2,2,32,,55,1,4,{ bonus bMdef,2; bonus bMagicDamageReturn,5; },{},{} 2124,Thorny_Buckler,Thorny Buckler,4,20,,1000,,5,,1,0xFFFFFFFE,2,2,32,,55,1,2,{ bonus bMdef,2; },{},{} -2125,Strong_Shield,Strong Shield,4,20,,2500,,4,,1,0xFFFFFFFE,2,2,32,,75,1,4,{ bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} +2125,Strong_Shield,Strong Shield,4,20,,2500,,4,,1,0xFFFFFFFE,2,2,32,,75,1,4,{ bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} 2126,Guyak_Shield,Guyak Shield,4,20,,700,,3,,0,0xFFFFFFFE,7,2,32,,75,1,2,{ bonus bMdef,3; },{},{} 2127,Secular_Mission,Secular Mission,4,20,,0,,10,,0,0xFFFFFFFF,7,2,32,,0,0,4,{ bonus2 bSubClass,Class_All,25; },{},{} -2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,5,,1,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0; },{},{} +2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,5,,1,0x00004000,7,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield; },{},{} 2129,Exorcism_Bible,Exorcism Bible,4,20,,600,,5,,0,0x00008100,7,2,32,,50,1,5,{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1; },{},{} 2130,Cross_Shield,Cross Shield,4,20,,2000,,6,,1,0x00004000,7,2,32,,80,1,4,{ bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10; },{},{} 2131,Magic_Study_Vol1,Magic Bible Vol1,4,20,,1000,,2,,1,0x00810204,2,2,32,,70,1,5,{ bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000; },{},{} @@ -1108,7 +1108,7 @@ 2138,Bradium_Shield,Bradium Shield,4,20,,1800,,5,,1,0x00CFFF80,2,2,32,,65,1,3,{ bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",60; bonus bAgi,-1; bonus bMaxHP,500; },{},{} 2139,Flame_Thrower,Flame Thrower,4,20000,,2000,,60,,0,0x00000400,63,2,32,,99,0,1,{},{},{} // GM Shield -2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,100,,0,0xFFFFFFFF,7,2,32,,1,1,0,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; } +2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,100,,0,0xFFFFFFFF,7,2,32,,1,1,0,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone; bonus bSpeedRate,25; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; } // Headgears //=================================================================== 2201,Sunglasses,Sunglasses,4,5000,,100,,0,,0,0xFFFFFFFF,7,2,512,,0,0,12,{ bonus2 bResEff,Eff_Blind,500; },{},{} @@ -1156,7 +1156,7 @@ 2243,Spinning_Eyes,Geek Glasses,4,20000,,100,,1,,0,0xFFFFFFFF,7,2,512,,0,0,27,{ bonus2 bResEff,Eff_Blind,1500; },{},{} 2244,Big_Sis'_Ribbon,Big Ribbon,4,15000,,200,,2,,0,0xFFFFFFFE,7,2,256,,0,1,28,{ bonus bMdef,3; },{},{} 2245,Sweet_Gents,Sweet Gent,4,15000,,400,,3,,0,0xFFFFFFFE,7,2,256,,0,1,29,{},{},{} -2246,Golden_Gear,Golden Gear,4,20,,900,,5,,0,0xFFFFFFFE,7,2,256,,40,1,30,{ bonus bUnbreakableHelm,0; },{},{} +2246,Golden_Gear,Golden Gear,4,20,,900,,5,,0,0xFFFFFFFE,7,2,256,,40,1,30,{ bonus bUnbreakableHelm; },{},{} 2247,Oldman's_Romance,Romantic Gent,4,15000,,400,,3,,0,0xFFFFFFFE,7,2,256,,0,1,31,{},{},{} 2248,Western_Grace,Western Grace,4,15000,,400,,3,,0,0xFFFFFFFE,7,2,256,,0,1,32,{},{},{} 2249,Coronet,Coronet,4,20,,300,,3,,0,0xFFFFFFFE,7,2,256,,0,1,33,{ bonus bInt,1; },{},{} @@ -1268,7 +1268,7 @@ 2354,Goibne's_Armor,Goibne's Armor,4,50000,,3500,,7,,0,0xFFFFFFFE,7,2,16,,54,1,0,{ bonus bVit,2; bonus bMaxHPrate,10; },{},{} 2355,Angel's_Protection,Angelic Protection,4,10000,,600,,4,,1,0x00000001,7,2,16,,40,1,0,{ bonus bMdef,20; },{},{} 2356,Vestment_Of_Grace,Blessed Holy Robe,4,20,,2500,,5,,1,0x00008100,7,2,16,,70,1,0,{ bonus bMdef,5; bonus2 bResEff,Eff_Blind,8000; },{},{} -2357,Valkyrie_Armor,Valkyrian Armor,4,0,,2800,,6,,1,0xFFFFFFFE,2,2,16,,1,1,0,{ bonus bAllStats,1; bonus bUnbreakableArmor,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{} +2357,Valkyrie_Armor,Valkyrian Armor,4,0,,2800,,6,,1,0xFFFFFFFE,2,2,16,,1,1,0,{ bonus bAllStats,1; bonus bUnbreakableArmor; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{} 2358,Dress_Of_Angel,Angel's Dress,4,20,,1000,,5,,0,0xFFFFFFFF,7,2,16,,1,0,0,{ bonus bLuk,4; },{},{} 2359,Ninja_Suit_,Ninja Suit,4,20,,1500,,7,,1,0x02021040,7,2,16,,50,1,0,{ bonus bAgi,1; bonus bMdef,3; },{},{} 2360,Robe_Of_Casting_,Robe of Cast,4,124800,,1100,,5,,1,0x00810200,7,2,16,,75,1,0,{ bonus bCastrate,-3; bonus bMdef,4; },{},{} @@ -1276,11 +1276,11 @@ //2362,Red_Aodai,Red Robe,4,20,,500,,0,,0,0xFFFFFFFE,7,2,16,,1,1,0,{ bonus bAllStats,3; bonus bMdef,5; },{},{} //2363,White_Aodai,White Robe,4,20,,500,,0,,0,0x00000001,7,2,16,,1,1,0,{ bonus bAllStats,3; bonus bMdef,5; },{},{} 2364,Meteo_Plate_Armor,Meteo Plate Armor,4,20,,3000,,10,,1,0x000444A2,2,2,16,,55,1,0,{ bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Freeze,3000; },{},{} -2365,Orleans_Gown,Orleans's Gown,4,20,,300,,2,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus bCastrate,15; bonus bNoCastCancel,0; },{},{} +2365,Orleans_Gown,Orleans's Gown,4,20,,300,,2,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus bCastrate,15; bonus bNoCastCancel; },{},{} 2366,Divine_Cloth,Divine Cloth,4,20,,1500,,6,,1,0xFFFFFFFE,2,2,16,,55,1,0,{ bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500; },{},{} 2367,Sniping_Suit,Sniping Suit,4,20,,750,,5,,1,0x00000800,2,2,16,,50,1,0,{ bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23; },{},{} 2368,Golden_Armor,Golden Armor,4,20,,2000,,4,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMdef,4; },{},{} -2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,7,2,16,,0,0,0,{ bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} +2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,7,2,16,,0,0,0,{ bonus bUnbreakableArmor; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} 2370,Used_Mage_Coat,Used Mage Coat,4,0,,0,,15,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAGI,1; },{},{} 2371,G_Strings_,Pantie,4,1000,,100,,4,,1,0xFFFFFFFF,7,2,16,,0,1,0,{},{},{} 2372,Mage_Coat_,Mage Coat,4,20,,600,,5,,1,0x00810204,7,2,16,,50,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{} @@ -1294,7 +1294,7 @@ 2380,Medic_Robe,Medic's Robe,4,10,,0,,3,,1,0x00008110,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,3,,1,0x00080808,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,3,,1,0x41000000,7,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} -2383,Brynhild,Brynhild,4,20,,400,,10,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{} +2383,Brynhild,Brynhild,4,20,,400,,10,,0,0xFFFFFFFF,7,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor; bonus bNoKnockback; },{},{} 2384,Spritual_Tunic,Spiritual Tunic,4,20,,0,,10,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{} 2385,Recuperative_Armor,Recuperative Armor,4,20,,0,,12,,0,0xFFFFFFFF,7,2,16,,0,0,0,{ bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6; },{},{ heal 0,-100; } 2386,Chameleon_Armor,Chameleon Armor,4,20,,1700,,5,,0,0x00CFFF80,2,2,16,,70,1,0,{ bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3; },{},{} @@ -1333,7 +1333,7 @@ 2418,Vidar's_Boots,Vidar's Boots,4,30000,,650,,4,,0,0xFFFFFFFE,7,2,64,,65,1,0,{ bonus bMaxHPrate,9; bonus bMaxSPrate,9; },{},{} 2419,Goibne's_Combat_Boots,Goibne's Greaves,4,30000,,700,,4,,0,0xFFFFFFFE,7,2,64,,54,1,0,{ bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; },{},{} 2420,Angel's_Arrival,Angel's Reincarnation,4,10000,,300,,2,,1,0x00000001,7,2,64,,25,1,0,{ bonus bMaxHP,100; },{},{} -2421,Valkyrie_Shoes,Valkyrian Shoes,4,0,,500,,4,,1,0xFFFFFFFE,2,2,64,,1,1,0,{ bonus bUnbreakableShoes,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2); },{},{} +2421,Valkyrie_Shoes,Valkyrian Shoes,4,0,,500,,4,,1,0xFFFFFFFE,2,2,64,,1,1,0,{ bonus bUnbreakableShoes; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2); },{},{} 2422,High_Fashion_Sandals,High Fashion Sandals,4,24000,,200,,2,,1,0x00818314,7,2,64,,40,1,0,{ bonus bMdef,10; },{},{} 2423,Variant_Shoes,Variant Shoes,4,20,,500,,3,,0,0xFFFFFFFE,2,2,64,,85,1,0,{ bonus bMaxHPRate,20-getrefine(); bonus bMaxSPRate,20-getrefine(); bonus bDef,getrefine()/2; },{},{} 2424,Tidal_Shoes,Tidal Shoes,4,20,,300,,3,,1,0xFFFFFFFE,2,2,64,,55,1,0,{ bonus2 bSubEle,Ele_Water,5; },{},{} @@ -1372,7 +1372,7 @@ 2505,Manteau,Manteau,4,32000,,600,,4,,0,0x006654E2,7,2,4,,0,1,0,{},{},{} 2506,Manteau_,Manteau,4,32000,,600,,4,,1,0x006654E2,7,2,4,,0,1,0,{},{},{} 2507,Cape_Of_Ancient_Lord,Ancient Cape,4,82000,,600,,2,,0,0xFFFFFFFE,7,2,4,,40,1,0,{ bonus bAgi,1; },{},{} -2508,Ragamuffin_Cape,Ragamuffin Manteau,4,56000,,500,,1,,0,0xFFFFFFFE,7,2,4,,0,1,0,{ bonus bUnbreakableGarment,0; bonus bMdef,10; },{},{} +2508,Ragamuffin_Cape,Ragamuffin Manteau,4,56000,,500,,1,,0,0xFFFFFFFE,7,2,4,,0,1,0,{ bonus bUnbreakableGarment; bonus bMdef,10; },{},{} 2509,Clack_Of_Servival,Survivor's Manteau,4,20000,,550,,0,,0,0x00810204,7,2,4,,75,1,0,{ bonus bMdef,5; bonus bVit,10; },{},{} 2510,Novice_Hood,Somber Novice Hood,4,1,,1,,2,,0,0x00000001,7,2,4,,0,0,0,{ bonus2 bSubEle,Ele_Neutral,20; },{},{} 2511,Skeleton's_Cape,Skeleton Manteau,4,5000,,700,,1,,0,0xFFFFFFFE,7,2,4,,75,1,0,{ bonus bStr,2; bonus bInt,-3; bonus bDex,2; bonus bVit,-3; bonus bLuk,2; bonus bAgi,-4; },{},{} @@ -1388,7 +1388,7 @@ 2521,Angel's_Warmth,Angelic Cardigan,4,10000,,400,,2,,1,0x00000001,7,2,4,,20,1,0,{ bonus bHPrecovRate,5; },{},{} 2522,Undershirt,Undershirt,4,20000,,150,,2,,0,0xFFFFFFFF,7,2,4,,1,1,0,{ bonus bMdef,1; },{},{} 2523,Undershirt_,Undershirt,4,20000,,150,,2,,1,0xFFFFFFFF,7,2,4,,1,1,0,{ bonus bMdef,1; },{},{} -2524,Valkyrie_Manteau,Valkyrian Manteau,4,0,,500,,3,,1,0xFFFFFFFE,2,2,4,,1,1,0,{ bonus bUnbreakableGarment,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2); },{},{} +2524,Valkyrie_Manteau,Valkyrian Manteau,4,0,,500,,3,,1,0xFFFFFFFE,2,2,4,,1,1,0,{ bonus bUnbreakableGarment; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2); },{},{} 2525,Cape_Of_Ancient_Lord_,Ancient Cape,4,82000,,600,,2,,1,0xFFFFFFFE,7,2,4,,40,1,0,{ bonus bAgi,1; },{},{} 2526,Dragon_Scale_Coat,Coat of Dragon Scale,4,20,,10,,4,,0,0xFFFFFFFF,7,2,4,,50,1,0,{},{},{} 2527,Dragon_Breath,Dragon Breath,4,20,,600,,4,,1,0xFFFFFFFE,2,2,4,,48,1,0,{ bonus2 bSubRace,RC_Dragon,15; },{},{} @@ -1405,7 +1405,7 @@ 2538,Commander_Manteau,Captain's Manteau,4,10,,0,,4,,1,0x026654E2,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} 2539,Commander_Manteau_,Commander's Manteau,4,10,,0,,3,,1,0x00898B1C,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} 2540,Sheriff_Manteau,Sheriff's Manteau,4,10,,0,,3,,1,0x41000000,7,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} -2541,Asprika,Asprika,4,20,,400,,5,,0,0xFFFFFFFF,7,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0; },{},{} +2541,Asprika,Asprika,4,20,,400,,5,,0,0xFFFFFFFF,7,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment; },{},{} 2542,Flame_Manteau,Flame Manteau of Naght Sieger,4,20,,70,,4,,1,0xFFFFFFFE,2,2,4,,70,1,0,{ bonus bMaxHPRate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2; },{},{} 2543,Sylphid_Manteau,Sylphid Manteau,4,20,,0,,9,,0,0xFFFFFFFF,7,2,4,,0,0,0,{ bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1; },{},{} 2544,Leather_Of_Tendrilion,Leather of Tendrilion,4,20,,300,,3,,1,0x00CFDF80,2,2,4,,0,1,0,{ bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; },{},{} @@ -1560,7 +1560,7 @@ 2738,Shiny_Coin,Shiny Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,6; bonus bMatkRate,6; },{},{} 2739,Ordinary_Coin,Ordinary Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; },{},{} 2740,Rusty_Coin,Rusty Coin,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; },{},{} -2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel,0; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} +2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} //2742,Lucky_Clip,Lucky Clip,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{} 2743,Angelic_Ring,Angelic Ring,4,20,,100,,0,,0,0x00CFFF80,2,2,136,,70,0,0,{ bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AL_HEAL","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AM_POTIONPITCHER","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"PR_SANCTUARY","{ specialeffect2 EF_HEAL3; }"; },{},{} 2744,Sprint_Ring,Sprint Ring,4,20,,100,,0,,0,0x00CFFF80,2,2,136,,70,0,0,{ bonus bCastrate,-10; bonus bDelayRate,-5; },{},{} @@ -1579,7 +1579,7 @@ 2757,Insecticide_Ring,Insecticide Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Insect,15; },{},{} 2758,Fisher_Ring,Fischer Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Fish,15; },{},{} 2759,Decussate_Ring,Decussate Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Demon,15; },{},{} -2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15; },{},{} +2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; },{},{} 2761,Satanic_Ring,Satanic Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Angel,15; },{},{} 2762,Dragoon_Ring,Dragon Ring,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,1,0,0,{ bonus2 bExpAddRace,RC_Dragon,15; },{},{} 2763,Skul_Ring_C,Neo Skull Ring,4,0,,0,,0,,0,0xFFFFFFFE,2,2,136,,95,0,0,{ bonus bAtkRate,5; bonus bMatkrate,5; bonus bMaxHPrate,5; bonus2 bSkillHeal,"AL_HEAL",5; skill "MG_SIGHT",1; },{},{} @@ -1695,7 +1695,7 @@ 4058,Thara_Frog_Card,Thara Frog Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30; },{},{} 4059,Soldier_Andre_Card,Soldier Andre Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Plant,30; },{},{} 4060,Goblin_Card,Goblin Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Brute,20; },{},{} -4061,Cornutus_Card,Cornutus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bUnbreakableArmor,0; bonus bDef,1; },{},{} +4061,Cornutus_Card,Cornutus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bUnbreakableArmor; bonus bDef,1; },{},{} 4062,Anacondaq_Card,Anacondaq Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Poison,20; },{},{} 4063,Caramel_Card,Caramel Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Insect,20; },{},{} 4064,Zerom_Card,Zerom Card,6,20,,10,,,,,,,,136,,,,,{ bonus bDex,3; },{},{} @@ -1706,12 +1706,12 @@ 4069,Drainliar_Card,Drainliar Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Water,20; },{},{} 4070,Eggyra_Card,Eggyra Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSPrecovRate,15; },{},{} 4071,Orc_Zombie_Card,Orc Zombie Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Undead,30; bonus bFlee,5; },{},{} -4072,Golem_Card,Golem Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,0; bonus bBaseAtk,5; },{},{} +4072,Golem_Card,Golem Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon; bonus bBaseAtk,5; },{},{} 4073,Pirate_Skel_Card,Pirate Skeleton Card,6,20,,10,,,,,,,,136,,,,,{ skill "MC_DISCOUNT",5; },{},{} 4074,BigFoot_Card,Bigfoot Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Insect,30; },{},{} 4075,Argos_Card,Argos Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Stone,2000; bonus bDef,1; },{},{} 4076,Magnolia_Card,Magnolia Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5; },{},{} -4077,Phen_Card,Phen Card,6,20,,10,,,,,,,,136,,,,,{ bonus bNoCastCancel,0; bonus bCastrate,25; },{},{} +4077,Phen_Card,Phen Card,6,20,,10,,,,,,,,136,,,,,{ bonus bNoCastCancel; bonus bCastrate,25; },{},{} 4078,Savage_Card,Savage Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; },{},{} 4079,Mantis_Card,Mantis Card,6,20,,10,,,,,,,,136,,,,,{ bonus bStr,3; },{},{} 4080,Flora_Card,Flora Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Fish,20; },{},{} @@ -1766,19 +1766,19 @@ 4129,Baphomet__Card,Bapho Jr. Card,6,20,,10,,,,,,,,4,,,,,{ bonus bAgi,3; bonus bCritical,1; },{},{} 4130,Scorpion_King_Card,Scorpion King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Undead,20; },{},{} 4131,Moonlight_Flower_Card,Moonlight Flower Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSpeedRate,25; },{},{} -4132,Mistress_Card,Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone,0; bonus bUseSPrate,25; },{},{} +4132,Mistress_Card,Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone; bonus bUseSPrate,25; },{},{} 4133,Daydric_Card,Raydric Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,20; },{},{} 4134,Dracula_Card,Dracula Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPDrainRate,100,5; },{},{} 4135,Orc_Load_Card,Orc Lord Card,6,20,,10,,,,,,,,16,,,,,{ bonus bShortWeaponDamageReturn,30; },{},{} 4136,Khalitzburg_Card,Khalitzburg Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Demon,30; },{},{} -4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix,0; },{},{} +4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix; },{},{} 4138,Anubis_Card,Anubis Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Angel,30; },{},{} 4139,Joker_Card,Joker Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_STEAL",1; },{},{} 4140,Knight_Of_Abyss_Card,Abysmal Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_Boss,25; },{},{} 4141,Evil_Druid_Card,Evil Druid Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1; },{},{} 4142,Doppelganger_Card,Doppelganger Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,10; },{},{} 4143,Orc_Hero_Card,Orc Hero Card,6,20,,10,,,,,,,,769,,,,,{ bonus bVit,3; bonus2 bResEff,Eff_Stun,10000; },{},{} -4144,Osiris_Card,Osiris Card,6,20,,10,,,,,,,,136,,,,,{ bonus bRestartFullRecover,0; },{},{} +4144,Osiris_Card,Osiris Card,6,20,,10,,,,,,,,136,,,,,{ bonus bRestartFullRecover; },{},{} 4145,Berzebub_Card,Berzebub Card,6,20,,10,,,,,,,,136,,,,,{ bonus bCastrate,-30; },{},{} 4146,Maya_Card,Maya Card,6,20,,10,,,,,,,,32,,,,,{ bonus bMagicDamageReturn,50; },{},{} 4147,Baphomet_Card,Baphomet Card,6,20,,10,,,,,,,,2,,,,,{ bonus bHit,-10; bonus bSplashRange,1; },{},{} @@ -1788,7 +1788,7 @@ 4151,Gajomart_Card,Gajomart Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10; },{},{} 4152,Galapago_Card,Galapago Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300; },{},{} 4153,Crab_Card,Crab Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30; },{},{} -4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,530,RC_Player,100; },{},{} +4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; },{},{} 4155,Goblin_Leader_Card,Goblin Leader Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,RC2_Goblin,30; },{},{} 4156,Steam_Goblin_Card,Goblin Steamrider Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7; },{},{} 4157,Goblin_Archer_Card,Goblin Archer Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7; },{},{} @@ -1832,7 +1832,7 @@ 4195,Leaf_Cat_Card,Leaf Cat Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bSubEle,Ele_Water,10; bonus3 bAddMonsterDropItem,991,RC_Fish,100; },{},{} 4196,Marin_Card,Marin Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItem,909,2000; bonus2 bAddMonsterDropItem,7126,10; },{},{} 4197,Mastering_Card,Mastering Card,6,20,,10,,,,,,,,4,,,,,{ bonus bLuk,1; },{},{} -4198,Maya_Puple_Card,Maya Purple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision,0; },{},{} +4198,Maya_Puple_Card,Maya Purple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision; },{},{} 4199,Merman_Card,Merman Card,6,20,,10,,,,,,,,64,,,,,{ bonus bHPrecovRate,10; bonus bSPrecovRate,10; },{},{} 4200,Megalith_Card,Megalith Card,6,20,,10,,,,,,,,64,,,,,{ if(getrefine()<6) bonus bMdef,7; },{},{} 4201,Majoruros_Card,Majoruros Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Stun,600; },{},{} @@ -1867,7 +1867,7 @@ 4230,Shinobi_Card,Shinobi Card,6,20,,10,,,,,,,,136,,,,,{ bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AS_CLOAKING",5,100; },{},{} 4231,Increase_Soil_Card,Mi Gao Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace2,RC2_Guardian,50; },{},{} 4232,Wild_Ginseng_Card,Hermit Plant Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Herb,50; bonus3 bAddMonsterDropItem,507,RC_Plant,300; bonus3 bAddMonsterDropItem,508,RC_Plant,200; bonus3 bAddMonsterDropItem,509,RC_Plant,100; },{},{} -4233,Baby_Leopard_Card,Baby Leopard Card,6,20,,10,,,,,,,,16,,,,,{ bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor,0; },{},{} +4233,Baby_Leopard_Card,Baby Leopard Card,6,20,,10,,,,,,,,16,,,,,{ bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor; },{},{} 4234,Anolian_Card,Anolian Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AC_CONCENTRATION",1+9*(getskilllv("AC_CONCENTRATION")==10),30; },{},{} 4235,Cookie_XMAS_Card,Christmas Cookie Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Angel,-20; bonus2 bExpAddRace,RC_Angel,10; },{},{} 4236,Amon_Ra_Card,Amon Ra Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,(30+70*(readparam(bInt)>=99)); },{},{} @@ -1879,7 +1879,7 @@ 4242,Apocalips_Card,Apocalipse Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800; },{},{} 4243,Antonio_Card,Antonio Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500; },{},{} 4244,Alarm_Card,Alarm Card,6,20,,10,,,,,,,,64,,,,,{ bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1; },{},{} -4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10; },{},{} +4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; },{},{} 4246,Assulter_Card,Assaulter Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7; },{},{} 4247,Aster_Card,Aster Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30; },{},{} 4248,Ancient_Mummy_Card,Ancient Mummy Card,6,20,,10,,,,,,,,32,,,,,{ bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30; },{},{} @@ -1890,7 +1890,7 @@ 4253,Alice_Card,Alice Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40; },{},{} 4254,Tirfing_Card,Ogretooth Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Medium,25; bonus bDef,1; },{},{} 4255,Orc_Lady_Card,Orc Lady Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,3,30; },{},{} -4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100; },{},{} +4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; },{},{} 4257,Wild_Rose_Card,Wild Rose Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5; },{},{} 4258,Wicked_Nymph_Card,Evil Nymph Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,1; bonus bMaxSP,50; },{},{} 4259,Wooden_Golem_Card,Wooden Golem Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDef,1; bonus bHPrecovRate,30; },{},{} @@ -1915,7 +1915,7 @@ 4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{} 4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; } 4280,Geographer_Card,Geographer Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30; },{},{} -4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0; },{},{} +4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon; },{},{} 4282,Tengu_Card,Tengu Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Recovery,600; },{},{} 4283,Greatest_General_Card,Greatest General Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte); },{},{} 4284,Chepet_Card,Chepet Card,6,20,,10,,,,,,,,2,,,,,{ bonus4 bAutoSpell,"AL_HEAL",5,50,1; },{},{} @@ -1943,7 +1943,7 @@ 4306,Toad_Card,Toad Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee2,1; },{},{} 4307,Kind_Of_Beetle_Card,Beetle King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Fish,5; },{},{ heal 0,-5; } 4308,Tri_Joint_Card,Tri Joint Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Formless,5; },{},{ heal 0,-5; } -4309,Parasite_Card,Parasite Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,1; bonus2 bSubEle,Ele_Neutral,5; },{},{} +4309,Parasite_Card,Parasite Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,1; bonus2 bSubRace,RC_Formless,5; },{},{} 4310,Panzer_Goblin_Card,Panzer Goblin Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Demon,7; },{},{} 4311,Permeter_Card,Permeter Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bSubEle,Ele_Dark,15; bonus2 bSubEle,Ele_Undead,15; },{},{} 4312,Fur_Seal_Card,Seal Card,6,20,,10,,,,,,,,2,,,,,{ bonus bFlee,3; bonus bHit,10; if(BaseClass==Job_Acolyte) { bonus2 bCriticalAddRace,RC_Undead,9; bonus2 bCriticalAddRace,RC_Demon,9; } },{},{} @@ -1961,7 +1961,7 @@ 4324,Garm_Card,Hatii Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Freeze,5000; },{},{} 4325,Harpy_Card,Harpy Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bSkillAtk,"MG_NAPALMBEAT",5; },{},{} 4326,See_Otter_Card,Sea-Otter Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300; },{},{} -4327,Blood_Butterfly_Card,Bloody Butterfly Card,6,20,,10,,,,,,,,136,,,,,{ bonus bCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5; },{},{} +4327,Blood_Butterfly_Card,Bloody Butterfly Card,6,20,,10,,,,,,,,136,,,,,{ bonus bCastrate,30; bonus bNoCastCancel; bonus2 bSkillAtk,"MG_FIREWALL",5; },{},{} 4328,Hyegun_Card,Yao Jun Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee,15; bonus bCritical,1; },{},{} 4329,Phendark_Card,Phendark Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5; },{},{ heal 0,-5; } 4330,Dark_Snake_Lord_Card,Evil Snake Lord Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000; },{},{} @@ -1976,7 +1976,7 @@ 4339,Mineral_Card,Mineral Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,-25; bonus bDef,3; },{},{} 4340,Teddy_Bear_Card,Teddy Bear Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Undead,30; },{},{} 4341,Metaling_Card,Metaling Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAutoSpell,"RG_STRIPWEAPON",1,50; },{},{} -4342,Rsx_0806_Card,RSX-0806 Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; bonus bUnbreakableArmor,0; bonus bNoKnockback,0; },{},{} +4342,Rsx_0806_Card,RSX-0806 Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; bonus bUnbreakableArmor; bonus bNoKnockback; },{},{} 4343,Mole_Card,Holden Card,6,20,,10,,,,,,,,769,,,,,{ bonus bLuk,2; },{},{} 4344,Anopheles_Card,Anopheles Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12058,RC_Insect,50; },{},{} 4345,Hill_Wind_Card,Hill Wind Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSkillAtk,"MG_THUNDERSTORM",5; bonus2 bSkillAtk,"WZ_JUPITEL",5; bonus2 bSkillAtk,"WZ_VERMILION",5; },{},{ heal 0,-50; } @@ -2041,7 +2041,7 @@ 4404,Skogul_Card,Skogul Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF; },{},{} 4405,Frus_Card,Frus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3; },{},{} 4406,Skeggiold_Card,Skeggiold Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Demon,2; },{},{} -4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,0; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{} +4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{} 4408,Gloom_Under_Night_Card,Gloom Under Night Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40; },{},{} 4409,Agav_Card,Agav Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100; },{},{} 4410,Echio_Card,Echio Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500; },{},{} @@ -2185,7 +2185,7 @@ 5006,Machoman_Glasses,Machoman's Glasses,4,36000,,100,,1,,0,0xFFFFFFFE,7,2,512,,0,0,92,{},{},{} 5007,Loard_Circlet,Grand Circlet,4,20,,200,,3,,0,0xFFFFFFFE,7,2,256,,55,1,93,{ bonus bStr,1; bonus bInt,1; bonus bLuk,1; bonus bMdef,4; },{},{} 5008,Puppy_Love,Puppy Love,4,20,,100,,1,,0,0xFFFFFFFE,7,2,256,,0,0,94,{},{},{} -5009,Safety_Helmet,Safety Helmet,4,20,,500,,3,,0,0xFFFFFFFE,7,2,256,,0,1,95,{ bonus bMdef,3; bonus bUnbreakableHelm,0; },{},{} +5009,Safety_Helmet,Safety Helmet,4,20,,500,,3,,0,0xFFFFFFFE,7,2,256,,0,1,95,{ bonus bMdef,3; bonus bUnbreakableHelm; },{},{} 5010,Indian_Hair_Piece,Indian Fillet,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,96,{},{},{} 5011,Antenna,Aerial,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,97,{},{},{} 5012,Ph.D_Hat,Ph.D Hat,4,20,,200,,3,,0,0xFFFFFFFE,7,2,256,,0,1,98,{},{},{} @@ -2257,7 +2257,7 @@ 5078,Sea_Otter_Cap,Sea-Otter Hat,4,20,,800,,3,,0,0xFFFFFFFF,7,2,256,,50,1,162,{ bonus bVit,1; },{},{} 5079,Crossed_Hair_Band,X Hairpin,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,163,{},{},{} 5080,Headgear_Of_Queen,Crown of Ancient Queen,4,20,,400,,4,,0,0xFFFFFFFF,7,2,256,,45,1,164,{},{},{} -5081,Mistress_Crown,Crown of Mistress,4,20,,100,,0,,0,0xFFFFFFFE,7,2,256,,75,1,165,{ bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm,0; },{},{} +5081,Mistress_Crown,Crown of Mistress,4,20,,100,,0,,0,0xFFFFFFFE,7,2,256,,75,1,165,{ bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm; },{},{} 5082,Mushroom_Band,Decorative Mushroom,4,20,,100,,2,,0,0xFFFFFFFF,7,2,256,,0,1,166,{},{},{} 5083,Red_Tailed_Ribbon,Red Ribbon,4,20,,200,,1,,0,0xFFFFFFFF,7,2,256,,45,1,167,{ bonus bMdef,10; },{},{} 5084,Lazy_Raccoon,Lazy Smokie,4,20,,500,,1,,0,0xFFFFFFFE,7,2,256,,0,1,168,{ bonus2 bResEff,Eff_Sleep,2000; },{},{} @@ -2335,7 +2335,7 @@ 5156,Flu_Mask_F,Father's Mask,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,0,8,{ bonus bMatkRate,1; },{},{} 5157,Viking_Helm_,Orc Helm,4,20,,500,,5,,1,0x000654E2,7,2,256,,0,1,86,{},{},{} 5158,Holy_Bonnet_,Monk Hat,4,30000,,100,,5,,1,0x00008110,7,2,256,,0,1,35,{ bonus bMdef,3; },{},{} -5159,Golden_Gear_,Golden Gear,4,20,,900,,5,,1,0xFFFFFFFE,7,2,256,,40,1,30,{ bonus bUnbreakableHelm,0; },{},{} +5159,Golden_Gear_,Golden Gear,4,20,,900,,5,,1,0xFFFFFFFE,7,2,256,,40,1,30,{ bonus bUnbreakableHelm; },{},{} 5160,Magestic_Goat_,Majestic Goat,4,20,,800,,5,,1,0x006444A2,7,2,256,,0,1,41,{ bonus bStr,1; },{},{} 5161,Sharp_Gear_,Spiky Band,4,20,,1000,,6,,1,0x0066D5F2,7,2,256,,50,1,43,{},{},{} 5162,Bone_Helm_,Bone Helm,4,20,,800,,7,,1,0x000444A2,7,2,256,,70,1,103,{ bonus2 bSubEle,Ele_Dark,-15; },{},{} @@ -2438,7 +2438,7 @@ 5259,Elephant_Hat_,Elephant Hat,4,20,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,215,{ bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1; },{},{} 5260,Cookie_Hat,Cookie Hat,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,217,{ bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5; },{},{} 5261,Silver_Tiara_,Silver Tiara,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,218,{ bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2); },{},{} -5262,Gold_Tiara_,Golden Tiara,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,232,{ bonus bStr,2; bonus bUnbreakableHelm,0; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7; },{},{} +5262,Gold_Tiara_,Golden Tiara,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,232,{ bonus bStr,2; bonus bUnbreakableHelm; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7; },{},{} 5263,Ati_Atihan_Hat,Pagdayaw,4,20,,100,,1,,0,0xFFFFFFFE,7,2,769,,20,1,303,{ bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Earth,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300; },{},{} 5264,Aussie_Flag_Hat,Australian Flag Hat,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,0,1,304,{ bonus bAllStats,2; },{},{} 5265,Apple_Of_Archer_C,Apple of Archer,4,1,,0,,7,,0,0xFFFFFFFE,7,2,256,,1,0,72,{ bonus bDex,4; },{},{} @@ -2465,7 +2465,7 @@ 5286,Pecopeco_Hairband,Pecopeco Hairband,4,20,,0,,3,,0,0xFFFFFFFF,7,2,256,,70,0,314,{ bonus bSpeedRate,25; bonus bAspdRate,-10; bonus bCastrate,25; },{},{} 5287,Vacation_Hat,Vacation Hat,4,20,,200,,1,,1,0xFFFFFFFF,7,2,256,,30,0,315,{ bonus bVit,1; },{},{} 5288,Red_Glasses,Red Glasses,4,20,,0,,1,,0,0xFFFFFFFF,7,2,512,,0,0,316,{ bonus bInt,1; },{},{} -5289,Vanilmirth_Hat,Vanilmirth Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,30,0,317,{ bonus bUnbreakableHelm,0; bonus3 bAutoSpell,"MG_FIREBOLT",1,10; bonus3 bAutoSpell,"MG_COLDBOLT",1,10; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,10; bonus bMdef,5; },{},{} +5289,Vanilmirth_Hat,Vanilmirth Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,30,0,317,{ bonus bUnbreakableHelm; bonus3 bAutoSpell,"MG_FIREBOLT",1,10; bonus3 bAutoSpell,"MG_COLDBOLT",1,10; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,10; bonus bMdef,5; },{},{} 5290,Drooping_Bunny_,Drooping Bunny,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,249,{ bonus bDex,1; bonus bFlee,2; },{},{} 5291,Kettle_Hat,Kettle Hat,4,20,,600,,4,,0,0xFFFFFFFF,7,2,256,,30,1,318,{ bonus4 bAutoSpell,"SA_DELUGE",2,10,0; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; },{},{} 5292,Dragon_Skull,Dragon Skull,4,20,,800,,5,,0,0xFFFFFFFF,7,2,256,,50,1,319,{ bonus2 bSubRace,RC_Dragon,5; },{},{} @@ -2511,7 +2511,7 @@ 5332,Loki_Mask,Loki Mask,4,0,,200,,0,,0,0xFFFFFFFF,7,2,513,,20,0,346,{ bonus bFlee2,3; },{},{} 5333,Radio_Antenna,Radio Antenna,4,0,,1500,,2,,0,0xFFFFFFFF,7,2,256,,50,1,347,{ bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; skill "MG_LIGHTNINGBOLT",1; bonus4 bAutoSpellWhenHit,"MG_THUNDERSTORM",5,30,1; },{},{} 5334,Angeling_Wanna_Fly,Flapping Angeling,4,0,,700,,0,,0,0xFFFFFFFF,7,2,256,,38,0,348,{ bonus bLuk,2; bonus bMdef,2; },{},{} -5335,Jumping_Poring,Jumping Poring,4,0,,300,,2,,0,0xFFFFFFFF,7,2,256,,0,0,349,{ bonus bLuk,1; bonus bUnbreakableHelm,0; },{},{} +5335,Jumping_Poring,Jumping Poring,4,0,,300,,2,,0,0xFFFFFFFF,7,2,256,,0,0,349,{ bonus bLuk,1; bonus bUnbreakableHelm; },{},{} 5336,Guildsman_Recruiter,Guildsman Recruiter Hat,4,,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,350,{},{},{} 5337,Party_Recruiter_Hat,Party Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,351,{},{},{} 5338,Bf_Recruiter_Hat,Bf Recruiter Hat,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,10,1,352,{},{},{} @@ -2533,8 +2533,8 @@ 5354,Muslim_Hat_M,Muslim Hat M,4,0,,100,,2,,0,0xFFFFFFFF,7,1,256,,0,0,362,{ bonus bCastrate,-5; },{},{} 5355,Muslim_Hat_F,Selendang,4,0,,100,,2,,0,0xFFFFFFFF,7,0,256,,0,0,363,{ bonus bCastrate,-5; },{},{} 5356,Pumpkin_Hat_H,Festival Pumpkin Hat,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; bonus2 bAddRace,RC_Demon,5; },{},{} -5357,Wings_Of_Victory,Wings Of Victory,4,20,,200,,10,,0,0xFFFFFFFF,7,2,768,,0,0,365,{ bonus bMdef,10; bonus bUnbreakableHelm,0; },{},{} -5358,Pecopeco_Wing_Ears,Peco Ears,4,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm,0; },{},{} +5357,Wings_Of_Victory,Wings Of Victory,4,20,,200,,10,,0,0xFFFFFFFF,7,2,768,,0,0,365,{ bonus bMdef,10; bonus bUnbreakableHelm; },{},{} +5358,Pecopeco_Wing_Ears,Peco Ears,4,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm; },{},{} 5359,J_Captain_Hat,Ship Captain Hat,4,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,60,1,367,{ bonus bDex,1; bonus bLongAtkRate,7; bonus bMaxHP,100; },{},{} 5360,Whikebain_Ears,Hyuke's Black Cat Ears,4,20,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{} 5361,Gang_Scarf,Gangster Scarf,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,60,0,369,{ bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1; },{},{} @@ -2648,7 +2648,7 @@ //5469,Noble_Hat,Musketeer Hat,4,20,,300,,2,,0,0xFFFFFFFF,7,2,256,,30,1,466,{ bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_ADRENALINE",1,7; },{},{} //5470,Eyes_Of_Darkness,Eye Of Darkness,4,20,,100,,1,,0,0xFFFFFFFF,7,2,512,,50,0,467,{ bonus bDex,1; bonus2 bResEff,Eff_Blind,10000; },{},{} //5471,Hairband_Of_Reginleif,Hairband Of Reginleif,4,20,,800,,1,,0,0xFFFFFFFF,7,2,512,,50,0,468,{ bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3; },{},{} -//5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; bonus3 bAddMonsterDropItem,550,RC_Player,3; },{},{} +//5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,7,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; },{},{} //5473,Forceps_Hairpin,Nipper Crab Hairpin,4,20,,500,,4,,0,0xFFFFFFFF,7,2,256,,30,1,470,{ bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,100; bonus3 bAddMonsterDropItem,991,RC_Fish,3; },{},{} //5474,Notice_Board,AFK Hat,4,20,,700,,2,,0,0xFFFFFFFF,7,2,256,,10,0,471,{},{},{} //5475,Cube_Mask,Mask Cube,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,0,0,472,{},{},{} @@ -2674,7 +2674,7 @@ 5495,Power_Of_Thor,Power Of Thor,4,20,,100,,6,,1,0xFFFFFFFF,7,2,256,,75,1,493,{ bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5; },{},{} 5496,Dice_Hat,Dice Hat,4,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,50,0,494,{ bonus bLuk,4; },{},{} 5497,King_Tiger_Doll_Hat,King Tiger Doll Hat,4,20,,400,,3,,1,0xFFFFFFFE,7,2,256,,30,1,495,{ bonus bStr,2; },{},{} -5498,Wondering_Wolf_Helm,Wandering Wolf Helm,4,20,,600,,5,,0,0xFFFFFFFE,7,2,768,,50,0,490,{ bonus bVit,5; bonus bFlee,10; },{},{} +5498,Wondering_Wolf_Helm,Wandering Wolf Helm,4,20,,600,,5,,0,0xFFFFFFFE,7,2,768,,50,1,490,{ bonus bVit,5; bonus bFlee,10; },{},{} 5499,Pizza_Hat,Pizza Hat,4,20,,600,,0,,0,0xFFFFFFFF,7,2,256,,0,0,487,{ skill "SM_PROVOKE", 1; },{},{} 5500,Icecream_Hat,Icecream Hat,4,0,,300,,6,,0,0xFFFFFFFF,7,2,256,,30,1,488,{ bonus bMdef,3; skill "MG_FROSTDIVER",3; },{},{} 5501,Pirate's_Pride,Pirate's Pride,4,0,,100,,6,,0,0xFFFFFFFF,7,2,256,,10,0,496,{ bonus2 bAddRace2,RC2_Ninja,5; bonus2 bSubRace2,RC2_Ninja,5; },{},{} @@ -2707,7 +2707,7 @@ 5528,King_Frog_Hat,Frog King Hat,4,20,,500,,4,,1,0xFFFFFFFE,7,2,256,,30,0,522,{ bonus bAgi,1; },{},{} 5529,Evil's_Bone_Hat,Satanic Bone Helm,4,20,,600,,6,,1,0xFFFFFFFF,7,2,768,,70,1,523,{ bonus bDex,3; bonus2 bSubEle,Ele_Neutral,5; skill "WZ_FROSTNOVA",1; },{},{} 5530,Raven_Cap,Raven Cap,4,20,,100,,6,,1,0xFFFFFFFF,7,2,256,,30,1,524,{},{},{} -//5531,B_Dragon_Hat,Baby Dragon Hat,4,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,525,{},{},{} +5531,B_Dragon_Hat,Baby Dragon Hat,4,45000,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,525,{ bonus bDex,2; .@bonus = max(getskilllv("TF_DOUBLE"), 5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus * 5; },{},{} 5532,Pirate_Dagger_J,Pirate Dagger,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,1,327,{ bonus bShortWeaponDamageReturn,1; },{},{} 5533,Emperor_Wreath_J,Emperor Wreath,4,20,,800,,3,,1,0xFFFFFFFF,7,2,256,,80,1,261,{ bonus bAllStats,1; },{},{} //5534,Fox_Hat_J,Fox Hat,4,20,,100,,1,,0,0xFFFFFFFF,7,2,513,,70,0,403,{ bonus bAgi,1; bonus bFlee2,2; },{},{} @@ -2730,13 +2730,13 @@ //5551,Holy_Egg_Hat,Holy Egg Hat,4,20,,0,,1,,0,0xFFFFFFFF,7,2,256,,0,1,537,{},{},{} 5552,Fest_Lord_Circlet,Festival Grand Circlet,4,0,,0,,8,,0,0xFFFFFFFF,7,2,256,,0,0,93,{ bonus bStr,3; bonus bInt,3; bonus bMdef,3; },{},{} 5553,Fest_Bunny_Band,Festival Bunny Band,4,0,,0,,7,,0,0xFFFFFFFF,7,2,256,,0,0,15,{ bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9; },{},{} -5554,Octopus_Hat,Octopus Hat,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,20,1,538,{ bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,0; },{},{} +5554,Octopus_Hat,Octopus Hat,4,20,,200,,3,,0,0xFFFFFFFF,7,2,256,,20,1,538,{ bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm; },{},{} 5555,Leaf_Cat_Hat,Leaf Cat Hat,4,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,539,{ bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,10; },{},{} 5556,Fur_Seal_Hat,Seal Hat,4,20,,500,,3,,0,0xFFFFFFFF,7,2,769,,55,1,540,{ bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,30; },{},{} 5557,Wild_Rose_Hat,Wild Rose Hat,4,20,,500,,6,,1,0xFFFFFFFE,7,2,256,,20,1,541,{ bonus bAgi,3; },{},{} 5558,Saci_Hat,Luxury Hat,4,20,,100,,6,,1,0xFFFFFFFF,7,2,256,,30,1,542,{ bonus3 bAddMonsterDropItem,510,RC_Plant,500; },{},{} 5559,Piece_Of_White_Cloth_E,Piece Of White Cloth,4,0,,0,,1,,0,0xFFFFFFFF,7,2,256,,0,1,543,{},{},{} -5560,Bullock_Helm_J,Bullock Helm,4,20,,3000,,3,,0,0xFFFFFFFF,7,2,256,,75,1,322,{ bonus bMaxHP,100; bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} +5560,Bullock_Helm_J,Bullock Helm,4,20,,3000,,3,,0,0xFFFFFFFF,7,2,256,,75,1,322,{ bonus bMaxHP,100; bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} 5561,Rabbit_Magic_Hat_J,Magic Rabbit Hat,4,0,,800,,1,,0,0xFFFFFFFF,7,2,256,,0,1,497,{ bonus bInt,1; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"MG_FIREBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_COLDBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_LIGHTNINGBOLT",3,10,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; },{},{} 5562,Good_Wedding_Veil_J,Luxurious Wedding Veil,4,0,,500,,0,,1,0xFFFFFFFF,7,2,768,,45,0,489,{ bonus bMdef,10; bonus bCastRate,-3; bonus bUseSPrate,-5; },{},{} //5563,Dolor_Hat,Dolor Hat,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,0,547,{},{},{} @@ -2832,7 +2832,7 @@ 5653,Darkness_Helm_J,Darkness Helm,4,20,,500,,3,,1,0xFFFFFFFF,7,2,256,,70,1,586,{},{},{} 5654,Holy_Marching_Hat_J,Holy Marching Hat,4,20,,200,,2,,1,0xFFFFFFFF,7,2,256,,10,1,587,{ bonus bStr,2; bonus3 bAutoSpell,"PR_ASPERSIO",2,30; },{},{} //5655,Dark_Snake_Lord_Hat_J,Evil Snake Lord Hat,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,60,1,372,{ bonus bInt,2; bonus bAgi,2; bonus bDex,-2; autobonus "{ bonus bCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{} -//5656,Scooter_Hat_J,Scooter Helmet,4,20,,1000,,7,,1,0xFFFFFFFF,7,2,256,,50,1,588,{ bonus bUnbreakableHelm,0; },{},{} +//5656,Scooter_Hat_J,Scooter Helmet,4,20,,1000,,7,,1,0xFFFFFFFF,7,2,256,,50,1,588,{ bonus bUnbreakableHelm; },{},{} //5657,Antique_Pipe_J,Captain's Pipe,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,30,0,383,{},{},{} 5658,Imp_Hat,Imp Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,589,{ bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5; },{},{} 5659,Sleepr_Hat,Sleeper Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{} @@ -4936,7 +4936,7 @@ 12372,Hell_Contract,Hell Contract,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1379; },{},{} 12373,Boy's_Naivety,Boy's Pure Heart,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1370; },{},{} 12374,Flaming_Ice,Ice Fireworks,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1837; },{},{} -12375,Acaraje,Akaraje,2,0,,80,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_STEAL; sc_start SC_INCHITRATE,120000,5; },{},{} +12375,Acaraje,Akaraje,2,0,,80,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE; },{},{} 12376,Mysterious_Can2,Mysterious Can2,2,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 3,0; itemskill "PR_GLORIA",2; },{},{} 12377,Mysterious_PET_Bottle2,Mysterious PET Bottle2,2,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 0,3; itemskill "PR_MAGNIFICAT",1; },{},{} 12378,2009_Rice_Cake_Soup,Rice Cake Soup,2,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ /* percentheal 50,50; */ },{},{} @@ -5343,7 +5343,7 @@ 13015,Hakujin_,Hakujin,5,20,,800,120,,1,1,0x02000000,7,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{} 13016,Poison_Knife_,Poison Knife,5,20,,800,64,,1,2,0x028F5EEE,7,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{} 13017,House_Auger_,Ice Pick,5,20,,600,70,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus bDefRatioAtkClass,Class_All; },{},{} -13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0; },{},{} +13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,7,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon; },{},{} 13019,Ginnungagap_,Ginnungagap,5,20,,700,148,,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50; },{},{} 13020,Warrior_Balmung_,Warrior's Balmung,5,20,,1000,170,,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,{ bonus bAllStats,5; },{},{} 13021,Combat_Knife_C,Combat Knife,5,1,,0,129,,1,0,0x028F5EEE,7,2,2,4,1,0,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{} @@ -5361,13 +5361,13 @@ 13033,Assasin_Dagger_,Assassin Dagger,5,20,,600,140,,1,1,0x00001000,7,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{} 13034,Twilight_Desert,Desert Twilight,5,20,,600,130,,1,2,0x00001000,2,2,2,2,70,1,1,{},{},{} 13035,Sandstorm,Sandstorm,5,20,,600,50,,1,4,0x00001000,2,2,2,2,70,1,1,{},{},{} -13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} -13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} +13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} +13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} 13038,Dagger_Of_Hunter,Dagger of Hunter,5,20,,700,120,,1,3,0x00020000,2,2,2,3,70,1,1,{ bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20; },{},{} 13039,Ivory_Knife,Ivory Knife,5,20,,700,130,,1,2,0x028F5EEE,2,2,2,3,50,1,1,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; },{},{} 13040,N_Cutter,Novice Cutter,5,0,,0,50,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{} 13041,N_Main_Gauche,Novice Main Gauche,5,0,,0,63,,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,{},{},{} -13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{} +13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{} 13043,Fortune_Sword_I,Fortune Sword,5,0,,0,120,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{ bonus bLuk,5; },{},{} 13044,House_Auger_I,Ice Pick,5,0,,0,105,,1,0,0x028F5EEE,7,2,2,4,0,0,1,{},{},{} 13045,Kamaitachi_I,Kamaitachi,5,0,,0,155,,2,0,0x02000000,7,2,2,4,0,0,1,{},{},{} @@ -5383,9 +5383,9 @@ 13105,The_Garrison_,Garrison,5,48000,,500,70,,7,2,0x41000000,7,2,34,2,55,1,17,{ bonus bHit,-10; },{},{} 13106,Gold_Lux,Gold Lux,5,100000,,500,20,,7,0,0x41000000,7,2,34,3,12,1,17,{ bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100; },{},{} 13107,Wasteland_Outlaw,Wasteland's Outlaw,5,20,,580,68,,7,2,0x41000000,7,2,34,3,70,1,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; },{},{} -13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{} +13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,7,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} 13109,Wasteland_Outlaw_C,Wasteland Outlaw,5,20,,0,100,,7,0,0x41000000,7,2,34,3,0,0,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; },{},{} -13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{} +13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,7,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; } },{},{} //13111,Sharpshooter_Revolver 13112,P_Revolver1,Eden Revlover I,5,0,,0,4,,7,0,0x41000000,7,2,34,1,26,0,17,{ bonus bHit,-5; },{},{} 13113,P_Revolver2,Eden Revlover II,5,0,,0,60,,7,0,0x41000000,7,2,34,1,40,0,17,{ bonus bHit,-5; },{},{} @@ -5411,15 +5411,15 @@ 13168,Thunder_P,Thunder P,5,76000,,700,80,,9,1,0x41000000,7,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{} 13169,Thunder_P_,Thunder P,5,76000,,700,80,,9,2,0x41000000,7,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{} 13170,Lever_Action_Rifle,Lever Action Rifle,5,20,,770,138,,9,2,0x41000000,7,2,34,3,70,1,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{} -13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,7,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,7,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{} -13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,7,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{} -13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0; },{},{} +13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,7,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,7,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} +13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,7,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} +13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,7,2,34,3,80,1,21,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} 13175,Lever_Action_Rifle_C,Lever Action Rifle,5,20,,0,170,,9,0,0x41000000,7,2,34,3,0,0,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{} -13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{} -13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); } },{},{} -13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{} -13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{} +13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; } },{},{} +13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,7,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); } },{},{} +13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,7,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{} +13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,7,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{} // Bullets 13200,Bullet,Bullet,10,1,,2,10,,,,0x41000000,7,2,32768,,1,,3,{},{},{} 13201,Silver_Bullet,Silver Bullet,10,15,,2,15,,,,0x41000000,7,2,32768,,1,,3,{ bonus bAtkEle,Ele_Holy; },{},{} @@ -5474,15 +5474,15 @@ 13290,Black_Thing_To_Throw,Throwing Black Mass,10,100,,50,0,,,,0x00040000,8,2,32768,,99,,9,{ sc_start SC_STOMACHACHE,60000,rand(5,10); },{},{} 13294,Explosive_Kunai,Explosive Kunai,10,100,,30,50,,,,0x02000000,63,2,32768,,100,,7,{ bonus bAtkEle,Ele_Neutral; },{},{} // Ninja Fuuma Shurikens -13300,Huuma_Bird_Wing,Huuma Wing Shuriken,5,90000,,3000,150,,1,0,0x02000000,7,2,34,4,65,1,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} -13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,3,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100; },{},{} -13302,Huuma_Giant_Wheel_,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,4,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100; },{},{} -13303,Huuma_Blaze,Huuma Blaze Shuriken,5,78000,,1500,185,,1,0,0x02000000,7,2,34,4,55,1,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30; },{},{} -13304,Huuma_Calm_Mind,Huuma Calm Mind,5,20,,1550,112,,1,2,0x02000000,7,2,34,3,70,1,22,{ bonus bUnbreakableWeapon,0; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0; },{},{} -13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0; },{},{} -13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{} -13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,0,,0,230,,1,0,0x02000000,7,2,34,4,0,0,22,{ bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{} +13300,Huuma_Bird_Wing,Huuma Wing Shuriken,5,90000,,3000,150,,1,0,0x02000000,7,2,34,4,65,1,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} +13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,3,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100; },{},{} +13302,Huuma_Giant_Wheel_,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,4,0x02000000,7,2,34,4,42,1,22,{ bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100; },{},{} +13303,Huuma_Blaze,Huuma Blaze Shuriken,5,78000,,1500,185,,1,0,0x02000000,7,2,34,4,55,1,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30; },{},{} +13304,Huuma_Calm_Mind,Huuma Calm Mind,5,20,,1550,112,,1,2,0x02000000,7,2,34,3,70,1,22,{ bonus bUnbreakableWeapon; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel; },{},{} +13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} +13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55,,1,0,0x02000000,7,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{} +13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,0,,0,230,,1,0,0x02000000,7,2,34,4,0,0,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{} 13309,Huuma_Giant_Wheel_C,Huuma Giant Wheel Shuriken,5,0,,0,99,,1,0,0x02000000,7,2,34,4,1,0,22,{ bonus2 bAddSize,Size_All,80; },{},{} // More 1-Handed Swords 13400,Cutlas_,Cutlus,5,20,,900,150,,1,1,0x000654E2,7,2,2,4,40,1,2,{ skill "SM_BASH",5; bonus bStr,2; bonus bDef,1; },{},{} @@ -5494,20 +5494,20 @@ 13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,7,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{} 13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,7,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; },{},{} 13408,Fire_Brand_C,Refined Fireblend,5,1,,0,120,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100; },{},{} -13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0; },{},{} -13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; },{},{} -13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; },{},{} +13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,7,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon; },{},{} +13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,7,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon; },{},{} 13412,Twin_Edge_B,Twin Edge of Naght Sieger,5,20,,1500,150,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{} 13413,Twin_Edge_R,Twin Edge of Naght Sieger,5,20,,1500,160,,1,3,0x000654E2,2,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{} 13414,Elemental_Sword,Elemental Sword,5,20,,1200,105,,1,3,0x000654E2,2,2,2,3,70,1,2,{ bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,1000; },{},{} 13415,N_Falchion,Novice Falchion,5,0,,0,59,,1,3,0x000654E3,7,2,2,1,2,0,2,{},{},{} -13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{} -13417,Krieger_Onehand_Sword2,Glorious Rapier,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5; },{},{} -13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(getrefine()>9) bonus bInt,5; },{},{} +13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{} +13417,Krieger_Onehand_Sword2,Glorious Rapier,5,20,,0,130,,1,0,0x000654E3,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5; },{},{} +13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,5,20,,0,130,,1,0,0x000444A2,7,2,2,4,80,1,2,{ bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(getrefine()>9) bonus bInt,5; },{},{} 13419,Holy_Saber,Holy saber,5,20,,0,160,,1,0,0x000654E2,7,2,2,3,0,0,2,{},{},{} 13420,Honglyun's_Sword,Honglyun's Sword,5,20,,1200,160,,1,1,0x000654E2,7,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; },{},{} 13421,Ruber,Ruber,5,20,,1500,170,,1,1,0x000444A2,2,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{} -13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40; },{},{} +13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,7,2,2,3,1,0,2,{ bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40; },{},{} // More Cash Shop Items 13500,Insurance60_Package,Life Insurrance Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14500,10; },{},{} 13501,Assorted_Scroll_Box,Experience Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} @@ -6229,7 +6229,7 @@ 14217,F_Megaphone_Box1,Megaphone Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12221,1; },{},{} 14218,F_Megaphone_Box5,Megaphone 5 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12221,5; },{},{} 14219,F_Enriched_Elunium_Box5,Enriched Elunium 5 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7619,5; },{},{} -14220,FEnriched_Oridecon_Box5,Enriched Oridecon 5 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7620,5; },{},{} +14220,F_Enriched_Oridecon_Box5,Enriched Oridecon 5 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7620,5; },{},{} 14221,MP_Scroll_Box,Mystical Amplification Scroll 10 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14593,10; },{},{} 14222,MP_Scroll_Box30,Mystical Amplification Scroll 30 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14593,30; },{},{} 14223,MP_Scroll_Box50,Mystical Amplification Scroll 50 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14593,50; },{},{} @@ -6355,8 +6355,8 @@ 14522,Big_Bun,Big Bun,0,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,0; },{},{} 14523,Pill_,Pill,0,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 0,100; },{},{} 14524,Superb_Fish_Slice,Superb Fish Slice,0,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,100; },{},{} -14525,Chewy_Ricecake,Chewy Ricecake,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ATKPOTION,180000,10; },{},{} -14526,Oriental_Pastry,Oriental Pastry,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MATKPOTION,180000,10; },{},{} +14525,Chewy_Ricecake,Chewy Ricecake,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ATKPOTION,1800000,10; },{},{} +14526,Oriental_Pastry,Oriental Pastry,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MATKPOTION,1800000,10; },{},{} 14527,Dun_Tele_Scroll1,Dungeon Teleport Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_CashDungeon",1; },{},{} 14528,PVP_Tele_Scroll,PVP Teleport Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 14529,Greed_Scroll,Greed Scroll,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "BS_GREED",1; },{},{} @@ -6427,15 +6427,15 @@ 14594,Quagmire_Scroll,Quagmire Scroll,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "WZ_QUAGMIRE",5; },{},{} 14595,Unsealed_Magic_Spell,Unsealed Magic Spell,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ warp "yuno_fild09",255,127; },{},{} 14596,Pierre_Treasurebox,Pierre's Treasure Box,2,0,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; },{},{} -14597,PhreeoniS,Phreeoni Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4121,SI_FOODHIT; },{},{} -14598,GhostringS,Ghostring Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4047,SI_ARMOR_PROPERTY; },{},{} +14597,PhreeoniS,Phreeoni Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4121,EFST_FOOD_BASICHIT; },{},{} +14598,GhostringS,Ghostring Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4047,EFST_ARMOR_PROPERTY; },{},{} 14599,Greed_Scroll_C,Greed Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 14600,Mental_Potion,Mental Potion,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 14601,Tyr's_Blessing,Tyr's Blessing,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCFLEE,300000,30; sc_start SC_INCHIT,300000,30; sc_start SC_ATKPOTION,300000,20; sc_start SC_MATKPOTION,300000,20; },{},{} -14602,TaogunkaS,Tao Gunka Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4302,SI_MVPCARD_TAOGUNKA; },{},{} -14603,MistressS,Mistress Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4132,SI_MVPCARD_MISTRESS; },{},{} -14604,Orc_HeroS,Orc Hero Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4143,SI_MVPCARD_ORCHERO; },{},{} -14605,Orc_LoadS,Orc Lord Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4135,SI_MVPCARD_ORCLORD; },{},{} +14602,TaogunkaS,Tao Gunka Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4302,EFST_MVPCARD_TAOGUNKA; },{},{} +14603,MistressS,Mistress Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4132,EFST_MVPCARD_MISTRESS; },{},{} +14604,Orc_HeroS,Orc Hero Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4143,EFST_MVPCARD_ORCHERO; },{},{} +14605,Orc_LoadS,Orc Lord Scroll,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4135,EFST_MVPCARD_ORCLORD; },{},{} 14606,Job_Manual25,JOB Battle Manual,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{} 14607,Luxurious_Dinner_W,Luxurious Western Food,2,10000,,600,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCALLSTATUS,3600000,3; },{},{} 14608,Luxurious_Dinner_E,Manchu-Han Imperial Feast,2,20000,,1200,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCALLSTATUS,3600000,6; },{},{} @@ -6565,8 +6565,8 @@ // 18600,Cat_Ears_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{} // -18612,White_Musang_Hat,White Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0; },{},{} -18613,Black_Musang_Hat,Black Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0; },{},{} +18612,White_Musang_Hat,White Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm; },{},{} +18613,Black_Musang_Hat,Black Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm; },{},{} // 18620,Heart_Eyepatch,Heart Eyepatch,4,5,,200,,2,,0,0xFFFFFFFF,7,2,512,,20,1,779,{},{},{} // diff --git a/db/pre-re/item_group_db.txt b/db/pre-re/item_group_db.txt index e69de29bb2..99f50c9f30 100644 --- a/db/pre-re/item_group_db.txt +++ b/db/pre-re/item_group_db.txt @@ -0,0 +1,4 @@ +// Item Group Database +// +// Structure of Database: +// GroupID,ItemID,Rate{,Amount,Random,isAnnounced,Duration,GUID,isBound,isNamed} diff --git a/db/pre-re/job_exp.txt b/db/pre-re/job_exp.txt index c5828afde5..c8a4afbdb8 100644 --- a/db/pre-re/job_exp.txt +++ b/db/pre-re/job_exp.txt @@ -46,8 +46,8 @@ // Renewal content (required for some core features) //================================ -//Base - 3rd Jobs, Baby 3rds, Expanded Super Novice, Kagerou/Oboro, Rebellion and Summoner -99,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4190:4191:4211:4212:4215:4218:4220:4222:4223:4224:4225:4226:4227:4228:4229:4238,0,10,18,28,40,85,123,168,220,278,400,481,613,731,875,1038,1213,1400,1575,1775,2268,2604,2786,3136,3506,4130,4796,5508,6264,9645,12392,14220,16159,18209,21649,24451,27401,30499,33748,47342,58160,64711,71573,78749,90144,99312,108870,118816,129154,174196,213220,238080,264150,291427,329640,363155,398116,434526,472381,610848,731828,806448,884232,965180,1073896,1170382,1270556,1374422,1481976,1850800,3389616,3666333,3953534,4251217,4559382,5129260,5488173,5859059,6241919,7374168,9570662,10458427,11380262,12336168,13326144,14994907,16130400,17304206,18516326,19766760,29216160,34949880,40930560,55017900,71510400,106974000,146061000,174405000,343210000,99999999 +//Base - 3rd Jobs, Baby 3rds, Expanded Super Novice, Kagerou/Oboro, Rebellion, Summoner, Star Emperor, Soul Reaper +99,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4190:4191:4211:4212:4215:4218:4220:4222:4223:4224:4225:4226:4227:4228:4229:4238:4239:4240:4241:4242:4243:4244,0,10,18,28,40,85,123,168,220,278,400,481,613,731,875,1038,1213,1400,1575,1775,2268,2604,2786,3136,3506,4130,4796,5508,6264,9645,12392,14220,16159,18209,21649,24451,27401,30499,33748,47342,58160,64711,71573,78749,90144,99312,108870,118816,129154,174196,213220,238080,264150,291427,329640,363155,398116,434526,472381,610848,731828,806448,884232,965180,1073896,1170382,1270556,1374422,1481976,1850800,3389616,3666333,3953534,4251217,4559382,5129260,5488173,5859059,6241919,7374168,9570662,10458427,11380262,12336168,13326144,14994907,16130400,17304206,18516326,19766760,29216160,34949880,40930560,55017900,71510400,106974000,146061000,174405000,343210000,99999999 -//Job - 3rd Jobs, Baby 3rds, Expanded Super Novice, Kagerou/Oboro, Rebellion and Summoner -50,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4190:4191:4211:4212:4215:4218:4220:4222:4223:4224:4225:4226:4227:4228:4229:4238,1,288,368,568,696,1206,1774,2192,3196,5080,7352,8580,9892,13358,18984,31925,35860,40013,51605,68585,87770,96443,105515,131770,167428,206720,223860,241673,294553,362303,479053,513362,548856,656197,787507,927154,985696,1046034,1231134,1449220,1678177,1773024,2182221,2534978,3043585,3782865,4461912,4672971,5971896,6250158,6875174,7562691,8318960,9150856,10065942,11877812,14015818,16538665,19515624,23028437,28094693,34275525,41816141,51015692,62239144,79666104,101972614,130524946,167071930,213852071,999999999 +//Job - 3rd Jobs, Baby 3rds, Expanded Super Novice, Kagerou/Oboro, Rebellion, Summoner, Star Emperor, Soul Reaper +50,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4190:4191:4211:4212:4215:4218:4220:4222:4223:4224:4225:4226:4227:4228:4229:4238:4239:4240:4241:4242:4243:4244,1,288,368,568,696,1206,1774,2192,3196,5080,7352,8580,9892,13358,18984,31925,35860,40013,51605,68585,87770,96443,105515,131770,167428,206720,223860,241673,294553,362303,479053,513362,548856,656197,787507,927154,985696,1046034,1231134,1449220,1678177,1773024,2182221,2534978,3043585,3782865,4461912,4672971,5971896,6250158,6875174,7562691,8318960,9150856,10065942,11877812,14015818,16538665,19515624,23028437,28094693,34275525,41816141,51015692,62239144,79666104,101972614,130524946,167071930,213852071,999999999 diff --git a/db/pre-re/map_cache.dat b/db/pre-re/map_cache.dat index 170a19ffbe..1034587420 100644 Binary files a/db/pre-re/map_cache.dat and b/db/pre-re/map_cache.dat differ diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index 85249535a4..e39f30356e 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -577,7 +577,7 @@ //-- CH_PALMSTRIKE 370,0,300,0,0,0,0 //-- CH_TIGERFIST -371,0,0,0,0,2000:4000:6000:8000:10000,0 +371,0,0,0,4000:8000:12000:16000:24000,0,0 //========================================== @@ -1366,7 +1366,7 @@ //-- SC_BLOODYLUST 2303,2000,2000,0,10000:20000:30000,0,180000 //-- SC_FEINTBOMB -2304,1000,0,0,500,1500,5000 +2304,1000,0,0,1500,0,5000 //-- SC_ESCAPE 5010,0,500,0,50000,20000,10000:8000:6000:4000:2000 //========================================== diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index 0e5ed1d734..0027d2a85c 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -581,7 +581,7 @@ //**** // Clown & Gypsy 394,9,8,1,-1,0,0,10,-9,yes,0,0,0,weapon,0,0x0, CG_ARROWVULCAN,Vulcan Arrow -395,0,0,4,0,0x1,3,1,1,yes,0,0x40,0,misc,2,0x0, CG_MOONLIT,Sheltering Bliss +395,0,0,4,0,0x1,3,5,1,yes,0,0x40,0,misc,2,0x0, CG_MOONLIT,Sheltering Bliss 396,7,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40, CG_MARIONETTE,Marionette Control //**** @@ -851,7 +851,7 @@ //705,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESIREN,Wide Siren's Voice 706,0,6,4,5,0,0,10,1,no,0,0x2,0,magic,0,0x1, NPC_VENOMFOG,Venom Fog //707,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_MILLENNIUMSHIELD,Millenium Shield 2 -//708,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_COMET,Comet 2 +708,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0, NPC_COMET,Comet 2 //709,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEMINE,Ice Mine //710,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEEXPLO,Ice Explosion //711,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_FLAMECROSS,Flame Cross @@ -863,7 +863,7 @@ 717,0,6,1,0,0xD2,18,10,1,no,0,0x2,0,misc,0,0x0, NPC_MAXPAIN_ATK,Max Pain Attack //718,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_DEATHSUMMON,Death Summon //719,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_HELLBURNING,Hell Burning -//720,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_JACKFROST,Jack Frost 2 +720,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0, NPC_JACKFROST,Jack Frost 2 //721,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDEWEB,Wide Web //722,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESUCK,Wide Suck //723,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_STORMGUST2,Storm Gust 2 @@ -1235,11 +1235,11 @@ 2482,11,6,2,0,0x8,0,5,1,yes,0,0,1,weapon,2,0x0, GN_WALLOFTHORN,Wall of Thorns 2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED,Crazy Weed 2484,0,6,2,2,0x2,2,10,1,no,0,0x40000,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack -2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire +2485,9,6,2,3,0,0,5,1,yes,0,0,1,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire 2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas -2489,11,8,1,-1,0x28,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,magic,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid +2489,11,8,1,0,0x40,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0x18000,0,misc,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid 2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,misc,0,0x0, GN_HELLS_PLANT,Hell's Plant 2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0, GN_HELLS_PLANT_ATK,Hell's Plant Attack 2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0, GN_MANDRAGORA,Howling of Mandragora diff --git a/db/pre-re/skill_require_db.txt b/db/pre-re/skill_require_db.txt index fb2bc12b37..546e1c1181 100644 --- a/db/pre-re/skill_require_db.txt +++ b/db/pre-re/skill_require_db.txt @@ -701,7 +701,7 @@ 2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,12392,1,12392,1,12393,1,12393,1,12394,1,2807,0,0,0,0,0,0,0,6146,1,0 //NC_REPAIR 2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXEBOOMERANG -2279,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_POWERSWING +2279,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_POWERSWING 2280,20:40:60:80:100,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXETORNADO 2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,612,0,615,0,998,1,999,2,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SILVERSNIPER 2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,612,0,615,0,998,2,7054,1,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_MAGICDECOY @@ -764,7 +764,7 @@ 2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAMPAGEBLASTER 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CRESCENTELBOW 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CURSEDCIRCLE -2335,0,0,40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_LIGHTNINGWALK +2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_LIGHTNINGWALK 2336,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_KNUCKLEARROW 2337,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_WINDMILL 2338,0,0,120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAISINGDRAGON diff --git a/db/pre-re/skill_tree.txt b/db/pre-re/skill_tree.txt index 9397a9f334..88459b282d 100644 --- a/db/pre-re/skill_tree.txt +++ b/db/pre-re/skill_tree.txt @@ -830,7 +830,7 @@ 4008,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4008,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4008,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4008,359,1,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has an extra column after "MaxLevel" for Job Level 50 requirement +4008,359,1,0,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has 2 extra columns after "MaxLevel" for Job Level 50 requirement 4008,397,5,55,10,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4008,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4008,399,10,55,9,64,3,398,3,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -1057,7 +1057,7 @@ 4014,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4014,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4014,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4014,359,1,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has an extra column after "MaxLevel" for Job Level 50 requirement +4014,359,1,0,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has 2 extra columns after "MaxLevel" for Job Level 50 requirement 4014,397,5,55,10,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4014,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4014,399,10,55,9,64,3,398,3,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -1302,7 +1302,7 @@ 4020,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4020,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice# 4020,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4020,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4020,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4020,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4020,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4020,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -1338,7 +1338,7 @@ 4021,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4021,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm# 4021,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4021,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4021,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4021,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4021,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4021,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -2731,7 +2731,7 @@ 4060,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4060,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4060,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4060,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra column removed. Rune Knights dont require job level 50 to use Berserk. +4060,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra columns removed. Rune Knights dont require job level 50 to use Berserk. 4060,397,5,55,10,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4060,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4060,399,10,55,9,64,3,398,3,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -3639,7 +3639,7 @@ 4075,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4075,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice# 4075,394,10,47,5,316,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4075,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4075,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4075,396,1,45,5,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4075,487,5,315,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4075,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -3701,7 +3701,7 @@ 4076,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4076,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm# 4076,394,10,47,5,324,1,0,0,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4076,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4076,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4076,396,1,45,5,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4076,487,5,323,10,396,1,0,0,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4076,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -3987,7 +3987,7 @@ 4081,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4081,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4081,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4081,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra column removed. Rune Knights dont require job level 50 to use Berserk. +4081,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra columns removed. Rune Knights dont require job level 50 to use Berserk. 4081,397,5,55,10,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4081,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4081,399,10,55,9,64,3,398,3,0,0,0,0 //LK_JOINTBEAT#Vital Strike# diff --git a/db/re/achievement_db.yml b/db/re/achievement_db.yml index 36bf9d514e..5925668fb1 100644 --- a/db/re/achievement_db.yml +++ b/db/re/achievement_db.yml @@ -1729,7 +1729,7 @@ Achievements: Name: "Magic Insanity" Condition: " bInt >= 125 " Reward: - Script: " specialeffect2 EF_HASTEUP; bonus_script \"{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; }\",60,0,0,SI_STEAMPACK; " + Script: " specialeffect2 EF_HASTEUP; bonus_script \"{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; }\",60,0,0,EFST_STEAMPACK; " Score: 20 - ID: 200025 Group: "AG_GOAL_STATUS" @@ -1780,9 +1780,16 @@ Achievements: Name: "Reborn in Valhalla!" Condition: " Class == JOB_NOVICE_HIGH " Reward: - ItemID: 22808 + # ItemID: 23575 Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; " Score: 10 + - ID: 200032 + Group: "AG_GOAL_LEVEL" + Name: "The start of another adventure!" + Condition: " BaseLevel == 100 " + #Reward: + # ItemID: 23585 + Score: 10 - ID: 230100 Group: "AG_TAMING" Name: "Poring is Love" @@ -2220,7 +2227,7 @@ Achievements: Count: 1 - MobID: 1120 Count: 1 - Score: 15 + Score: 20 - ID: 230203 Group: "AG_BATTLE" Name: "Exploring Poring's life (3)" @@ -2397,11 +2404,3 @@ Achievements: Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; " TitleID: 1024 Score: 10 - - ID: 220036 - Group: "AG_EAT" - Name: "The beginning of outdoor" - Score: 20 - - ID: 220037 - Group: "AG_EAT" - Name: "The first step becoming a chef" - Score: 20 diff --git a/db/re/instance_db.txt b/db/re/instance_db.txt index d6db555fed..e4dc505e7a 100644 --- a/db/re/instance_db.txt +++ b/db/re/instance_db.txt @@ -21,8 +21,20 @@ 14,Sara's Memories,3600,300,1@sara,250,155 15,Geffen Magic Tournament,7200,300,1@gef,119,209,1@gef_in,1@ge_st 16,Horror Toy Factory,3600,300,1@xm_d,111,22 -17,Faceworm's Nest,3600,300,1@face,112,374 +17,Faceworm's Nest,3600,300,1@face,112,370 18,Ghost Palace,3600,300,1@spa,42,196 +// 19,Devil's Tower,3600,300,1@tnm1,50,104,1@tnm2,1@tnm3 +20,Assault on the Airship,3600,300,1@air1,244,73,1@air2 21,Fenrir and Sarah,3600,300,1@glast,367,304 -26,Central Laboratory,3600,300,1@lab,120,30 -27,Last room,3600,300,1@uns,142,30 +// 22,Wave Mode - Forest,3600,300,1@def01,50,21 +// 23,Wave Mode - Sky,3600,300,1@def02,29,35 +// 24,Nightmarish Jitterbug,3600,300,1@jtb,16,17 +25,Isle of Bios,3600,300,1@dth1,17,93,1@dth2,1@dth3 +26,Morse's Cave,3600,300,1@rev,26,181 +// 27,Temple of the Demon God,3600,300,1@eom,101,16 +28,Central Laboratory,3600,300,1@lab,120,30 +29,Last room,3600,300,1@uns,145,35 +// 30,Charleston in Distress,3600,300,1@mcd,127,282 +// 31,Ritual of Blessing,3600,300,2@mir,101,12 +// 32,Room of Consciousness,3600,300,1@mir,101,10 +// 33,Sky Fortress Invasion,3600,300,1@sthb,54,67,1@sthc,1@sthd diff --git a/db/re/item_combo_db.txt b/db/re/item_combo_db.txt index 41c6ea5c12..9faf133124 100644 --- a/db/re/item_combo_db.txt +++ b/db/re/item_combo_db.txt @@ -23,7 +23,9 @@ 1421:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; } 1422:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; } 1428:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; } -1433:2153,{ bonus2 bSkillAtk,"CR_GRANDCROSS",10; bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; } +1433:2153,{ bonus2 bSkillAtk,"LG_RAYOFGENESIS",10; bonus2 bSkillAtk,"CR_GRANDCROSS",10; } +1433:2153:18823,{ bonus2 bSkillAtk,"LG_BANISHINGPOINT",20; bonus2 bSkillAtk,"LG_CANNONSPEAR",20; bonus2 bSkillAtk,"LG_SHIELDPRESS",20; } +1433:2153:18823:28372,{ bonus2 bSkillUseSP,"LG_BANISHINGPOINT",-15; bonus2 bSkillUseSP,"LG_CANNONSPEAR",-10; bonus2 bSkillUseSP,"CR_GRANDCROSS",-30; bonus2 bSkillUseSP,"LG_SHIELDPRESS",-5; } 1433:28372,{ .@r = getequiprefinerycnt(EQI_HAND_R)/2*7; bonus2 bSkillAtk,"LG_CANNONSPEAR",.@r; bonus2 bSkillAtk,"LG_BANISHINGPOINT",.@r; } 1472:2677,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HEAD_TOP); } 1472:2711,{ bonus bMatkRate,6; bonus bDex,2; bonus bVariableCastrate,-getequiprefinerycnt(EQI_HAND_R); } @@ -36,7 +38,7 @@ 1480:2527,{ bonus2 bAddRace,RC_Dragon,5; } 1480:2527:5467,{ bonus2 bAddRace,RC_Dragon,25; } 1490:19021,{ bonus2 bSkillAtk,"LK_SPIRALPIERCE",getequiprefinerycnt(EQI_HAND_R)*5; bonus4 bAutoSpellOnSkill,"LK_JOINTBEAT","LK_SPIRALPIERCE",max(getskilllv("LK_SPIRALPIERCE"),1),50+(getskilllv("LK_JOINTBEAT")*10); /* Confirm: Success rate */ } -15141:19033,{ bonus bMaxSP,100; bonus bNoCastCancel,1; } +15141:19033,{ bonus bMaxSP,100; bonus bNoCastCancel; } 15141:20779:22075,{ .@r = getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bMaxHP,1000; bonus bHealPower,min(5+.@r,30); bonus bHealPower2,min(5+.@r,30); } 15186:19168,{ bonus2 bExpAddClass,Class_All,5; bonus2 bDropAddClass,Class_All,5; } 1535:4361,{ bonus bBreakArmorRate,900; bonus bBreakWeaponRate,900; } @@ -119,7 +121,7 @@ 2125:5782,{ bonus bDef,2; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Ghost,5; } 2135:2426,{ bonus2 bAddEff,Eff_Blind,500; autobonus "{ bonus bFlee,20; }",200,10000,BF_WEAPON,"{ specialeffect2 EF_INCAGILITY; }"; } 2137:2353:5124,{ bonus bDef,2-getequiprefinerycnt(EQI_HAND_L)-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP); } -2153:28372,{ .@r = getequiprefinerycnt(EQI_HAND_R)/6*8; bonus2 bSkillAtk,"LG_SHIELDPRESS",.@r; } +2153:28372,{ .@r = getequiprefinerycnt(EQI_HAND_R); bonus2 bSkillAtk,"LG_SHIELDPRESS",.@r > 5 ? (.@r - 5) * 8 : 0; } 2160:19021,{ bonus2 bSubSize,Size_Large,5+(getequiprefinerycnt(EQI_HAND_L)*2); } 2169:2491:2590:15051,{ bonus2 bAddDefMonster,2311,30; bonus2 bAddDefMonster,2312,30; bonus2 bAddDefMonster,2320,30; bonus2 bAddDefMonster,2321,30; bonus2 bAddDefMonster,2322,30; bonus2 bAddDefMonster,2317,30; bonus2 bAddDefMonster,2318,30; bonus2 bAddDefMonster,2327,30; bonus2 bAddDefMonster,2319,30; bonus2 bAddDefMonster,2330,30; bonus2 bAddDefMonster,2329,30; bonus2 bAddDefMonster,2333,30; bonus2 bAddDefMonster,2332,30; bonus2 bAddDefMonster,2309,30; bonus2 bAddDefMonster,2310,30; bonus2 bAddDefMonster,2315,30; bonus2 bAddDefMonster,2316,30; bonus2 bAddDefMonster,2314,30; bonus2 bAddDefMonster,2313,30; bonus bMaxHPrate,20; bonus bMaxSPrate,10; } 2171:15053,{ bonus bAgi,2; } @@ -167,7 +169,7 @@ 2374:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; } 2375:2729,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; } 2376:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bVit,3; bonus bMaxHPRate,12; bonus bHealpower2,10; bonus bAddItemHealRate,10; autobonus2 "{ bonus2 bHPRegenRate,600,1000; }",5,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; } -2377:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor,1; } +2377:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bStr,3; bonus bMaxHPRate,12; bonus2 bSkillAtk,"MC_MAMMONITE",20; bonus2 bSkillHeal,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AM_POTIONPITCHER",10; bonus2 bSkillHeal2,"AL_HEAL",10; bonus bUnbreakableArmor; } 2378:2435:2538,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bAgi,3; bonus bMaxHPRate,12; bonus bCritical,5; bonus bAspdRate,5; autobonus "{ bonus2 bHPRegenRate,300,1000; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_HEAL; }"; } 2379:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bResEff,Eff_Stun,2000; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; } 2380:2436:2539,{ bonus2 bSubRace,RC_All,-200; bonus2 bSubRace,RC_DemiHuman,200; bonus2 bSubRace,RC_Player,200; bonus bInt,3; bonus bMaxHPRate,12; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-50; bonus bHealPower,6; autobonus2 "{ bonus bDefEle,Ele_Ghost; }",30,10000,BF_WEAPON,"{ specialeffect2 EF_ENERGYCOAT; }"; } @@ -208,7 +210,7 @@ 2485:2587:15048,{ bonus bInt,5; bonus bMdef,10; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; } 2507:15146,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bMaxSPrate,10+.@r; bonus bFlee,10+.@r; } 2509:15146,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus bMaxHPrate,10+.@r; bonus bMatkRate,2+.@r; } -2518:2648:2649:5126,{ bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; bonus bNoCastCancel,0; bonus bVariableCastrate,25; } +2518:2648:2649:5126,{ bonus bInt,5; bonus bMdef,11; bonus bMaxSPrate,20; bonus bNoCastCancel; bonus bVariableCastrate,25; } 2519:2650:2651:5127,{ bonus bStr,2; bonus bLuk,9; bonus bCritical,13; bonus bBaseAtk,18; bonus bFlee2,13; } 2519:15147,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,15; bonus2 bIgnoreDefRaceRate,RC_Demon,15; bonus2 bIgnoreDefRaceRate,RC_Undead,15; bonus bLuk,3+.@r; bonus bCritical,10+.@r; } 2524:15147,{ .@r = getequiprefinerycnt(EQI_ARMOR); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,15; bonus2 bIgnoreDefRaceRate,RC_Demon,15; bonus2 bIgnoreDefRaceRate,RC_Undead,15; bonus bMaxHPrate,10+.@r; bonus2 bAddClass,Class_All,2+.@r; } @@ -239,7 +241,7 @@ 2701:2881,{ bonus bMatkRate,20; } 2702:2874,{ bonus bAspd,1; } 2702:22064,{ if (readparam(bAgi) > 120) bonus bAspd,2; /* Confirm: Bonus value */ } -27013:27012,{ bonus bNoMadoFuel,1; } +27013:27012,{ bonus bNoMadoFuel; } 27015:27016,{ bonus bCritAtkRate,10; } 27018:27019,{ autobonus "{ bonus bAspd,5; }",30,5000; } 2720:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; } @@ -266,7 +268,7 @@ 2733:2774,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; } 2747:13061,{ bonus bHit,5; bonus bMatk,5; bonus2 bSkillUseSP,"SC_ENERVATION",20; bonus2 bSkillUseSP,"SC_GROOMY",20; } 2751:2888,{ bonus bAspdRate,3; bonus bVariableCastrate,-3; } -2777:2778:5479,{ bonus bMaxHP,10*getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxSP,2*getequiprefinerycnt(EQI_ACC_L); bonus bNoCastCancel,1; bonus bCastrate,15; } +2777:2778:5479,{ bonus bMaxHP,10*getequiprefinerycnt(EQI_HEAD_TOP); bonus bMaxSP,2*getequiprefinerycnt(EQI_ACC_L); bonus bNoCastCancel; bonus bCastrate,15; } 2777:2825:5479,{ bonus bMaxHP,BaseLevel*10; bonus bMaxSP,BaseLevel*2; bonus bHealPower,10; } 2779:2780:5482,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; } 2779:2780:5577,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; } @@ -343,11 +345,11 @@ 4168:4169,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus bVariableCastrate,-10; } 4169:4488,{ if(getequiprefinerycnt(EQI_SHOES) >= 15) { bonus bMaxHPrate,15; bonus bMaxSPrate,15; } else { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } } 4169:4488,{ if(getequiprefinerycnt(EQI_SHOES) >= 15) { bonus bMaxHPrate,15; bonus bMaxSPrate,15; } else { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } } -4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone,0; } +4172:4210:4230:4257:4272,{ bonus bAgi,5; bonus bStr,5; bonus bAspdRate,5; bonus bSpeedRate,25; bonus bSPDrainValue,1; if(BaseClass==Job_Thief) bonus bNoGemStone; } 4178:4199:4234:4252:4297,{ bonus bAgi,5; bonus bDex,3; bonus bLongAtkRate,20; bonus bPerfectHitAddRate,20; if(BaseClass==Job_Archer) { bonus2 bExpAddRace,RC_Brute,5; bonus2 bComaRace,RC_Brute,100; } } 4178:4234:4252:4297:4381,{ bonus bDex,5; bonus2 bSkillAtk,"CG_ARROWVULCAN",5; bonus2 bSkillAtk,"DC_THROWARROW",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; if(BaseJob==Job_Bard||BaseJob==Job_Dancer) bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",2,50; } 4185:4217:4280:4293:4312,{ bonus bVit,10; bonus bVariableCastrate,-10; bonus bUseSPRate,-10; if(BaseClass==Job_Acolyte) { bonus2 bExpAddRace,RC_Undead,5; bonus2 bExpAddRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,30; bonus2 bSubRace,RC_Demon,30; } } -4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel,0; } } +4185:4293:4312:4332,{ bonus bStr,3; bonus bMaxSP,80; bonus bBaseAtk,25; bonus3 bAutoSpell,"AL_CRUCIS",5,10; bonus2 bSkillAtk,"MO_EXTREMITYFIST",10; if(BaseJob==Job_Monk) { bonus bUseSPrate,-10; bonus bNoCastCancel; } } 4186:4206:4233:4281:4321,{ bonus bLuk,10; bonus bSPDrainValue,2; bonus2 bSkillAtk,42,20; if(BaseClass==Job_Merchant) { bonus2 bAddMonsterDropItem,617,5; bonus bMagicDamageReturn,20; } } 4191:4208:4258:4309:4325:4327,{ bonus bMaxHP,500; bonus bDef,5; bonus bMdef,5; bonus2 bSkillAtk,14,10; bonus2 bSkillAtk,19,10; bonus2 bSkillAtk,20,10; if(BaseClass==Job_Mage) { bonus bMatkRate,3; bonus bVariableCastrate,-15; } } 4193:4294,{ bonus bMaxHP,300; bonus bMaxSP,60; } @@ -404,9 +406,21 @@ 4681:4691,{ autobonus "{ active_transform 3241,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; } 4682:4694,{ autobonus "{ active_transform 3244,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; } 4683:4695,{ autobonus "{ active_transform 3246,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; } +4697:27012,{ bonus bNoMadoFuel; } +4699:27012,{ bonus bNoMadoFuel; } +4958:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bDelayrate,-1 - ( .@r > 9 ) ? 1 : 0; } } +4959:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bLongAtkRate,2 + ( .@r > 9 ) ? 1 : 0; } } +4960:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bUseSPrate,-2 - ( .@r > 9 ) ? 1 : 0; } } +4961:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bMatk,10 + ( .@r > 9 ) ? 10 : 0; } } +4962:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bAtk,2 + ( .@r > 9 ) ? 5 : 0; } } +4963:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bAtk,4 + ( .@r > 9 ) ? 2 : 0; bonus bHit,3 + ( .@r > 9 ) ? 1 : 0; } } +4964:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus2 bMagicAddRace,RC_All,1 + ( .@r > 9 ) ? 1 : 0; } } +4965:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bVariableCastrate,-1 - ( .@r > 9 ) ? 1 : 0; } } +4966:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus2 bAddRace,RC_All,1 + ( .@r > 9 ) ? 1 : 0; } } +4967:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ bonus bAspdRate,1 + ( .@r > 9 ) ? 1 : 0; } } +4968:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal,.@skills$[.@i],2 + ( .@r > 9 ) ? 2 : 0; } } } +4969:19050,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if( .@r >= 7 ){ setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal2,.@skills$[.@i],2 + ( .@r > 9 ) ? 2 : 0; } /* TODO: Depending on some recovery items HP recovery amount + 1% or if refine >= 9 + 2% */ } } 5040:5442,{ bonus bAspdRate,3; bonus bVariableCastrate,3; } -4697:27012,{ bonus bNoMadoFuel,1; } -4699:27012,{ bonus bNoMadoFuel,1; } 5040:18673,{ bonus bSPrecovRate,3; } 5041:18538,{ bonus2 bSubRace,RC_Angel,9; } 5043:18656,{ bonus bFlee,10; bonus2 bAddEff,Eff_Stun,1000; } @@ -435,8 +449,9 @@ 5917:1525,{ bonus bLongAtkDef,10; } 5920:18542,{ bonus bHealPower,2*getequiprefinerycnt(EQI_HEAD_TOP); } 5967:28321,{ bonus2 bSubSkill,"HT_BLITZBEAT",200; } +5918:19306,{ .@aspd = 1; .@crit_dmg = 2 + 2 * (readparam(bDex) / 10); .@sub_demi = 2; .@luk = readparam(bLuk); if (.@luk > 107) { .@aspd += 1; .@crit_dmg += 2; .@sub_demi += 2; } if (.@luk > 119) { .@aspd += 2; .@crit_dmg += 4; .@sub_demi += 4; bonus bSplashRange,1; } bonus bAspd,.@aspd; bonus bCritAtkRate,.@crit_dmg; bonus2 bSubRace,RC_DemiHuman,.@sub_demi; bonus2 bSubSkill,"NPC_CRITICALSLASH",100; } //9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; } -13027:15044,{ .@r = max(getequiprefinerycnt(EQI_ARMOR),1); bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@r; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@r; bonus3 bAddMonsterDropItem,929,RC_Player,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Player,50*.@r; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@r; } +13027:15044,{ .@r = max(getequiprefinerycnt(EQI_ARMOR),1); bonus3 bAddMonsterDropItem,929,RC_DemiHuman,70*.@r; bonus3 bAddMonsterDropItem,970,RC_DemiHuman,50*.@r; bonus3 bAddMonsterDropItem,929,RC_Brute,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Brute,50*.@r; } 13034:13035,{ bonus bMaxSP,20; bonus bMaxHPRate,5; bonus bHit,10; bonus2 bAddSize,Size_Large,30; autobonus "{ bonus bAspdRate,100; }",1,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } 15041:18659,{ bonus bInt,3; bonus bStr,3; bonus bMdef,10; bonus bDefEle,Ele_Fire; bonus2 bAddEle,Ele_Earth,10; } 15068:20710,{ bonus bAgi,5; bonus bFlee,10; } @@ -446,18 +461,20 @@ 15091:18820:20721:22033,{ bonus2 bSubEle,Ele_Neutral,15; bonus bMaxHPrate,25; bonus bMaxSPrate,25; bonus bMatkRate,10; } 15110:20732,{ bonus2 bSkillAtk,"NC_AXETORNADO",25; } 15110:22043,{ bonus bBaseAtk,30; } -15116:20743:22046,{ bonus bMaxHPrate,25; bonus bMaxSPrate,25; bonus bSpeedAddRate,10; } -15126:20788:22083,{ bonus bMaxHP,2000; bonus bNoCastCancel,1; bonus bFixedCastrate,-15-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } +15116:20743:22046,{ bonus bMaxHPrate,25; bonus bMaxSPrate,25; bonus bSpeedAddRate,40; } +15117:20744:22047,{ bonus bMaxHPrate,25; bonus bMaxSPrate,25; bonus bSpeedAddRate,40; if (getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES) >= 30) { bonus bMaxHPrate,5; bonus bMaxSPrate,5; } } +15126:20788:22083,{ bonus bMaxHP,2000; bonus bNoCastCancel; bonus bFixedCastrate,-15-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } 15126:20788:22083:28382:28416,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; bonus2 bSkillAtk,"SU_CN_METEOR",100; } 15126:20788:22083:28380:28419,{ bonus bMaxHPrate,20; bonus bMaxSPrate,3; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",100; } 15126:20788:22083:28381:28413,{ bonus bMaxHPrate,15; bonus bMaxSPrate,5; bonus bHealPower,10; skill "AL_HEAL",5,1; } -15129:20789:22084,{ bonus bMaxHP,3000; bonus bNoCastCancel,1; bonus bFixedCastrate,-20-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } +15128:20773,{ bonus bFlee2,6; bonus bDelayrate,-10 - (BaseLevel > 129 ? 10 : 0); } +15129:20789:22084,{ bonus bMaxHP,3000; bonus bNoCastCancel; bonus bFixedCastrate,-20-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } 15129:20789:22084:28382:28417,{ bonus bMaxHPrate,15; bonus bMaxSPrate,15; bonus2 bSkillAtk,"SU_CN_METEOR",150; } 15129:20789:22084:28380:28420,{ bonus bMaxHPrate,25; bonus bMaxSPrate,6; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",150; } 15129:20789:22084:28381:28414,{ bonus bMaxHPrate,20; bonus bMaxSPrate,10; bonus bHealPower,20; skill "AL_HEAL",7,1; } 15138:19026,{ bonus2 bSubRace,RC_Fish,(10+getequiprefinerycnt(EQI_ARMOR)); } 15138:19026:20756:22059,{ bonus bMaxHP,1000; bonus bMaxSP,100; bonus2 bExpAddRace,RC_Fish,20; bonus2 bMagicAddRace,RC_Fish,50; bonus2 bSubEle,Ele_Water,50; } -15156:20790:22085,{ bonus bMaxHP,4000; bonus bNoCastCancel,1; bonus bFixedCastrate,-25-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } +15156:20790:22085,{ bonus bMaxHP,4000; bonus bNoCastCancel; bonus bFixedCastrate,-25-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); } 15156:20790:22085:28382:28418,{ bonus bMaxHPrate,20; bonus bMaxSPrate,20; bonus2 bSkillAtk,"SU_CN_METEOR",200; } 15156:20790:22085:28380:28421,{ bonus bMaxHPrate,30; bonus bMaxSPrate,9; bonus2 bSkillAtk,"SU_LUNATICCARROTBEAT",200; } 15156:20790:22085:28381:28415,{ bonus bMaxHPrate,25; bonus bMaxSPrate,15; bonus bHealPower,30; skill "AL_HEAL",9,1; } @@ -465,17 +482,17 @@ 15182:28445:28446,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; } 15183:28447:28448,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; } 15184:28449:28450,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; } -15185:28451:28452,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; } +15185:28451:28452,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel; } 15181:28453:28454,{ bonus bMatk,20; bonus2 bSubEle,Ele_All,2; bonus2 bSubEle,Ele_Neutral,-2; } 15182:28455:28456,{ bonus bMatk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; } 15183:28457:28458,{ bonus bMatk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; } 15184:28459:28460,{ bonus bMatk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; } -15185:28461:28462,{ bonus bMatk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; } +15185:28461:28462,{ bonus bMatk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel; } 15181:28463:28464,{ bonus bAtk,20; bonus2 bSubEle,Ele_All,2; bonus2 bSubEle,Ele_Neutral,-2; } 15182:28465:28466,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; } 15183:28467:28468,{ bonus bAtk,40; bonus2 bSubEle,Ele_All,4; bonus2 bSubEle,Ele_Neutral,-4; bonus2 bExpAddClass,Class_All,2; } 15184:28469:28470,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; } -15185:28471:28472,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel,1; } +15185:28471:28472,{ bonus bAtk,50; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; bonus2 bExpAddClass,Class_All,2; bonus bNoCastCancel; } 18137:1752,{ bonus bLongAtkRate,25; } 18137:1752:19048,{ bonus bLongAtkRate,20; bonus2 bSubEle,Ele_Fire,-10; if (getequiprefinerycnt(EQI_HAND_R) >= 10) bonus bAspd,1; } 18137:19019,{ bonus bLongAtkRate,45; } @@ -493,7 +510,9 @@ 18563:18564,{ bonus bFixedCastrate,-10; } 18776:20710,{ bonus bBaseAtk,10; } 18776:22015,{ bonus bMatk,20; } -18823:28372,{ bonus2 bSkillAtk,"CR_GRANDCROSS",BaseLevel; bonus2 bVariableCastrate,"CR_GRANDCROSS",-BaseLevel*2; bonus2 bSkillAtk,"CR_GRANDCROSS",BaseLevel/30; bonus2 bSkillUseSP,"CR_GRANDCROSS",-(BaseLevel/30)*10; } +18823:19246,{ .@atk = 40; .@aspd = 3; .@dmg = 2; .@agi = readparam(bAgi); if (.@agi > 107) { .@atk += 60; .@aspd += 5; .@dmg += 2; } if (.@agi > 119) { .@atk += 80; .@aspd += 7; .@dmg += 4; } bonus bBaseAtk,.@atk; bonus bAspdRate,.@aspd; bonus2 bSubRace,RC_Player,.@dmg; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Silence,10000; } +18823:28372,{ bonus2 bSkillVariableCast,"CR_GRANDCROSS",-1500; bonus2 bSkillAtk,"LG_RAYOFGENESIS",BaseLevel/30 + BaseLevel; bonus2 bSkillUseSP,"LG_RAYOFGENESIS",-10; } +18823:28551,{ bonus2 bSkillDelay,"LG_OVERBRAND",-2000; bonus bLongAtkRate,getskilllv("LG_CANNONSPEAR") * 2; bonus bLongAtkRate,getskilllv("LG_OVERBRAND") * 2; bonus2 bSkillAtk,"LG_CANNONSPEAR",30; bonus2 bSkillAtk,"LG_OVERBRAND",20; } 18867:1720,{ bonus bLongAtkRate,3+(getequiprefinerycnt(EQI_HAND_R) > 6 ? 5:0); } 18937:28302,{ bonus bInt,8; bonus bMaxSPrate,5;} 18937:28303,{ bonus bInt,8; bonus bBaseAtk,20;} @@ -557,7 +576,7 @@ 20718:22116,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; } 20718:22117,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; } 20718:22118,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; } -20797:2339,{ bonus bInt,15; bonus bMaxHPrate,5; bonus bMaxSPrate,5; if (getequiprefinerycnt(EQI_ARMOR) > 6) bonus bNoCastCancel,1; } +20797:2339,{ bonus bInt,15; bonus bMaxHPrate,5; bonus bMaxSPrate,5; if (getequiprefinerycnt(EQI_ARMOR) > 6) bonus bNoCastCancel; } 20797:4174,{ bonus2 bSubEle,Ele_All,50; bonus2 bSubEle,Ele_Neutral,-50; } 22069:2195,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); } 22069:20753,{ bonus2 bAddEle,Ele_Neutral,5; .@r = getequiprefinerycnt(EQI_GARMENT); bonus bMaxHPrate,.@r; bonus bMaxSPrate,.@r; } @@ -597,7 +616,7 @@ 24038:24044,{ bonus bVit,1; } 24039:24045,{ bonus bAgi,1; } 24046:24051,{ bonus2 bSubEle,Ele_Neutral,1; if(getequiprefinerycnt(EQI_SHADOW_ACC_R) + getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) { bonus2 bSubEle,Ele_Neutral,1; } } -24052:24062,{ bonus2 bExpAddRace,RC_DemiHuman,3; bonus2 bExpAddRace,RC_Player,3; } +24052:24062,{ bonus2 bExpAddRace,RC_DemiHuman,3; } 24053:24063,{ bonus2 bAddRace,10,5; bonus2 bMagicAddRace,10,5; } 24054:24065,{ bonus2 bExpAddRace,RC_Brute,3; } 24055:24066,{ bonus2 bExpAddRace,RC_Insect,3; } @@ -612,7 +631,7 @@ 24074:24077,{ bonus bMaxHPrate,1; bonus bMaxSPrate,1; } 24078:24079:24080,{ bonus2 bSPDrainRate,10,1+(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)/10); } 24081:24082:24083,{ bonus2 bHPDrainRate,40,2+(getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)/5); } -24084:24085:24086:24087:24088:24089,{ bonus bAllStats,1; .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 45) { bonus bNoGemStone,1; } bonus bUseSPrate,100-.@r; } +24084:24085:24086:24087:24088:24089,{ bonus bAllStats,1; .@r = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L); if (.@r >= 45) { bonus bNoGemStone; } bonus bUseSPrate,100-.@r; } 24090:24091:24092,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Stone,10000; } 24090:24093:24094,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Sleep,10000; } 24090:24095:24096,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES) >= 20) bonus2 bResEff,Eff_Silence,10000; } @@ -621,11 +640,11 @@ 24090:24102:24103,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Bleeding,10000; } 24090:24104:24105:24106,{ bonus bDef,4; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 30) bonus2 bResEff,Eff_Stun,10000; } 24090:24107:24108,{ bonus bDef,5; if (getequiprefinerycnt(EQI_SHADOW_SHIELD)+getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 20) bonus2 bResEff,Eff_Curse,10000; } -24048:24109:24110,{ bonus bNoCastCancel2,1; bonus bVariableCastrate,40-(getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)); } -24111:24112:24113,{ bonus bNoCastCancel,1; bonus bUseSPrate,40-getequiprefinerycnt(EQI_SHADOW_SHIELD)-getequiprefinerycnt(EQI_SHADOW_ARMOR)-getequiprefinerycnt(EQI_SHADOW_SHOES); } -24150:24151,{ bonus2 bAddClass,Class_All,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bNoSizeFix,1; } -24152:24153,{ bonus bAtk,getequiprefinerycnt(EQI_SHADOW_WEAPON); if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 15) bonus bUnbreakableWeapon,1; } -24154:24155,{ bonus bDef,getequiprefinerycnt(EQI_SHADOW_ARMOR); if (getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bUnbreakableArmor,1; } +24048:24109:24110,{ bonus bNoCastCancel2; bonus bVariableCastrate,40-(getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)); } +24111:24112:24113,{ bonus bNoCastCancel; bonus bUseSPrate,40-getequiprefinerycnt(EQI_SHADOW_SHIELD)-getequiprefinerycnt(EQI_SHADOW_ARMOR)-getequiprefinerycnt(EQI_SHADOW_SHOES); } +24150:24151,{ bonus2 bAddClass,Class_All,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bNoSizeFix; } +24152:24153,{ bonus bAtk,getequiprefinerycnt(EQI_SHADOW_WEAPON); if (getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R) >= 15) bonus bUnbreakableWeapon; } +24154:24155,{ bonus bDef,getequiprefinerycnt(EQI_SHADOW_ARMOR); if (getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_ACC_L) >= 15) bonus bUnbreakableArmor; } 24156:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_DemiHuman; } 24157:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Demon; } 24158:24166:24167,{ bonus bBaseAtk,5; if(getequiprefinerycnt(EQI_SHADOW_WEAPON)+getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=25) bonus bIgnoreDefRace,RC_Brute; } diff --git a/db/re/item_db.txt b/db/re/item_db.txt index f947940caa..1e831d47cd 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -477,7 +477,7 @@ 1121,Tsurugi__,Tsurugi,5,51000,,1200,130,,1,0,0x000654E2,63,2,2,3,27,1,2,{},{},{} 1122,Ring_Pommel_Saber,Ring Pommel Saber,5,24000,,900,100,,1,2,0x000654E2,63,2,2,2,14,1,2,{},{},{} 1123,Haedonggum,Haedonggum,5,50000,,900,120,,1,1,0x000654E2,63,2,2,3,27,1,2,{ bonus bInt,3; },{},{} -1124,Orcish_Sword,Orcish Sword,5,20,,800,90,,1,0,0x000654E3,63,2,2,3,5,1,2,{ bonus bUnbreakableWeapon,1; },{},{} +1124,Orcish_Sword,Orcish Sword,5,20,,800,90,,1,0,0x000654E3,63,2,2,3,5,1,2,{ bonus bUnbreakableWeapon; },{},{} 1125,Ring_Pommel_Saber_,Ring Pommel Saber,5,24000,,900,100,,1,3,0x000654E2,63,2,2,2,14,1,2,{},{},{} 1126,Saber,Saber,5,49000,,1000,115,,1,2,0x000654E2,63,2,2,3,27,1,2,{},{},{} 1127,Saber_,Saber,5,49000,,1000,115,,1,3,0x000654E2,63,2,2,3,27,1,2,{},{},{} @@ -494,14 +494,14 @@ 1138,Mysteltainn_,Mysteltainn,5,20,,1000,170,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3; },{},{} 1139,Tale_Fing_,Tirfing,5,20,,1000,200,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000; },{},{} 1140,Byeorrun_Gum,Byeollungum,5,20,,900,150,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus2 bSubClass,Class_Normal,-10; bonus2 bAddClass,Class_Boss,50; bonus bAllStats,2; },{},{} -1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,1; },{},{} +1141,Immaterial_Sword,Immaterial Sword,5,20,,900,140,,1,0,0x000654E2,63,2,2,4,40,1,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon; },{},{} 1142,Jewel_Sword,Jeweled Sword,5,20,,2200,104,,1,0,0x000654E2,63,2,2,3,68,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Jewel,100; },{},{} 1143,Gaia_Sword,Gaia Sword,5,20,,2500,140,,1,0,0x000654E2,63,2,2,3,74,1,2,{ bonus2 bAddMonsterDropItemGroup,IG_Ore,30; },{},{} 1144,Sasimi,Sashimi,5,20,,1400,75,,1,0,0x000654E2,63,2,2,3,48,1,2,{ bonus bAtkEle,Ele_Wind; bonus3 bAddMonsterDropItem,544,RC_Fish,4000; },{},{} 1145,Holy_Avenger,Holy Avenger,5,450000,,1350,125,,1,0,0x00004000,63,2,2,3,75,1,2,{ bonus bAtkEle,Ele_Holy; bonus bVit,2; },{},{} 1146,Town_Sword,Town Sword,5,42000,,800,100,,1,1,0x00000001,63,2,2,3,30,1,2,{},{},{} 1147,Town_Sword_,Town Sword,5,42000,,800,100,,1,2,0x00000001,63,2,2,3,30,1,2,{},{},{} -1148,Star_Dust_Blade,Star Dust Blade,5,20,,1000,140,,1,1,0x00000001,63,2,2,4,45,1,2,{ bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon,1; },{},{} +1148,Star_Dust_Blade,Star Dust Blade,5,20,,1000,140,,1,1,0x00000001,63,2,2,4,45,1,2,{ bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon; },{},{} 1149,Flamberge_,Flamberge,5,60000,,1500,150,,1,2,0x00004080,63,2,2,3,27,1,2,{},{},{} //=================================================================== // 2-Handed Swords @@ -515,18 +515,18 @@ 1157,Two_Hand_Sword,Two-Handed Sword,5,60000,,2200,160,,1,1,0x00004082,63,2,34,3,33,1,3,{},{},{} 1158,Two_Hand_Sword_,Two-Handed Sword,5,60000,,2200,160,,1,2,0x00004082,63,2,34,3,33,1,3,{},{},{} 1159,Two_Hand_Sword__,Two-Handed Sword,5,60000,,2200,160,,1,0,0x00004082,63,2,34,3,33,1,3,{},{},{} -1160,Broad_Sword,Broad Sword,5,65000,,2000,140,,1,1,0x00004082,63,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon,1; },{},{} -1161,Balmung,Balmung,5,20,,1000,250,,1,0,0xFFFFFFFF,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy; },{},{} -1162,Broad_Sword_,Broad Sword,5,65000,,2000,140,,1,2,0x00004082,63,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon,1; },{},{} +1160,Broad_Sword,Broad Sword,5,65000,,2000,140,,1,1,0x00004082,63,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon; },{},{} +1161,Balmung,Balmung,5,20,,1000,250,,1,0,0xFFFFFFFF,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy; },{},{} +1162,Broad_Sword_,Broad Sword,5,65000,,2000,140,,1,2,0x00004082,63,2,34,3,33,1,3,{ bonus bDef,5; bonus bUnbreakableWeapon; },{},{} 1163,Claymore,Claymore,5,74000,,2500,180,,1,0,0x00004080,63,2,34,3,33,1,3,{},{},{} 1164,Muramasa,Muramasa,5,20,,1000,155,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bCritical,30; bonus bAspdRate,8; bonus2 bAddEff2,Eff_Curse,10; },{},{} 1165,Masamune,Masamune,5,20,,1000,200,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} 1166,Dragon_Slayer,Dragon Slayer,5,20,,1300,150,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{} 1167,Schweizersabel,Schweizersabel,5,20,,1600,160,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100; },{},{} -1168,Zweihander,Zweihander,5,20,,2200,200,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,1; },{},{} +1168,Zweihander,Zweihander,5,20,,2200,200,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; },{},{} 1169,Executioner_,Executioner,5,20,,2200,155,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{} 1170,Katzbalger,Katzbalger,5,20,,2000,175,,1,0,0x00004082,63,2,34,4,48,1,3,{ bonus bVit,5; bonus bDef,10; },{},{} -1171,Zweihander_,Zweihander,5,20,,2200,200,,1,2,0x00004082,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon,1; },{},{} +1171,Zweihander_,Zweihander,5,20,,2200,200,,1,2,0x00004082,63,2,34,4,48,1,3,{ bonus bUnbreakableWeapon; },{},{} 1172,Claymore_,Claymore,5,74000,,2500,180,,1,2,0x00004080,63,2,34,3,33,1,3,{},{},{} 1173,Muramasa_C,Muramasa,5,1,,0,204,,1,0,0x00004082,63,2,34,4,1,0,3,{ bonus bCritical,30; bonus bAspdRate,8; },{},{} 1174,Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,63,2,34,4,0,0,3,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark; },{},{} @@ -538,11 +538,11 @@ 1180,Dragon_Slayer_,Dragon Slayer,5,20,,1300,150,,1,2,0x00004082,63,2,34,4,48,1,3,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15; },{},{} 1181,Tae_Goo_Lyeon,Tae Goo Lyeon,5,20,,2000,250,,1,2,0x00004082,18,2,34,4,90,1,3,{ bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bVariableCastrate,-20; bonus bDelayRate,-20; } },{},{} 1182,Bloody_Eater,Bloody Eater,5,20,,1200,200,,1,2,0x00004082,18,2,34,4,50,1,3,{ bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100; },{},{} -1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,63,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,63,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,1; },{},{} +1183,BF_Two_Handed_Sword1,Brave Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,63,2,34,3,80,1,3,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1184,BF_Two_Handed_Sword2,Valorous Assaulter's Katzbalger,5,20,,0,200,,1,0,0x00004082,63,2,34,3,80,1,3,{ bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon; },{},{} 1185,Violet_Fear,Violet Fear,5,20,,2200,275,,1,2,0x00004082,18,2,34,4,80,1,3,{ bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; specialeffect2 EF_ENHANCE; }",50,5000; },{},{} 1186,Death_Guidance,Death Guidance,5,20,,2000,200,,1,2,0x00004082,18,2,34,4,70,1,3,{ bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",(getrefine()>8?2:1),20; },{},{} -1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,63,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,1); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,1); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; } },{},{} +1187,Krieger_Twohand_Sword1,Glorious Claymore,5,20,,0,220,,1,0,0x00004082,63,2,34,4,80,1,3,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,1); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,1); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; } },{},{} 1188,Veteran_Sword,Veteran Sword,5,10000,,2000,180,,1,1,0x00004082,63,2,34,4,80,1,3,{ if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1; },{},{} 1189,Krasnaya,Krasnaya,5,20,,3800,200,,2,3,0x00004082,18,2,34,2,50,1,3,{ if(readparam(bStr)>=95) { bonus bBaseAtk,20; } },{},{} 1190,Claymore_C,Claymore,5,0,,0,220,,1,0,0x00004080,63,2,34,3,1,0,3,{ bonus2 bAddSize,Size_All,40; },{},{} @@ -551,9 +551,9 @@ 1193,P_Slayer2,Eden Slayer II,5,0,,0,185,,1,0,0x00004082,63,2,34,2,40,0,3,{},{},{} 1194,F_Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,63,2,34,4,0,0,3,{ bonus bAtkEle,Ele_Dark; },{},{} 1195,E_Executioner_C,Executioner,5,2,,0,190,,1,0,0x00004082,63,2,34,4,0,0,3,{ bonus bAtkEle,Ele_Dark; },{},{} -1196,Chrome_Twohand_Sword,Chrome Two-Handed Sword,5,20,,400,280,,1,0,0x00004082,63,2,34,3,110,1,3,{ bonus bUnbreakableWeapon,1; bonus bAgi,3; bonus bMaxHPrate,-10; },{},{} +1196,Chrome_Twohand_Sword,Chrome Two-Handed Sword,5,20,,400,280,,1,0,0x00004082,63,2,34,3,110,1,3,{ bonus bUnbreakableWeapon; bonus bAgi,3; bonus bMaxHPrate,-10; },{},{} 1197,P_Slayer3,Eden Slayer III,5,0,,0,200,,1,0,0x00004082,63,2,34,3,60,0,3,{},{},{} -1198,Hairtail,Cutlass,5,0,,0,220,,3,0,0x00004082,63,2,34,1,50,0,3,{ bonus bUnbreakableWeapon,1; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; } },{},{} +1198,Hairtail,Cutlass,5,0,,0,220,,3,0,0x00004082,63,2,34,1,50,0,3,{ bonus bUnbreakableWeapon; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; } },{},{} 1199,Ebony_Toe_Nail,Ebony Toe Nail,5,56000,,1000,250:150,,1,0,0x00004082,63,2,34,4,120,1,3,{},{},{} //=================================================================== // Daggers @@ -579,11 +579,11 @@ 1219,Gladius,Gladius,5,43000,,700,105,,1,2,0x028F5EEE,63,2,2,3,24,1,1,{},{},{} 1220,Gladius_,Gladius,5,43000,,700,105,,1,3,0x028F5EEE,63,2,2,3,24,1,1,{},{},{} 1221,Gladius__,Gladius,5,43000,,700,105,,1,0,0x028F5EEE,63,2,2,3,24,1,1,{},{},{} -1222,Damascus,Damascus,5,49000,,800,118,,1,1,0x028F5EEE,63,2,2,3,24,1,1,{ bonus bUnbreakableWeapon,1; },{},{} +1222,Damascus,Damascus,5,49000,,800,118,,1,1,0x028F5EEE,63,2,2,3,24,1,1,{ bonus bUnbreakableWeapon; },{},{} 1223,Forturn_Sword,Fortune Sword,5,20,,500,90,,1,0,0x028F5EEE,63,2,2,4,24,1,1,{ bonus bLuk,5; bonus bFlee2,20; },{},{} 1224,Sword_Breaker,Swordbreaker,5,20,,1000,70,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bBreakWeaponRate,500; },{},{} 1225,Mail_Breaker,Mailbreaker,5,20,,1000,70,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bBreakArmorRate,500; },{},{} -1226,Damascus_,Damascus,5,49000,,800,118,,1,2,0x028F5EEE,63,2,2,3,24,1,1,{ bonus bUnbreakableWeapon,1; },{},{} +1226,Damascus_,Damascus,5,49000,,800,118,,1,2,0x028F5EEE,63,2,2,3,24,1,1,{ bonus bUnbreakableWeapon; },{},{} 1227,Weeder_Knife,Weeder Knife,5,20,,400,80,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15; },{},{} 1228,Combat_Knife,Combat Knife,5,20,,400,80,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; },{},{} 1229,Mama's_Knife,Kitchen Knife,5,20,,500,75,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000; },{},{} @@ -593,7 +593,7 @@ 1233,Exercise,Exorciser,5,20,,700,90,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; },{},{} 1234,Moonlight_Sword,Moonlight Dagger,5,20,,700,50,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bMaxSPrate,10; bonus bSPDrainValue,3; },{},{} 1235,Azoth,Azoth,5,20,,700,110,,1,0,0x00040000,63,2,2,4,36,1,1,{ bonus bClassChange,300; },{},{} -1236,Sucsamad,Sucsamad,5,20,,800,140,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,1; },{},{} +1236,Sucsamad,Sucsamad,5,20,,800,140,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon; },{},{} 1237,Grimtooth_,Grimtooth,5,20,,800,180,,1,0,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50; },{},{} 1238,Zeny_Knife,Zeny Knife,5,20,,1200,64,,1,0,0x028F5EEE,63,2,2,3,70,1,1,{ bonus2 bGetZenyNum,100,40; },{},{} 1239,Poison_Knife,Poison Knife,5,20,,800,64,,1,0,0x028F5EEE,63,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{} @@ -623,9 +623,9 @@ 1260,Ghoul_Leg,Sharpened Legbone of Ghoul,5,52500,,1700,150,,1,0,0x00001000,63,2,34,3,65,1,16,{ bonus bAtkEle,Ele_Undead; },{},{} 1261,Infiltrator,Infiltrator,5,57000,,1500,140,,1,0,0x00001000,63,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{} 1262,Nail_Of_Loki,Loki's Nail,5,20,,1200,115,,1,0,0x00001000,63,2,34,3,55,1,16,{ bonus2 bAddEff,Eff_Bleeding,300; },{},{} -1263,Unholy_Touch,Unholy Touch,5,20,,1250,151,,1,0,0x00001000,63,2,34,4,70,1,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,1; },{},{} +1263,Unholy_Touch,Unholy Touch,5,20,,1250,151,,1,0,0x00001000,63,2,34,4,70,1,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon; },{},{} 1264,Various_Jur,Specialty Jur,5,20,,800,90,,1,4,0x00001000,63,2,34,1,1,1,16,{ bonus2 bAddEff2,Eff_Bleeding,10; },{},{} -1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,63,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} +1265,Bloody_Roar,Bloody Roar,5,20,,1000,120,,1,0,0x00001000,63,2,34,4,75,1,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-(readparam(bAgi)+BaseLevel); bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} 1266,Infiltrator_,Infiltrator,5,57000,,1500,140,,1,1,0x00001000,63,2,34,4,75,1,16,{ bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; },{},{} 1267,Infiltrator_C,Infiltrator,5,1,,0,189,,1,0,0x00001000,63,2,34,4,1,0,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5; },{},{} 1268,Wild_Beast_Claw,Wild Beast Claw,5,20,,1450,160,,1,1,0x00001000,18,2,34,4,55,1,16,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",(getrefine()>=9?2:1),100; },{},{} @@ -633,20 +633,20 @@ 1270,Drill_Katar,Drill Katar,5,20,,1400,110,,1,1,0x00001000,18,2,34,4,55,1,16,{ bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150; },{},{} 1271,Blood_Tears,Blood Tears,5,20,,1700,120,,1,2,0x00001000,18,2,34,4,55,1,16,{ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",(getrefine()>=9?2:1),30; },{},{} 1272,Scratcher,Scratcher,5,20,,0,120,,1,0,0x00001000,63,2,34,1,0,0,16,{ bonus2 bAddClass,Class_All,50; },{},{} -1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,63,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; },{},{} -1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,63,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,1; },{},{} +1273,Bloody_Roar_C,Refined Bloody Roar,5,1,,0,148,,1,0,0x00001000,63,2,34,4,0,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bHPRegenRate,3,5000; },{},{} +1274,Unholy_Touch_C,Refined Unholy Touch,5,1,,0,179,,1,0,0x00001000,63,2,34,4,0,0,16,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon; },{},{} 1275,Katar_Of_Cold_Icicle_,Katar of Frozen Icicle,5,45000,,1200,105,,1,3,0x00001000,63,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500; },{},{} 1276,Katar_Of_Thornbush_,Katar of Quaking,5,45000,,1200,105,,1,3,0x00001000,63,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500; },{},{} 1277,Katar_Of_Raging_Blaze_,Katar of Raging Blaze,5,45000,,1200,105,,1,3,0x00001000,63,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500; },{},{} 1278,Katar_Of_Piercing_Wind_,Katar of Piercing Wind,5,45000,,1200,105,,1,3,0x00001000,63,2,34,3,55,1,16,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500; },{},{} -1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,1; },{},{} -1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,63,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} -1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,63,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1279,BF_Katar1,Brave Carnage Katar,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1280,BF_Katar2,Valorous Carnage Katar,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon; },{},{} +1281,Krieger_Katar1,Glorious Bloody Roar,5,20,,0,140,,1,0,0x00001000,63,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1282,Krieger_Katar2,Glorious Jamadhar,5,20,,0,140,,1,0,0x00001000,63,2,34,4,80,1,16,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 1283,Katar_Of_Speed,Katar Of Speed,5,20,,0,175,,1,0,0x00001000,63,2,34,4,0,0,16,{ bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3; },{},{} 1284,Krishna,Krishna,5,20,,1200,120,,1,2,0x00001000,18,2,34,3,50,1,16,{ bonus2 bSkillAtk,"AS_GRIMTOOTH",10; bonus3 bAutoSpell,"AS_SONICBLOW",max(getskilllv("AS_SONICBLOW"),1),5; },{},{} 1285,Cakram,Chakram,5,20,,1000,130,,1,2,0x00001000,18,2,34,3,50,1,16,{ if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20; },{},{} -1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,63,2,34,3,1,0,16,{ bonus bUnbreakableWeapon,1; bonus2 bAddSize,Size_All,40; },{},{} +1286,Jamadhar_C,Jamadhar,5,0,,0,200,,1,0,0x00001000,63,2,34,3,1,0,16,{ bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40; },{},{} 1287,Durga,Durga,5,20,,1200,190,,1,1,0x00001000,63,2,34,3,100,1,16,{},{},{} 1288,Bloody_Fear_C,Bloody Fear,5,1,,0,145,,1,0,0x00001000,63,2,34,4,1,0,16,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddEff,Eff_Bleeding,100; },{},{} 1289,P_Katar1,Eden Katar I,5,0,,0,155,,1,0,0x00001000,63,2,34,3,60,0,16,{},{},{} @@ -672,17 +672,17 @@ 1307,Windhawk,Windhawk,5,18000,,1500,115,,1,0,0x000654E2,63,2,2,2,14,1,6,{ bonus bAtkEle,Ele_Wind; bonus bAspdRate,5; },{},{} 1308,Golden_Axe,Golden Axe,5,20,,3000,170,,1,0,0x00000001,63,2,2,4,45,1,6,{},{},{} 1309,Orcish_Axe_,Orcish Axe,5,20,,1500,75,,1,4,0x000654E3,63,2,2,3,3,1,6,{},{},{} -1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,63,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{} +1310,Krieger_Onehand_Axe1,Glorious Cleaver,5,20,,0,130,,1,0,0x000444A2,63,2,2,4,80,1,6,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; } },{},{} 1311,Vecer_Axe,Vecer Axe,5,20,,1500,140,,1,2,0x000444A2,18,2,2,3,50,1,6,{ if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90&&readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; } },{},{} 1312,Orcish_Axe_C,Orcish Axe,5,0,,0,110,,1,0,0x000654E3,63,2,2,3,1,0,6,{ bonus2 bAddSize,Size_All,70; },{},{} 1313,Tourist_Axe,Tourist Axe,5,0,,500,77,,1,0,0x000654E3,63,2,2,1,1,0,6,{ bonus bStr,2; },{},{} 1314,F_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,63,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{} 1315,F_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,63,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{} 1316,Adventure_Axe,Adventure Axe,5,0,,0,100,,1,0,0x00040420,63,2,2,1,1,0,6,{},{},{} -1317,Academy_Axe,Academy Axe,5,0,,1600,130,,1,1,0x00040420,63,2,2,1,1,1,6,{},{},{} -1318,Dofle_Axe,Deflation Axe,5,50000,,1800,180,,1,2,0x000654E2,63,2,2,4,105,1,6,{ bonus bUnbreakableWeapon,1; },{},{} -1319,TE_Woe_Axe,TE Woe Axe,5,0,,0,100,,1,0,0x000654E3,63,2,2,3,40,1,6,{ bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; },{},{} -1321,Dofle_Axe_,Deflation Axe,5,50000,,1800,180,,1,3,0x000654E2,63,2,2,4,105,1,6,{ bonus bUnbreakableWeapon,1; },{},{} +1317,Academy_Axe,Academy Axe,5,0,,1600,130,,1,1,0x00040420,63,2,2,1,30,1,6,{ bonus bUnbreakableWeapon; bonus bAspdRate,5-(BaseLevel/10); bonus bMaxHP,200-(40*(BaseLevel/10)); },{},{} +1318,Dofle_Axe,Deflation Axe,5,50000,,1800,180,,1,2,0x000654E2,63,2,2,4,105,1,6,{ bonus bUnbreakableWeapon; },{},{} +1319,TE_Woe_Axe,TE Woe Axe,5,0,,0,100,,1,0,0x000654E3,63,2,2,3,40,1,6,{ bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; },{},{} +1321,Dofle_Axe_,Deflation Axe,5,50000,,1800,180,,1,3,0x000654E2,63,2,2,4,105,1,6,{ bonus bUnbreakableWeapon; },{},{} 1322,Ru_Blue_Axe,Blue Axe,5,10,,1800,180,,1,1,0xFFFFFFFF,63,2,2,1,1,1,6,{ bonus bStr,5; bonus bVit,5; },{},{} 1323,Ru_Gold_Axe,Ru Gold Axe,5,0,,1800,180,,1,2,0x00040000,56,2,2,3,120,1,6,{ bonus bStr,8; bonus bInt,8; },{},{} 1324,War_Axe_,War Axe,5,20,,4200,140,,1,3,0x00040400,63,2,2,3,76,1,6,{ bonus bDex,2; bonus bLuk,2; },{},{} @@ -717,10 +717,10 @@ 1376,Heart_Breaker,Heart Breaker,5,20,,2000,175,,1,1,0x000444A2,18,2,34,4,70,1,7,{ bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)||(Class==Job_Mechanic)||(Class==Job_Mechanic_T)||(Class==Job_Genetic)||(Class==Job_Genetic_T)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30; },{},{} 1377,Hurricane_Fury,Hurricane's Fury,5,20,,3500,332,,1,1,0x000444A2,18,2,34,4,80,1,7,{ .@r = getrefine(); bonus2 bSubSize,Size_Medium,10+.@r; bonus bAspdRate,.@r; bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20; },{},{} 1378,Great_Axe_C,Refined Great Axe,5,1,,0,215,,1,0,0x000444A2,63,2,34,4,0,0,7,{ bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000; },{},{} -1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1; },{},{} +1379,BF_Two_Handed_Axe1,Valorous Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1380,BF_Two_Handed_Axe2,Brave Insane Battle Axe,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} 1381,N_Battle_Axe,Novice Battle Axe,5,0,,0,100,,1,3,0x000444A2,63,2,34,1,3,0,7,{},{},{} -1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,63,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(.@r>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{} +1382,Krieger_Twohand_Axe1,Glorious Two-Handed Axe,5,20,,0,220,,1,0,0x000444A2,63,2,34,4,80,1,7,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(.@r>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; } },{},{} 1383,Holy_Celestial_Axe,Celestial Axe,5,20,,1500,200,,1,0,0x000444A2,63,2,34,4,60,1,7,{ bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,30; },{},{} 1384,Veteran_Axe,Veteran Axe,5,10000,,3000,250,,1,2,0x000444A2,63,2,34,3,80,1,7,{ if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2; },{},{} 1385,Bradium_Stonehammer,Bradium Stone Hammer,5,20,,2700,210,,1,0,0x000444A2,18,2,34,4,75,1,7,{ bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine()); },{},{} @@ -730,14 +730,14 @@ 1389,E_Tomahawk_C,Tomahawk,5,2,,0,200,,1,0,0x000444A2,63,2,34,4,0,0,7,{ bonus bAtkEle,Ele_Wind; },{},{} 1390,E_Right_Epsilon_C,Light Epsilon,5,1,,0,229,,1,0,0x000444A2,63,2,34,4,1,0,7,{ bonus bAtkEle,Ele_Holy; bonus bStr,10; },{},{} 1391,P_Two_Handed_Axe1,Eden Two-Handed Axe I,5,0,,0,195,,1,0,0x000444A2,63,2,34,3,60,0,7,{},{},{} -1392,Ygnus_Stale,Ignus Steel,5,56000,,1900,250,,1,1,0x000444A2,63,2,34,4,95,1,7,{ bonus bAtkEle,Ele_Fire; bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Burning,300; bonus2 bAddEff2,Eff_Burning,300; },{},{} -1393,End_Sektura,End Sectora,5,56000,,1900,250,,1,1,0x000444A2,63,2,34,4,95,1,7,{ bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Freeze,300; bonus2 bAddEff2,Eff_Freeze,300; },{},{} +1392,Ygnus_Stale,Ignus Steel,5,56000,,1900,250,,1,1,0x000444A2,63,2,34,4,95,1,7,{ bonus bAtkEle,Ele_Fire; bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Burning,300; bonus2 bAddEff2,Eff_Burning,300; },{},{} +1393,End_Sektura,End Sectora,5,56000,,1900,250,,1,1,0x000444A2,63,2,34,4,95,1,7,{ bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Freeze,300; bonus2 bAddEff2,Eff_Freeze,300; },{},{} 1394,Upg_Two_Handed_Axe,Upg Two Handed Axe,5,20,,2000,110,,1,1,0x000444A2,63,2,34,3,1,1,7,{ bonus bBaseAtk,(getrefine()*14); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10); },{},{} -1395,Velum_Buster,Vellum Buster,5,20,,2500,50,,1,0,0x000444A2,63,2,34,4,95,1,7,{ bonus bUnbreakableWeapon,1; bonus3 bSPVanishRaceRate,RC_Player,10000,10; },{},{} -1396,Velum_Guillotine,Vellum Guillotine,5,20,,5500,300,,1,0,0x000444A2,63,2,34,4,95,1,7,{ bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bIgnoreDefRaceRate,RC_Player,30; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"NC_AXEBOOMERANG",80; bonus2 bSkillAtk,"NC_POWERSWING",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,60; } },{},{} -1397,Bradium_Stonehammer_,Bradium Stonehammer,5,20,,2700,210,,1,2,0x000444A2,63,2,34,4,75,1,7,{ bonus bUnbreakableWeapon,1; },{},{} -1398,Metal_Two_Handed_Axe,Metal Two Handed Axe,5,20,,0,105,,1,1,0x000444A2,63,2,34,3,1,1,7,{ bonus bUnbreakableWeapon,1; bonus bBaseAtk,(getrefine()*7); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} -1399,TE_Woe_Two_Handed_Axe,TE Woe Two Handed Axe,5,0,,0,150,,1,0,0x000444A2,63,2,34,3,40,1,7,{ bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,3000; },{},{} +1395,Velum_Buster,Vellum Buster,5,20,,2500,50,,1,0,0x000444A2,63,2,34,4,95,1,7,{ bonus bUnbreakableWeapon; bonus3 bSPVanishRaceRate,RC_Player,10000,10; },{},{} +1396,Velum_Guillotine,Vellum Guillotine,5,20,,5500,300,,1,0,0x000444A2,63,2,34,4,95,1,7,{ bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bIgnoreDefRaceRate,RC_Player,30; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"NC_AXEBOOMERANG",80; bonus2 bSkillAtk,"NC_POWERSWING",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,60; } },{},{} +1397,Bradium_Stonehammer_,Bradium Stonehammer,5,20,,2700,210,,1,2,0x000444A2,63,2,34,4,75,1,7,{ bonus bUnbreakableWeapon; },{},{} +1398,Metal_Two_Handed_Axe,Metal Two Handed Axe,5,20,,0,105,,1,1,0x000444A2,63,2,34,3,1,1,7,{ bonus bUnbreakableWeapon; bonus bBaseAtk,(getrefine()*7); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} +1399,TE_Woe_Two_Handed_Axe,TE Woe Two Handed Axe,5,0,,0,150,,1,0,0x000444A2,63,2,34,3,40,1,7,{ bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,3000; },{},{} //=================================================================== // 1-Handed Spears //=================================================================== @@ -761,15 +761,15 @@ 1417,Pole_Axe,Pole Axe,5,20,,3800,160,,3,1,0x00004082,63,2,2,3,71,1,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} 1418,Gungnir_,Gungnir,5,20,,500,120,,3,2,0x00004082,63,2,2,4,4,1,4,{ bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30; },{},{} 1419,Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,63,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} -1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,18,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,1; },{},{} +1420,Long_Horn,Long Horn,5,20,,1000,150,,3,1,0x00004082,18,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon; },{},{} 1421,Battle_Hook,Battle Hook,5,20,,900,140,,3,1,0x00004082,18,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3; },{},{} 1422,Hunting_Spear,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,18,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{} 1423,Pole_XO,Pole XO,5,20,,0,120,,3,0,0x00004082,63,2,2,1,0,0,4,{ bonus2 bAddClass,Class_All,50; },{},{} 1424,Skewer_C,Refined Brocca,5,1,,0,149,,3,0,0x00004082,63,2,2,4,0,0,4,{ bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20; },{},{} -1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,63,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} -1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,63,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{} +1425,BF_Spear1,Assaulter Spear,5,20,,0,60,,3,0,0x00004082,63,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} +1426,Krieger_Onehand_Spear1,Glorious Spear,5,20,,0,130,,3,0,0x00004082,63,2,2,4,80,1,4,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; } },{},{} 1427,Spear_Of_Excellent,Spear Of Excellent,5,20,,0,160,,3,0,0x00004082,63,2,2,3,0,0,4,{ bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2; },{},{} -1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,18,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,1; },{},{} +1428,Long_Horn_M,Long Horn,5,20,,1000,150,,3,1,0x00004082,18,2,2,4,65,1,4,{ bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon; },{},{} 1429,Hunting_Spear_M,Hunting Spear,5,20,,4200,180,,3,1,0x00004082,18,2,2,4,60,1,4,{ bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100; },{},{} 1430,Pike_C,Pike,5,0,,0,74,,3,0,0x00004082,63,2,2,1,1,0,4,{ bonus2 bAddSize,Size_All,70; },{},{} 1431,F_Pole_Axe_C,Pole Axe,5,1,,4800,195,,3,0,0x00004082,63,2,2,3,1,0,4,{ bonus bStr,1; bonus bInt,2; bonus bDex,1; },{},{} @@ -780,12 +780,12 @@ 1436,Velum_Spear,Vellum Spear,5,20,,850,150,,3,0,0x00004082,63,2,2,4,95,1,4,{ bonus2 bAddRace,RC_Player,60; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"RK_HUNDREDSPEAR",80; bonus2 bSkillAtk,"LG_PINPOINTATTACK",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,30; } },{},{} 1437,TE_Woe_Pike,TE Woe Pike,5,0,,0,100,,3,0,0x00004082,63,2,2,3,40,1,4,{ bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,3000; },{},{} 1438,Thanos_Spear,Thanatos Spear,5,10,,3000,150:100,,3,1,0x00004082,56,2,2,4,120,1,4,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } -1439,Half_BF_Spear1,Half BF Spear1,5,20,,0,60,,3,0,0x00004082,63,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,45; bonus2 bAddRace,RC_Player,45; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} +1439,Half_BF_Spear1,Half BF Spear1,5,20,,0,60,,3,0,0x00004082,63,2,2,3,80,1,4,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,45; bonus2 bAddRace,RC_Player,45; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20; },{},{} 1440,Battle_Hook_,Battle Hook,5,20,,900,140,,3,3,0x00004082,18,2,2,4,65,1,4,{ bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3; },{},{} 1441,Ru_Blue_Spear,Blue Spear,5,10,,1200,180:170,,3,1,0x00004000,56,2,2,3,100,1,4,{ bonus bDex,5; bonus bInt,5; },{},{} 1442,Ru_Gold_Spear,Ru Gold Spear,5,0,,1200,180,,3,2,0x00004000,56,2,2,3,120,1,4,{ bonus bStr,8; bonus bAgi,8; },{},{} 1443,Crimson_Spear,Crimson Spear,5,20,,900,90,,3,2,0x00004082,63,2,2,3,70,1,4,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} -1446,Requiem_Spear,Requiem Spear,5,20,,1000,130,,3,,0x00004080,63,2,2,4,100,1,4,{ .@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b; },{},{} +1446,Requiem_Spear,Requiem Spear,5,20,,1000,130,,3,,0x00004080,63,2,2,4,100,1,4,{ .@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b; },{},{} //=================================================================== // 2-Handed Spears //=================================================================== @@ -827,14 +827,14 @@ 1479,Spectral_Spear_,Spectral Spear,5,20,,2000,170,,3,1,0x00004082,63,2,34,4,75,1,5,{ bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50; },{},{} 1480,Gae_Bolg_,Gae Bolg,5,20,,2000,160,,3,2,0x00004082,63,2,34,4,60,1,5,{ bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10; },{},{} 1481,Zephyrus_,Zephyrus,5,20,,2000,170,,3,3,0x00004082,63,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100; },{},{} -1482,BF_Lance1,Assaulter Lance,5,20,,0,160,,3,0,0x00004082,63,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,1; },{},{} +1482,BF_Lance1,Assaulter Lance,5,20,,0,160,,3,0,0x00004082,63,2,34,3,80,1,5,{ bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon; },{},{} 1483,Ivory_Lance,Ivory Lance,5,20,,1000,160,,3,1,0x00004082,18,2,34,3,50,1,5,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; skill "KN_SPEARSTAB",5; },{},{} 1484,Cardo,Cardo,5,20,,5600,150,,3,1,0x00000080,18,2,34,4,70,1,5,{ bonus bAspdRate,-10; bonus bDef,getrefine()/2; },{},{} 1485,Battle_Fork,Battle Fork,5,20,,700,112,,3,4,0x00004082,18,2,34,2,50,1,5,{},{},{} -1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,63,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{} +1486,Krieger_Twohand_Spear1,Glorious Lance,5,20,,0,220,,3,0,0x00004082,63,2,34,4,80,1,5,{ bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; } },{},{} 1487,Lance_C,Lance,5,0,,0,220,,3,0,0x00004082,63,2,34,3,1,0,5,{ bonus2 bAddSize,Size_All,50; },{},{} 1488,Ahlspiess_C,Ahlspiess,5,20,,0,135,,3,0,0x00004080,63,2,34,4,1,1,5,{ bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30; },{},{} -1489,Spearfish_,Marlin,5,0,,0,220,,3,0,0x00004082,18,2,34,1,50,0,5,{ bonus bUnbreakableWeapon,1; bonus3 bAddEffOnSkill,"KN_PIERCE",Eff_Bleeding,1000; bonus3 bAddEffOnSkill,"LK_SPIRALPIERCE",Eff_Bleeding,1000; bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_INSPIRATION",50; if(BaseLevel>99) { bonus bBaseAtk,30; } },{},{} +1489,Spearfish_,Marlin,5,0,,0,220,,3,0,0x00004082,18,2,34,1,50,0,5,{ bonus bUnbreakableWeapon; bonus3 bAddEffOnSkill,"KN_PIERCE",Eff_Bleeding,1000; bonus3 bAddEffOnSkill,"LK_SPIRALPIERCE",Eff_Bleeding,1000; bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_INSPIRATION",50; if(BaseLevel>99) { bonus bBaseAtk,30; } },{},{} 1490,Giant_Lance,Gigantic Lance,5,20,,20000,20,,3,0,0x00000080,63,2,34,4,140,1,5,{ bonus bAspd,-10; bonus2 bSkillCooldown,"LK_SPIRALPIERCE",20000; if(readparam(bStr)>=120){ bonus bBaseAtk,300; } },{},{ heal 0,-600; } 1491,Upg_Lance,Upg Lance,5,20,,1500,105,,3,1,0x00004082,63,2,34,3,1,1,5,{ bonus bBaseAtk,(getrefine()*12); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10); },{},{} 1492,Velum_Glaive,Vellum Glaive,5,20,,4500,250,,3,0,0x00004082,63,2,34,4,95,1,5,{ bonus2 bAddRace,RC_Player,80; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_OVERBRAND",50; } if(.@r>=9) { autobonus2 "{ bonus bShortWeaponDamageReturn,20; bonus bMagicDamageReturn,20; }",100,2000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_REFLECTSHIELD; }"; } },{},{} @@ -844,7 +844,7 @@ 1496,Thanos_Long_Spear,Thanatos Long Spear,5,10,,3750,250:50,,3,1,0x00004082,56,2,34,4,120,1,5,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 1497,Hell_Fire_,Hellfire,5,20,,3500,200,,3,3,0x00004082,63,2,34,4,48,1,5,{ bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",5,100; bonus bStr,3; },{},{} 1498,Crimson_Lance,Crimson Lance,5,20,,1750,175,,1,2,0x00004082,63,2,34,3,70,1,5,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} -1499,Requiem_Lance,Requiem Lance,5,20,,1500,220,,3,,0x00004080,63,2,34,4,100,1,5,{ .@r = getrefine(); .@b = 40; .@c = 5; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+30; .@c += (.@r-5); } bonus2 bAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c; },{},{} +1499,Requiem_Lance,Requiem Lance,5,20,,1500,220,,3,,0x00004080,63,2,34,4,100,1,5,{ .@r = getrefine(); .@b = 40; .@c = 5; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+30; .@c += (.@r-5); } bonus2 bAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c; },{},{} //=================================================================== // Maces //=================================================================== @@ -871,7 +871,7 @@ 1521,Chain__,Chain,5,23000,,800,84,,1,3,0x0004C5B2,63,2,2,2,14,1,8,{},{},{} 1522,Stunner,Stunner,5,60000,,2000,140,,1,0,0x00008110,63,2,2,3,27,1,8,{ bonus2 bAddEff,Eff_Stun,1000; },{},{} 1523,Spike,Spike,5,20,,700,85,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} -1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,1; },{},{} +1524,Golden_Mace,Golden Mace,5,20,,800,110,,1,1,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon; },{},{} 1525,Long_Mace,Long Mace,5,20,,800,135,,3,0,0x00008110,63,2,2,4,40,1,8,{ bonus bLongAtkDef,10; },{},{} 1526,Slash,Slash,5,20,,1000,145,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5; },{},{} 1527,Quadrille,Quadrille,5,20,,900,165,,1,0,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{} @@ -886,14 +886,14 @@ 1536,Good_Morning_Star,Good Morning Star,5,20,,0,120,,1,0,0x0004C5B2,63,2,2,1,0,0,8,{ bonus2 bAddClass,Class_All,50; },{},{} 1537,Quadrille_C,Refined Quadrille,5,1,,0,193,,1,0,0x00008110,63,2,2,4,0,0,8,{ bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40; },{},{} 1538,Spike_,Spike,5,20,,700,85,,1,2,0x00008110,63,2,2,4,40,1,8,{ bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67; },{},{} -1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,1; },{},{} +1539,Golden_Mace_,Golden Mace,5,20,,800,110,,1,2,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon; },{},{} 1540,Grand_Cross_,Grand Cross,5,20,,1500,140,,1,1,0x00008110,63,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3; },{},{} 1541,Nemesis,Nemesis,5,20,,900,120,,1,0,0x00008110,63,2,2,4,60,1,8,{ bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }"; },{},{} -1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,1; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +1542,BF_Morning_Star1,Valorous Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1543,BF_Morning_Star2,Brave Battlefield Morning Star,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 1544,Lunakaligo,Lunakaligo,5,20,,700,110,,1,3,0x00008110,18,2,2,3,50,1,8,{ if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; } },{},{} 1545,N_Mace,Novice Mace,5,0,,0,57,,1,3,0x0004C5B3,63,2,2,1,2,0,8,{},{},{} -1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,63,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{} +1546,Krieger_Onehand_Mace1,Glorious Morning Star,5,20,,0,130,,1,0,0x0004C5B3,63,2,2,4,80,1,8,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; } },{},{} 1547,Mace_Of_Madness,Mace Of Madness,5,20,,0,150,,1,0,0x0004C5B2,63,2,2,3,0,0,8,{ bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2; },{},{} 1548,Veteran_Hammer,Veteran Hammer,5,10000,,1800,160,,1,2,0x00008110,63,2,2,3,80,1,8,{ bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1; },{},{} 1549,Pilebuncker,Pile Bunker,5,10000,,3500,450,,1,0,0x00000400,56,2,2,3,99,1,8,{},{},{} @@ -924,32 +924,32 @@ 1571,Book_Of_Gust_Of_Wind_,Book of Gust of Wind,5,35000,,750,90,,1,3,0x00410100,63,2,2,3,27,1,15,{ bonus bAtkEle,Ele_Wind; },{},{} 1572,Principles_Of_Magic,Principles of Magic,5,20,,300,60:160,,1,2,0x00410100,63,2,2,3,60,1,15,{ bonus bInt,3; bonus bSPrecovRate,5; },{},{} 1573,Ancient_Magic,Ancient Magic,5,20,,700,30:140,,1,2,0x00410100,63,2,2,3,70,1,15,{},{},{} -1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; },{},{} -1576,Krieger_Book1,Glorious Tablet,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{} -1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; } },{},{} +1574,BF_Book1,Brave Battle Strategy Book,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1575,BF_Book2,Valorous Battle Strategy Book,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; },{},{} +1576,Krieger_Book1,Glorious Tablet,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; },{},{} +1577,Krieger_Book2,Glorious Apocalypse,5,20,,0,90:115,,1,0,0x00410100,63,2,2,4,80,1,15,{ bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; } },{},{} 1578,Book_Of_Prayer,Book Of Prayer,5,20,,0,140,,1,0,0x00410100,63,2,2,3,0,0,15,{ bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10; },{},{} 1579,Death_Note_M,Book of the Dead,5,20,,1000,137,,1,2,0x00410100,63,2,2,4,85,1,15,{ bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20; },{},{} 1580,Encyclopedia_C,Giant Encyclopedia,5,0,,0,145:100,,1,0,0x00410100,63,2,2,3,0,0,15,{ bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40; },{},{} -1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,63,2,2,3,1,0,15,{},{},{} +1581,F_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,63,2,2,3,1,0,15,{ bonus bMatkRate,20; bonus bAspdRate,5; },{},{} 1582,E_Diary_Of_Great_Sage_C,Diary Of Great Sage,5,1,,0,135,,1,2,0x00410100,63,2,2,3,1,0,15,{},{},{} 1583,P_Dic1,Eden Book I,5,0,,0,135:110,,1,0,0x00410100,63,2,2,3,60,0,15,{},{},{} -1584,Chilly_Spell_Book,Cold Magic Book,5,56000,,1000,100:160,,1,2,0x00010000,63,2,2,4,100,1,15,{ bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon,1; bonus bDex,1; .@r = getrefine(); bonus2 bSkillAtk,"MG_COLDBOLT",(.@r*3); bonus2 bSkillAtk,"SO_DIAMONDDUST",(.@r*3); bonus2 bSkillUseSP,"MG_COLDBOLT",-(.@r*5); bonus2 bSkillUseSP,"SO_DIAMONDDUST",-(.@r*5); },{},{} +1584,Chilly_Spell_Book,Cold Magic Book,5,56000,,1000,100:160,,1,2,0x00010000,63,2,2,4,100,1,15,{ bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon; bonus bDex,1; .@r = getrefine(); bonus2 bSkillAtk,"MG_COLDBOLT",(.@r*3); bonus2 bSkillAtk,"SO_DIAMONDDUST",(.@r*3); bonus2 bSkillUseSP,"MG_COLDBOLT",-(.@r*5); bonus2 bSkillUseSP,"SO_DIAMONDDUST",-(.@r*5); },{},{} 1585,Upg_Book,Upg Book,5,20,,600,45:20,,1,1,0x00410100,63,2,2,3,1,1,15,{ .@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*5); },{},{} 1586,Velum_Bible,Vellum Bible,5,20,,600,110:125,,1,0,0x00410100,63,2,2,4,95,1,15,{ if(BaseLevel>104) { bonus bHealPower,(BaseLevel/5)-20; if(getrefine()>=6) { bonus2 bSkillCooldown,"AB_LAUDAAGNUS",-3000; bonus2 bSkillCooldown,"AB_LAUDARAMUS",-3000; bonus2 bSkillCooldown,"AB_CLEARANCE",-10000; bonus2 bSkillUseSP,"AB_LAUDAAGNUS",-60; bonus2 bSkillUseSP,"AB_LAUDARAMUS",-60; bonus2 bSkillUseSP,"AB_CLEARANCE",-60; } } },{},{} 1587,Velum_Encyclopedia,Vellum Great Encyclopedia,5,20,,1000,130,,1,0,0x00410100,63,2,2,4,95,1,15,{ .@r = getrefine(); bonus2 bAddRace,RC_Player,80+.@r; bonus2 bIgnoreDefRaceRate,RC_Player,30; if(.@r>8) { autobonus "{ bonus bBaseAtk,200; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; } },{},{} -1588,Metal_Book,Metal Book,5,20,,0,45:10,,1,1,0x00410100,63,2,2,3,1,1,15,{ .@r = getrefine(); bonus bUnbreakableWeapon,1; bonus bBaseAtk,(.@r*5); bonus bMatk,(.@r*2); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} +1588,Metal_Book,Metal Book,5,20,,0,45:10,,1,1,0x00410100,63,2,2,3,1,1,15,{ .@r = getrefine(); bonus bUnbreakableWeapon; bonus bBaseAtk,(.@r*5); bonus bMatk,(.@r*2); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} 1589,Legacy_Of_Dragon_,Legacy of Dragon,5,20,,700,130,,1,2,0x00410100,63,2,2,4,70,1,15,{ bonus bInt,3; bonus bIgnoreDefRace,RC_Dragon; bonus2 bSPGainRace,RC_Dragon,10; },{},{} -1590,Snake_Encyclopedia,Daizenshu Dakatsu,5,60000,,1500,10:110,,1,2,0x00410100,63,2,2,4,105,1,15,{ bonus bUnbreakableWeapon,1; },{},{} +1590,Snake_Encyclopedia,Daizenshu Dakatsu,5,60000,,1500,10:110,,1,2,0x00410100,63,2,2,4,105,1,15,{ bonus bUnbreakableWeapon; },{},{} 1591,TE_Woe_Book,TE Woe Book,5,0,,0,120,,1,0,0x00410100,63,2,2,3,40,1,15,{ bonus2 bAddRace,RC_Player,40; bonus2 bMagicAddRace,RC_Player,5; bonus3 bAddEff,Eff_Blind,1000,ATF_MAGIC; bonus bHPRecovRate,5; bonus bSPRecovRate,5; },{},{} -1596,Earth_Pedigree_Book,Earth Pedigree Book,5,10,,400,90:130,,,2,0x050100,63,2,2,,27,1,15,{ .@r = getrefine(); bonus2 bSkillAtk,"WZ_HEAVENDRIVE",5+.@r; bonus2 bSkillAtk,"WZ_EARTHSPIKE",5+.@r; bonus bUnbreakableWeapon,1; },{},{} -1597,Half_BF_Book2,Half BF Book2,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreMdefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} +1596,Earth_Pedigree_Book,Earth Pedigree Book,5,10,,400,90:130,,,2,0x050100,63,2,2,,27,1,15,{ .@r = getrefine(); bonus2 bSkillAtk,"WZ_HEAVENDRIVE",5+.@r; bonus2 bSkillAtk,"WZ_EARTHSPIKE",5+.@r; bonus bUnbreakableWeapon; },{},{} +1597,Half_BF_Book2,Half BF Book2,5,20,,0,90:125,,1,0,0x00410100,63,2,2,3,80,1,15,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreMdefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} // GM Weapon 1599,Angra_Manyu,Angra Manyu,5,1,,10,10000:10000,,2,0,0xFFFFFFFF,63,2,2,1,1,1,8,{ bonus bAllStats,50; bonus bBaseAtk,3300; bonus bMatkRate,200; bonus2 bHPDrainRate,1000,100; bonus2 bSPDrainRate,1000,20; bonus bHealPower,200; bonus2 bAddClass,Class_All,100; skill "WZ_STORMGUST",10; Skill "WZ_METEOR",10; Skill "WZ_VERMILION",10; skill "GM_SANDMAN",1; bonus bVariableCastrate,-100; bonus bFixedCastrate,-100; },{},{} //=================================================================== // 1-Handed Staffs //=================================================================== -1600,Rod_of_Vicious_Mind,Rod of Vicious Mind,5,20,,600,60:120,,1,1,0x00818315,63,2,2,4,160,1,10,{ bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,5; bonus bUnbreakableWeapon,1; },{},{} +1600,Rod_of_Vicious_Mind,Rod of Vicious Mind,5,20,,600,60:120,,1,1,0x00818315,63,2,2,4,160,1,10,{ bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,5; bonus bUnbreakableWeapon; },{},{} 1601,Rod,Rod,5,50,,400,15:30,,1,3,0x00818315,63,2,2,1,1,1,10,{},{},{} 1602,Rod_,Rod,5,50,,400,15:30,,1,4,0x00818315,63,2,2,1,1,1,10,{},{},{} 1603,Rod__,Rod,5,50,,400,15:30,,1,0,0x00818315,63,2,2,1,1,1,10,{},{},{} @@ -981,16 +981,16 @@ 1629,Walking_Stick,Gentleman's Staff,5,20,,500,40:125,,1,1,0x00818314,63,2,2,4,50,1,10,{ bonus bDex,1; },{},{} 1630,Release_Of_Wish,Release of Wish,5,20,,500,30:125,,1,0,0x00810204,63,2,2,3,50,1,10,{ bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }"; },{},{} 1631,Holy_Stick,Holy Stick,5,20,,500,50:140,,1,1,0x00008100,63,2,2,4,70,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-25; bonus2 bVariableCastrate,"PR_TURNUNDEAD",-25; bonus2 bVariableCastrate,"PR_MAGNUS",-25; },{},{} -1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon,1; },{},{} -1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon,1; },{},{} -1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,1; },{},{} -1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,1; },{},{} +1632,BF_Staff1,Warlock's Magic Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon; },{},{} +1633,BF_Staff2,Warlock's Battle Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon; },{},{} +1634,BF_Staff3,Strong Recovery Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon; },{},{} +1635,BF_Staff4,Speedy Recovery Wand,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon; },{},{} 1636,Thorn_Staff,Thorn Staff of Darkness,5,20,,700,60:160,,1,0,0x00018314,18,2,2,4,75,1,10,{ bonus bAtkEle,Ele_Dark; bonus bInt,3; bonus bDex,3; .@r = getrefine(); bonus2 bIgnoreMdefClassRate,Class_Normal,.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,.@r; bonus bDelayRate,-(.@r*3/2); },{},{} 1637,Eraser,Eraser,5,20,,500,80:170,,1,0,0x00018314,18,2,2,4,70,1,10,{ bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",(getrefine()>9?3:1),5,BF_MAGIC,0; },{},{} -1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10:125,,1,0,0x00008110,63,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{} +1638,Healing_Staff_C,Staff Of Healing,5,20,,0,10:125,,1,0,0x00008110,63,2,2,3,1,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2); },{},{} 1639,N_Rod,Novice Rod,5,0,,0,15:32,,1,3,0x00818315,63,2,2,1,1,0,10,{ bonus bMatkRate,16; },{},{} -1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70:135,,1,0,0x00818314,63,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; .@r = getrefine(); bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((.@r > 5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((.@r > 5) ? 5 : 0); bonus bUnbreakableWeapon,1; if(.@r > 8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; } },{},{} -1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70:135,,1,0,0x00818314,63,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r > 5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(min(14,.@r)-5)*2; } if(.@r > 8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(.@r > 9) { bonus bHealPower,10; } },{},{} +1640,Krieger_Onehand_Staff1,Glorious Arc Wand,5,20,,0,70:135,,1,0,0x00818314,63,2,2,4,80,1,10,{ bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; .@r = getrefine(); bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((.@r > 5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((.@r > 5) ? 5 : 0); bonus bUnbreakableWeapon; if(.@r > 8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; } },{},{} +1641,Krieger_Onehand_Staff2,Glorious Cure Wand,5,20,,0,70:135,,1,0,0x00818314,63,2,2,4,80,1,10,{ bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r > 5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(min(14,.@r)-5)*2; } if(.@r > 8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(.@r > 9) { bonus bHealPower,10; } },{},{} 1642,Staff_Of_Darkness,Staff Of Darkness,5,20,,0,100:120,,1,0,0x00818314,63,2,2,2,0,0,10,{ bonus bVariableCastrate,-5; bonus bMatkRate,15; bonus bInt,2; },{},{} 1643,Dead_Tree_Cane,Dead Tree Cane,5,20,,100,100:155,,1,0,0x00818314,63,2,2,4,70,1,10,{ bonus bInt,4; .@r = getrefine(); if (.@r>5) { bonus bInt,.@r-5; bonus bMaxHP,-200; bonus bMaxSP,-100; } },{},{} 1644,Piercing_Staff_M,Staff of Piercing,5,20,,500,80:145,,1,0,0x00018314,18,2,2,3,70,1,10,{ bonus bInt,4; bonus bMatkRate,15; .@r = getrefine(); bonus2 bIgnoreMdefClassRate,Class_Normal,10+.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,10+.@r; },{},{} @@ -1002,15 +1002,15 @@ 1650,P_Staff1,Eden Staff I,5,0,,0,60:125,,1,0,0x00818314,63,2,2,2,26,0,10,{ bonus bInt,2; },{},{} 1651,P_Staff2,Eden Staff II,5,0,,0,60:150,,1,0,0x00818314,63,2,2,2,40,0,10,{ bonus bInt,3; },{},{} 1652,Tourist_Staff,Tourist Staff,5,0,,500,35:0,,1,0,0x00818315,63,2,2,1,1,0,10,{ bonus bMatkRate,15; bonus bInt,2; bonus bAgi,1; },{},{} -1653,Staff_Of_Healing_C,Staff of Healing,5,20,,0,10:100,,1,0,0x00008110,63,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; },{},{} +1653,Staff_Of_Healing_C,Staff of Healing,5,20,,0,10:100,,1,0,0x00008110,63,2,2,3,1,0,10,{ bonus bAtkEle,Ele_Holy; bonus bHealPower,18; },{},{} 1654,Mental_Stick,Mental Stick,5,20,,500,40:170,,1,1,0x00818315,63,2,2,3,102,1,10,{ .@r = getrefine(); if(.@r>5) { bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(.@r-5)*2; bonus bMaxHPrate,-(.@r-5)*2; } bonus2 bSkillVariableCast,"SO_PSYCHIC_WAVE",-3000; bonus2 bSkillUseSP,"SO_PSYCHIC_WAVE",-60; },{},{ itemheal 0,-100; } -1655,Adventure_Staff,Adventure Staff,5,0,,0,60,,1,0,0x00810204,63,2,2,1,1,0,10,{ bonus bUnbreakableWeapon,1; },{},{} -1656,Academy_Wand,Academy Wand,5,0,,600,60,,1,1,0x00810204,63,2,2,1,1,1,10,{ bonus bUnbreakableWeapon,1; },{},{} +1655,Adventure_Staff,Adventure Staff,5,0,,0,60,,1,0,0x00810204,63,2,2,1,1,0,10,{ bonus bUnbreakableWeapon; },{},{} +1656,Academy_Wand,Academy Wand,5,0,,600,60,,1,1,0x00810204,63,2,2,1,1,1,10,{ bonus bUnbreakableWeapon; },{},{} 1657,Wand_Of_Affection,Wand Of Affection,5,20,,500,30:160,,1,2,0x00000100,63,2,2,3,100,1,10,{ bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10; },{},{} 1658,P_Staff3,Eden Staff III,5,0,,0,60:170,,1,0,0x00818314,63,2,2,3,60,0,10,{ bonus bInt,4; },{},{} -1659,Recovery_Light,Light of Recovery,5,56000,,400,30:160,,1,1,0x00000100,63,2,2,4,110,1,10,{ bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bHealPower,(.@r*6); bonus2 bSkillUseSP,"AL_HEAL",-(.@r*10); bonus2 bSkillUseSP,"AB_CHEAL",-(.@r*12); bonus2 bSkillUseSP,"AB_HIGHNESSHEAL",-(.@r*14); },{},{} +1659,Recovery_Light,Light of Recovery,5,56000,,400,30:160,,1,1,0x00000100,63,2,2,4,110,1,10,{ bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon; .@r = getrefine(); bonus bHealPower,(.@r*6); bonus2 bSkillUseSP,"AL_HEAL",-(.@r*10); bonus2 bSkillUseSP,"AB_CHEAL",-(.@r*12); bonus2 bSkillUseSP,"AB_HIGHNESSHEAL",-(.@r*14); },{},{} 1660,Wand_Of_Affection2,Empowered Wand Of Affection,5,20,,500,30:180,,1,1,0x00000100,63,2,2,3,130,1,10,{ bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20; },{},{} -1661,Mental_Destroyer,Mental Destroyer,5,20,,1400,100:50,,1,0,0x00000200,63,2,2,4,95,1,10,{ bonus bInt,10; bonus bUnbreakableWeapon,1; bonus bUseSPrate,100; bonus bMdef,20; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; } },{},{} +1661,Mental_Destroyer,Mental Destroyer,5,20,,1400,100:50,,1,0,0x00000200,63,2,2,4,95,1,10,{ bonus bInt,10; bonus bUnbreakableWeapon; bonus bUseSPrate,100; bonus bMdef,20; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; } },{},{} 1662,Bone_Wand_,Evil Bone Wand,5,20,,700,40:110,,1,2,0x00818314,63,2,2,3,24,1,10,{ bonus bInt,4; bonus bAtkEle,Ele_Undead; },{},{} 1663,Staff_Of_Bordeaux_,Staff Of Bordeaux,5,20,,500,30:180,,1,2,0x00010200,18,2,2,4,50,1,10,{ bonus bInt,2; bonus bDex,1; if(getskilllv("SA_DRAGONOLOGY") == 5) { bonus bUseSPrate,-15; bonus bInt,3; } },{},{} 1664,Thorn_Staff_,Thorn Staff of Darkness,5,10,,700,60:160,,,1,0x14,50,2,2,4,75,1,8,{ bonus bInt,3; bonus bDex,3; bonus bVariableCastrate,-getrefine(); bonus bAtkEle,Ele_Dark; },{},{} @@ -1020,15 +1020,15 @@ 1668,Sword_Stick,Sword Stick,5,10,,500,120:150,,,2,0x800200,63,2,2,4,80,1,10,{ bonus bAspdRate,10; },{},{} 1669,Thanos_Staff,Thanatos Staff,5,10,,1000,100:200,,1,1,0x00018314,56,2,2,4,120,1,10,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus bHealPower,15; bonus bMagicHPGainValue,500; bonus bMagicSPGainValue,50; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 1670,RWC_Memory_Staff,RWC Memory Staff,5,20,,500,25:30,,1,1,0x00818315,63,2,2,3,1,1,10,{ .@r = getrefine(); bonus bMatk,30*(.@r/3); if(.@r>=6) bonus2 bMagicAddClass,Class_All,(.@r>=9?10:5); if(.@r>=9) bonus4 bAutoSpell,"HW_MAGICPOWER",1,10,0; },{},{} -1671,Staff_Of_Evil_Slayer,Devil Won Staff,5,10,,800,30:155,,,1,0x00818315,63,2,2,3,100,1,10,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus bMatkRate,10; },{},{} -1673,Half_BF_Staff4,Half BF Staff4,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon,1; },{},{} -1674,Half_BF_Staff2,Half BF Staff2,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon,1; },{},{} +1671,Staff_Of_Evil_Slayer,Devil Won Staff,5,10,,800,30:155,,,1,0x00818315,63,2,2,3,100,1,10,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus2 bMagicAddRace,RC_Undead,10; bonus2 bMagicAddRace,RC_Demon,10; .@r = getrefine(); if(.@r>=12) bonus bMatkRate,7; else if(.@r>=9) bonus bMatkRate,5; },{},{} +1673,Half_BF_Staff4,Half BF Staff4,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon; },{},{} +1674,Half_BF_Staff2,Half BF Staff2,5,20,,0,70:125,,1,0,0x00818314,63,2,2,3,80,1,10,{ bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon; },{},{} 1675,Walking_Stick_,Gentleman's Staff,5,20,,500,40:125,,1,3,0x00818314,63,2,2,4,50,1,10,{ bonus bDex,1; },{},{} -1676,Baculum_Daemonicum,Baculum Daemonicum,5,20,,1200,60:150,,1,2,0x00818315,63,2,2,4,80,1,10,{ bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon,1; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; } },{},{} -1677,Ru_Blue_Wand,Blue Wand,5,10,,0,50,,1,1,0x00000200,56,2,2,3,100,1,10,{ bonus bStr,5; bonus bInt,5; },{},{} +1676,Baculum_Daemonicum,Baculum Daemonicum,5,20,,1200,60:150,,1,2,0x00818315,63,2,2,4,80,1,10,{ bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; } },{},{} +1677,Ru_Blue_Wand,Blue Wand,5,10,,0,50:200,,1,1,0x00000200,56,2,2,3,100,1,10,{ bonus bDex,5; bonus bInt,5; },{},{} 1678,Ru_Gold_Wand,Ru Gold Wand,5,0,,0,50,,1,2,0x00000200,56,2,2,3,120,1,10,{ bonus bDex,8; bonus bInt,8; },{},{} 1679,Rafini_Staff_S,Laphine Staff,5,20,,500,30:180,,1,2,0x00818315,63,2,2,3,100,1,10,{ bonus bFixedCastRate,-getrefine(); },{},{} -1680,Crimson_One-Handed_Staff,Crimson One-Handed Staff,5,10,,600,60:70,,1,2,0x00818315,63,2,2,3,70,1,10,{ .@r = getrefine(); bonus bInt,4; bonus bMatk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1; },{},{} +1680,Crimson_One-Handed_Staff,Crimson One-Handed Staff,5,10,,600,60:70,,1,2,0x00818315,63,2,2,3,70,1,10,{ .@r = getrefine(); bonus bInt,4; bonus bMatk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon; },{},{} 1681,Short_Foxtail_Staff,Short Foxtail Staff,5,20,,0,30,,1,0,0x80000000,7,2,2,1,1,1,10,{},{},{} 1682,Shadow_Staff,Shadow Staff,5,0,,600,70:130,,1,2,0x00000200,56,2,2,4,90,1,10,{ .@r = getrefine(); bonus2 bSkillAtk,"WL_HELLINFERNO",(getskilllv("WL_HELLINFERNO") >= 5 ? 100 : 0) + (.@r*10); bonus2 bIgnoreMdefRaceRate,RC_All,5; autobonus "{ bonus2 bVariableCastrate,\"WL_HELLINFERNO\",-30; }",.@r*20,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER }"; },{},{} 1683,Enriched_Foxtail_Staff,Enriched Foxtail Staff,5,20,,200,50:70,,1,1,0x80000000,7,2,2,2,12,1,10,{ bonus bMaxSP,50; },{},{} @@ -1085,12 +1085,12 @@ 1735,Kkakkung,Kkakkung,5,20,,0,120,,5,0,0x000A0848,63,2,34,1,1,0,11,{ bonus2 bAddClass,Class_All,50; },{},{} 1736,Double_Bound,Double Bound,5,20,,900,70,,5,3,0x00000800,18,2,34,3,70,1,11,{ bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10; },{},{} 1737,Ixion_Wing,Ixion Wings,5,20,,300,135,,5,1,0x00000800,18,2,34,4,70,1,11,{ autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3; },{},{} -1738,BF_Bow1,Valorous Battle CrossBow,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1739,BF_Bow2,Brave Battle CrossBow,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,1; },{},{} +1738,BF_Bow1,Valorous Battle CrossBow,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1739,BF_Bow2,Brave Battle CrossBow,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon; },{},{} 1740,Nepenthes_Bow,Nepenthes Bow,5,20,,1000,105,,5,2,0x00000800,18,2,34,4,60,1,11,{ bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20; },{},{} 1741,Cursed_Lyre,Cursed Lyre,5,20,,1250,125,,5,1,0x00080800,18,2,34,4,80,1,11,{ bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400; },{},{} 1742,N_Composite_Bow,Novice Composite Bow,5,1,,0,49,,5,3,0x000A0848,63,2,34,1,4,0,11,{},{},{} -1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,63,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; .@r = getrefine(); bonus bCritAtkRate,.@r * 2; bonus bUnbreakableWeapon,1; if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{} +1743,Krieger_Bow1,Glorious Hunter Bow,5,0,,0,100,,5,0,0x001A0848,63,2,34,4,80,1,11,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; .@r = getrefine(); bonus bCritAtkRate,.@r * 2; bonus bUnbreakableWeapon; if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus2 bSkillAtk,"AC_DOUBLE",20; },{},{} 1744,Bow_Of_Evil,Bow Of Evil,5,20,,0,170,,5,0,0x000A0848,63,2,34,4,1,0,11,{ bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2; },{},{} 1745,Falken_Blitz,Falken Blitz,5,20,,1000,100,,5,2,0x00000800,18,2,34,3,50,1,11,{ bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10; },{},{} 1746,Elven_Bow,Elven Bow,5,20,,1500,160,,5,1,0x00080800,63,2,34,3,100,1,11,{ bonus bDex,2; },{},{} @@ -1124,7 +1124,7 @@ 1771,Venom_Knife,Venom Knife,10,50,,5,30,,,,0x00001000,63,2,32768,,1,,2,{},{},{} 1772,Holy_Arrow,Holy Arrow,10,3,,2,50,,,,0x000A1848,63,2,32768,,1,,1,{ bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Demon,5; },{},{} 1773,Arrow_Of_Elf,Elven Arrow,10,5,,1,45,,,,0x000A1848,63,2,32768,,100,,1,{},{},{} -1774,Hunting_Arrow,Hunting Arrow,10,5,,1,35,,,,0x000A1848,63,2,32768,,1,,1,{ bonus bLongAtkRate,50; },{},{} +1774,Hunting_Arrow,Hunting Arrow,10,5,,1,35,,,,0x000A1848,63,2,32768,,1,,1,{},{},{} 1775,Siege_Arrow_S,Siege Arrow S,10,10,,1,45,,,,0x000A1848,63,2,32768,,130,,1,{},{},{} 1776,Siege_Arrow_A,Siege Arrow A,10,10,,1,30,,,,0x000A1848,63,2,32768,,95,,1,{},{},{} //=================================================================== @@ -1153,11 +1153,11 @@ 1820,Electric_Fist,Electric Fist,5,20,,650,80,,1,3,0x00008100,63,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10; },{},{} 1821,Seismic_Fist,Seismic Fist,5,20,,650,80,,1,3,0x00008100,63,2,2,3,75,1,12,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10; },{},{} 1822,Combo_Battle_Glove,Combo Battle Glove,5,20,,500,30,,1,4,0x00008100,63,2,2,3,60,1,12,{ bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20; },{},{} -1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,1; },{},{} -1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bVariableCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,1; },{},{} +1823,BF_Knuckle1,Valorous Battle Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon; },{},{} +1824,BF_Knuckle2,Brave Battle Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bVariableCastrate,\"MO_EXTREMITYFIST\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon; },{},{} 1825,Horn_Of_Hilthrion,Horn of Hillslion,5,20,,600,95,,1,3,0x00008000,18,2,2,3,60,1,12,{ bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100; },{},{} -1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,63,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(.@r*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(.@r*10-50); } },{},{} -1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{} +1826,Krieger_Knuckle1,Glorious Claw,5,20,,0,30,,1,0,0x00008100,63,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(.@r*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(.@r*10-50); } },{},{} +1827,Krieger_Knuckle2,Glorious Fist,5,20,,0,30,,1,0,0x00008100,63,2,2,4,80,1,12,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; } },{},{} 1828,Monk_Knuckle,Monk Knuckle,5,20,,0,150,,1,0,0x00008100,63,2,2,4,0,0,12,{ bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25; },{},{} 1829,Fist_C,Fist,5,0,,0,150,,1,0,0x00008100,63,2,2,3,1,0,12,{ bonus2 bAddSize,Size_All,40; },{},{} 1830,Sura_Rampage,Sura Rampage,5,20,,500,142,,1,1,0x00008100,63,2,2,3,102,1,12,{ bonus2 bSkillAtk,"SR_EARTHSHAKER",20; bonus2 bSkillAtk,"SR_SKYNETBLOW",20; bonus bUseSPrate,5; .@r = getrefine(); if(.@r>6) { bonus bUseSPrate,-1*(.@r-6); } },{},{} @@ -1165,10 +1165,11 @@ 1832,Velum_Claw,Vellum Claw,5,20,,650,160,,1,0,0x00008100,63,2,2,4,95,1,12,{ bonus2 bAddRace,RC_Player,100; .@r = getrefine(); if(.@r>7) { bonus2 bAddRace,RC_Player,20; } if(.@r>9) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bAutoSpellOnSkill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,10000; bonus2 bHPLossRate,500,3000; } },{},{} 1833,Claw_Of_Flash,Claw of Flash,5,60000,,400,140,,1,2,0x00008100,63,2,2,4,105,1,12,{ bonus bAspd,1; bonus bAspdRate,getrefine(); bonus2 bAddSize,Size_Medium,getrefine(); },{},{} 1834,TE_Woe_Fist,TE Woe Fist,5,0,,0,150,,1,0,0x00008100,63,2,2,3,40,1,12,{ bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; },{},{} +1835,Spartacus,Spartacus,5,0,,600,100,,1,2,0x00008100,63,2,2,4,50,1,12,{ bonus bUnbreakableWeapon; .@r = getrefine(); bonus2 bAddClass,Class_All,.@r; if(.@r>9) { bonus bNoSizeFix; } },{},{} 1836,Thanos_Knuckle,Thanatos Knuckle,5,10,,600,160:100,,1,1,0x00008000,56,2,2,4,120,1,12,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 1837,Iron_nail,Iron Nail,5,10,,1500,100,,,1,0x00008100,63,2,2,3,50,1,12,{ bonus bAspdRate,-5; bonus bAspdRate,((getrefine()+1)/2); },{},{} -1838,Half_BF_Knuckle1,Half BF Knuckle1,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,1; },{},{} -1839,Crimson_Knuckles,Crimson Knuckles,5,20,,1000,100,,1,2,0x00008100,63,2,2,3,70,1,12,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1; },{},{} +1838,Half_BF_Knuckle1,Half BF Knuckle1,5,20,,0,30,,1,0,0x00008100,63,2,2,3,80,1,12,{ bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon; },{},{} +1839,Crimson_Knuckles,Crimson Knuckles,5,20,,1000,100,,1,2,0x00008100,63,2,2,3,70,1,12,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon; },{},{} 1840,Requiem_Knuckle,Requiem Knuckle,5,20,,500,150:100,,1,0,0x00008100,63,2,2,4,100,1,12,{ .@r = getrefine(); .@b = 40; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b; },{},{} 1841,Claw_Of_Flash_,Claw of Flash,5,60000,,400,140,,1,3,0x00008100,63,2,2,4,105,1,12,{ bonus bAspd,1; bonus bAspdRate,getrefine(); bonus2 bAddSize,Size_Medium,getrefine(); },{},{} //=================================================================== @@ -1187,7 +1188,7 @@ 1910,Harp_,Harp,5,62000,,900,114,,1,2,0x00080000,63,1,2,3,27,1,13,{ bonus bInt,2; },{},{} 1911,Guh_Moon_Goh,Gumoongoh,5,54000,,1300,126,,1,1,0x00080000,63,1,2,3,27,1,13,{},{},{} 1912,Guh_Moon_Goh_,Gumoongoh,5,54000,,1300,126,,1,2,0x00080000,63,1,2,3,27,1,13,{},{},{} -1913,Electronic_Guitar,Electric Guitar,5,20,,1800,110,,1,0,0x00080000,63,1,2,4,70,1,13,{ skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; bonus bUnbreakableWeapon,1; },{},{} +1913,Electronic_Guitar,Electric Guitar,5,20,,1800,110,,1,0,0x00080000,63,1,2,4,70,1,13,{ skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; },{},{} 1914,Guitar_Of_Passion,Burning Passion Guitar,5,20,,900,110,,1,0,0x00080000,63,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Fire; },{},{} 1915,Guitar_Of_Blue_Solo,Loner's Guitar,5,20,,900,110,,1,0,0x00080000,63,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Water; },{},{} 1916,Guitar_Of_Vast_Land,Green Acre Guitar,5,20,,900,110,,1,0,0x00080000,63,1,2,3,27,1,13,{ bonus bAtkEle,Ele_Earth; },{},{} @@ -1197,11 +1198,11 @@ 1920,Berserk_Guitar,Berserk Guitar,5,20,,1800,10,,1,0,0x00080000,18,1,2,4,70,1,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{} 1921,Guh_Moon_Gom,Gun Moon Gom,5,20,,0,120,,1,0,0x00080000,63,1,2,1,0,0,13,{ bonus2 bAddClass,Class_All,50; },{},{} 1922,Oriental_Lute_,Oriental Lute,5,20,,1200,150,,1,2,0x00080000,63,1,2,4,65,1,13,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10; },{},{} -1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,1; },{},{} +1923,BF_Instrument1,Valorous Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1924,BF_Instrument2,Brave Battlefield Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,3,80,1,13,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon; },{},{} 1925,Cello,Cello,5,20,,700,110,,1,3,0x00080000,18,1,2,3,70,1,13,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{} 1926,Harp_Of_Nepenthes,Harp of Nepenthes,5,20,,1000,120,,1,2,0x00080000,18,1,2,4,60,1,13,{ bonus bInt,2; bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,(getrefine()>=9?2000:1000); },{},{} -1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} +1927,Krieger_Instrument1,Glorious Guitar,5,20,,0,50,,1,0,0x00080000,63,1,2,4,80,1,13,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} 1928,Berserk_Guitar_I,Spirited Guitar,5,0,,0,40,,1,0,0x00080000,18,1,2,4,0,0,13,{ bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex); },{},{} 1929,Guitar_C,Guitar,5,0,,0,177,,1,0,0x00080000,63,1,2,3,1,0,13,{ bonus2 bAddSize,Size_All,40; },{},{} 1930,Green_Whistle,Green Whistle,5,20,,800,170:50,,1,1,0x00080000,63,1,2,3,102,1,13,{ .@r = getrefine(); if(.@r>5) { bonus2 bSkillUseSP,"MI_RUSH_WINDMILL",(.@r-5)*4; bonus2 bSkillUseSP,"WM_LULLABY_DEEPSLEEP",(.@r-5)*4; } bonus2 bSkillVariableCast,"MI_RUSH_WINDMILL",-2000; bonus2 bSkillVariableCast,"WM_LULLABY_DEEPSLEEP",-2000; },{},{} @@ -1216,7 +1217,7 @@ 1939,Crimson_Violin,Crimson Violin,5,20,,800,80,,2,2,0x00080000,63,1,2,3,70,1,13,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} 1940,Trumpet_Shell,Trumpet Shell,5,0,,600,125,,1,1,0x00080000,56,1,2,4,130,1,13,{ .@r = getrefine(); bonus bDex,.@r; bonus bInt,.@r; .@per = ((.@r > 9) ? 40 : ((.@r > 7) ? 20 : ((.@r > 5) ? 10 : 0))); bonus2 bSkillAtk,"WM_REVERBERATION",.@per; bonus2 bVariableCastrate,"WM_REVERBERATION",-.@per; },{},{} 1941,Unity_Violin,Unity Violin,5,20,,400,76,,2,1,0x00080000,63,1,2,3,1,1,13,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} -1942,Requiem_Violin,Requiem Violin,5,20,,500,160:120,,1,,0x00080000,63,1,2,4,100,1,13,{ .@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+20; } if(.@r>=7) bonus2 bSkillAtk,"CG_ARROWVULCAN",200; bonus2 bAddRace2,RC2_BioLab,.@b; },{},{} +1942,Requiem_Violin,Requiem Violin,5,20,,500,160:120,,1,,0x00080000,63,1,2,4,100,1,13,{ .@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+20; } if(.@r>=7) bonus2 bSkillAtk,"CG_ARROWVULCAN",200; bonus2 bAddRace2,RC2_BioLab,.@b; },{},{} //=================================================================== // Whips //=================================================================== @@ -1247,11 +1248,11 @@ 1974,Carrot_Whip,Carrot Whip,5,20,,1300,185,,2,0,0x00080000,18,0,2,4,70,1,14,{ .@r = getrefine(); if(.@r>0) bonus3 bAutoSpell,"AL_INCAGI",min(.@r,10),10; },{},{} 1975,Queen_Is_Whip,Queen Is Whip,5,20,,0,120,,2,0,0x00080000,63,0,2,1,0,0,14,{ bonus2 bAddClass,Class_All,50; },{},{} 1976,Queen's_Whip_,Queen's Whip,5,20,,1100,150,,2,2,0x00080000,63,0,2,4,65,1,14,{ bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10; },{},{} -1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,1; },{},{} +1977,BF_Whip1,Valorous Battle Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +1978,BF_Whip2,Brave Battle Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,3,80,1,14,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon; },{},{} 1979,Stem_Of_Nepenthes,Stem of Nepenthes,5,20,,1000,120,,2,2,0x00080000,18,0,2,4,60,1,14,{ bonus bInt,2; bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,(getrefine()>=9?2000:1000); },{},{} 1980,Whip_Of_Balance,Whip of Balance,5,20,,700,110,,2,3,0x00080000,18,0,2,3,70,1,14,{ bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3; },{},{} -1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} +1981,Krieger_Whip1,Glorious Lariat,5,20,,0,50,,2,0,0x00080000,63,0,2,4,80,1,14,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100; },{},{} 1982,Phenomena_Whip,Phenomena Whip,5,20,,0,160,,2,0,0x00080000,63,0,2,4,0,0,14,{ bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25; },{},{} 1983,Rante_C,Rante Whip,5,0,,0,170,,2,0,0x00080000,63,0,2,3,1,0,14,{ bonus2 bAddSize,Size_All,40; },{},{} 1984,Stem_Whip,Stem Whip,5,20,,800,170:50,,1,1,0x00080000,63,0,2,3,102,1,14,{ .@r = getrefine(); if(.@r>5) { bonus2 bSkillUseSP,"WA_SWING_DANCE",(.@r-5)*4; bonus2 bSkillUseSP,"WM_LULLABY_DEEPSLEEP",(.@r-5)*4; } bonus2 bSkillVariableCast,"WA_SWING_DANCE",-2000; bonus2 bSkillVariableCast,"WM_LULLABY_DEEPSLEEP",-2000; },{},{} @@ -1272,7 +1273,7 @@ //=================================================================== 2000,Destruction_Rod,Staff of Destruction,5,20,,2500,130:280,,1,1,0x00000200,18,2,34,4,80,1,23,{ .@r = getrefine; bonus bMatkRate,.@r/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(.@r*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20); bonus2 bFixedCastrate,"HW_MAGICPOWER",-50; },{},{} 2001,Divine_Cross,Divine Cross,5,20,,1500,120:210,,1,0,0x00008100,63,2,34,4,70,1,23,{ bonus bAtkEle,Ele_Holy; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{} -2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70:210,,1,0,0x00018314,63,2,34,4,80,1,23,{ .@r = getrefine(); bonus bMatkRate,.@r; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; if(.@r>5) { bonus2 bMagicAddRace,RC_DemiHuman,(min(14,.@r)-5)*2; bonus2 bMagicAddRace,RC_Player,(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(min(14,.@r)-5)*2; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{} +2002,Krieger_Twohand_Staff1,Glorious Destruction Staff,5,20,,0,70:210,,1,0,0x00018314,63,2,34,4,80,1,23,{ .@r = getrefine(); bonus bMatkRate,.@r; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(.@r>5) { bonus2 bMagicAddRace,RC_DemiHuman,(min(14,.@r)-5)*2; bonus2 bMagicAddRace,RC_Player,(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(min(14,.@r)-5)*2; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; } },{},{} 2003,Destruction_Rod_M,Staff of Destruction,5,20,,2500,130:280,,1,1,0x00000200,18,2,34,4,80,1,23,{ .@r = getrefine(); bonus bMatkRate,.@r/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(.@r*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20); bonus2 bVariableCastrate,"HW_MAGICPOWER",-50; },{},{} 2004,Kronos,Kronos,5,20,,1000,30:240,,1,0,0x00010204,18,2,34,4,50,1,23,{ .@r = getrefine(); bonus bInt,3+(.@r/2); bonus bMaxHP,300+(50*.@r/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }"; },{},{} 2005,Dea_Staff,Dea Staff,5,20,,1000,30:220,,1,1,0x00008110,18,2,34,3,50,1,23,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }"; },{},{} @@ -1286,18 +1287,18 @@ 2013,Crimson_Staff2,Empowered Crimson Staff,5,20,,900,30:270,,1,1,0x00000200,63,2,34,4,130,1,23,{ bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30; },{},{} 2014,Forest_Staff2,Empowered Forest Staff,5,20,,900,30:270,,1,1,0x00000200,63,2,34,4,130,1,23,{ bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30; },{},{} 2015,Upg_Staff,Upg Staff,5,20,,1000,50:70,,1,1,0x00818314,63,2,34,3,1,1,23,{ .@r = getrefine(); bonus bMatk,(.@r*10); bonus bHealPower,.@r; if(BaseJob==Job_Wizard) bonus bMatk,30; else if(BaseJob==Job_Sage) bonus bMatk,20; if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*10); },{},{} -2016,Velum_Arc_Wand,Vellum Arc Wand,5,20,,800,110:220,,1,0,0x00818314,63,2,34,4,95,1,23,{ bonus bUnbreakableWeapon,1; bonus2 bMagicAddRace,RC_Player,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; .@r = getrefine(); if(.@r>5) { bonus2 bMagicAddRace,RC_Player,15; } if(.@r>8) { bonus bVariableCastrate,-50; bonus bFixedCast,-200; } },{},{} -2017,Divine_Cross_,Divine Cross,5,20,,1500,120:210,,1,1,0x00008100,63,2,34,4,70,1,23,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy; bonus bDex,4; },{},{} +2016,Velum_Arc_Wand,Vellum Arc Wand,5,20,,800,110:220,,1,0,0x00818314,63,2,34,4,95,1,23,{ bonus bUnbreakableWeapon; bonus2 bMagicAddRace,RC_Player,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; .@r = getrefine(); if(.@r>5) { bonus2 bMagicAddRace,RC_Player,15; } if(.@r>8) { bonus bVariableCastrate,-50; bonus bFixedCast,-200; } },{},{} +2017,Divine_Cross_,Divine Cross,5,20,,1500,120:210,,1,1,0x00008100,63,2,34,4,70,1,23,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15; },{},{} 2018,Metal_Staff,Metal Staff,5,20,,0,50:70,,1,1,0x00818315,63,2,34,3,1,1,23,{ if(BaseJob==Job_Wizard) bonus bMatk,15; else if(BaseJob==Job_Sage) bonus bMatk,10; bonus bMatk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bMatk,((.@i-2)*5); },{},{} 2019,TE_Woe_Two_Hand_Staff,TE Woe Two Hand Staff,5,0,,0,50:130,,1,0,0x00818315,63,2,34,3,40,1,23,{ bonus2 bMagicAddRace,RC_Player,20; bonus3 bAddEff,Eff_Stun,1000,ATF_MAGIC; bonus bHPRecovRate,5; bonus bSPRecovRate,5; },{},{} -2020,Jormungand,Jormungand,5,10,,3000,200:280,,,0,0x810200,63,2,34,4,1,0,23,{ bonus bInt,20; bonus bUnbreakableWeapon,1; },{},{} -2021,Ganbantein,Ganbantein,5,0,,2000,100:320,,1,0,0x00000200,56,2,2,4,100,1,10,{ bonus bInt,25; bonus bDex,25; bonus3 bAddEff,Eff_Poison,1000,ATF_MAGIC; bonus3 bAutoSpell,"AB_SILENTIUM",1,100; bonus bUnbreakableWeapon,1; },{},{} +2020,Jormungand,Jormungand,5,10,,3000,200:280,,,0,0x810200,63,2,34,4,1,0,23,{ bonus bInt,20; bonus bUnbreakableWeapon; },{},{} +2021,Ganbantein,Ganbantein,5,0,,2000,100:320,,1,0,0x00000200,56,2,2,4,100,1,10,{ bonus bInt,25; bonus bDex,25; bonus3 bAddEff,Eff_Poison,1000,ATF_MAGIC; bonus3 bAutoSpell,"AB_SILENTIUM",1,100; bonus bUnbreakableWeapon; },{},{} 2022,Staff_Of_Geffen,Staff of Geffen,5,20,,1000,100:300,,1,1,0x00000200,18,2,34,1,150,1,23,{ bonus bInt,20; },{},{} 2023,Thanos_Rod,Thanatos Two-Handed Staff,5,10,,1400,120:250,,1,1,0x00018314,56,2,34,4,120,1,23,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus bHealPower,18; bonus bMagicHPGainValue,500; bonus bMagicSPGainValue,50; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 2024,Infinity_Two-handed_Stick,Infinity Two-handed Stick,5,10,,500,30:170,,,1,0x810200,56,2,34,4,100,1,23,{},{},{} 2025,Crimson_Two-Handed_Staff,Crimson Two-Handed Staff,5,20,,1000,100,,1,2,0x800200,63,2,34,3,70,1,23,{ .@r = getrefine(); bonus bInt,5; bonus bMatk,150+((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} -2026,Staff_of_Vicious_Mind,Staff of Vicious Mind,5,20,,1000,100:200,,1,1,0x00810204,63,2,34,4,160,1,23,{ bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,6; bonus bUnbreakableWeapon,1; },{},{} -2027,Sunflower_Kid,Sunflower Kid,5,10,,1500,150:320,,,2,0x00000200,56,2,34,4,170,1,23,{ bonus bInt,5; .@r = getrefine(); bonus bMatkRate,(.@r/2); bonus bDelayrate,(.@r*-1); bonus bUnbreakableWeapon,1; },{},{} +2026,Staff_of_Vicious_Mind,Staff of Vicious Mind,5,20,,1000,100:200,,1,1,0x00810204,63,2,34,4,160,1,23,{ bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,6; bonus bUnbreakableWeapon; },{},{} +2027,Sunflower_Kid,Sunflower Kid,5,10,,1500,150:320,,,2,0x00000200,56,2,34,4,170,1,23,{ bonus bInt,5; .@r = getrefine(); bonus bMatkRate,(.@r/2); bonus bDelayrate,(.@r*-1); bonus bUnbreakableWeapon; },{},{} 2030,Unity_Two-Handed_Staff,Unity Two-Handed Staff,5,20,,500,95:135,,1,1,0x800200,63,2,34,3,1,1,23,{ bonus bMatk,pow(getrefine(),2)*125/100; },{},{} 2032,Requiem_Wizardry_Staff,Requiem Wizardry Staff,5,20,,500,100:230,,1,,0xFFFFFFFF,63,2,2,4,100,1,10,{ .@r = getrefine(); .@b = 40; .@c = 5; if(.@r>=5){ .@b += (.@r-5)*15+20; .@c += .@r-5; } bonus2 bMagicAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c; bonus2 bIgnoreMdefRace2Rate,RC2_BioLab,(.@r-5)*10; },{},{} //=================================================================== @@ -1313,7 +1314,7 @@ 2108,Mirror_Shield_,Mirror Shield,4,60000,,1000,,45,,1,0x00404082,63,2,32,,0,1,4,{ bonus bMdef,5; },{},{} 2109,Memorize_Book,Memory Book,4,20,,1000,,25,,0,0x00810204,63,2,32,,0,1,5,{ bonus bInt,1; bonus bMdef,2; },{},{} 2110,Holy_Guard,Holy Guard,4,85000,,1400,,110,,0,0x00004000,63,2,32,,68,0,4,{ bonus bVit,2; bonus bMdef,2; },{},{} -2111,Herald_Of_GOD,Sacred Mission,4,128000,,1600,,120,,0,0x00004000,63,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,1; },{},{} +2111,Herald_Of_GOD,Sacred Mission,4,128000,,1600,,120,,0,0x00004000,63,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield; },{},{} 2112,Novice_Guard,Novice Guard,4,1,,1,,20,,0,0x00000001,63,2,32,,0,0,1,{},{},{} 2113,Novice_Shield,Novice Shield,4,5000,,1000,,20,,1,0x00000001,63,2,32,,40,1,3,{ bonus2 bSubEle,Ele_All,20; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Dark,-20; },{},{} 2114,Stone_Buckler,Stone Buckler,4,30000,,1500,,45,,1,0xFFFFFFFE,63,2,32,,65,1,2,{ bonus2 bSubSize,Size_Large,5; },{},{} @@ -1327,16 +1328,16 @@ 2122,Platinum_Shield,Platinum Shield,4,20,,1200,,95,,0,0xFFFFFFFE,18,2,32,,68,1,4,{ bonus bMdef,5; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; bonus2 bSubRace,RC_Undead,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0; },{},{} 2123,Orleans_Server,Orleans's Server,4,20,,1000,,75,,1,0xFFFFFFFE,18,2,32,,55,1,4,{ bonus bMdef,2; bonus bMagicDamageReturn,5; },{},{} 2124,Thorny_Buckler,Thorny Buckler,4,20,,1000,,85,,1,0xFFFFFFFE,18,2,32,,55,1,2,{ bonus bMdef,2; },{},{} -2125,Strong_Shield,Strong Shield,4,20,,2500,,90,,1,0xFFFFFFFE,18,2,32,,75,1,4,{ bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} +2125,Strong_Shield,Strong Shield,4,20,,2500,,90,,1,0xFFFFFFFE,18,2,32,,75,1,4,{ bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} 2126,Guyak_Shield,Guyak Shield,4,20,,700,,3,,0,0xFFFFFFFE,63,2,32,,1,1,2,{ bonus bMdef,2; bonus bMagicDamageReturn,2; autobonus2 "{ bonus bShortWeaponDamageReturn,5; }",20,1000,BF_WEAPON,"{ specialeffect2 EF_REFLECTSHIELD; }"; },{},{} 2127,Secular_Mission,Secular Mission,4,20,,0,,10,,0,0xFFFFFFFF,63,2,32,,0,0,4,{ bonus2 bSubClass,Class_All,25; },{},{} -2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,120,,1,0x00004000,63,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,1; },{},{} +2128,Herald_Of_GOD_,Sacred Mission,4,128000,,1600,,120,,1,0x00004000,63,2,32,,83,1,4,{ bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield; },{},{} 2129,Exorcism_Bible,Exorcism Bible,4,20,,600,,80,,0,0x00008100,63,2,32,,50,1,5,{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1; },{},{} 2130,Cross_Shield,Cross Shield,4,20,,2000,,130,,1,0x00004000,63,2,32,,80,1,4,{ bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10; },{},{} 2131,Magic_Study_Vol1,Magic Bible Vol1,4,20,,1000,,18,,1,0x00810204,18,2,32,,70,1,5,{ bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000; },{},{} 2132,Shelter_Resistance,Shell Of Resistance,4,20,,0,,9,,0,0xFFFFFFFF,18,2,32,,0,0,2,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; bonus bShortWeaponDamageReturn,1; },{},{} 2133,Tournament_Shield,Tournament Shield,4,20,,1000,,105,,1,0x00004082,18,2,32,,50,1,4,{ bonus2 bAddClass,Class_All,1; if( Class == Job_Lord_Knight ) bonus bAspdRate,-5; },{},{} -2134,Shield_Of_Naga,Shield of Naga,4,20,,500,,35,,1,0x00CFFF80,18,2,32,,70,1,2,{ bonus bMdef,3; autobonus2 "{ bonus bShortWeaponDamageReturn,(getrefine()*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; },{},{} +2134,Shield_Of_Naga,Shield of Naga,4,20,,500,,35,,1,0x00CFFF80,18,2,32,,70,1,2,{ .@r = getrefine(); bonus bMdef,3; if(.@r<11) { autobonus2 "{ bonus bShortWeaponDamageReturn,(.@r*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; } else { autobonus2 "{ bonus bShortWeaponDamageReturn,(.@r*3); }",10,5000+(.@r/2*1000),BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; } },{},{} 2135,Shadow_Guard,Shadow Guard,4,20,,800,,52,,1,0x00020000,18,2,32,,70,1,2,{},{},{} 2136,Cracked_Buckler,Cracked Buckler,4,0,,0,,5,,0,0xFFFFFFFF,63,2,32,,0,0,2,{ bonus bAgi,2; bonus2 bSubEle,Ele_Neutral,10; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,10; bonus bMdef,1; },{},{} 2137,Valkyrja's_Shield_C,Neo Valkyrja's Shield,4,0,,0,,5,,0,0xFFFFFFFE,18,2,32,,95,0,4,{ bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Undead,20; bonus bMdef,5; },{},{} @@ -1383,8 +1384,8 @@ 2178,TE_Woe_Buckler,TE Woe Buckler,4,0,,0,,15,,0,0xFFFFFFFF,63,2,32,,40,1,2,{ bonus bMdef,15; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Player,15; },{},{} 2179,TE_Woe_Shield,TE Woe Shield,4,0,,0,,25,,0,0x000444A2,63,2,32,,40,1,3,{ bonus bMdef,5; bonus bMaxHP,200; bonus2 bSubRace,RC_Player,20; },{},{} 2180,TE_Woe_Magic_Guard,TE Woe Magic Guard,4,0,,0,,5,,0,0x00818315,63,2,32,,40,1,1,{ bonus bMdef,25; bonus bMaxSP,200; bonus2 bSubRace,RC_Player,10; },{},{} -2181,Hervor,Hervor,4,10,,1500,,100,,0,0xFFFFFFFF,63,2,32,,1,,2,{ bonus bMdef,5; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield,1; },{},{} -2182,Hervor_Alvitr,Hervor Alvitr,4,0,,3000,,150,,0,0x000FDF80,56,2,32,,100,0,2,{ bonus bMdef,10; bonus bVit,20; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield,1; 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; }",10,60000,BF_SHORT; },{},{} +2181,Hervor,Hervor,4,10,,1500,,100,,0,0xFFFFFFFF,63,2,32,,1,,2,{ bonus bMdef,5; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield; },{},{} +2182,Hervor_Alvitr,Hervor Alvitr,4,0,,3000,,150,,0,0x000FDF80,56,2,32,,100,0,2,{ bonus bMdef,10; bonus bVit,20; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield; 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; }",10,60000,BF_SHORT; },{},{} 2183,Impr_Angel's_Safeguard,Advanced Angelic Guard,4,10000,,400,,30,,1,0x00000001,63,2,32,,99,1,1,{ bonus2 bSubRace,RC_Demon,5; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5; },{},{} 2185,Magic_Reflector,Magic Reflect,4,10,,1000,,50,,1,0xFFFFFFFF,63,2,32,,99,1,3,{ bonus bMdef,10; bonus bMagicDamageReturn,3+((getrefine()>=9) ? 3 : 0); },{},{} 2186,Encyclopedia_Revision,Great Encyclopedia Revision,4,10,,200,0:5,50,,1,0x00810100,63,2,32,,99,1,4,{ bonus bInt,3; bonus bDex,2; .@r = getrefine(); bonus bCritical,3+((.@r >= 7) ? 2 : 0); if(.@r >= 9) bonus bMatk,5; },{},{} @@ -1396,7 +1397,7 @@ 2196,White_Gold_Shield,White Gold Shield,4,0,,1800,,140,,1,0xFFFFFFFF,63,2,32,,,1,4,{ autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */ },{},{} 2198,Lapine_Shield,Lapine Shield,4,0,,1000,,25,,1,0xFFFFFFFF,63,2,32,,100,1,3,{ bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; } },{},{} // GM Shield -2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,10000,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback,0; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision,1; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; } +2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,10000,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; } //=================================================================== // Headgears //=================================================================== @@ -1445,7 +1446,7 @@ 2243,Spinning_Eyes,Geek Glasses,4,20000,,100,,1,,0,0xFFFFFFFF,63,2,512,,0,0,27,{ bonus2 bResEff,Eff_Blind,1500; },{},{} 2244,Big_Sis'_Ribbon,Big Ribbon,4,15000,,200,,3,,0,0xFFFFFFFE,63,2,256,,0,1,28,{ bonus bMdef,3; },{},{} 2245,Sweet_Gents,Sweet Gent,4,15000,,400,,5,,0,0xFFFFFFFE,63,2,256,,0,1,29,{},{},{} -2246,Golden_Gear,Golden Gear,4,20,,900,,5,,0,0xFFFFFFFE,63,2,256,,40,1,30,{ bonus bUnbreakableHelm,1; },{},{} +2246,Golden_Gear,Golden Gear,4,20,,900,,5,,0,0xFFFFFFFE,63,2,256,,40,1,30,{ bonus bUnbreakableHelm; },{},{} 2247,Oldman's_Romance,Romantic Gent,4,15000,,400,,5,,0,0xFFFFFFFE,63,2,256,,0,1,31,{},{},{} 2248,Western_Grace,Western Grace,4,15000,,400,,5,,0,0xFFFFFFFE,63,2,256,,0,1,32,{},{},{} 2249,Coronet,Coronet,4,20,,300,,5,,0,0xFFFFFFFE,63,2,256,,0,1,33,{ bonus bInt,1; },{},{} @@ -1558,7 +1559,7 @@ 2354,Goibne's_Armor,Goibne's Armor,4,50000,,3500,,58,,0,0xFFFFFFFE,63,2,16,,54,1,0,{ bonus bVit,2; bonus bMaxHPrate,10; },{},{} 2355,Angel's_Protection,Angelic Protection,4,10000,,600,,25,,1,0x00000001,63,2,16,,40,1,0,{ bonus bMdef,20; },{},{} 2356,Vestment_Of_Grace,Blessed Holy Robe,4,20,,2500,,45,,1,0x00008100,63,2,16,,70,1,0,{ bonus bMdef,5; bonus2 bResEff,Eff_Blind,8000; },{},{} -2357,Valkyrie_Armor,Valkyrian Armor,4,0,,2800,,55,,1,0xFFFFFFFE,18,2,16,,1,1,0,{ bonus bAllStats,1; bonus bUnbreakableArmor,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{} +2357,Valkyrie_Armor,Valkyrian Armor,4,0,,2800,,55,,1,0xFFFFFFFE,18,2,16,,1,1,0,{ bonus bAllStats,1; bonus bUnbreakableArmor; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{} 2358,Dress_Of_Angel,Angel's Dress,4,20,,1000,,5,,0,0xFFFFFFFF,63,2,16,,0,0,0,{ bonus bLuk,4; },{},{} 2359,Ninja_Suit_,Ninja Suit,4,20,,1500,,58,,1,0x02021040,63,2,16,,50,1,0,{ bonus bAgi,1; bonus bMdef,3; },{},{} 2360,Robe_Of_Casting_,Robe of Cast,4,124800,,1100,,40,,1,0x00810200,63,2,16,,75,1,0,{ bonus bVariableCastrate,-3; bonus bMdef,4; },{},{} @@ -1566,11 +1567,11 @@ 2362,Red_Aodai,Red Robe,4,20,,500,,0,,0,0xFFFFFFFE,63,2,16,,1,1,0,{ bonus bAllStats,3; bonus bMdef,5; },{},{} 2363,White_Aodai,White Robe,4,20,,500,,0,,0,0x00000001,63,2,16,,1,1,0,{ bonus bAllStats,3; bonus bMdef,5; },{},{} 2364,Meteo_Plate_Armor,Meteo Plate Armor,4,20,,3000,,85,,1,0x000444A2,18,2,16,,55,1,0,{ bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Freeze,3000; },{},{} -2365,Orleans_Gown,Orleans's Gown,4,20,,300,,15,,1,0xFFFFFFFE,18,2,16,,55,1,0,{ bonus bVariableCastrate,15; bonus bNoCastCancel,0; },{},{} +2365,Orleans_Gown,Orleans's Gown,4,20,,300,,15,,1,0xFFFFFFFE,18,2,16,,55,1,0,{ bonus bVariableCastrate,15; bonus bNoCastCancel; },{},{} 2366,Divine_Cloth,Divine Cloth,4,20,,1500,,50,,1,0xFFFFFFFE,18,2,16,,55,1,0,{ bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500; },{},{} 2367,Sniping_Suit,Sniping Suit,4,20,,750,,42,,1,0x00000800,18,2,16,,50,1,0,{ bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23; },{},{} 2368,Golden_Armor,Golden Armor,4,20,,2000,,4,,0,0xFFFFFFFF,63,2,16,,0,0,0,{ bonus bMdef,4; },{},{} -2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,63,2,16,,0,0,0,{ bonus bUnbreakableArmor,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} +2369,Freyja_Overcoat,Freyja Overcoat,4,0,,500,,12,,0,0xFFFFFFFE,63,2,16,,0,0,0,{ bonus bUnbreakableArmor; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} 2370,Used_Mage_Coat,Used Mage Coat,4,0,,0,,15,,0,0xFFFFFFFF,63,2,16,,0,0,0,{ bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAgi,1; },{},{} 2371,G_Strings_,Pantie,4,1000,,100,,22,,1,0xFFFFFFFF,63,2,16,,0,1,0,{},{},{} 2372,Mage_Coat_,Mage Coat,4,20,,600,,40,,1,0x00810204,63,2,16,,50,1,0,{ bonus bMdef,5; bonus bInt,1; },{},{} @@ -1584,7 +1585,7 @@ 2380,Medic_Robe,Medic's Robe,4,10,,0,,25,,1,0x00008110,63,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 2381,Elite_Archer_Suit,Elite Archer Suit,4,10,,0,,35,,1,0x00080808,63,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 2382,Elite_Shooter_Suit,Elite Shooter Suit,4,10,,0,,25,,1,0x41000000,63,2,16,,80,1,0,{ bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} -2383,Brynhild,Brynhild,4,20,,400,,120,,0,0xFFFFFFFF,63,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,1; bonus bNoKnockback,0; },{},{} +2383,Brynhild,Brynhild,4,20,,400,,120,,0,0xFFFFFFFF,63,2,16,,94,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor; bonus bNoKnockback; },{},{} 2384,Spritual_Tunic,Spiritual Tunic,4,20,,0,,10,,0,0xFFFFFFFF,63,2,16,,0,0,0,{ bonus bMdef,5; bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; },{},{} 2385,Recuperative_Armor,Recuperative Armor,4,20,,0,,12,,0,0xFFFFFFFF,63,2,16,,0,0,0,{ bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6; },{},{ heal 0,-100; } 2386,Chameleon_Armor,Chameleon Armor,4,20,,1700,,55,,0,0x00CFFF80,18,2,16,,70,1,0,{ bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3; },{},{} @@ -1624,7 +1625,7 @@ 2418,Vidar's_Boots,Vidar's Boots,4,30000,,650,,13,,0,0xFFFFFFFE,63,2,64,,65,1,0,{ bonus bMaxHPrate,9; bonus bMaxSPrate,9; },{},{} 2419,Goibne's_Combat_Boots,Goibne's Greaves,4,30000,,700,,13,,0,0xFFFFFFFE,63,2,64,,54,1,0,{ bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; },{},{} 2420,Angel's_Arrival,Angel's Reincarnation,4,10000,,300,,8,,1,0x00000001,63,2,64,,25,1,0,{ bonus bMaxHP,100; },{},{} -2421,Valkyrie_Shoes,Valkyrian Shoes,4,0,,500,,13,,1,0xFFFFFFFE,18,2,64,,1,1,0,{ bonus bUnbreakableShoes,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2); },{},{} +2421,Valkyrie_Shoes,Valkyrian Shoes,4,0,,500,,13,,1,0xFFFFFFFE,18,2,64,,1,1,0,{ bonus bUnbreakableShoes; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2); },{},{} 2422,High_Fashion_Sandals,High Fashion Sandals,4,24000,,200,,7,,1,0x00818314,63,2,64,,40,1,0,{ bonus bMdef,10; },{},{} 2423,Variant_Shoes,Variant Shoes,4,20,,500,,13,,0,0xFFFFFFFE,18,2,64,,85,1,0,{ .@r = getrefine(); bonus bMaxHPrate,20-.@r; bonus bMaxSPrate,20-.@r; bonus bDef,.@r/2; },{},{} 2424,Tidal_Shoes,Tidal Shoes,4,20,,300,,13,,1,0xFFFFFFFE,18,2,64,,55,1,0,{ bonus2 bSubEle,Ele_Water,5; },{},{} @@ -1712,7 +1713,7 @@ 2505,Manteau,Manteau,4,32000,,600,,13,,0,0x006654E2,63,2,4,,0,1,0,{},{},{} 2506,Manteau_,Manteau,4,32000,,600,,13,,1,0x006654E2,63,2,4,,0,1,0,{},{},{} 2507,Cape_Of_Ancient_Lord,Ancient Cape,4,82000,,600,,9,,0,0xFFFFFFFE,63,2,4,,40,1,0,{ bonus bAgi,1; },{},{} -2508,Ragamuffin_Cape,Ragamuffin Manteau,4,56000,,500,,4,,0,0xFFFFFFFE,63,2,4,,0,1,0,{ bonus bUnbreakableGarment,1; bonus bMdef,10; },{},{} +2508,Ragamuffin_Cape,Ragamuffin Manteau,4,56000,,500,,4,,0,0xFFFFFFFE,63,2,4,,0,1,0,{ bonus bUnbreakableGarment; bonus bMdef,10; },{},{} 2509,Clack_Of_Servival,Survivor's Manteau,4,20000,,550,,10,,0,0x00810204,63,2,4,,75,1,0,{ bonus bMdef,5; bonus bVit,10; },{},{} 2510,Novice_Hood,Somber Novice Hood,4,1,,1,,4,,0,0x00000001,63,2,4,,0,0,0,{ bonus2 bSubEle,Ele_Neutral,20; },{},{} 2511,Skeleton's_Cape,Skeleton Manteau,4,5000,,700,,1,,0,0xFFFFFFFE,63,2,4,,75,1,0,{ bonus bStr,2; bonus bInt,-3; bonus bDex,2; bonus bVit,-3; bonus bLuk,2; bonus bAgi,-4; },{},{} @@ -1728,7 +1729,7 @@ 2521,Angel's_Warmth,Angelic Cardigan,4,10000,,400,,5,,1,0x00000001,63,2,4,,20,1,0,{ bonus bHPrecovRate,5; },{},{} 2522,Undershirt,Undershirt,4,20000,,150,,5,,0,0xFFFFFFFF,63,2,4,,0,1,0,{ bonus bMdef,1; },{},{} 2523,Undershirt_,Undershirt,4,20000,,150,,5,,1,0xFFFFFFFF,63,2,4,,0,1,0,{ bonus bMdef,1; },{},{} -2524,Valkyrie_Manteau,Valkyrian Manteau,4,0,,500,,10,,1,0xFFFFFFFE,18,2,4,,0,1,0,{ bonus bUnbreakableGarment,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2); },{},{} +2524,Valkyrie_Manteau,Valkyrian Manteau,4,0,,500,,10,,1,0xFFFFFFFE,18,2,4,,0,1,0,{ bonus bUnbreakableGarment; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2); },{},{} 2525,Cape_Of_Ancient_Lord_,Ancient Cape,4,82000,,600,,9,,1,0xFFFFFFFE,63,2,4,,40,1,0,{ bonus bAgi,1; },{},{} 2526,Dragon_Scale_Coat,Coat of Dragon Scale,4,20,,10,,14,,0,0xFFFFFFFF,63,2,4,,50,1,0,{ bonus bMaxHP,300; },{},{} 2527,Dragon_Breath,Dragon Breath,4,20,,600,,16,,1,0xFFFFFFFE,18,2,4,,48,1,0,{ bonus2 bSubRace,RC_Dragon,15; },{},{} @@ -1745,7 +1746,7 @@ 2538,Commander_Manteau,Captain's Manteau,4,10,,0,,28,,1,0x026654E2,63,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} 2539,Commander_Manteau_,Commander's Manteau,4,10,,0,,20,,1,0x00898B1C,63,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} 2540,Sheriff_Manteau,Sheriff's Manteau,4,10,,0,,20,,1,0x41000000,63,2,4,,80,1,0,{ bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1; },{},{} -2541,Asprika,Asprika,4,20,,400,,40,,0,0xFFFFFFFF,63,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,1; },{},{} +2541,Asprika,Asprika,4,20,,400,,40,,0,0xFFFFFFFF,63,2,4,,94,0,0,{ bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment; },{},{} 2542,Flame_Manteau,Flame Manteau of Naght Sieger,4,20,,700,,16,,1,0xFFFFFFFE,18,2,4,,70,1,0,{ bonus bMaxHPrate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2; },{},{} 2543,Sylphid_Manteau,Sylphid Manteau,4,20,,0,,9,,0,0xFFFFFFFF,63,2,4,,0,0,0,{ bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1; },{},{} 2544,Leather_Of_Tendrilion,Leather of Tendrilion,4,20,,300,,14,,1,0x00CFDF80,18,2,4,,0,1,0,{ bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; },{},{} @@ -1770,7 +1771,7 @@ 2563,Upg_Manteau,Upg Manteau,4,20,,300,,18,,1,0x006654E2,63,2,4,,0,1,0,{ bonus bMaxHPrate,3; },{},{} 2564,Feral_Tail,Feral Tail,4,20,,0,,16,,0,0xFFFFFFFF,63,2,4,,75,0,0,{},{},{} 2565,Beach_Towel,Beach Towel,4,20,,100,,2,,1,0xFFFFFFFF,63,2,4,,0,1,0,{ bonus bMdef,3; bonus bFlee,7; },{},{} -2566,Half_Asprika,Half Asprika,4,20,,0,,20,,0,0xFFFFFFFF,63,2,4,,47,0,0,{ bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,1; },{},{} +2566,Half_Asprika,Half Asprika,4,20,,0,,20,,0,0xFFFFFFFF,63,2,4,,47,0,0,{ bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment; },{},{} 2567,Academy_Manteau,Academy Manteau,4,0,,600,,3,,1,73,7,2,4,,0,1,0,{},{},{} 2568,Muffler_Of_Roki,Loki's Muffler,4,20,,400,,10,,0,0xFFFFFFFF,63,2,4,,100,0,0,{ bonus bAgi,1; bonus2 bSkillAtk,"ASC_BREAKER",5; bonus2 bSkillAtk,"GC_CROSSIMPACT",5; },{},{} 2569,Shawl_Of_Affection,Shawl Of Affection,4,20,,400,,12,,0,0x00000100,63,2,4,,100,1,0,{ bonus bFlee2,5; bonus5 bAutoSpellWhenHit,"AB_RENOVATIO",1,30,BF_WEAPON,0; bonus5 bAutoSpellWhenHit,"AB_RENOVATIO",1,40,BF_MAGIC,0; },{},{} @@ -1944,7 +1945,7 @@ 2738,Shiny_Coin,Shiny Coin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,6; bonus bMatkRate,6; },{},{} 2739,Ordinary_Coin,Ordinary Coin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; },{},{} 2740,Rusty_Coin,Rusty Coin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bAddClass,Class_All,3; bonus bMatkRate,3; },{},{} -2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel,0; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} +2741,All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} 2742,Lucky_Clip,Lucky Clip,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bDropAddRace,RC_All,50; },{},{} 2743,Angelic_Ring,Angelic Ring,4,20,,100,,0,,0,0x00CFFF80,18,2,136,,70,0,0,{ bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AL_HEAL","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AM_POTIONPITCHER","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"PR_SANCTUARY","{ specialeffect2 EF_HEAL3; }"; },{},{} 2744,Sprint_Ring,Sprint Ring,4,20,,100,,0,,0,0x00CFFF80,18,2,136,,70,0,0,{ bonus bVariableCastrate,-10; bonus bDelayRate,5; },{},{} @@ -1963,7 +1964,7 @@ 2757,Insecticide_Ring,Insecticide Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_Insect,15; },{},{} 2758,Fisher_Ring,Fischer Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_Fish,15; },{},{} 2759,Decussate_Ring,Decussate Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_Demon,15; },{},{} -2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15; },{},{} +2760,Bloody_Ring,Bloody Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_DemiHuman,15; },{},{} 2761,Satanic_Ring,Satanic Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_Angel,15; },{},{} 2762,Dragoon_Ring,Dragon Ring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus2 bExpAddRace,RC_Dragon,15; },{},{} 2763,Skul_Ring_C,Neo Skull Ring,4,0,,0,,0,,0,0xFFFFFFFE,18,2,136,,95,0,0,{ bonus2 bAddClass,Class_All,5; bonus bMatkrate,5; bonus bMaxHPrate,5; skill "MG_SIGHT",1; },{},{} @@ -2037,7 +2038,7 @@ 2831,Brysinggamen_C,Brisingamen,4,20,,0,,1,,0,0xFFFFFFFF,63,2,136,,94,0,0,{ bonus bStr,6; bonus bInt,6; bonus bVit,6; bonus bAgi,6; bonus bLuk,10; bonus bMdef,5; },{},{} 2832,Freyja_Ring,Freyja's Ring,4,20,,0,,0,,0,0xFFFFFFFF,63,2,136,,1,0,0,{},{},{} 2833,Odin's_Recall,Odin's Recall,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,1,0,0,{ bonus bAllStats,1; skill "ALL_ODINS_RECALL",1; },{},{} -2834,F_All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel,0; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} +2834,F_All_In_One_Ring,All In One Ring,4,20,,0,,0,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bAllStats,1; bonus bNoCastCancel; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1; },{},{} 2835,F_Critical_Ring_C,Critical Ring,4,1,,0,,0,,0,0xFFFFFFFE,63,2,136,,1,0,0,{ bonus bCritical,10; },{},{} 2836,F_Glove_C,Glove,4,1,,0,,0,,0,0xFFFFFFFE,63,2,136,,1,0,0,{ bonus bDex,4; },{},{} 2837,F_Safety_Ring_C,Safety Ring,4,1,,0,,5,,0,0xFFFFFFFE,63,2,136,,1,0,0,{ bonus bMdef,5; },{},{} @@ -2150,7 +2151,7 @@ 2956,Safety_Ring_,Advanced Safety Ring,4,75000,,100,,10,,1,0xFFFFFFFE,63,2,136,,50,0,0,{ bonus bMdef,5; bonus bAllStats,1; },{},{} 2957,Good_Ring_Of_Flame_Lord,Advanced Ring Of Flame Lord,4,20,,100,,0,,0,0x7CCFDF80,63,2,136,,85,0,0,{ bonus bStr,3; bonus bVit,2; bonus bBaseAtk,20; bonus2 bSubEle,Ele_Fire,10; bonus3 bAutoSpell,"CH_SOULCOLLECT",1,30; bonus3 bAutoSpell,"MO_EXPLOSIONSPIRITS",1,10; bonus3 bAutoSpell,"PA_PRESSURE",2,30; bonus3 bAutoSpell,"MG_FIREBALL",1,150; bonus3 bAutoSpell,"KN_BOWLINGBASH",5,20; },{},{} 2958,Good_Ring_Of_Resonance,Advanced Ring Of Resonance,4,20,,100,,2,,0,0x7CCFDF80,63,2,136,,85,0,0,{ bonus bAgi,3; bonus bVit,1; bonus bMdef,2; bonus bMatk,10; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20; },{},{} -2959,Fidelity_Necklace,Fidelity Necklace,4,20,,300,,0,,0,0xFFFFFFFF,63,2,136,,50,0,0,{ bonus bAgi,2; bonus2 bSubRace,RC_Brute,3; },{},{} +2959,Fidelity_Necklace,Fidelity Necklace,4,20,,300,,0,,1,0xFFFFFFFF,63,2,136,,50,0,0,{ bonus bAgi,2; bonus2 bSubRace,RC_Brute,3; },{},{} 2960,Badge_Of_Manny,Badge Of Manny,4,20,,200,,0,,1,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bAllStats,1; },{},{} 2963,Body_Power_Up_Ring,Physical Enhancer Ring,4,10,,100,,,,1,0xFFFFFFFF,63,2,136,,90,0,0,{ bonus2 bAddClass,Class_All,5; },{},{} 2964,Ring_Of_Spell_Explosion,Magic Intensifier Ring,4,10,,100,,,,1,0xFFFFFFFF,63,2,136,,90,0,0,{ bonus bMatkRate,5; },{},{} @@ -2243,7 +2244,7 @@ 4058,Thara_Frog_Card,Thara Frog Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30; },{},{} 4059,Soldier_Andre_Card,Soldier Andre Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Plant,30; },{},{} 4060,Goblin_Card,Goblin Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Brute,20; },{},{} -4061,Cornutus_Card,Cornutus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bUnbreakableArmor,1; bonus bDef,1; },{},{} +4061,Cornutus_Card,Cornutus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bUnbreakableArmor; bonus bDef,1; },{},{} 4062,Anacondaq_Card,Anacondaq Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Poison,20; },{},{} 4063,Caramel_Card,Caramel Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Insect,20; },{},{} 4064,Zerom_Card,Zerom Card,6,20,,10,,,,,,,,136,,,,,{ bonus bDex,3; },{},{} @@ -2254,12 +2255,12 @@ 4069,Drainliar_Card,Drainliar Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Water,20; },{},{} 4070,Eggyra_Card,Eggyra Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSPrecovRate,15; },{},{} 4071,Orc_Zombie_Card,Orc Zombie Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Undead,30; bonus bFlee,5; },{},{} -4072,Golem_Card,Golem Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,1; bonus bBaseAtk,5; },{},{} +4072,Golem_Card,Golem Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon; bonus bBaseAtk,5; },{},{} 4073,Pirate_Skel_Card,Pirate Skeleton Card,6,20,,10,,,,,,,,136,,,,,{ skill "MC_DISCOUNT",5; },{},{} 4074,BigFoot_Card,Bigfoot Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Insect,30; },{},{} 4075,Argos_Card,Argos Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Stone,2000; bonus bDef,1; },{},{} 4076,Magnolia_Card,Magnolia Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5; },{},{} -4077,Phen_Card,Phen Card,6,20,,10,,,,,,,,136,,,,,{ bonus bNoCastCancel,0; bonus bVariableCastrate,25; },{},{} +4077,Phen_Card,Phen Card,6,20,,10,,,,,,,,136,,,,,{ bonus bNoCastCancel; bonus bVariableCastrate,25; },{},{} 4078,Savage_Card,Savage Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; },{},{} 4079,Mantis_Card,Mantis Card,6,20,,10,,,,,,,,136,,,,,{ bonus bStr,3; },{},{} 4080,Flora_Card,Flora Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace,RC_Fish,20; },{},{} @@ -2314,19 +2315,19 @@ 4129,Baphomet__Card,Bapho Jr. Card,6,20,,10,,,,,,,,4,,,,,{ bonus bAgi,3; bonus bCritical,1; },{},{} 4130,Scorpion_King_Card,Scorpion King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Undead,20; },{},{} 4131,Moonlight_Flower_Card,Moonlight Flower Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSpeedRate,25; },{},{} -4132,Mistress_Card,Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone,1; bonus bUseSPrate,25; },{},{} +4132,Mistress_Card,Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone; bonus bUseSPrate,25; },{},{} 4133,Daydric_Card,Raydric Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,20; },{},{} 4134,Dracula_Card,Dracula Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPDrainRate,100,5; },{},{} 4135,Orc_Load_Card,Orc Lord Card,6,20,,10,,,,,,,,16,,,,,{ bonus bShortWeaponDamageReturn,30; },{},{} 4136,Khalitzburg_Card,Khalitzburg Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Demon,30; },{},{} -4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix,1; },{},{} +4137,Drake_Card,Drake Card,6,20,,10,,,,,,,,2,,,,,{ bonus bNoSizeFix; },{},{} 4138,Anubis_Card,Anubis Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Angel,30; },{},{} 4139,Joker_Card,Joker Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_STEAL",1; },{},{} 4140,Knight_Of_Abyss_Card,Abysmal Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_Boss,25; },{},{} 4141,Evil_Druid_Card,Evil Druid Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1; },{},{} 4142,Doppelganger_Card,Doppelganger Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAspdRate,10; },{},{} 4143,Orc_Hero_Card,Orc Hero Card,6,20,,10,,,,,,,,769,,,,,{ bonus bVit,3; bonus2 bResEff,Eff_Stun,10000; },{},{} -4144,Osiris_Card,Osiris Card,6,20,,10,,,,,,,,136,,,,,{ bonus bRestartFullRecover,1; },{},{} +4144,Osiris_Card,Osiris Card,6,20,,10,,,,,,,,136,,,,,{ bonus bRestartFullRecover; },{},{} 4145,Berzebub_Card,Berzebub Card,6,20,,10,,,,,,,,136,,,,,{ bonus bVariableCastrate,-30; },{},{} 4146,Maya_Card,Maya Card,6,20,,10,,,,,,,,32,,,,,{ bonus bMagicDamageReturn,50; },{},{} 4147,Baphomet_Card,Baphomet Card,6,20,,10,,,,,,,,2,,,,,{ bonus bHit,-10; bonus bSplashRange,1; },{},{} @@ -2336,7 +2337,7 @@ 4151,Gajomart_Card,Gajomart Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10; },{},{} 4152,Galapago_Card,Galapago Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300; },{},{} 4153,Crab_Card,Crab Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30; },{},{} -4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_Player,100; },{},{} +4154,Rice_Cake_Boy_Card,Dumpling Child Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; },{},{} 4155,Goblin_Leader_Card,Goblin Leader Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,RC2_Goblin,30; },{},{} 4156,Steam_Goblin_Card,Goblin Steamrider Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7; },{},{} 4157,Goblin_Archer_Card,Goblin Archer Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7; },{},{} @@ -2380,7 +2381,7 @@ 4195,Leaf_Cat_Card,Leaf Cat Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bSubEle,Ele_Water,10; bonus3 bAddMonsterDropItem,991,RC_Fish,100; },{},{} 4196,Marin_Card,Marin Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItem,909,2000; bonus2 bAddMonsterDropItem,7126,10; },{},{} 4197,Mastering_Card,Mastering Card,6,20,,10,,,,,,,,4,,,,,{ bonus bLuk,1; },{},{} -4198,Maya_Puple_Card,Maya Purple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision,1; },{},{} +4198,Maya_Puple_Card,Maya Purple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision; },{},{} 4199,Merman_Card,Merman Card,6,20,,10,,,,,,,,64,,,,,{ bonus bHPrecovRate,10; bonus bSPrecovRate,10; },{},{} 4200,Megalith_Card,Megalith Card,6,20,,10,,,,,,,,64,,,,,{ if(getrefine()<6) bonus bMdef,7; },{},{} 4201,Majoruros_Card,Majoruros Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Stun,600; },{},{} @@ -2415,7 +2416,7 @@ 4230,Shinobi_Card,Shinobi Card,6,20,,10,,,,,,,,136,,,,,{ bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AS_CLOAKING",5,100; },{},{} 4231,Increase_Soil_Card,Mi Gao Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace2,RC2_Guardian,50; },{},{} 4232,Wild_Ginseng_Card,Hermit Plant Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Herb,50; bonus3 bAddMonsterDropItem,507,RC_Plant,300; bonus3 bAddMonsterDropItem,508,RC_Plant,200; bonus3 bAddMonsterDropItem,509,RC_Plant,100; },{},{} -4233,Baby_Leopard_Card,Baby Leopard Card,6,20,,10,,,,,,,,16,,,,,{ bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor,1; },{},{} +4233,Baby_Leopard_Card,Baby Leopard Card,6,20,,10,,,,,,,,16,,,,,{ bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor; },{},{} 4234,Anolian_Card,Anolian Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AC_CONCENTRATION",1+9*(getskilllv("AC_CONCENTRATION")==10),30; },{},{} 4235,Cookie_XMAS_Card,Christmas Cookie Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_Angel,-20; bonus2 bExpAddRace,RC_Angel,10; },{},{} 4236,Amon_Ra_Card,Amon Ra Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,(30+70*(readparam(bInt)>=99)); },{},{} @@ -2427,7 +2428,7 @@ 4242,Apocalips_Card,Apocalipse Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800; },{},{} 4243,Antonio_Card,Antonio Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500; },{},{} 4244,Alarm_Card,Alarm Card,6,20,,10,,,,,,,,64,,,,,{ bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1; },{},{} -4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10; },{},{} +4245,Am_Mut_Card,Am Mut Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; },{},{} 4246,Assulter_Card,Assaulter Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7; },{},{} 4247,Aster_Card,Aster Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30; },{},{} 4248,Ancient_Mummy_Card,Ancient Mummy Card,6,20,,10,,,,,,,,32,,,,,{ bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30; },{},{} @@ -2438,7 +2439,7 @@ 4253,Alice_Card,Alice Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40; },{},{} 4254,Tirfing_Card,Ogretooth Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubSize,Size_Medium,25; bonus bDef,1; },{},{} 4255,Orc_Lady_Card,Orc Lady Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddRace2,RC2_Orc,30; },{},{} -4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100; },{},{} +4256,Orc_Archer_Card,Orc Archer Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; },{},{} 4257,Wild_Rose_Card,Wild Rose Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5; },{},{} 4258,Wicked_Nymph_Card,Evil Nymph Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,1; bonus bMaxSP,50; },{},{} 4259,Wooden_Golem_Card,Wooden Golem Card,6,20,,10,,,,,,,,16,,,,,{ bonus bDef,1; bonus bHPrecovRate,30; },{},{} @@ -2463,7 +2464,7 @@ 4278,Gibbet_Card,Gibbet Card,6,20,,10,,,,,,,,769,,,,,{ if(getrefine()<6) bonus bMdef,5; },{},{} 4279,Deleter_Card,Earth Deleter Card,6,20,,10,,,,,,,,16,,,,,{ bonus bSPrecovRate,-100; bonus bSPGainValue,10; },{},{ heal 0,-100; } 4280,Geographer_Card,Geographer Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30; },{},{} -4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,1; },{},{} +4281,Zipper_Bear_Card,Zipper Bear Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon; },{},{} 4282,Tengu_Card,Tengu Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddMonsterDropItemGroup,IG_Recovery,600; },{},{} 4283,Greatest_General_Card,Greatest General Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte); },{},{} 4284,Chepet_Card,Chepet Card,6,20,,10,,,,,,,,2,,,,,{ bonus4 bAutoSpell,"AL_HEAL",5,50,1; },{},{} @@ -2491,7 +2492,7 @@ 4306,Toad_Card,Toad Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee2,1; },{},{} 4307,Kind_Of_Beetle_Card,Beetle King Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Fish,5; },{},{ heal 0,-5; } 4308,Tri_Joint_Card,Tri Joint Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_Formless,5; },{},{ heal 0,-5; } -4309,Parasite_Card,Parasite Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,1; bonus2 bSubEle,Ele_Neutral,5; },{},{} +4309,Parasite_Card,Parasite Card,6,20,,10,,,,,,,,32,,,,,{ bonus bDef,1; bonus2 bSubRace,RC_Formless,5; },{},{} 4310,Panzer_Goblin_Card,Panzer Goblin Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Demon,7; },{},{} 4311,Permeter_Card,Permeter Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bSubEle,Ele_Dark,15; bonus2 bSubEle,Ele_Undead,15; },{},{} 4312,Fur_Seal_Card,Seal Card,6,20,,10,,,,,,,,2,,,,,{ bonus bFlee,3; bonus bHit,10; if(BaseClass==Job_Acolyte) { bonus2 bCriticalAddRace,RC_Undead,9; bonus2 bCriticalAddRace,RC_Demon,9; } },{},{} @@ -2509,7 +2510,7 @@ 4324,Garm_Card,Hatii Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEffWhenHit,Eff_Freeze,5000; },{},{} 4325,Harpy_Card,Harpy Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bSkillAtk,"MG_NAPALMBEAT",5; },{},{} 4326,See_Otter_Card,Sea-Otter Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bAddItemGroupHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300; },{},{} -4327,Blood_Butterfly_Card,Bloody Butterfly Card,6,20,,10,,,,,,,,136,,,,,{ bonus bVariableCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5; },{},{} +4327,Blood_Butterfly_Card,Bloody Butterfly Card,6,20,,10,,,,,,,,136,,,,,{ bonus bVariableCastrate,30; bonus bNoCastCancel; bonus2 bSkillAtk,"MG_FIREWALL",5; },{},{} 4328,Hyegun_Card,Yao Jun Card,6,20,,10,,,,,,,,4,,,,,{ bonus bFlee,15; bonus bCritical,1; },{},{} 4329,Phendark_Card,Phendark Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5; },{},{ heal 0,-5; } 4330,Dark_Snake_Lord_Card,Evil Snake Lord Card,6,20,,10,,,,,,,,769,,,,,{ bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000; },{},{} @@ -2524,7 +2525,7 @@ 4339,Mineral_Card,Mineral Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,-25; bonus bDef,3; },{},{} 4340,Teddy_Bear_Card,Teddy Bear Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubRace,RC_Undead,30; },{},{} 4341,Metaling_Card,Metaling Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAutoSpell,"RG_STRIPWEAPON",1,50; },{},{} -4342,Rsx_0806_Card,RSX-0806 Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; bonus bUnbreakableArmor,1; bonus bNoKnockback,0; },{},{} +4342,Rsx_0806_Card,RSX-0806 Card,6,20,,10,,,,,,,,16,,,,,{ bonus bVit,3; bonus bUnbreakableArmor; bonus bNoKnockback; },{},{} 4343,Mole_Card,Holden Card,6,20,,10,,,,,,,,769,,,,,{ bonus bLuk,2; },{},{} 4344,Anopheles_Card,Anopheles Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12058,RC_Insect,50; },{},{} 4345,Hill_Wind_Card,Hill Wind Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSkillAtk,"MG_THUNDERSTORM",5; bonus2 bSkillAtk,"WZ_JUPITEL",5; bonus2 bSkillAtk,"WZ_VERMILION",5; },{},{ heal 0,-50; } @@ -2589,7 +2590,7 @@ 4404,Skogul_Card,Skogul Card,6,20,,10,,,,,,,,16,,,,,{ bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF; },{},{} 4405,Frus_Card,Frus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3; },{},{} 4406,Skeggiold_Card,Skeggiold Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bMagicAddRace,RC_Demon,2; },{},{} -4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon,1; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{} +4407,Randgris_Card,Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus bUnbreakableWeapon; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50; },{},{} 4408,Gloom_Under_Night_Card,Gloom Under Night Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40; },{},{} 4409,Agav_Card,Agav Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100; },{},{} 4410,Echio_Card,Echio Card,6,20,,10,,,,,,,,16,,,,,{ bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500; },{},{} @@ -2666,7 +2667,7 @@ 4481,Sealed_Ktullanux_Card,Sealed Ktullanux Card,6,20,,10,,,,,,,,16,,,,,{ bonus2 bAddEle,Ele_Fire,((getrefine()>14)?35:25); bonus5 bAutoSpellWhenHit,"WZ_FROSTNOVA",10,10,BF_WEAPON|BF_MAGIC,0; },{},{} 4482,Sealed_B_Ygnizem_Card,Sealed General Egnigem Cenia Card,6,20,,10,,,,,,,,64,,,,,{ .@rate = ((getrefine()>14)?7:5); bonus bMaxHPrate,.@rate; bonus bMaxSPrate,.@rate; bonus2 bHPRegenRate,50,10000; bonus2 bSPRegenRate,10,10000; },{},{} 4483,Sealed_Dracula_Card,Sealed Dracula Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bSPDrainRate,((getrefine()>14)?70:50),5; },{},{} -4484,Sealed_Mistress_Card,Sealed Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone,1; bonus bUseSPrate,((getrefine()>14)?35:50); },{},{} +4484,Sealed_Mistress_Card,Sealed Mistress Card,6,20,,10,,,,,,,,769,,,,,{ bonus bNoGemStone; bonus bUseSPrate,((getrefine()>14)?35:50); },{},{} 4485,Sealed_Gloom_Card,Sealed Gloom Under Night Card,6,20,,10,,,,,,,,16,,,,,{ .@rate = ((getrefine()>14)?30:20); bonus2 bAddEle,Ele_Holy,.@rate; bonus2 bAddEle,Ele_Dark,.@rate; bonus2 bAddRace,RC_Angel,.@rate; bonus2 bAddRace,RC_Demon,.@rate; },{},{} 4486,Sealed_Berz_Card,Sealed Berzebub Card,6,20,,10,,,,,,,,136,,,,,{ bonus bVariableCastrate,-15; },{},{} 4487,Sealed_Ifrit_Card,Sealed Ifrit Card,6,20,,10,,,,,,,,136,,,,,{ bonus bBaseAtk,(JobLevel/20); bonus bCritical,(JobLevel/20); bonus bHit,(JobLevel/20); bonus3 bAutoSpellWhenHit,"NPC_EARTHQUAKE",5,1; },{},{} @@ -2717,7 +2718,7 @@ 4532,Wild_Rider_Card,Wild Rider Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAgi,1; bonus3 bAutoSpell,"AL_INCAGI",1,50; },{},{} 4533,Mini_Octopus_Card,Octopus Card,6,20,,10,,,,,,,,2,,,,,{ bonus3 bAddEff,Eff_Blind,100,ATF_MAGIC; },{},{} 4534,Giant_Octopus_Card,Giant Octopus Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMaxHPrate,12; skill "WZ_WATERBALL",5; },{},{} -4535,Sealed_Rand_Card,Sealed Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_All,(getrefine()>=15?8:5); bonus5 bAutoSpell,"SA_DISPELL",1,1,BF_NORMAL,1; bonus bUnbreakableWeapon,1; },{},{} +4535,Sealed_Rand_Card,Sealed Randgris Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddClass,Class_All,(getrefine()>=15?8:5); bonus5 bAutoSpell,"SA_DISPELL",1,1,BF_NORMAL,1; bonus bUnbreakableWeapon; },{},{} 4536,Sealed_Atroce_Card,Sealed Atroce Card,6,20,,10,,,,,,,,2,,,,,{ .@r = getrefine(); bonus bBaseAtk,((.@r>14)?25:15); autobonus "{ bonus bAspdRate,((.@r>14)?75:50); }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 4537,Sealed_Phreeoni_Card,Sealed Phreeoni Card,6,20,,10,,,,,,,,2,,,,,{ bonus bHit,((getrefine()>14)?75:50); },{},{} 4538,Sealed_Bacsojin_Card,Sealed White Lady Card,6,20,,10,,,,,,,,769,,,,,{ .@r = getrefine(); bonus bHealPower,(.@r>14?25:15); bonus bUseSPrate,(.@r>14?20:30); },{},{} @@ -2731,7 +2732,7 @@ 4546,Val'khiri_Card,Val'khiri Card,6,20,,10,,,,,,,,2,,,,,{},{},{} 4547,Upd_Byorgue_Card,Enhanced Byorgue Card,6,20,,10,,,,,,,,16,,,,,{ if(BaseJob==Job_Rogue) { bonus bMatkRate,10; bonus2 bAddClass,Class_All,10; bonus bMaxHPrate,getrefine()/2; } /* Adds a chance of inflicting Confuse on target when using Body Paint skill. */ },{},{} 4548,Upd_Salamander_Card,Enhanced Salamander Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSkillAtk,"WZ_FIREPILLAR",40; bonus2 bSkillAtk,"WZ_METEOR",40; },{},{} -4549,Upd_Maya_Puple_Card,Upd Maya Puple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision,1; bonus bAllStats,1; skill "AL_RUWACH",1; },{},{} +4549,Upd_Maya_Puple_Card,Upd Maya Puple Card,6,20,,10,,,,,,,,769,,,,,{ bonus bIntravision; bonus bAllStats,1; skill "AL_RUWACH",1; },{},{} 4550,Upd_Bow_Guardian_Card,Upd Bow Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==W_BOW) { bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bCriticalLong,25+10*(getequiprefinerycnt(EQI_HAND_R)/4); bonus bHit,5; bonus3 bAutoSpell,"HT_PHANTASMIC",1,100; } },{},{} 4552,Manny_Card,Manny Card,6,20,,10,,,,,,,,136,,,,,{ bonus bMaxHP,10; },{},{} 4553,Sid_Card,Sid Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMaxHP,100; },{},{} @@ -2761,7 +2762,7 @@ 4578,Pyuriel_Card,Angry Student Pyuriel Card,6,20,,10,,,,,,,,2,,,,,{ bonus bCritAtkRate,30; bonus2 bSubRace,RC_All,-10; bonus2 bSubRace,RC_Player,10; },{},{} 4579,Lora_Card,Warrior Lola Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11) == W_MACE) { bonus bBaseAtk,20; bonus bCritical,10; } .@r = getrefine(); bonus bBaseAtk,.@r; bonus bCritical,.@r; },{},{} 4580,Kades_Card,Dark Guardian Kades Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Water,50; bonus2 bSubEle,Ele_Earth,50; bonus2 bSubEle,Ele_Fire,50; bonus2 bSubEle,Ele_Wind,50; bonus2 bSubEle,Ele_Dark,50; bonus2 bSubEle,Ele_Undead,50; bonus2 bSubEle,Ele_Holy,-100; bonus2 bSubEle,Ele_Ghost,-100; },{},{} -4581,Rudo_Card,Rudo Card,6,20,,10,,,,,,,,64,,,,,{ autobonus "{ sc_start SC_SPEEDUP1,3000,50; bonus bAgi,44; heal 0,-40; }",3,3000,0; },{},{} +4581,Rudo_Card,Rudo Card,6,20,,10,,,,,,,,64,,,,,{ autobonus "{ bonus bAgi,44; heal 0,-40; }",500,3000,0,"{ sc_start SC_SPEEDUP1,3000,50; }"; },{},{} 4582,Bungisngis_Card,Bungisngis Card,6,20,,10,,,,,,,,769,,,,,{ bonus bMaxHPrate,(getrefine()/2); },{},{} 4583,Engkanto_Card,Engkanto Card,6,20,,10,,,,,,,,769,,,,,{ bonus2 bAddEle,Ele_Poison,30; bonus2 bMagicAddEle,Ele_Poison,30; bonus2 bIgnoreDefRaceRate,RC_Plant,30; },{},{} 4584,Manananggal_Card,Manananggal Card,6,20,,10,,,,,,,,2,,,,,{ bonus bSPDrainValue,1; bonus bMaxSPrate,-1; },{},{} @@ -2855,7 +2856,7 @@ 4686,V_B_Katrinn_Card,True Kathryne Keyron Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"WL_CRIMSONROCK",20+.@b; },{},{} 4687,V_B_Shecil_Card,True Cecil Damon Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20+.@b; },{},{} 4688,V_B_Harword_Card,True Howard Alt-Eisen Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"NC_AXETORNADO",20+.@b; },{},{} -4689,V_B_Seyren_Card,True Seyren Windsor Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"LK_IGNITIONBREAK",20+.@b; },{},{} +4689,V_B_Seyren_Card,True Seyren Windsor Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"RK_IGNITIONBREAK",20+.@b; },{},{} 4690,V_B_Randel_Card,True Randel Lawrence Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"LG_EARTHDRIVE",20+.@b; },{},{} 4691,V_B_Flamel_Card,True Flamel Emure Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"GN_CART_TORNADO",20+.@b; },{},{} 4692,V_B_Celia_Card,True Celia Alde Card,6,20,,10,,,,,,,,2,,,,,{ if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20+.@b; },{},{} @@ -3046,7 +3047,7 @@ 4875,Bear's_Power,Bear's Power,6,20,,10,,,,,,,,,,,,,{ autobonus2 "{ bonus bStr,200; bonus2 bHPLossRate,500,1000; }",20,5000,BF_WEAPON,"{ active_transform 1060,5000; specialeffect2 EF_POTION_BERSERK; showscript \"Bigfoot Power !\"; }"; },{},{} 4876,Runaway_Magic,Runaway Magic,6,20,,10,,,,,,,,,,,,,{ autobonus "{ bonus bInt,200; bonus2 bSPLossRate,200,1000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_LAMADAN; }"; },{},{ heal 0,-2000; } 4877,Speed_Of_Light,Speed of Light,6,20,,10,,,,,,,,,,,,,{ /*TODO: Confirm the rate*/ autobonus "{ bonus bAspdRate,100; bonus bFlee,100; bonus2 bHPLossRate,400,1000; bonus2 bSPLossRate,50,1000;}",10,5000,BF_WEAPON,"{ specialeffect2 EF_AGIUP2; }"; },{},{ heal 0,-300; } -4878,Muscle_Fool,Muscle Fool,6,20,,10,,,,,,,,,,,,,{ autobonus2 "{ bonus bDef,1000; bonus2 bAddRace,RC_All,-50; bonus bMatkRate,-50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD3; }"; },{},{ heal 0,-300; } +4878,Muscle_Fool,Muscle Fool,6,20,,10,,,,,,,,,,,,,{ autobonus2 "{ bonus bVit,200; bonus2 bAddRace,RC_All,-50; bonus bMatkRate,-50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD3; }"; },{},{ heal 0,-300; } 4879,Hawkeye,Hawkeye,6,20,,10,,,,,,,,,,,,,{ autobonus "{ bonus bDex,200; bonus2 bSPLossRate,50,1000; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_BASH3D6; }"; },{},{ heal 0,-300; } 4880,Lucky_Day,Lucky Day,6,20,,10,,,,,,,,,,,,,{ autobonus "{ bonus bLuk,200; }",10,5000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_DANCE_BLADE_ATK; }"; },{},{ heal 0,-300; } 4881,Attack_Delay_4,Attack Delay 4,6,10,,,,,,,,,,,,,,,{ bonus bAspdRate,10; },{},{} @@ -3118,9 +3119,52 @@ 4948,Skill_Delay1,After Skill Delay Lv1,6,10,,,,,,,,,,,,,,,{ bonus bDelayrate,-2; },{},{} 4949,Skill_Delay2,After Skill Delay Lv2,6,10,,,,,,,,,,,,,,,{ bonus bDelayrate,-4; },{},{} 4950,Skill_Delay3,After Skill Delay Lv3,6,10,,,,,,,,,,,,,,,{ bonus bDelayrate,-6; },{},{} -4994,Rune_of_Strength_Lv_1,Rune of Strength Lv 1,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,5; } if (.@r>=10) { bonus bAtkRate,5; } },{},{} -4995,Rune_of_Strength_Lv_2,Rune of Strength Lv 2,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,6; } if (.@r>=11) { bonus bStr,1; bonus bAtkRate,7; } },{},{} -4996,Rune_of_Strength_Lv_3,Rune of Strength_Lv 3,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,7; } if (.@r>=12) { bonus bStr,1; bonus bAtkRate,8; } if (.@r>=13) { bonus bStr,1; bonus bAtkRate,2; } },{},{} +4951,Darkness_Drop,Darkness Drop,6,0,,,,,,,,,,,,,,,{ bonus2 bAddEle,Ele_Dark,2; bonus2 bMagicAtkEle,Ele_Dark,2; bonus2 bSubEle,Ele_Dark,1; },{},{} +4952,Fire_Drop,Fire Drop,6,0,,,,,,,,,,,,,,,{ bonus2 bAddEle,Ele_Fire,2; bonus2 bMagicAtkEle,Ele_Fire,2; bonus2 bSubEle,Ele_Fire,1; },{},{} +4953,Water_Drop,Water Drop,6,0,,,,,,,,,,,,,,,{ bonus2 bAddEle,Ele_Water,2; bonus2 bMagicAtkEle,Ele_Water,2; bonus2 bSubEle,Ele_Water,1; },{},{} +4954,Earth_Drop,Earth Drop,6,0,,,,,,,,,,,,,,,{ bonus2 bAddEle,Ele_Earth,2; bonus2 bMagicAtkEle,Ele_Earth,2; bonus2 bSubEle,Ele_Earth,1; },{},{} +4955,Holy_Drop,Holy Drop,6,0,,,,,,,,,,,,,,,{ bonus2 bAddEle,Ele_Holy,2; bonus2 bMagicAtkEle,Ele_Holy,2; bonus2 bSubEle,Ele_Holy,1; },{},{} +4956,Recovery_Drop,Recovery Drop,6,0,,,,,,,,,,,,,,,{ setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal,.@skills$[.@i],2; bonus2 bSkillHeal2,.@skills$[.@i],2; } /* TODO: Depending on some recovery items HP recovery amount + 2% */ },{},{} +4957,Famitsus_Power,Famitsu's Power,6,0,,,,,,,,,,,,,,,{ bonus bMaxHP,832; },{},{} +4958,Gemini,Gemini,6,0,,,,,,,,,,,,,,,{ bonus bDelayrate,-1; },{},{} +4959,Sagittarius,Sagittarius,6,0,,,,,,,,,,,,,,,{ bonus bLongAtkRate,1; },{},{} +4960,Aquarius,Aquarius,6,0,,,,,,,,,,,,,,,{ bonus bUseSPrate,-2; },{},{} +4961,Aries,Aries,6,0,,,,,,,,,,,,,,,{ bonus bMatk,10; },{},{} +4962,Cancer,Cancer,6,0,,,,,,,,,,,,,,,{ bonus bAtk,3; },{},{} +4963,Taurus,Taurus,6,0,,,,,,,,,,,,,,,{ bonus bAtk,4; bonus bHit,1; },{},{} +4964,Capricorn,Capricorn,6,0,,,,,,,,,,,,,,,{ bonus2 bMagicAddRace,RC_All,3; },{},{} +4965,Pisces,Pisces,6,0,,,,,,,,,,,,,,,{ bonus bVariableCastrate,-2; },{},{} +4966,Scorpio,Scorpio,6,0,,,,,,,,,,,,,,,{ bonus2 bAddRace,RC_All,1; },{},{} +4967,Leo,Leo,6,0,,,,,,,,,,,,,,,{ bonus bAspdRate,3; },{},{} +4968,Virgo,Virgo,6,0,,,,,,,,,,,,,,,{ setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal,.@skills$[.@i],1; } },{},{} +4969,Libra,Libra,6,0,,,,,,,,,,,,,,,{ setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal2,.@skills$[.@i],1; } /* TODO: Depending on some recovery items HP recovery amount + 1% */ },{},{} +4970,Fire_Property_Reactor,Fire Property Reactor,6,0,,,,,,,,,,,,,,,{ bonus bDefEle,Ele_Fire; },{},{} +4971,Water_Property_Reactor,Water Property Reactor,6,0,,,,,,,,,,,,,,,{ bonus bDefEle,Ele_Water; },{},{} +4972,Earth_Property_Reactor,Earth Property Reactor,6,0,,,,,,,,,,,,,,,{ bonus bDefEle,Ele_Earth; },{},{} +4973,Wind_Property_Reactor,Wind Property Reactor,6,0,,,,,,,,,,,,,,,{ bonus bDefEle,Ele_Wind; },{},{} +4974,Fire_Resistance_Reactor,Fire Resistance Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bSubEle,Ele_Fire,25; bonus2 bSubEle,Ele_Water,-25; },{},{} +4975,Water_Resistance_Reactor,Water Resistance Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bSubEle,Ele_Water,25; bonus2 bSubEle,Ele_Wind,-25; },{},{} +4976,Earth_Resistance_Reactor,Earth Resistance Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bSubEle,Ele_Earth,25; bonus2 bSubEle,Ele_Fire,-25; },{},{} +4977,Wind_Resistance_Reactor,Wind Resistance Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bSubEle,Ele_Wind,25; bonus2 bSubEle,Ele_Earth,-25; },{},{} +4978,Recovery_Reactor_101,Recovery Reactor 101,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) bonus2 bHPRegenRate,100,5000; else bonus2 bHPRegenRate,50,5000; },{},{} +4979,Recovery_Reactor_102,Recovery Reactor 102,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) bonus2 bSPRegenRate,5,5000; else bonus2 bHPRegenRate,3,5000; },{},{} +4980,Recovery_Reactor_201,Recovery Reactor 201,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) bonus2 bRegenPercentHP,100,5000; else bonus2 bRegenPercentHP,50,5000; },{},{} +4981,Recovery_Reactor_202,Recovery Reactor 202,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) bonus2 bRegenPercentSP,100,5000; else bonus2 bRegenPercentSP,50,5000; },{},{} +4982,STR_Supplement_Reactor,STR Supplement Reactor,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) { .@bonus = 10; } bonus bBaseAtk,.@bonus + 5*(readparam(bStr)/10); },{},{} +4983,INT_Supplement_Reactor,INT Supplement Reactor,6,0,,,,,,,,,,,,,,,{ if (getrefine()>=7) { .@bonus = 10; } bonus bMatk,.@bonus + 5*(readparam(bInt)/10); },{},{} +4984,DEF_Supplement_Reactor,DEF SupplementReactor,6,0,,,,,,,,,,,,,,,{ bonus bDef,100; },{},{} +4985,PD_Supplement_Reactor,PD Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bFlee2,3; },{},{} +4986,Attack_Supplement_Reactor,Attack Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bBaseAtk,20; },{},{} +4987,Magic_Supplement_Reactor,Magic Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bMatk,20; },{},{} +4988,HP_Supplement_Reactor,HP Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bMaxHPrate,5; },{},{} +4989,SP_Supplement_Reactor,SP Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bMaxSPrate,3; },{},{} +4990,Frozen_Supplement_Reactor,Frozen Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bResEff,Eff_Freeze,10000; },{},{} +4991,ASPD_Supplement_Reactor,ASPD Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus bAspd,1; },{},{} +4992,HPAbsorb1_Supplement_Reactor,HP Absorb Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bHPDrainRate,10,1; },{},{} +4993,SPAbsorb1_Supplement_Reactor,SP Absorb Supplement Reactor,6,0,,,,,,,,,,,,,,,{ bonus2 bSPDrainRate,10,1; },{},{} +4994,Rune_of_Strength_Lv_1,Rune of Strength Lv 1,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,5; } if (.@r>=10) { bonus2 bAddClass,Class_All,5; } },{},{} +4995,Rune_of_Strength_Lv_2,Rune of Strength Lv 2,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,6; } if (.@r>=11) { bonus bStr,1; bonus2 bAddClass,Class_All,7; } },{},{} +4996,Rune_of_Strength_Lv_3,Rune of Strength_Lv 3,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bStr,7; } if (.@r>=12) { bonus bStr,1; bonus2 bAddClass,Class_All,8; } if (.@r>=13) { bonus bStr,1; bonus2 bAddClass,Class_All,2; } },{},{} 4997,Rune_of_Agility_Lv_1,Rune of Agility Lv 1,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bAgi,5; } if (.@r>=10) { bonus bFlee2,5; } },{},{} 4998,Rune_of_Agility_Lv_2,Rune of Agility Lv 2,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bAgi,6; } if (.@r>=11) { bonus bAgi,1; bonus bFlee2,7; } },{},{} 4999,Rune_of_Agility_Lv_3,Rune of Agility Lv 3,6,20,,,,,,,,,,,,,,,{ .@r = getrefine(); if (.@r>=7) { bonus bAgi,7; } if (.@r>=12) { bonus bAgi,1; bonus bFlee2,5; } if (.@r>=13) { bonus bAgi,1; bonus bFlee2,5; } },{},{} @@ -3135,7 +3179,7 @@ 5006,Machoman_Glasses,Machoman's Glasses,4,36000,,100,,1,,0,0xFFFFFFFE,63,2,512,,0,0,92,{},{},{} 5007,Loard_Circlet,Grand Circlet,4,20,,200,,7,,0,0xFFFFFFFE,63,2,256,,55,1,93,{ bonus bStr,1; bonus bInt,1; bonus bLuk,1; bonus bMdef,4; },{},{} 5008,Puppy_Love,Puppy Love,4,20,,100,,1,,0,0xFFFFFFFE,63,2,256,,0,0,94,{},{},{} -5009,Safety_Helmet,Safety Helmet,4,20,,500,,7,,0,0xFFFFFFFE,63,2,256,,0,1,95,{ bonus bMdef,3; bonus bUnbreakableHelm,1; },{},{} +5009,Safety_Helmet,Safety Helmet,4,20,,500,,7,,0,0xFFFFFFFE,63,2,256,,0,1,95,{ bonus bMdef,3; bonus bUnbreakableHelm; },{},{} 5010,Indian_Hair_Piece,Indian Fillet,4,20,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,96,{},{},{} 5011,Antenna,Aerial,4,20,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,97,{},{},{} 5012,Ph.D_Hat,Ph.D Hat,4,20,,200,,5,,0,0xFFFFFFFE,63,2,256,,0,1,98,{},{},{} @@ -3207,7 +3251,7 @@ 5078,Sea_Otter_Cap,Sea-Otter Hat,4,20,,800,,6,,0,0xFFFFFFFF,63,2,256,,50,1,162,{ bonus bVit,1; },{},{} 5079,Crossed_Hair_Band,X Hairpin,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,0,1,163,{},{},{} 5080,Headgear_Of_Queen,Crown of Ancient Queen,4,20,,400,,8,,0,0xFFFFFFFF,63,2,256,,45,1,164,{},{},{} -5081,Mistress_Crown,Crown of Mistress,4,20,,100,,2,,0,0xFFFFFFFE,63,2,256,,75,1,165,{ bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm,1; },{},{} +5081,Mistress_Crown,Crown of Mistress,4,20,,100,,2,,0,0xFFFFFFFE,63,2,256,,75,1,165,{ bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm; },{},{} 5082,Mushroom_Band,Decorative Mushroom,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,0,1,166,{},{},{} 5083,Red_Tailed_Ribbon,Red Ribbon,4,20,,200,,2,,0,0xFFFFFFFF,63,2,256,,45,1,167,{ bonus bMdef,10; },{},{} 5084,Lazy_Raccoon,Lazy Smokie,4,20,,500,,2,,0,0xFFFFFFFE,63,2,256,,0,1,168,{ bonus2 bResEff,Eff_Sleep,2000; },{},{} @@ -3285,7 +3329,7 @@ 5156,Flu_Mask_F,Father's Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,8,{ bonus bMatkRate,1; },{},{} 5157,Viking_Helm_,Orc Helm,4,20,,500,,9,,1,0x000654E2,63,2,256,,0,1,86,{},{},{} 5158,Holy_Bonnet_,Monk Hat,4,30000,,100,,10,,1,0x00008110,63,2,256,,0,1,35,{ bonus bMdef,3; },{},{} -5159,Golden_Gear_,Golden Gear,4,20,,900,,9,,1,0xFFFFFFFE,63,2,256,,40,1,30,{ bonus bUnbreakableHelm,1; },{},{} +5159,Golden_Gear_,Golden Gear,4,20,,900,,9,,1,0xFFFFFFFE,63,2,256,,40,1,30,{ bonus bUnbreakableHelm; },{},{} 5160,Magestic_Goat_,Majestic Goat,4,20,,800,,9,,1,0x006444A2,63,2,256,,0,1,41,{ bonus bStr,1; },{},{} 5161,Sharp_Gear_,Spiky Band,4,20,,1000,,12,,1,0x0066D5F2,63,2,256,,50,1,43,{},{},{} 5162,Bone_Helm_,Bone Helm,4,20,,800,,15,,1,0x000444A2,63,2,256,,70,1,103,{ bonus2 bSubEle,Ele_Dark,-15; },{},{} @@ -3328,7 +3372,7 @@ 5199,Baseball_Cap_I,Baseball Cap,4,0,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,216,{},{},{} 5200,Coppola,Coppola,4,10,,300,,0,,0,0xFFFFFFFF,63,2,256,,0,1,252,{},{},{} 5201,Party_Hat_B,Party Hat,4,20,,300,,4,,0,0xFFFFFFFF,63,2,256,,0,1,144,{ bonus bAllStats,3; },{},{} -5202,Pumpkin_Hat_,Fantastic Pumpkin-Head,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,1500; bonus3 bAddMonsterDropItem,529,RC_Player,1500; },{},{} +5202,Pumpkin_Hat_,Fantastic Pumpkin-Head,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,1500; },{},{} 5203,Tongue_Mask,Smiling Mask,4,20,,200,,2,,0,0xFFFFFFFF,63,2,513,,0,0,253,{ bonus bSpeedRate,25; },{},{} 5204,Event_Pierrot_Nose,Rudolph's Nose,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,49,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bAddMonsterDropItem,12130,30; },{},{} 5205,Wreath,Emperor's Laurel Crown,4,20,,1000,,3,,0,0xFFFFFFFF,63,2,768,,0,1,261,{ bonus bAllStats,1; bonus bMdef,3; },{},{} @@ -3388,7 +3432,7 @@ 5259,Elephant_Hat_,Elephant Hat,4,20,,500,,6,,0,0xFFFFFFFF,63,2,256,,0,1,215,{ bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1; },{},{} 5260,Cookie_Hat,Cookie Hat,4,20,,500,,2,,0,0xFFFFFFFF,63,2,256,,0,1,217,{ bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5; },{},{} 5261,Silver_Tiara_,Silver Tiara,4,20,,500,,5,,0,0xFFFFFFFF,63,2,256,,0,1,218,{ bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2); },{},{} -5262,Gold_Tiara_,Golden Tiara,4,20,,500,,5,,0,0xFFFFFFFF,63,2,256,,0,1,232,{ bonus bStr,2; bonus bUnbreakableHelm,1; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7; },{},{} +5262,Gold_Tiara_,Golden Tiara,4,20,,500,,5,,0,0xFFFFFFFF,63,2,256,,0,1,232,{ bonus bStr,2; bonus bUnbreakableHelm; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7; },{},{} 5263,Ati_Atihan_Hat,Pagdayaw,4,20,,100,,1,,0,0xFFFFFFFE,63,2,769,,20,1,303,{ bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300; },{},{} 5264,Aussie_Flag_Hat,Australian Flag Hat,4,20,,500,,4,,0,0xFFFFFFFF,63,2,256,,0,1,304,{ bonus bAllStats,2; },{ specialeffect2 EF_GHOST; specialeffect2 EF_BAT; specialeffect2 EF_BAT2; },{} 5265,Apple_Of_Archer_C,Apple of Archer,4,1,,0,,12,,0,0xFFFFFFFE,63,2,256,,1,0,72,{ bonus bDex,4; },{},{} @@ -3415,7 +3459,7 @@ 5286,Pecopeco_Hairband,Pecopeco Hairband,4,20,,0,,6,,0,0xFFFFFFFF,63,2,256,,70,0,314,{ bonus bSpeedRate,25; bonus bAspdRate,5; bonus bVariableCastrate,-5; },{},{} 5287,Vacation_Hat,Vacation Hat,4,20,,200,,2,,1,0xFFFFFFFF,63,2,256,,30,0,315,{ bonus bVit,1; },{},{} 5288,Red_Glasses,Red Glasses,4,20,,0,,1,,0,0xFFFFFFFF,63,2,512,,0,0,316,{ bonus bInt,1; },{},{} -5289,Vanilmirth_Hat,Vanilmirth Hat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,30,0,317,{ bonus bUnbreakableHelm,1; bonus3 bAutoSpell,"MG_FIREBOLT",1,50; bonus3 bAutoSpell,"MG_COLDBOLT",1,50; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,50; bonus bMdef,5; },{},{} +5289,Vanilmirth_Hat,Vanilmirth Hat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,30,0,317,{ bonus bUnbreakableHelm; bonus3 bAutoSpell,"MG_FIREBOLT",1,50; bonus3 bAutoSpell,"MG_COLDBOLT",1,50; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,50; bonus bMdef,5; },{},{} 5290,Drooping_Bunny_,Drooping Bunny,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,0,1,249,{ bonus bDex,1; bonus bFlee,2; },{},{} 5291,Kettle_Hat,Kettle Hat,4,20,,600,,8,,0,0xFFFFFFFF,63,2,256,,30,1,318,{ bonus4 bAutoSpell,"SA_DELUGE",2,10,0; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; },{},{} 5292,Dragon_Skull,Dragon Skull,4,20,,800,,10,,0,0xFFFFFFFF,63,2,256,,50,1,319,{ bonus2 bSubRace,RC_Dragon,5; },{},{} @@ -3461,7 +3505,7 @@ 5332,Loki_Mask,Loki Mask,4,0,,200,,2,,0,0xFFFFFFFF,63,2,513,,20,0,346,{ bonus bFlee2,3; },{},{} 5333,Radio_Antenna,Radio Antenna,4,0,,1500,,2,,0,0xFFFFFFFF,63,2,256,,50,1,347,{ bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; skill "MG_LIGHTNINGBOLT",1; bonus4 bAutoSpellWhenHit,"MG_THUNDERSTORM",5,30,1; },{},{} 5334,Angeling_Wanna_Fly,Flapping Angeling,4,0,,700,,5,,1,0xFFFFFFFF,63,2,256,,1,1,348,{ bonus bLuk,2; bonus bDex,1; },{},{} -5335,Jumping_Poring,Jumping Poring,4,0,,300,,3,,0,0xFFFFFFFF,63,2,256,,0,0,349,{ bonus bLuk,1; bonus bUnbreakableHelm,1; },{},{} +5335,Jumping_Poring,Jumping Poring,4,0,,300,,3,,0,0xFFFFFFFF,63,2,256,,0,0,349,{ bonus bLuk,1; bonus bUnbreakableHelm; },{},{} 5336,Guildsman_Recruiter,Guildsman Recruiter Hat,4,,,0,,4,,0,0xFFFFFFFF,63,2,256,,10,1,350,{},{},{} 5337,Party_Recruiter_Hat,Party Recruiter Hat,4,0,,0,,4,,0,0xFFFFFFFF,63,2,256,,10,1,351,{},{},{} 5338,Bf_Recruiter_Hat,BF Recruiter Hat,4,0,,0,,4,,0,0xFFFFFFFF,63,2,256,,10,1,352,{},{},{} @@ -3483,8 +3527,8 @@ 5354,Muslim_Hat_M,Muslim Hat M,4,0,,100,,4,,0,0xFFFFFFFF,63,1,256,,0,0,362,{ bonus bVariableCastrate,-5; },{},{} 5355,Muslim_Hat_F,Selendang,4,0,,100,,4,,0,0xFFFFFFFF,63,0,256,,0,0,363,{ bonus bVariableCastrate,-5; },{},{} 5356,Pumpkin_Hat_H,Festival Pumpkin Hat,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,206,{ bonus2 bSubRace,RC_Demon,5; bonus2 bAddRace,RC_Demon,5; },{},{} -5357,Wings_Of_Victory,Wings Of Victory,4,20,,200,,10,,0,0xFFFFFFFF,63,2,768,,0,0,365,{ bonus bMdef,10; bonus bUnbreakableHelm,1; },{},{} -5358,Pecopeco_Wing_Ears,Peco Ears,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm,1; },{},{} +5357,Wings_Of_Victory,Wings Of Victory,4,20,,200,,10,,0,0xFFFFFFFF,63,2,768,,0,0,365,{ bonus bMdef,10; bonus bUnbreakableHelm; },{},{} +5358,Pecopeco_Wing_Ears,Peco Ears,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm; },{},{} 5359,J_Captain_Hat,Ship Captain Hat,4,20,,300,,3,,1,0xFFFFFFFF,63,2,256,,60,1,367,{ bonus bDex,1; bonus bMaxHP,100; bonus bLongAtkRate,7; },{},{} 5360,Whikebain_Ears,Hyuke's Black Cat Ears,4,20,,200,,4,,0,0xFFFFFFFE,63,2,256,,45,1,368,{ bonus bFlee,10; bonus bCritAtkRate,10; autobonus "{ bonus2 bIgnoreMdefRaceRate,RC_ALL,25; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_AGIUP; }"; },{},{} 5361,Gang_Scarf,Gangster Scarf,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,369,{ bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1; },{},{} @@ -3523,12 +3567,12 @@ 5394,Bubblegum_Lower,Bubblegum,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1,,0,0,572,{ bonus2 bExpAddClass,Class_All,100; },{},{} 5395,Tiraya_Bonnet,Striped Hat,4,20,,500,,6,,1,0xFFFFFFFF,63,2,256,,50,1,398,{ bonus bMaxHP,100+(getrefine()*20); bonus bLuk,3; },{},{} 5396,Jasper_Crest,Jasper Crest,4,20,,700,,6,,1,0xFFFFFFFF,63,2,256,,0,1,399,{ bonus bDex,1; bonus2 bAddRace,RC_Undead,5; .@r = getrefine(); if (.@r<6) { bonus2 bAddEff2,Eff_Blind,10; } else if (.@r>8) { bonus bDex,2; } },{},{} -5397,Scuba_Mask,Scuba Gear,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,0,0,400,{ bonus2 bSubEle,Ele_Water,10; bonus2 bExpAddRace,RC_Fish,10; bonus bUnbreakableHelm,1; },{},{} +5397,Scuba_Mask,Scuba Gear,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,0,0,400,{ bonus2 bSubEle,Ele_Water,10; bonus2 bExpAddRace,RC_Fish,10; bonus bUnbreakableHelm; },{},{} 5398,Bone_Head,Bone Head,4,20,,1200,,10,,1,0x000444A2,18,2,256,,85,1,401,{ bonus bStr,2; bonus bMdef,5; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Bleeding,500; },{},{} 5399,Mandragora_Cap,Mandragora Cap,4,20,,300,,5,,1,0x00CFFF80,18,2,256,,85,0,402,{ bonus bVit,3; bonus3 bAutoSpellWhenHit,"DC_SCREAM",5,30; },{},{} 5400,Fox_Hat,Fox Hat,4,20,,200,,0,,0,0xFFFFFFFF,63,0,769,,0,0,403,{ bonus bLuk,1; },{},{} -5401,Black_Glasses,Black Frame Glasses,4,20,,200,,2,,0,0xFFFFFFFF,63,2,512,,70,0,404,{ bonus bInt,1; bonus bMdef,2; bonus bUnbreakableHelm,1; },{},{} -5402,Mischievous_Fairy,Mischievous Fairy,4,10,,200,,2,,0,0xFFFFFFFF,63,2,512,,70,0,405,{ bonus bUnbreakableHelm,1; bonus bFlee2,3; },{},{} +5401,Black_Glasses,Black Frame Glasses,4,20,,200,,2,,0,0xFFFFFFFF,63,2,512,,70,0,404,{ bonus bInt,1; bonus bMdef,2; bonus bUnbreakableHelm; },{},{} +5402,Mischievous_Fairy,Mischievous Fairy,4,10,,200,,2,,0,0xFFFFFFFF,63,2,512,,70,0,405,{ bonus bUnbreakableHelm; bonus bFlee2,3; },{},{} 5403,Fish_In_Mouth,Fish In Mouth,4,10,,200,,0,,0,0xFFFFFFFF,63,2,1,,30,0,406,{ bonus2 bAddMonsterDropItem,579,500; bonus2 bAddItemHealRate,579,25; },{},{} 5404,Blue_Ribbon,Blue Ribbon,4,10,,100,,2,,1,0xFFFFFFFF,63,2,256,,45,1,407,{ bonus4 bAutoSpellWhenHit,"AC_CONCENTRATION",2,7,0; },{},{} 5405,Filir_Hat,Filir Hat,4,10,,200,,2,,0,0xFFFFFFFF,63,2,256,,80,0,408,{ bonus bShortWeaponDamageReturn,1; },{},{} @@ -3538,7 +3582,7 @@ 5409,New_Cowboy_Hat,Purple Cowboy Hat,4,20,,500,,8,,1,0xFFFFFFFF,63,2,256,,0,1,411,{ bonus bInt,2; bonus bVit,2; bonus bMaxSP,50; },{},{} 5410,Bread_Bag2,Brown Paperbag Hat,4,20,,200,,6,,0,0xFFFFFFFF,63,2,769,,0,0,412,{ bonus bMaxHP,100; bonus2 bResEff,Eff_Stun,400; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4; },{},{} 5411,White_Snake_Hat,White Snake Hat,4,20,,500,,4,,0,0xFFFFFFFF,63,2,256,,0,1,413,{ bonus bDex,2; },{},{} -5412,Sweet_Candy,Sweet Candy,4,20,,100,,1,,0,0xFFFFFFFF,63,2,1,,0,0,414,{ bonus bUnbreakableHelm,1; },{},{} +5412,Sweet_Candy,Sweet Candy,4,20,,100,,1,,0,0xFFFFFFFF,63,2,1,,0,0,414,{ bonus bUnbreakableHelm; },{},{} 5413,Popcorn_Hat,Pop Corn Hat,4,20,,300,,4,,0,0xFFFFFFFF,63,2,256,,0,0,415,{ bonus2 bSubEle,Ele_Wind,10; },{},{} 5414,Campfire_Hat,Camp Fire Hat,4,20,,300,,4,,0,0xFFFFFFFF,63,2,256,,0,0,416,{ bonus2 bSubEle,Ele_Fire,10; bonus4 bAutoSpellWhenHit,"MG_FIREBALL",5,100,1; },{},{} 5415,Poring_Cake_Cap,Poring Cake Hat,4,20,,1000,,10,,0,0xFFFFFFFF,63,2,256,,40,1,417,{ bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; bonus bFlee2,5; bonus bAspdRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; },{},{} @@ -3598,7 +3642,7 @@ 5469,Noble_Hat,Musketeer Hat,4,20,,300,,4,,1,0xFFFFFFFF,63,2,256,,60,1,466,{ bonus bDex,3; bonus bFlee,3; .@r = getrefine(); if(.@r>=7){ bonus bFlee,3; bonus bLongAtkRate,3; } if(.@r>=9){ bonus bFlee,4; bonus bLongAtkRate,2; } },{},{} 5470,Eyes_Of_Darkness,Eye Of Darkness,4,20,,100,,1,,0,0xFFFFFFFF,63,2,512,,50,0,467,{ bonus bDex,1; bonus2 bResEff,Eff_Blind,10000; },{},{} 5471,Hairband_Of_Reginleif,Hairband Of Reginleif,4,20,,800,,2,,0,0xFFFFFFFF,63,2,512,,50,0,468,{ bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3; },{},{} -5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,554,RC_DemiHuman,200; bonus3 bAddMonsterDropItem,554,RC_Player,200; },{},{} +5472,Red_White_Hat,Red Hat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,0,1,469,{ bonus3 bAddMonsterDropItem,554,RC_DemiHuman,200; },{},{} 5473,Forceps_Hairpin,Nipper Crab Hairpin,4,20,,500,,8,,0,0xFFFFFFFF,63,2,256,,30,1,470,{ bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,30; bonus3 bAddMonsterDropItem,991,RC_Fish,100; },{},{} 5474,Notice_Board,AFK Hat,4,20,,700,,2,,0,0xFFFFFFFF,63,2,256,,10,0,471,{},{},{} 5475,Cube_Mask,Mask Cube,4,20,,100,,1,,0,0xFFFFFFFF,63,2,513,,0,0,472,{ bonus bAllStats,1; },{},{} @@ -3624,7 +3668,7 @@ 5495,Power_Of_Thor,Power Of Thor,4,20,,100,,6,,1,0xFFFFFFFF,63,2,256,,0,1,493,{ bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5; },{},{} 5496,Dice_Hat,Dice Hat,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,50,0,494,{ bonus bLuk,4; },{},{} 5497,King_Tiger_Doll_Hat,King Tiger Doll Hat,4,20,,400,,6,,1,0xFFFFFFFE,63,2,256,,1,1,495,{ bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*getrefine(); }",3*.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Eddga Power !\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*getrefine(); }",.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \"Eddga Power !\"; }"; },{},{} -5498,Wondering_Wolf_Helm,Wandering Wolf Helm,4,20,,600,,5,,1,0xFFFFFFFE,63,2,768,,1,0,490,{ bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; } },{},{} +5498,Wondering_Wolf_Helm,Wandering Wolf Helm,4,20,,600,,5,,1,0xFFFFFFFE,63,2,768,,1,1,490,{ bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; } },{},{} 5499,Pizza_Hat,Pizza Hat,4,20,,600,,0,,0,0xFFFFFFFF,63,2,256,,0,0,487,{ skill "SM_PROVOKE",1; },{},{} 5500,Icecream_Hat,Icecream Hat,4,0,,300,,6,,0,0xFFFFFFFF,63,2,256,,30,1,488,{ bonus bMdef,3; skill "MG_FROSTDIVER",3; },{},{} 5501,Pirate's_Pride,Pirate's Pride,4,0,,100,,6,,0,0xFFFFFFFF,63,2,256,,10,0,496,{ bonus2 bAddRace2,RC2_Ninja,5; bonus2 bSubRace2,RC2_Ninja,5; },{},{} @@ -3657,7 +3701,7 @@ 5528,King_Frog_Hat,Frog King Hat,4,20,,500,,4,,1,0xFFFFFFFE,63,2,256,,30,0,522,{ bonus bAgi,1; },{},{} 5529,Evil's_Bone_Hat,Satanic Bone Helm,4,20,,600,,6,,1,0xFFFFFFFF,63,2,768,,70,1,523,{ bonus bStr,2; bonus bInt,2; bonus bMdef,2; bonus2 bSubEle,Ele_Neutral,5; skill "WZ_FROSTNOVA",1; },{},{} 5530,Raven_Cap,Raven Cap,4,20,,100,,6,,1,0xFFFFFFFF,63,2,256,,30,1,524,{},{},{} -5531,B_Dragon_Hat,Baby Dragon Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,0,1,525,{ bonus bDex,2; skill "TF_DOUBLE",max(getskilllv("TF_DOUBLE"),5); },{},{} +5531,B_Dragon_Hat,Baby Dragon Hat,4,45000,,100,,1,,1,0xFFFFFFFF,63,2,256,,0,1,525,{ bonus bDex,2; .@bonus = max(getskilllv("TF_DOUBLE"), 5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus * 5; },{},{} 5532,Pirate_Dagger_J,Pirate Dagger,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,1,327,{ bonus bShortWeaponDamageReturn,1; },{},{} 5533,Emperor_Wreath_J,Emperor Wreath,4,20,,800,,3,,1,0xFFFFFFFF,63,2,256,,80,1,261,{ bonus bAllStats,1; },{},{} 5534,Fox_Hat_J,Fox Hat,4,20,,100,,1,,0,0xFFFFFFFF,63,2,513,,70,0,403,{ bonus bAgi,1; bonus bFlee2,2; },{},{} @@ -3680,13 +3724,13 @@ 5551,Holy_Egg_Hat,Holy Egg Hat,4,20,,0,,1,,0,0xFFFFFFFF,63,2,256,,0,1,537,{},{},{} 5552,Fest_Lord_Circlet,Festival Grand Circlet,4,0,,0,,8,,0,0xFFFFFFFF,63,2,256,,0,0,93,{ bonus bStr,3; bonus bInt,3; bonus bMdef,3; },{},{} 5553,Fest_Bunny_Band,Festival Bunny Band,4,0,,0,,7,,0,0xFFFFFFFF,63,2,256,,0,0,15,{ bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9; },{},{} -5554,Octopus_Hat,Octopus Hat,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,538,{ bonus bMdef,3; bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,1; },{},{} +5554,Octopus_Hat,Octopus Hat,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,0,1,538,{ bonus bMdef,3; bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm; },{},{} 5555,Leaf_Cat_Hat,Leaf Cat Hat,4,20,,100,,6,,0,0xFFFFFFFF,63,2,256,,0,1,539,{ bonus bAgi,2; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,50; },{},{} 5556,Fur_Seal_Hat,Seal Hat,4,20,,500,,3,,0,0xFFFFFFFF,63,2,769,,55,1,540,{ bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,100; },{},{} 5557,Wild_Rose_Hat,Wild Rose Hat,4,20,,500,,6,,1,0xFFFFFFFE,63,2,256,,20,1,541,{ bonus bAgi,3; },{},{} 5558,Saci_Hat,Luxury Hat,4,20,,100,,6,,1,0xFFFFFFFF,63,2,256,,30,1,542,{ bonus3 bAddMonsterDropItem,510,RC_Plant,20; },{},{} 5559,Piece_Of_White_Cloth_E,Piece Of White Cloth,4,0,,0,,1,,0,0xFFFFFFFF,63,2,256,,0,1,543,{ bonus2 bAddClass,Class_All,6; bonus bMatkRate,6; bonus bLongAtkRate,6; bonus bHealPower,6; bonus bVariableCastrate,-20; bonus bAspd,1; },{},{} -5560,Bullock_Helm_J,Bullock Helm,4,20,,3000,,3,,0,0xFFFFFFFF,63,2,256,,75,1,322,{ bonus bMaxHP,100; bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} +5560,Bullock_Helm_J,Bullock Helm,4,20,,3000,,3,,0,0xFFFFFFFF,63,2,256,,75,1,322,{ bonus bMaxHP,100; bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20; },{},{} 5561,Rabbit_Magic_Hat_J,Magic Rabbit Hat,4,0,,800,,1,,0,0xFFFFFFFF,63,2,256,,0,1,497,{ bonus bInt,1; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"MG_FIREBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_COLDBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_LIGHTNINGBOLT",3,10,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10; },{},{} 5562,Good_Wedding_Veil_J,Luxurious Wedding Veil,4,0,,500,,0,,1,0xFFFFFFFF,63,2,768,,45,0,489,{ bonus bMdef,10; bonus bVariableCastrate,-3; bonus bUseSPrate,-5; },{},{} 5563,Dolor_Hat,Dolor Hat,4,20,,100,,1,,1,0xFFFFFFFF,63,2,256,,0,0,547,{ bonus3 bAutoSpell,"PR_LEXAETERNA",1,15; },{},{} @@ -3717,7 +3761,7 @@ 5588,Leo_Crown,Leo Crown,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,1,1,565,{ bonus bStr,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bDef,1; bonus bFlee,10; bonus3 bAutoSpell,"TK_SEVENWIND",4,50; } },{},{} 5589,Leo_Diadem,Leo Diadem,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,1,1,566,{ bonus bDex,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bFlee,10; bonus bAspdRate,3; autobonus "{ bonus bSplashRange,1; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; } },{},{} 5590,K_Poring_Cake_Cap,Poring Cake Hat,4,20,,200,,1,,0,0xFFFFFFFF,63,2,256,,0,1,417,{ bonus bLuk,3; bonus bMdef,5; bonus bMaxHP,BaseLevel*2; bonus bMaxSP,50; },{},{} -5591,Desert_Prince,Desert Prince,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,30,0,567,{ bonus bUnbreakableHelm,0; },{},{} +5591,Desert_Prince,Desert Prince,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,30,0,567,{ bonus bUnbreakableHelm; },{},{} 5592,Sigrun's_Wing,Sigrun's Wings,4,20,,100,,2,,0,0xFFFFFFFF,63,2,512,,80,0,568,{ if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bAspd,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||Class==Job_Ninja||Class==Job_Soul_Linker){ bonus bMatk,5; bonus bHealPower,2; } else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bLongAtkRate,2; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,120; bonus bMaxSP,60; } },{},{} 5593,K_Rabbit_Bonnet,Rabbit Bonnet,4,20,,200,,1,,1,0xFFFFFFFF,63,2,768,,1,1,549,{ bonus bBaseAtk,10; bonus bMatk,10; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; bonus bDelayRate,-3; if(getrefine()>6) { bonus2 bSubDefEle,Ele_All,5; } },{},{} 5594,Donut_In_Mouth,Donut In Mouth,4,20,,50,,1,,0,0xFFFFFFFF,63,2,1,,1,0,569,{ bonus2 bHPRegenRate,1,10000; bonus bMaxHP,100; },{},{} @@ -3782,7 +3826,7 @@ 5653,Darkness_Helm_J,Darkness Helm,4,20,,500,,3,,1,0xFFFFFFFF,63,2,256,,70,1,586,{},{},{} 5654,Holy_Marching_Hat_J,Holy Marching Hat,4,20,,200,,5,,1,0xFFFFFFFF,63,2,256,,1,1,587,{ bonus bInt,1; bonus bMdef,5; bonus bMatkRate,2; .@r = getrefine(); if(.@r>=7) bonus bHealPower,5; if(.@r>=9){ bonus bMatk,5; bonus bHealPower,5; } },{},{} 5655,Dark_Snake_Lord_Hat_J,Evil Snake Lord Hat,4,20,,500,,2,,0,0xFFFFFFFF,63,2,256,,60,1,372,{ bonus bInt,2; bonus bAgi,2; bonus bDex,-2; autobonus "{ bonus bVariableCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{} -5656,Scooter_Hat_J,Scooter Helmet,4,20,,1000,,7,,1,0xFFFFFFFF,63,2,256,,50,1,588,{ bonus bUnbreakableHelm,1; },{},{} +5656,Scooter_Hat_J,Scooter Helmet,4,20,,1000,,7,,1,0xFFFFFFFF,63,2,256,,50,1,588,{ bonus bUnbreakableHelm; },{},{} 5657,Antique_Pipe_J,Captain's Pipe,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,30,0,383,{},{},{} 5658,Imp_Hat,Imp Hat,4,20,,400,,1,,1,0xFFFFFFFF,63,2,256,,1,1,589,{ bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5; },{},{} 5659,Sleepr_Hat,Sleeper Hat,4,20,,400,,1,,0,0xFFFFFFFF,63,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{} @@ -3799,14 +3843,14 @@ 5670,Aniv_Star_Hat,Aniv Star Hat,4,20,,300,,0,,0,0xFFFFFFFF,63,2,256,,1,1,599,{},{},{} 5671,Drooping_Morocc_Minion,Drooping Morocc Minion,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,70,0,600,{ bonus bSPGainValue,2; bonus3 bAutoSpellWhenHit,"NPC_CRITICALWOUND",2,2; },{},{} 5672,Southern_Cross,Southern Cross,4,20,,600,,3,,1,0xFFFFFFFF,63,2,256,,50,1,601,{ bonus bInt,1; },{},{} -5673,Home_Cherry_Blossom,Home Cherry Blossom,4,20,,100,,2,,1,0xFFFFFFFF,63,2,256,,30,1,602,{ bonus bNoCastCancel,0; bonus bVariableCastrate,35; },{},{} +5673,Home_Cherry_Blossom,Home Cherry Blossom,4,20,,100,,2,,1,0xFFFFFFFF,63,2,256,,30,1,602,{ bonus bNoCastCancel; bonus bVariableCastrate,35; },{},{} 5674,Pig_Moneybox,Pig Moneybox,4,20,,1000,,3,,0,0xFFFFFFFF,63,2,256,,10,0,603,{},{},{} -5675,Poring_Letter,Poring Letter,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,10,0,604,{ bonus2 bAddMonsterDropItem,619,10; bonus bUnbreakableHelm,1; },{},{} +5675,Poring_Letter,Poring Letter,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,10,0,604,{ bonus2 bAddMonsterDropItem,619,10; bonus bUnbreakableHelm; },{},{} 5676,Scorpio_Crown,Scorpio Crown,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,1,1,605,{ bonus bAspdRate,3; bonus2 bSubEle,Ele_Water,5; .@r = getrefine(); if (.@r>6) { bonus3 bAutoSpell,"TK_SEVENWIND",3,20; } if (.@r>7) { bonus bAspdRate,2; } if (.@r>8) { bonus3 bAutoSpell,"WZ_FROSTNOVA",5,10; } if (.@r>9) { bonus bAspdRate,2; bonus bBaseAtk,5; } },{},{} 5677,Scorpio_Diadem,Scorpio Diadem,4,20,,300,,3,,0,0xFFFFFFFF,63,2,256,,1,1,606,{ bonus bDex,2; if (getrefine()>6) { bonus bDex,1; bonus bAtk,5; } },{},{} -5678,Notation_Hairband,Notation Hairband,4,200,,100,,5,,0,0xFFFFFFFF,63,2,256,,1,1,607,{ bonus bUnbreakableHelm,1; },{},{} +5678,Notation_Hairband,Notation Hairband,4,200,,100,,5,,0,0xFFFFFFFF,63,2,256,,1,1,607,{ bonus bUnbreakableHelm; },{},{} 5679,Engineer_Cap,Engineer Cap,4,20,,200,,2,,1,0xFFFFFFFF,63,2,256,,10,1,608,{ bonus2 bAddRace,RC_Formless,10; },{},{} -5680,Hawkeyes,Hawkeyes,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,10,0,609,{ bonus bHit,10; bonus bUnbreakableHelm,1; },{},{} +5680,Hawkeyes,Hawkeyes,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,10,0,609,{ bonus bHit,10; bonus bUnbreakableHelm; },{},{} 5681,F_Ribbon_Green,Green Ribbon,4,800,,100,,1,,0,0xFFFFFFFF,63,0,256,,0,1,244,{ bonus bMdef,3; },{},{} 5682,Triangle_Rune_Cap,Triangle Rune Cap,4,20,,300,,5,,1,0xFFFFFFFF,63,2,256,,1,1,610,{ bonus bInt,1; bonus bHealPower,2; if (getrefine() > 6) { bonus bMatk,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",8,150,BF_MAGIC,0; } else { bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0; } },{},{} 5683,Majestic_Goat_Repl,Baphomet Horns,4,20,,100,,5,,0,0xFFFFFFFF,63,2,256,,1,1,41,{},{},{} @@ -3817,8 +3861,8 @@ 5688,2009Love_Daddy,2009 Love Dad,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,1,1,611,{ bonus bVit,2; },{},{} 5689,Queen_Ant_Diadem,Queen Ant Diadem,4,20,,300,,1,,0,0xFFFFFFFF,63,2,256,,75,1,612,{ bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,5; bonus2 bSubRace,RC_Insect,5; },{},{} 5690,Red_Wing_Hat,Red Wing Hat,4,20,,600,,5,,0,0xFFFFFFFF,63,2,256,,1,1,613,{ bonus bHPrecovRate,20; bonus bSPrecovRate,20; },{},{} -5691,Catain_Bandanna,Sailor's Bandana,4,20,,10,,1,,0,0xFFFFFFFF,63,2,256,,1,1,542,{ bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; bonus2 bResEff,Eff_Poison,2000; bonus bUnbreakableHelm,0; },{},{} -5692,Sea_Cat_Hat,Sea Cat Hat,4,20,,10,,1,,0,0xFFFFFFFF,63,2,256,,1,1,539,{ bonus bDex,1; bonus2 bResEff,Eff_Curse,2000; bonus bUnbreakableHelm,0; },{},{} +5691,Catain_Bandanna,Sailor's Bandana,4,20,,10,,1,,0,0xFFFFFFFF,63,2,256,,1,1,542,{ bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; bonus2 bResEff,Eff_Poison,2000; bonus bUnbreakableHelm; },{},{} +5692,Sea_Cat_Hat,Sea Cat Hat,4,20,,10,,1,,0,0xFFFFFFFF,63,2,256,,1,1,539,{ bonus bDex,1; bonus2 bResEff,Eff_Curse,2000; bonus bUnbreakableHelm; },{},{} 5693,No_Fear_Underware,No Fear Underwear,4,0,,0,,10,,0,0xFFFFFFFF,63,2,256,,20,0,30,{ bonus bStr,1; bonus bInt,1; bonus bDex,1; bonus bMaxHP,700; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 5694,No_Fear_P_Headgear,No Fear P Headgear,4,0,,0,,1,,0,0xFFFFFFFE,63,2,256,,20,0,614,{ bonus bVit,1; bonus bMaxHP,100; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2; },{},{} 5695,E_Blue_Drooping_Kitty,E Blue Drooping Kitty,4,250000,,500,,1,,0,0,7,2,256,,0,1,277,{ bonus bMdef,15; },{},{} @@ -3896,7 +3940,7 @@ 5767,Samurai_Mask,Samurai Mask,4,20,,300,,1,,0,0xFFFFFFFF,63,2,1,,50,0,644,{ bonus2 bAddClass,Class_All,1; },{},{} 5768,Sakura_Coronet,Sakura Coronet,4,20,,800,,1,,1,0xFFFFFFFF,63,2,256,,1,1,645,{ bonus bMdef,3; bonus bMaxSP,25; },{},{} 5769,Gold_Angel_Sculpture,Gold Angel Sculpture,4,100,,0,,2,,0,0xFFFFFFFF,63,2,256,,70,0,646,{ skill "RG_GRAFFITI",1; },{},{} -5770,Splash_Hat,Splash Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,649,{ autobonus "{ sc_start SC_WINDWEAPON,180000,1; }",3,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{} +5770,Splash_Hat,Splash Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,649,{ autobonus "{}",3,180000,BF_WEAPON,"{ sc_start SC_WINDWEAPON,180000,1; specialeffect2 EF_ENHANCE; }"; },{},{} 5771,Family_Hat,Family Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,1,1,650,{ bonus bDex,1; bonus bMdef,1; bonus bMaxHPrate,2; bonus bMaxSPrate,2; skill "PR_MAGNIFICAT",1; },{},{} 5772,Red_Navy_Hat,Red Navy Hat,4,3000,,500,,1,,0,0xFFFFFFFF,63,2,256,,95,1,651,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} 5773,Navy_Beret,Navy Beret,4,3000,,500,,1,,0,0xFFFFFFFF,63,2,256,,95,1,652,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} @@ -3914,7 +3958,7 @@ 5785,Green_Bunny_Hairband,Green Bunny Hairband,4,20,,200,,0,,0,0xFFFFFFFF,63,2,256,,1,1,664,{ bonus bStr,2; bonus bInt,1; bonus bDex,1; },{},{} 5786,Ancient_Elven_Ear,Ancient Elven Ear,4,10,,200,,1,,0,0xFFFFFFFF,63,2,512,,1,0,665,{ bonus bLuk,1; bonus bMaxHP,100; bonus bMaxSP,30; },{},{} 5787,Tha_Maero_Mask,Tha Maero Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,513,,30,0,666,{ bonus bMdef,2; },{},{} -5788,3D_Glasses,3D Glasses,4,20,,100,,1,,0,0xFFFFFFFF,63,2,512,,1,0,661,{ bonus2 bMagicAddRace,RC_Formless,4; bonus2 bSubEle,Ele_Neutral,5; bonus bUnbreakableHelm,0; },{},{} +5788,3D_Glasses,3D Glasses,4,20,,100,,1,,0,0xFFFFFFFF,63,2,512,,1,0,661,{ bonus2 bMagicAddRace,RC_Formless,4; bonus2 bSubEle,Ele_Neutral,5; bonus bUnbreakableHelm; },{},{} 5789,Thanatos_Mal_Mask,Thanatos Mal Mask,4,20,,100,,3,,0,0xFFFFFFFF,63,2,513,,30,0,667,{ bonus bVit,1; },{},{} 5790,Holy_Mom_Love,TM,4,20,,500,,0,,1,0xFFFFFFFF,63,2,768,,45,1,610,{ bonus2 bSubRace,RC_Demon,-5; bonus2 bSubRace,RC_Undead,-5; bonus3 bAutoSpell,"AL_BLESSING",1,20; },{},{} 5791,Tenkaippin_Ramen,Tenkaippin Ramen,4,20,,500,,1,,0,0xFFFFFFFF,63,2,256,,30,0,668,{ bonus bInt,-1; bonus bDex,4; },{},{} @@ -3987,13 +4031,13 @@ 5858,Victory_FB_Hat,Victory FB Hat,4,20,,600,,2,,1,0xFFFFFFFF,63,2,256,,1,1,673,{ bonus bInt,2; bonus bDex,2; autobonus "{ bonus bMatkRate,5; bonus bDef,-30; }",3,10000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; },{},{} 5859,Glory_FB_Hat,Glory FB Hat,4,20,,600,,2,,1,0xFFFFFFFF,63,2,256,,1,1,674,{ bonus bAllStats,1; bonus bAspd,1; bonus bBaseAtk,BaseLevel/7; bonus bMatk,BaseLevel/7; },{},{} 5864,Shadow_Booster,Magical Booster,4,10,,300,,,,0,0xFFFFFFFF,63,2,512,,1,1,873,{ bonus bAspd,1; bonus bDelayrate,-1; },{},{} -5868,Bushy_Moustache,Bushy Moustache,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,1004,{ bonus bUnbreakableHelm,1; bonus bBaseAtk,10; bonus bMatk,10; },{},{} +5868,Bushy_Moustache,Bushy Moustache,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,1004,{ bonus bUnbreakableHelm; bonus bBaseAtk,10; bonus bMatk,10; },{},{} 5869,Mimic_Egg_Shell,Mimic Egg Shell,4,10,,100,,4,,0,0xFFFFFFFF,63,2,256,,0,1,999,{ bonus2 bAddEffWhenHit,Eff_Stone,600; bonus bSpeedRate,25; },{},{} 5870,Bunny_Egg_Shell,Bunny Egg Shell,4,10,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,1000,{ bonus bAgi,3; bonus bAspd,1; },{},{} 5871,Picky_Egg_Shell,Picky Egg Shell,4,10,,100,,2,,0,0xFFFFFFFF,63,2,256,,0,1,1001,{ bonus bVit,3; bonus bMdef,2; },{},{} -5873,Helmet_Of_Siegfried,Helmet Of Siegfried,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1055,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm,1; },{},{} -5874,Circlet_Of_Kriemhild,Circlet Of Kriemhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1056,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,1; },{},{} -5875,Diadem_Of_Bruenhild,Diadem Of Bruenhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1057,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,1; },{},{} +5873,Helmet_Of_Siegfried,Helmet Of Siegfried,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1055,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm; },{},{} +5874,Circlet_Of_Kriemhild,Circlet Of Kriemhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1056,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm; },{},{} +5875,Diadem_Of_Bruenhild,Diadem Of Bruenhild,4,20,,600,,7,,1,0x000444A2,63,2,256,,60,1,1057,{ bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm; },{},{} 5881,Weissbier_Hat,Weissbier Hat,4,20,,300,,5,,0,0xFFFFFFFF,63,2,256,,0,1,1079,{ bonus bMaxHPrate,3; bonus bMaxSPrate,3; bonus bDex,10; if(getrefine()>6){ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bDex,5; } },{},{} 5882,Red_Wizardry_Hat_C,Red Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,282,{ bonus bInt,2; bonus bMaxSP,150; },{},{} 5883,White_Wizardry_Hat_C,Gray Mage Hat C,4,20,,300,,1,,0,0x00810204,63,2,256,,0,1,283,{ bonus bInt,2; bonus bMaxSP,150; },{},{} @@ -4005,24 +4049,31 @@ 5893,RCC2013_2ND_CROWN,RCC2013 2ND CROWN,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1107,{ bonus bAllStats,4; skill "AL_TELEPORT",1; },{ sc_start SC_SPEEDUP0,-1,25; },{ sc_end SC_SPEEDUP0; } 5894,RCC2013_3RD_CROWN,RCC2013 3RD CROWN,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1108,{ bonus bAllStats,3; skill "AL_TELEPORT",1; },{ sc_start SC_SPEEDUP0,-1,25; },{ sc_end SC_SPEEDUP0; } 5895,RCC2013_ANV_Hat,RCC2013 ANV Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1109,{ bonus bAllStats,1; bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; },{},{} -5906,Oni_Horns_,Oni Horns,4,0,,20,,10,,1,0x00001000,63,2,256,,100,1,1127,{ bonus2 bSkillAtk,"GC_COUNTERSLASH",(10*getskilllv("GC_WEAPONBLOCKING")); .@r = getrefine(); if(.@r > 6){ bonus bAtk,20; bonus bHit,5; } if(.@r > 9){ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,10; } },{},{} +5900,Divine_Guard_Hat,Divine Guard Hat,4,0,,200,,10,,1,0x00004000,56,2,256,,100,1,1121,{ .@r = getrefine(); bonus2 bSubSize,Size_All,5; if(.@r>=7) { .@level = getskilllv("AL_HEAL"); bonus3 bAutoSpellWhenHit,"AL_HEAL",(.@level ? .@level : 5),10; } if(.@r>=9) { bonus2 bSkillAtk,"LG_RAYOFGENESIS",20; } },{},{} +5901,Focus_Beret,Focus Beret,4,0,,200,,10,,1,0x00008000,56,2,256,,100,1,1122,{ .@r = getrefine(); bonus4 bAutoSpellOnSkill,"SR_DRAGONCOMBO","SR_FALLENEMPIRE",max(getskilllv("SR_FALLENEMPIRE"),1),100; if(.@r>=7) { autobonus "{ bonus bAspd,2; }",30,5000,0,"{ specialeffect2 EF_ENHANCE; }"; } if(.@r>=9) { bonus2 bSkillAtk,"SR_FALLENEMPIRE",30; } },{},{} +5902,Harvester_Hat,Harvester Hat,4,0,,200,,10,,1,0x00040000,56,2,256,,100,1,1123,{ .@r = getrefine(); bonus2 bAddMonsterDropItem,6211,100; bonus2 bAddMonsterDropItem,6212,100; if(.@r>=7) { bonus2 bAddMonsterDropItem,6210,50; } if(.@r>=9) { bonus2 bSkillAtk,"GN_CARTCANNON",15; } },{},{} +5903,Deadman_Bandana,Deadman Bandana,4,0,,200,,15,,1,0x00810204,63,2,256,,99,1,1124,{ .@r = getrefine(); .@rate = 1; bonus bCritical,.@r*2; bonus bFixedCastrate,-2; bonus3 bAutoSpellWhenHit,"SL_SWOO",getskilllv("SL_SWOO"),(.@rate*10); if (.@r>=7) { bonus bMatk,20; .@rate += 3; } if(.@r>=9) { bonus bVariableCastrate,-20; bonus2 bSkillUseSP,"SL_STUN",5; bonus2 bSkillUseSP,"SL_SMA",5; } },{},{} +5904,Inconspicuous_Hat,Inconspicuous Hat,4,0,,200,,10,,1,0x00020000,56,2,256,,100,1,1125,{ .@r = getrefine(); if (.@r>=9) { .@matk = 5; } bonus bMatkRate,(7+.@matk); if (.@r>=7) { bonus bMatk,(readparam(bInt)/5)*2; } },{},{} +5905,Lyrica_Hat,Lyrica Hat,4,0,,200,,10,,1,0x00080000,56,2,256,,100,1,1126,{ .@r = getrefine(); bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if(.@r>=7) { bonus bFixedCastrate,4*(getskilllv("WM_LESSON")); } if(.@r>=9) { bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",10; } },{},{} +5906,Oni_Horns_,Oni Horns,4,0,,20,,10,,1,0x00001000,56,2,256,,100,1,1127,{ bonus2 bSkillAtk,"GC_COUNTERSLASH",(10*getskilllv("GC_WEAPONBLOCKING")); .@r = getrefine(); if(.@r > 6){ bonus bAtk,20; bonus bHit,5; } if(.@r > 9){ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,10; } },{},{} +5907,Sea_Captain_Hat,Sea Captain Hat,4,0,,200,,20,,1,0x00000400,56,2,256,,100,1,1128,{ bonus2 bSkillAtk,"NC_AXEBOOMERANG",20; .@dmg = 20; .@r = getrefine(); if (.@r>=7) { .@dmg += getskilllv("BS_WEAPONRESEARCH"); } if (.@r>=9) { .@dmg += getskilllv("NC_TRAININGAXE"); } bonus2 bSkillAtk,"NC_AXETORNADO",.@dmg; },{},{} 5914,Earmuff_Flowerform,C Flutter Butterfly,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1378,{ hateffect HAT_EF_FLUTTER_BUTTERFLY,true; },{},{ hateffect HAT_EF_FLUTTER_BUTTERFLY,false; } 5917,Yellow_Scarf,Yellow Scarf,4,0,,100,,,,0,0xFFFFFFFF,63,2,1,,90,0,1170,{ bonus bLongAtkDef,3; },{},{} -5918,Gambler_Seal,Gambler Seal,4,0,,500,,,,0,0xFFFFFFFF,63,2,512,,,0,1202,{ bonus bCritical,3; bonus bCritAtkRate,3; bonus2 bSubSkill,"RA_ARROWSTORM",10; bonus2 bSubSkill,"SR_GATEOFHELL",10; .@dex = readparam(bDex); .@luk = readparam(bLuk); bonus bCritAtkRate,-(.@dex/10)*2; bonus bCritical,.@luk/10; bonus bBaseAtk,(.@luk/10)*2; bonus bMatk,(.@luk/10)*2; if (.@luk > 120) { bonus bCritical,10; bonus bCritAtkRate,10; bonus2 bSubSkill,"RA_ARROWSTORM",30; bonus2 bSubSkill,"SR_GATEOFHELL",30; } else if (.@luk > 108) { bonus bCritical,5; bonus bCritAtkRate,10; } },{},{} +5918,Gambler_Seal,Gambler Seal,4,0,,500,,,,0,0xFFFFFFFF,63,2,512,,70,0,1202,{ .@dex = readparam(bDex); .@luk = readparam(bLuk); .@critical = 3 + (.@luk / 10); .@critical_dmg = 3 - (.@dex/10) * 2; .@sub_arrowstorm = 10; .@sub_gateofhell = 10; bonus bBaseAtk,(.@luk/10)*2; bonus bMatk,(.@luk / 10) * 2; if (.@luk > 107) { .@critical += 5; .@critical_dmg += 10; } if (.@luk > 119) { .@critical += 10; .@critical_dmg += 17; .@sub_arrowstorm += 30; .@sub_gateofhell += 30; } bonus bCritical,.@critical; bonus bCritAtkRate,.@critical_dmg; bonus2 bSubSkill,"RA_ARROWSTORM",.@sub_arrowstorm; bonus2 bSubSkill,"SR_GATEOFHELL",.@sub_gateofhell; },{},{} 5919,Camellia_Hair_Pin,Camellia Hair Pin,4,0,,1000,,,,1,0xFFFFFFFF,63,2,256,,50,1,1203,{ bonus bMdef,20; bonus3 bAutoSpell,"AL_PNEUMA",1,30+getrefine()*5; /* CONFIRM The Rate*/ },{},{} 5920,Medical_Boots,Medical Boots,4,0,,300,,10,,0,0xFFFFFFFF,63,2,64,,10,1,,{ .@r = getrefine(); bonus bHealPower,10+((.@r/2) * 2); bonus2 bSkillUseSP,"AB_CHEAL",(.@r * 5); },{},{} 5943,Owlviscount_Silk_Hat,Owl Viscount Silk Hat,4,0,,500,,15,,1,0xFFFFFFFF,63,2,256,,70,1,1323,{ bonus bInt,1; bonus bAspdRate,10; .@r = getrefine(); bonus bMatk,7*.@r; autobonus "{ .@r = getrefine(); bonus bAspdRate,(.@r >= 9 ? 40 : ((.@r >= 7) ? 10 : ((.@r >= 5) ? 5 : 1))); }",.@r*20,30000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER }"; },{},{} 5966,KarduiEar,KarduiEar,4,0,,300,,,,0,0xFFFFFFFF,63,2,512,,70,0,1357,{ .@dex = readparam(bDex); bonus bMatk,(.@dex > 10) ? .@dex/10*2 : 0; if (.@dex > 107) { bonus bVariableCastrate,-10; bonus bMatk,60; } if (.@dex > 119) { bonus bVariableCastrate,-5; bonus bMatk,100; } },{},{} 5967,FlyingGalapago,Flying Galapago,4,0,,500,,,,0,0xFFFFFFFF,63,2,1,,110,0,1358,{ set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus bAgi,1; bonus3 bAutoSpell,"HT_BLITZBEAT",.@bblvl,50 + (.@luk / 3) + (.@bblvl * 2); bonus2 bSkillAtk,"HT_BLITZBEAT",getskilllv("HT_STEELCROW") * 40; },{},{} -5968,DVAngelNurseCap,DVAngelNurseCap,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,50,1,1359,{ if (BaseClass == Job_Acolyte) bonus bHealPower,3; bonus bNoCastCancel,1; .@r = getrefine(); bonus bHealPower,(.@r > 8) ? 12 : ((.@r > 6) ? 9 : ((.@r > 4) ? 6 : 0)); },{},{} -5969,QueenAnzRevenge,QueenAnzRevenge,4,0,,400,,7,,1,0xFFFFFFFF,63,2,256,,100,1,1360,{ bonus bStr,5; .@r = getrefine(); bonus2 bAddClass,Class_All,7+(.@r > 8 ? 4 : (.@r > 6 ? 3 : (.@r > 4 ? 2 : 0))); bonus bNoSizeFix,1; },{},{} +5968,DVAngelNurseCap,DVAngelNurseCap,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,50,1,1359,{ if (BaseClass == Job_Acolyte) bonus bHealPower,3; bonus bNoCastCancel; .@r = getrefine(); bonus bHealPower,(.@r > 8) ? 12 : ((.@r > 6) ? 9 : ((.@r > 4) ? 6 : 0)); },{},{} +5969,QueenAnzRevenge,QueenAnzRevenge,4,0,,400,,7,,1,0xFFFFFFFF,63,2,256,,100,1,1360,{ bonus bStr,5; .@r = getrefine(); bonus2 bAddClass,Class_All,7+(.@r > 8 ? 4 : (.@r > 6 ? 3 : (.@r > 4 ? 2 : 0))); bonus bNoSizeFix; },{},{} 5971,Moon_Eyepatch,Moon Eyepatch,4,0,,100,,,,1,0xFFFFFFFF,63,2,512,,10,0,1370,{ bonus2 bSubEle,Ele_Water,5; },{},{} 5972,Chatty_Parrot,Chatty Parrot,4,0,,100,,,,0,0xFFFFFFFF,63,2,1,,80,0,1116,{ bonus bMatkRate,BaseLevel/50; bonus bVariableCast,-readparam(bInt)/30; },{},{} 5973,Ancient_Elven_Ear_J,Ancient Elven Ear J,4,0,,200,,,,0,0xFFFFFFFF,63,2,512,,70,0,665,{ bonus bLuk,10; bonus bMdef,10; bonus bFlee2,2; },{},{} 5978,Syringe_Toy,Toy Syringe,4,0,,100,,3,,0,0xFFFFFFFF,63,2,1,,70,0,842,{ bonus bMdef,3; bonus2 bAddItemHealRate,545,150; bonus2 bAddItemHealRate,546,150; bonus2 bAddItemHealRate,547,150; },{},{} 5979,C_Angel_Fluttering,C Angel Fluttering,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1380,{ hateffect HAT_EF_ANGEL_FLUTTERING,true; },{},{ hateffect HAT_EF_ANGEL_FLUTTERING,false; } 5980,C_Classical_Fhat,C Classical Fhat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1381,{},{},{} -5985,Noble_Mask,Noble Mask,4,0,,200,,,,0,0xFFFFFFFF,63,2,256,,30,0,1409,{ bonus2 bSkillAtk,"PA_SACRIFICE",BaseLevel*2; bonus2 bSkillVariableCast,"PA_PRESSURE",-2000; bonus2 bSkillVariableCast,"CR_DEVOTION",-2000; if (BaseLevel > 149) { bonus bMaxHPrate,3; bonus bAspdRate,3; } else if (BaseLevel > 99) { bonus bMaxHPrate,2; bonus bAspdRate,2; } else { bonus bMaxHPrate,1; bonus bAspdRate,1; } },{},{} +5985,Noble_Mask,Noble Mask,4,0,,200,,,,0,0xFFFFFFFF,63,2,512,,30,1,1409,{ bonus2 bSkillAtk,"PA_SACRIFICE",BaseLevel*2; bonus2 bSkillVariableCast,"PA_PRESSURE",-2000; bonus2 bSkillVariableCast,"CR_DEVOTION",-2000; if (BaseLevel > 149) { bonus bMaxHPrate,3; bonus bAspdRate,3; } else if (BaseLevel > 99) { bonus bMaxHPrate,2; bonus bAspdRate,2; } else { bonus bMaxHPrate,1; bonus bAspdRate,1; } },{},{} //=================================================================== // More Etc Items //=================================================================== @@ -4888,6 +4939,30 @@ 6960,Key_Air_Fortress,Key Air Fortress,3,10,,10,,,,,,,,,,,,,{},{},{} 6961,Huge_Metal_Scrap,Huge Metal Scrap,3,10,0,1000,,,,,,,,,,,,,{},{},{} 6962,Old_Fuel,Old Fuel,3,10,0,100,,,,,,,,,,,,,{},{},{} + +6965,Fire_Property_Reactor_Blueprint,Fire Property Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6966,Water_Property_Reactor_Blueprint,Water Property Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6967,Earth_Property_Reactor_Blueprint,Earth Property Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6968,Wind_Property_Reactor_Blueprint,Wind Property Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6969,Fire_Res_Reactor_Blueprint,Fire Resistance Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6970,Water_Res_Reactor_Blueprint,Water Resistance Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6971,Earth_Res_Reactor_Blueprint,Earth Resistance Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6972,Wind_Res_Reactor_Blueprint,Wind Resistance Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6973,Recovery101_Reactor_Blueprint,Recovery101 Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6974,Recovery102_Reactor_Blueprint,Recovery102 Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6975,Recovery201_Reactor_Blueprint,Recovery201 Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6976,Recovery202_Reactor_Blueprint,Recovery202 Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6977,STR_Reactor_Blueprint,STR Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6978,INT_Reactor_Blueprint,INT Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6979,DEF_Reactor_Blueprint,DEF Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6980,PD_Reactor_Blueprint,Perfect Dodge Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6981,ATK_Reactor_Blueprint,Attack Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6982,MATK_Reactor_Blueprint,Magical Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6983,HP_Reactor_Blueprint,HP Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6984,SP_Reactor_Blueprint,SP Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6985,Frozen_Reactor_Blueprint,Frozen Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} +6986,ASPD_Reactor_Blueprint,ASPD Reactor Blueprint,3,0,,10,,,,,,,,,,,,,{},{},{} + // 7001,Mould_Powder,Mould Powder,3,466,,10,,,,,,,,,,,,,{},{},{} 7002,Ogre_Tooth,Ogre Tooth,3,658,,10,,,,,,,,,,,,,{},{},{} @@ -6499,7 +6574,7 @@ 12351,Shout_Megaphone,Scream Megaphone,11,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "MC_LOUD",1; },{},{} 12352,Dun_Tele_Scroll3,Dungeon Teleport Scroll 3,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashDungeon",3; },{},{} 12353,Tiny_Waterbottle,Small Bottle,2,800,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_WATERWEAPON,90000,1; },{},{} -12354,Buche_De_Noel,Buche De Noel,2,2,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_ANGELUS; bonus_script "{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bHit,3; bonus bCritical,7; }",600,0,0,SI_BUCHEDENOEL; },{},{} +12354,Buche_De_Noel,Buche De Noel,2,2,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_ANGELUS; bonus_script "{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bHit,3; bonus bCritical,7; }",600,0,0,EFST_BUCHEDENOEL; },{},{} 12355,Xmas_Gift,Xmas Gift,2,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Xmas_Gift,1); },{},{} 12356,Louise_Costume_Box,Louise Costume Box,2,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Louise_Costume_Box,1); },{},{} 12357,Shiny_Wing_Gown,Shiny Wing Gown,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 1630; },{},{} @@ -6520,7 +6595,7 @@ 12372,Hell_Contract,Hell Contract,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 1379; },{},{} 12373,Boy's_Naivety,Boy's Pure Heart,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 1370; },{},{} 12374,Flaming_Ice,Ice Fireworks,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 1837; },{},{} -12375,Acaraje,Akaraje,2,0,,80,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",120,0,0,SI_ACARAJE; },{},{} +12375,Acaraje,Akaraje,2,0,,80,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE; },{},{} 12376,Mysterious_Can2,Mysterious Can2,2,10,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 3,0; itemskill "PR_GLORIA",2; },{},{} 12377,Mysterious_PET_Bottle2,Mysterious PET Bottle2,2,10,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 0,3; itemskill "PR_MAGNIFICAT",1; },{},{} 12378,2009_Rice_Cake_Soup,Rice Cake Soup,2,10,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 50,50; },{},{} @@ -6549,7 +6624,7 @@ 12401,Rune_Kn_Test_Int,Rune Kn Test Int,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCINT,300000,40; },{},{} 12402,29Fruit,29Fruit,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 5,5; },{},{} 12403,Lucky_Egg_C2,Lucky Egg C2,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Lucky_Egg_C2); },{},{} -12404,Acti_Potion,Acti Potion,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_STEAL; bonus_script "{ bonus2 bAddDamageClass,Class_All,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,3; }",120,0,0,SI_POPECOOKIE; },{},{} +12404,Acti_Potion,Acti Potion,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_STEAL; bonus_script "{ bonus2 bAddDamageClass,Class_All,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,3; }",120,0,0,EFST_POPECOOKIE; },{},{} 12405,Underripe_Yggseed,Underripe Yggseed,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 30,30; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,140000,5; },{},{} 12406,Psychic_ArmorS,Psychic ArmorS,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_ENERGYCOAT; sc_start4 SC_ELEMENTALCHANGE,10000,1,Ele_Ghost,1,0; },{},{} 12407,PCBang_Coupon_Box,PC Cafe Coupon Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -6606,10 +6681,10 @@ 12459,F_Med_Life_Potion,F Med Life Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HEAL3; sc_start2 SC_L_LIFEPOTION,600000,-7,4; },{},{} 12460,F_Small_Life_Potion,F Small Life Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HEAL3; sc_start2 SC_S_LIFEPOTION,600000,-5,5; },{},{} 12461,F_Regeneration_Potion,F Regeneration Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} -12462,F_B_Mdef_Potion,F B Mdef Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",180,0,0,SI_PROTECT_MDEF; },{},{} -12463,F_S_Mdef_Potion,F S Mdef Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",60,0,0,SI_PROTECT_MDEF; },{},{} -12464,F_B_Def_Potion,F B Def Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",180,0,0,SI_PROTECT_DEF; },{},{} -12465,F_S_Def_Potion,F S Def Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",60,0,0,SI_PROTECT_DEF; },{},{} +12462,F_B_Mdef_Potion,F B Mdef Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",180,0,0,EFST_PROTECT_MDEF; },{},{} +12463,F_S_Mdef_Potion,F S Mdef Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",60,0,0,EFST_PROTECT_MDEF; },{},{} +12464,F_B_Def_Potion,F B Def Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",180,0,0,EFST_PROTECT_DEF; },{},{} +12465,F_S_Def_Potion,F S Def Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",60,0,0,EFST_PROTECT_DEF; },{},{} 12466,F_Blessing_10_Scroll,F Blessing 10 Scroll,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12467,F_Inc_Agi_10_Scroll,F Inc Agi 10 Scroll,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12468,F_Aspersio_5_Scroll,F Aspersio 5 Scroll,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -6672,13 +6747,13 @@ 12526,E_Wind_Walk_10_Scroll,Wind Walk Scroll Lv 10,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "SN_WINDWALK",10; },{},{} 12527,E_Adrenaline_Scroll,Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "BS_ADRENALINE",5; },{},{} 12528,E_Convex_Mirror,Convex Mirror,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_BOSSMAPINFO,600000,0; },{},{} -12529,White_Slim_Potion_Box,White Slim Potion Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 11573,100; },{},{} -12530,Mastela_Fruit_Box,Mastela Fruit Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} +12529,White_Slim_Potion_Box,White Slim Potion Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 547,200; },{},{} +12530,Mastela_Fruit_Box,Mastela Fruit Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 522,200; },{},{} 12531,White_Potion_Box,White Potion Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 504,100; },{},{} 12532,Royal_Jelly_Box2,Royal Jelly Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 526,100; },{},{} 12533,Blue_Herb_Box2,Blue Herb Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 510,100; },{},{} -12534,Yggdrasil_Seed_Box,Yggdrasil Seed Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} -12535,Iggdrasilberry_Box,Iggdrasilberry Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} +12534,Yggdrasil_Seed_Box,Yggdrasil Seed Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 608,30; },{},{} +12535,Iggdrasilberry_Box,Iggdrasilberry Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 607,15; },{},{} 12536,NY_Rice_Cake_Soup,NY Rice Cake Soup,2,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12537,Solo_Gift_Basket,Solo Gift Basket,2,1000,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Solo_Gift_Basket);*/ getitem 597,5; getitem 596,3; getitem 561,3; getitem 573,4; getitem 559,10; getitem 560,10; },{},{} 12538,Couple_Event_Basket,Couple Event Basket,2,2000,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ /*getgroupitem(IG_Couple_Event_Basket);*/ getitem 14546,10; getitem 14547,10; getitem 14548,10; getitem 14549,10; getitem 14550,10; },{},{} @@ -6692,7 +6767,7 @@ 12546,Suspicious_Dish,Suspicious Dish,2,100,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_POISON,50000,0; },{},{} 12547,Chalcenodny_Box,Chalcenodny Box,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12548,Buy_Market_Permit2,Shabby Purchase Street Stall License,2,500,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ buyingstore 2; },{},{} -12549,White_Slim_Pot_Box2,White Slim Pot Box2,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 547,200; },{},{} +12549,White_Slim_Pot_Box2,White Slim Pot Box2,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 547,100; },{},{} 12550,Poison_Bottle_Box2,Deadly Poison Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 678,30; },{},{} 12551,MVP_Tele_Scroll,MVP Tele Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12552,Quest_Tele_Scroll,Quest Tele Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -6738,7 +6813,7 @@ 12593,Cyclops_Box2,Cyclops Box2,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12594,Cyclops_Box3,Cyclops Box3,11,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12595,Lucky_Egg_C7,Lucky Egg C7,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Lucky_Egg_C7); },{},{} -12596,Magic_Candy,Magic Candy,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HASTEUP; bonus_script "{ bonus bMatk,30; bonus bFixedCastrate,-70; bonus bNoCastCancel,0; bonus2 bSPLossRate,90,10000; }",60,0,0,SI_MAGIC_CANDY; },{},{} +12596,Magic_Candy,Magic Candy,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HASTEUP; bonus_script "{ bonus bMatk,30; bonus bFixedCastrate,-70; bonus bNoCastCancel; bonus2 bSPLossRate,90,10000; }",60,0,0,EFST_MAGIC_CANDY; },{},{} 12597,Opor_Ayam,Opor Ayam,11,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12598,Dendeng_Balado,Dendeng Balado,11,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12599,Kurma,Kurma,11,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -6773,7 +6848,7 @@ 12630,Teddy_Bear_Scroll,Teddy Bear Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ mercenary_create 2217,1800000; },{},{} 12631,Macro_Stone_A,Macro Stone A,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12632,Macro_Stone_B,Macro Stone B,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} -12633,Malang_Cat_Can,Malangdo Cat Can,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus2 bExpAddRace,RC_All,10; bonus2 bDropAddRace,RC_All,20; }",1200,1,0,SI_OVERLAPEXPUP; },{},{} +12633,Malang_Cat_Can,Malangdo Cat Can,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus2 bExpAddRace,RC_All,10; bonus2 bDropAddRace,RC_All,20; }",1200,1,0,EFST_OVERLAPEXPUP; },{},{} 12634,Macro_Stone_A1,Macro Stone A1,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12635,Macro_Stone_A2,Macro Stone A2,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12636,Malang_Sp_Can,Malangdo Canned Specialties,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "malangdo",140,114; },{},{} @@ -6806,10 +6881,10 @@ 12663,Trans_Scroll_Poring,Transformation Scroll(Poring),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1002,1200000,SC_MTF_CRIDAMAGE,25; showscript "Traaaansformation-!! Poring form!!"; },{},{} 12664,Trans_Scroll_Golem,Transformation Scroll(Golem),2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ transform 1040,1200000,SC_MTF_MLEATKED,5,20,2; showscript "Traaaansformation-!! Golem form!!"; },{},{} 12665,Grovel_Buff,Grovel Buff,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} -12666,Thai_Perfume_MATK,Thai Perfume MATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,SI_SKF_MATK; },{},{} -12667,Thai_Perfume_ATK,Thai Perfume ATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,SI_SKF_ATK; },{},{} -12668,Thai_Perfume_ASPD,Thai Perfume ASPD,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bAspdRate,3; }",600,0,0,SI_SKF_ASPD; },{},{} -12669,Thai_Perfume_CAST,Thai Perfume CAST,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bVariableCastrate,-5; }",600,0,0,SI_SKF_CAST; },{},{} +12666,Thai_Perfume_MATK,Thai Perfume MATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,EFST_SKF_MATK; },{},{} +12667,Thai_Perfume_ATK,Thai Perfume ATK,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,EFST_SKF_ATK; },{},{} +12668,Thai_Perfume_ASPD,Thai Perfume ASPD,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bAspdRate,3; }",600,0,0,EFST_SKF_ASPD; },{},{} +12669,Thai_Perfume_CAST,Thai Perfume CAST,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bVariableCastrate,-5; }",600,0,0,EFST_SKF_CAST; },{},{} 12670,Beast_Powder,Beast Powder,2,20,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12671,99lv_Battle_Manual,99lv Battle Manual,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12672,Start_New_Box,Start New Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 617,2; getitem 12263,2; getitem 12329,3; getitem 12330,2; },{},{} @@ -6836,8 +6911,8 @@ 12693,Old_C_Album_Garment,Garment Card Album,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_CardAlbum_Garment,1); },{},{} 12694,Old_C_Album_Shoes,Shoes Card Album,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_CardAlbum_Shoes,1); },{},{} 12695,Old_C_Album_Acc,Accessory Card Album,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_CardAlbum_Acc,1); },{},{} -12696,RWC_Cele_Fire,RWC Celebration Firecracker,2,0,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,SI_2011RWC; },{},{} -12697,RWC_Cele_Fire2,RWC Celebration Firecracker,2,0,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,SI_2011RWC; },{},{} +12696,RWC_Cele_Fire,RWC Celebration Firecracker,2,0,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,EFST_2011RWC; },{},{} +12697,RWC_Cele_Fire2,RWC Celebration Firecracker,2,0,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,EFST_2011RWC; },{},{} 12698,Old_C_Album_Weapon,Weapon Card Album,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_CardAlbum_Weapon,1); },{},{} 12699,Tikbalang_Belt,Tikbalang Harness,2,20,,50,,,,,0xFFFFFFFF,63,2,,,,,,{ pet 2313; },{},{} 12700,Insideout_Shirt,Inside-out Shirt,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "malaya",242,211; },{},{} @@ -6892,8 +6967,8 @@ // More usable items //=================================================================== 12739,Snow_Flower,Snow Flowers,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 10,10; },{},{} -12740,Inc_Str_Scroll,Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus bStr,20; }",60,0,0,SI_STR_SCROLL; },{},{} -12741,Inc_Int_Scroll,Intellect Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bInt,20; }",60,0,0,SI_INT_SCROLL; },{},{} +12740,Inc_Str_Scroll,Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus bStr,20; }",60,0,0,EFST_STR_SCROLL; },{},{} +12741,Inc_Int_Scroll,Intellect Amplification Scroll,2,1,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bInt,20; }",60,0,0,EFST_INT_SCROLL; },{},{} 12742,Valentine_Gift_Box1,Valentine Gift Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7946,1; },{},{} 12743,Valentine_Gift_Box2,Valentine Gift Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7947,1; },{},{} 12744,Chocotate_Box,Chocolate Box,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 558,1; },{},{} @@ -6943,8 +7018,8 @@ 12788,No100_Firecracker,No100 Firecracker,2,2,,20,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12789,Juicy_Fruit,Juicy Fruit,2,2,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 12790,Change_Name_Card,Character Name Change Coupon,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ CharRename++; },{},{} -12791,Combat_Pill,Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE; /* showscript */ },{},{} -12792,P_Combat_Pill,P Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,SI_GM_BATTLE2; },{},{} +12791,Combat_Pill,Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,EFST_GM_BATTLE; /* showscript */ },{},{} +12792,P_Combat_Pill,P Combat Pill,2,20,,150,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,EFST_GM_BATTLE; },{},{} 12793,Combat_Pill_Box10,Combat Pill Box10,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12791,10; },{},{} 12794,P_Combat_Pill_Box10,P Combat Pill Box10,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12792,10; },{},{} 12795,2011_RWC_Scroll_Kr,2011 RWC Scroll Kr,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -7153,7 +7228,7 @@ 13015,Hakujin_,Hakujin,5,20,,800,120,,1,1,0x02000000,63,2,2,3,42,1,1,{ bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10; },{},{} 13016,Poison_Knife_,Poison Knife,5,20,,800,64,,1,2,0x028F5EEE,63,2,2,3,65,1,1,{ bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000; },{},{} 13017,House_Auger_,Ice Pick,5,20,,600,70,,1,1,0x028F5EEE,63,2,2,4,36,1,1,{ bonus bDefRatioAtkClass,Class_All; },{},{} -13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,63,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,1; },{},{} +13018,Sucsamad_,Sucsamad,5,20,,800,140,,1,1,0x028F5EEE,63,2,2,4,36,1,1,{ bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon; },{},{} 13019,Ginnungagap_,Ginnungagap,5,20,,700,148,,1,1,0x3E9F7EEF,63,2,2,4,70,1,1,{ bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50; },{},{} 13020,Warrior_Balmung_,Warrior's Balmung,5,20,,1000,170,,1,0,0x3FFFFFFF,63,2,2,4,48,1,1,{ bonus bAllStats,5; },{},{} 13021,Combat_Knife_C,Combat Knife,5,1,,0,129,,1,0,0x028F5EEE,63,2,2,4,1,0,1,{ bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10;*/},{},{} @@ -7171,13 +7246,13 @@ 13033,Assasin_Dagger_,Assassin Dagger,5,20,,600,140,,1,1,0x00001000,63,2,2,4,36,1,1,{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark; },{},{} 13034,Twilight_Desert,Desert Twilight,5,20,,600,130,,1,2,0x00001000,18,2,2,2,70,1,1,{},{},{} 13035,Sandstorm,Sandstorm,5,20,,600,50,,1,4,0x00001000,18,2,2,2,70,1,1,{},{},{} -13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} -13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,1; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} +13036,BF_Dagger1,Brave Assassin's Damascus,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} +13037,BF_Dagger2,Valorous Assassin's Damascus,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15; },{},{} 13038,Dagger_Of_Hunter,Dagger of Hunter,5,20,,700,120,,1,3,0x00020000,18,2,2,3,70,1,1,{ bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20; },{},{} 13039,Ivory_Knife,Ivory Knife,5,20,,700,130,,1,2,0x028F5EEE,18,2,2,3,50,1,1,{ bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; },{},{} 13040,N_Cutter,Novice Cutter,5,0,,0,50,,1,3,0x3E9F7EEF,63,2,2,1,1,0,1,{},{},{} 13041,N_Main_Gauche,Novice Main Gauche,5,0,,0,63,,1,3,0x3E9F7EEF,63,2,2,1,1,0,1,{},{},{} -13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0x3E9F7EEF,63,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{} +13042,Krieger_Dagger1,Glorious Gladius,5,20,,0,120,,1,0,0x3E9F7EEF,63,2,2,4,80,1,1,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250; },{},{} 13043,Fortune_Sword_I,Fortune Sword,5,0,,0,120,,1,0,0x028F5EEE,63,2,2,4,0,0,1,{ bonus bLuk,5; },{},{} 13044,House_Auger_I,Ice Pick,5,0,,0,105,,1,0,0x028F5EEE,63,2,2,4,0,0,1,{},{},{} 13045,Kamaitachi_I,Kamaitachi,5,0,,0,155,,2,0,0x02000000,63,2,2,4,0,0,1,{ bonus bAtkEle,Ele_Wind; },{},{} @@ -7198,12 +7273,12 @@ 13060,E_Counter_Dagger_C,Counter Dagger,5,1,,0,209,,1,0,0x00810204,63,2,2,4,1,0,1,{},{},{} 13061,Black_Wing,Black Wing,5,20,,600,142,,1,1,0x00020000,63,2,2,3,102,1,1,{ .@r = getrefine(); bonus2 bSkillAtk,"SC_FATALMENACE",30+(.@r*2); bonus bMatkRate,(.@r*3); },{},{} 13062,Ancient_Dagger,Ancient Dagger,5,20,,600,107:120,,0,0,0x028F5EEE,18,2,2,4,120,1,1,{ bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,20; bonus3 bAddEff,Eff_Curse,20,ATF_SELF; },{},{} -13063,Adventure_Knife,Adventure Knife,5,0,,0,60,,1,0,0x02021040,63,2,2,1,1,0,1,{ bonus bUnbreakableWeapon,1; },{},{} -13064,Academy_Knife,Academy Knife,5,0,,700,110,,1,1,0x02021040,63,2,2,1,1,1,1,{ bonus bUnbreakableWeapon,1; },{},{} -13065,Academy_Eti_Knife,Academy Eti Knife,5,0,,1200,120,,1,1,0x00000001,63,2,2,1,1,1,1,{ bonus bUnbreakableWeapon,1; },{},{} +13063,Adventure_Knife,Adventure Knife,5,0,,0,60,,1,0,0x02021040,63,2,2,1,1,0,1,{ bonus bUnbreakableWeapon; },{},{} +13064,Academy_Knife,Academy Knife,5,0,,700,110,,1,1,0x02021040,63,2,2,1,1,1,1,{ bonus bUnbreakableWeapon; },{},{} +13065,Academy_Eti_Knife,Academy Eti Knife,5,0,,1200,120,,1,1,0x00000001,63,2,2,1,1,1,1,{ bonus bUnbreakableWeapon; },{},{} 13066,P_Dagger3,Eden Dagger III,5,0,,0,165:80,,1,0,0x3E9F7EEF,63,2,2,3,60,0,1,{},{},{} 13067,Caress,Keris,5,20,,700,107:70,,1,1,0x3E9F7EEF,18,2,2,3,30,1,1,{ bonus2 bHPDrainRate,20,10; },{},{} -13068,Saurel,Pompano,5,0,,0,160:100,,3,0,0x3E9F7EEF,63,2,2,1,50,0,1,{ bonus bAgi,3; bonus bUnbreakableWeapon,1; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; } },{},{} +13068,Saurel,Pompano,5,0,,0,160:100,,3,0,0x3E9F7EEF,63,2,2,1,50,0,1,{ bonus bAgi,3; bonus bUnbreakableWeapon; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; } },{},{} 13069,Aztoe_Nail,As-nail,5,56000,,500,160:80,,1,0,0x000654E2,63,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Freeze,100+(getrefine()*50); },{},{} 13070,Scarletto_Nail,Scarlet-nail,5,56000,,500,160:80,,1,0,0x000654E2,63,2,2,4,110,1,1,{ bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Stone,100+(getrefine()*50); },{},{} 13071,Upg_Dagger,Upg Dagger,5,20,,600,55,,1,1,0x3E9F7EEF,63,2,2,3,1,1,1,{ .@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{} @@ -7218,14 +7293,14 @@ 13081,Octo_kitchen_Knife,Discount knife Octopus,5,200000,,700,140,0,,3,0x228F5EEE,63,2,2,4,105,1,1,{},{},{} 13083,TE_Woe_Knife,TE Woe Knife,5,0,,0,100:100,,1,0,0x3E9F7EEF,63,2,2,3,40,1,1,{ bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Silence,3000; },{},{} 13085,Volcano_Knife,Volcano Knife,5,10,,200,80,,,0,0x280002E,63,2,2,4,60,,1,{ bonus bAgi,2; bonus bMaxHPrate,2; bonus2 bSubEle,Ele_Fire,2; bonus2 bSubEle,Ele_Water,-5; .@r = getrefine(); if(.@r==7){ bonus bMaxHPrate,1; bonus2 bSubEle,Ele_Fire,3; } if (.@r>7) { bonus bMaxHPrate,.@r-7; bonus2 bSubEle,Ele_Fire,.@r-7; } },{},{} -13086,Goldsmithing_Dagger,Goldsmithing Dagger,5,20,,500,35:25,,1,0,0x02800066,63,2,2,1,1,1,1,{},{},{} +13086,Goldsmithing_Dagger,Goldsmithing Dagger,5,20,,500,35:25,,1,0,0x028756E6,63,2,2,1,1,1,1,{},{},{} 13088,Greater_Lease,Greater Lease,5,10,,500,110:50,,,1,0x280006E,63,2,2,4,30,1,1,{ .@r = getrefine(); if (.@r >= 5) bonus bMatk,30; if (.@r >= 7) bonus bMatk,10; if (.@r >= 9) bonus bMatk,10; },{},{} 13089,FaceWorm_Leg,Faceworm Leg,5,20,,500,110:50,,1,1,0x028F5EEF,63,2,2,3,24,1,1,{ bonus bAtkEle,Ele_Poison; autobonus "{}",30,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2528,5000; }"; },{},{} 13090,FaceWormQueen_Leg,Faceworm Queen Leg,5,20,,500,180:120,,1,2,0x028F5EEF,63,2,2,4,100,1,1,{ bonus bInt,3; autobonus "{ bonus3 bAutoSpell,\"NPC_EARTHQUAKE\",1,200; }",8,5000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2529,5000; }"; },{},{} 13092,RWC_Memory_Knife,RWC Memory Knife,5,1000,500,650,50,0,1,1,0x02800075,63,2,2,3,1,1,1,{ .@r = getrefine(); bonus bBaseAtk,20*(.@r/3); bonus bMatk,20*(.@r/3); if(.@r>=9){ .@i = 1; bonus4 bAutoSpell,"BS_WEAPONPERFECT",1,20,0; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,.@rate; bonus2 bMagicAddClass,Class_All,.@rate; } },{},{} 13093,Thanos_Dagger,Thanatos Dagger,5,10,,800,100:130,,1,1,0x000E5CEA,56,2,2,4,120,1,1,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 13094,Dagger_Of_Evil_Slayer,Evil Slayer Stabber Dagger,5,10,,900,120,,1,1,0x028F5EEF,63,2,2,3,100,1,1,{ bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0)); },{},{} -13096,Half_BF_Dagger2,Half BF Dagger2,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,45; },{},{} +13096,Half_BF_Dagger2,Half BF Dagger2,5,20,,0,120:90,,1,0,0x3E9F7EEF,63,2,2,3,80,1,1,{ bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,45; },{},{} 13097,Ru_Blue_Dagger,Blue Dagger,5,10,,1000,160,,1,1,0x00020000,56,2,2,3,100,1,1,{ bonus bStr,5; bonus bInt,5; },{},{} 13098,Ru_Blue_Ashura,Blue Ashura,5,10,,1000,150:120,,1,1,0x02000000,7,2,2,3,100,1,1,{},{},{} 13099,Ru_Blue_Knife,Blue Knife,5,10,,500,160,,1,1,0x00010000,56,2,2,3,100,1,1,{ bonus bStr,5; bonus bInt,5; },{},{} @@ -7240,9 +7315,9 @@ 13105,The_Garrison_,Garrison,5,48000,,500,70,,7,2,0x41000000,63,2,34,2,55,1,17,{ bonus bHit,-10; },{},{} 13106,Gold_Lux,Gold Lux,5,100000,,500,20,,7,0,0x41000000,63,2,34,3,12,1,17,{ bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100; },{},{} 13107,Wasteland_Outlaw,Wasteland's Outlaw,5,20,,580,68,,7,2,0x41000000,63,2,34,3,70,1,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; },{},{} -13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,63,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1; },{},{} +13108,BF_Pistol1,Soldier Revolver,5,0,,0,70,,7,0,0x41000000,63,2,34,3,80,1,17,{ bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} 13109,Wasteland_Outlaw_C,Wasteland Outlaw,5,20,,0,100,,7,0,0x41000000,63,2,34,3,0,0,17,{ bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,40; },{},{} -13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,63,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",.@r*2; } },{},{} +13110,Krieger_Pistol1,Glorious Pistol,5,0,,0,80,,7,0,0x41000000,63,2,34,4,80,1,17,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",.@r*2; } },{},{} 13111,Sharpshooter_Revolver,Sharpshooter Revolver,5,20,,0,105,,7,0,0x41000000,63,2,34,4,1,1,17,{ bonus bDex,2; bonus2 bSkillAtk,"GS_DESPERADO",25; },{},{} 13112,P_Revolver1,Eden Revlover I,5,0,,0,44,,7,0,0x41000000,63,2,34,1,26,0,17,{ bonus bHit,-5; },{},{} 13113,P_Revolver2,Eden Revlover II,5,0,,0,60,,7,0,0x41000000,63,2,34,1,40,0,17,{ bonus bHit,-5; },{},{} @@ -7255,7 +7330,7 @@ 13120,Heaven's_Feather_and_Hell's_Fire,Heaven's Feather & Hell's Fire,5,1250000,,800,150,,9,1,0x41000000,63,2,34,3,99,1,17,{ bonus2 bSkillAtk,"GS_DESPERADO",20; bonus2 bSkillAtk,"RL_FALLEN_ANGEL",20; },{},{} 13122,Altea_and_Ares,Altea & Ares,5,1450000,,1000,200,,9,0,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} 13124,Altea_and_Ares_,Altea & Ares,5,1450000,,1000,200,,9,1,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} -13125,Metal_Revolver,Metal Revolver,5,0,,0,30,,7,1,0x41000000,63,2,34,3,1,0,17,{ bonus bBaseAtk,getrefine(); bonus bLongAtkRate,1; if (BaseLevel >= 20 && BaseLevel <= 120) { bonus bBaseAtk,3*(BaseLevel/10); } },{},{} +13125,Metal_Revolver,Metal Revolver,5,0,,0,30,,7,1,0x41000000,63,2,34,3,1,1,17,{ bonus bBaseAtk,getrefine(); bonus bLongAtkRate,1; if (BaseLevel >= 20 && BaseLevel <= 120) { bonus bBaseAtk,3*(BaseLevel/10); } },{},{} 13126,Infinity_Pistol,Infinity Pistol,5,10,,500,175,,7,1,0x40000000,63,2,34,4,100,0,17,{},{},{} 13127,Crimson_Revolver,Crimson Revolver,5,20,,1000,100,,7,2,0x41000000,63,2,34,3,70,1,17,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} 13128,Revolver_of_Vicious_Mind,Revolver of Vicious Mind,5,20,,1500,150,,7,1,0x41000000,63,2,34,4,160,1,17,{ bonus bAtk,pow(min(getrefine(),15),2); },{},{} @@ -7281,15 +7356,15 @@ 13168,Thunder_P,Thunder P,5,76000,,700,80,,9,1,0x41000000,63,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{} 13169,Thunder_P_,Thunder P,5,76000,,700,80,,9,2,0x41000000,63,2,34,3,70,1,20,{ bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20; },{},{} 13170,Lever_Action_Rifle,Lever Action Rifle,5,20,,770,138,,9,2,0x41000000,63,2,34,3,70,1,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; },{},{} -13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,63,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bVariableCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,63,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1; },{},{} -13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,63,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1; },{},{} -13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,63,2,34,3,80,1,21,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1; },{},{} +13171,BF_Rifle1,Soldier Rifle,5,0,,0,50,,9,0,0x41000000,63,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bVariableCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13172,BF_Gatling_Gun1,Soldier Gatling Gun,5,0,,0,80,,9,0,0x41000000,63,2,34,3,80,1,19,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} +13173,BF_Shotgun1,Soldier Shotgun,5,0,,0,100,,9,0,0x41000000,63,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} +13174,BF_Launcher1,Soldier Grenade Launcher,5,0,,0,300,,9,0,0x41000000,63,2,34,3,80,1,21,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} 13175,Lever_Action_Rifle_C,Lever Action Rifle,5,20,,0,170,,9,0,0x41000000,63,2,34,3,1,0,18,{ bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; bonus2 bAddClass,Class_All,40; },{},{} -13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,63,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",.@r * 3; } },{},{} -13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,63,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bAddClass,Class_All,.@r; } },{},{} -13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,63,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{} -13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,63,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{} +13176,Krieger_Rifle1,Glorious Rifle,5,0,,0,90,,9,0,0x41000000,63,2,34,4,80,1,18,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",.@r * 3; } },{},{} +13177,Krieger_Gatling1,Glorious Gatling Gun,5,0,,0,90,,9,0,0x41000000,63,2,34,4,80,1,19,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bAddClass,Class_All,.@r; } },{},{} +13178,Krieger_Shotgun1,Glorious Shotgun,5,0,,0,110,,9,0,0x41000000,63,2,34,4,80,1,20,{ bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; } },{},{} +13179,Krieger_Launcher1,Glorious Grenade Launcher,5,0,,0,330,,9,0,0x41000000,63,2,34,4,80,1,21,{ bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{} 13180,Novice_Rifle,Novice Rifle,5,0,,500,50,,9,3,0x41000000,1,2,34,4,1,0,18,{},{},{} 13181,Novice_Shotgun,Novice Shotgun,5,0,,1000,80,,9,0,0x41000000,1,2,34,4,1,0,20,{},{},{} 13182,Novice_Gatling,Novice Gatling,5,0,,1500,40,,9,0,0x41000000,1,2,34,4,1,0,19,{},{},{} @@ -7401,15 +7476,15 @@ //=================================================================== // Ninja Fuuma Shurikens //=================================================================== -13300,Huuma_Bird_Wing,Huuma Wing Shuriken,5,90000,,3000,150,,1,0,0x02000000,63,2,34,4,65,1,22,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} -13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,3,0x02000000,63,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Bleeding,100; },{},{} -13302,Huuma_Giant_Wheel_,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,4,0x02000000,63,2,34,4,42,1,22,{ bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Bleeding,100; },{},{} -13303,Huuma_Blaze,Huuma Blaze Shuriken,5,78000,,1500,185,,1,0,0x02000000,63,2,34,4,55,1,22,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30; },{},{} -13304,Huuma_Calm_Mind,Huuma Calm Mind,5,20,,1550,112,,1,2,0x02000000,63,2,34,3,70,1,22,{ bonus bUnbreakableWeapon,1; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0; },{},{} -13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1; },{},{} -13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55:90,,1,0,0x02000000,63,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{} -13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,0,,0,230,,1,0,0x02000000,63,2,34,4,0,0,22,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{} +13300,Huuma_Bird_Wing,Huuma Wing Shuriken,5,90000,,3000,150,,1,0,0x02000000,63,2,34,4,65,1,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1; },{},{} +13301,Huuma_Giant_Wheel,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,3,0x02000000,63,2,34,4,42,1,22,{ bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100; },{},{} +13302,Huuma_Giant_Wheel_,Huuma Giant Wheel Shuriken,5,40000,,2500,50,,1,4,0x02000000,63,2,34,4,42,1,22,{ bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100; },{},{} +13303,Huuma_Blaze,Huuma Blaze Shuriken,5,78000,,1500,185,,1,0,0x02000000,63,2,34,4,55,1,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30; },{},{} +13304,Huuma_Calm_Mind,Huuma Calm Mind,5,20,,1550,112,,1,2,0x02000000,63,2,34,3,70,1,22,{ bonus bUnbreakableWeapon; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel; },{},{} +13305,BF_Huuma_Shuriken1,Brave Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13306,BF_Huuma_Shuriken2,Valorous Huuma Front Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} +13307,Krieger_Huuma_Shuriken1,Glorious Shuriken,5,20,,0,55:90,,1,0,0x02000000,63,2,34,4,80,1,22,{ bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; } },{},{} +13308,Huuma_Blaze_I,Huuma Blaze Shuriken,5,0,,0,230,,1,0,0x02000000,63,2,34,4,0,0,22,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,2; },{},{} 13309,Huuma_Giant_Wheel_C,Huuma Giant Wheel Shuriken,5,0,,0,99,,1,0,0x02000000,63,2,34,4,1,0,22,{ bonus2 bAddSize,Size_All,80; },{},{} 13310,P_Huuma_Shuriken1,P.Huuma Suriken I,5,0,,0,150:50,,1,0,0x02000000,63,2,34,3,60,0,22,{},{},{} 13311,Huuma_Shadow,Sword Huuma Shuriken,5,5000,,1500,170,,1,0,0x02000000,63,2,34,3,99,1,22,{ bonus bStr,3; },{},{} @@ -7419,11 +7494,11 @@ 13315,Huuma_Thunderstorm,Thunderstorm Huuma Shuriken,5,100000,,1500,200:50,,1,0,0x02000000,63,2,34,4,110,1,22,{ bonus bAtkEle,Ele_Wind; bonus3 bAutoSpell,"NJ_RAIGEKISAI",max(getskilllv("NJ_RAIGEKISAI"),1),30; },{},{} 13316,Upg_Huuma_Shuriken,Upg Huuma Shuriken,5,20,,1500,55,,1,1,0x02000000,63,2,34,3,1,1,22,{ .@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); bonus bLongAtkRate,(.@r); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{} 13317,TE_Woe_Huuma,TE Woe Huuma,5,0,,0,80:100,,1,0,0x22000000,63,2,2,3,40,1,22,{ bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Bleeding,3000; },{},{} -13321,Half_BF_Huuma_Shuriken2,Half BF Huuma Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1; },{},{} -13322,Huuma_Metal_Shuriken,Huuma Metal Shuriken,5,20,,0,50,,1,1,0x02000000,63,2,34,3,1,1,22,{ bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bBaseAtk,.@r*5; bonus bMatk,.@r*3; if(.@r>=2) bonus bNearAtkDef,1*.@r/2; if (BaseLevel >= 20 && BaseLevel <= 120) bonus bBaseAtk,3*.@r/10; },{},{} +13321,Half_BF_Huuma_Shuriken2,Half BF Huuma Shuriken,5,20,,0,55,,1,0,0x02000000,63,2,34,3,80,1,22,{ bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; autobonus "{ bonus2 bSkillAtk,\"NJ_HUUMA\",100; bonus2 bSkillAtk,\"NJ_ISSEN\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon; },{},{} +13322,Huuma_Metal_Shuriken,Huuma Metal Shuriken,5,20,,0,50,,1,1,0x02000000,63,2,34,3,1,1,22,{ bonus bUnbreakableWeapon; .@r = getrefine(); bonus bBaseAtk,.@r*5; bonus bMatk,.@r*3; if(.@r>=2) bonus bNearAtkDef,1*.@r/2; if (BaseLevel >= 20 && BaseLevel <= 120) bonus bBaseAtk,3*.@r/10; },{},{} 13323,Infinity_Shuriken,Infinity Shuriken,5,0,,500,150:40,,1,1,0x20000000,63,2,34,4,100,1,22,{},{},{} 13327,Crimson_Huuma_Shuriken,Crimson Huuma Shuriken,5,20,,1000,100,,1,2,0x22000000,63,2,34,3,70,1,22,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); },{},{} -13328,Huuma_Shuriken_of_Vicious_Mind,Huuma Shuriken of Vicious Mind,5,20,,1500,150:50,,1,1,0x22000000,63,2,34,4,160,1,22,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; bonus bUnbreakableWeapon,1; },{},{} +13328,Huuma_Shuriken_of_Vicious_Mind,Huuma Shuriken of Vicious Mind,5,20,,1500,150:50,,1,1,0x22000000,63,2,34,4,160,1,22,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; bonus bUnbreakableWeapon; },{},{} 13329,Unity_Huuma_Shuriken,Unity Huuma Shuriken,5,20,,500,95,,1,1,0x22000000,63,2,34,3,1,1,22,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} //=================================================================== // More 1-Handed Swords @@ -7437,20 +7512,20 @@ 13406,Edger,Edger,5,20,,0,120,,1,0,0x000654E2,63,2,2,1,0,0,2,{ bonus2 bAddClass,Class_All,50; },{},{} 13407,Nagan_C,Refined Nagan,5,1,,0,148,,1,0,0x000654E2,63,2,2,4,0,0,2,{ skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; },{},{} 13408,Fire_Brand_C,Refined Fireblend,5,1,,0,120,,1,0,0x000654E2,63,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100; },{},{} -13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,63,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,80,45; bonus bUnbreakableWeapon,1; },{},{} -13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; },{},{} -13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115:74,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,1; },{},{} +13409,Immaterial_Sword_C,Refined Immaterial Sword,5,1,,0,160,,1,0,0x000654E2,63,2,2,4,0,0,2,{ bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,80,45; bonus bUnbreakableWeapon; },{},{} +13410,BF_Sword1,Valorous Gladiator Blade,5,20,,0,115,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; },{},{} +13411,BF_Sword2,Brave Gladiator Blade,5,20,,0,115:74,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon; },{},{} 13412,Twin_Edge_B,Twin Edge of Naght Sieger,5,20,,1500,150,,1,3,0x000654E2,18,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{} 13413,Twin_Edge_R,Twin Edge of Naght Sieger,5,20,,1500,160,,1,3,0x000654E2,18,2,2,4,75,1,2,{ bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000; },{},{} 13414,Elemental_Sword,Elemental Sword,5,20,,1200,105:95,,1,3,0x000654E2,18,2,2,3,70,1,2,{ bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,1000; },{},{} 13415,N_Falchion,Novice Falchion,5,0,,0,59,,1,3,0x000654E3,63,2,2,1,2,0,2,{},{},{} -13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,63,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>6) bonus bAspdRate,5; if(.@r>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{} -13417,Krieger_Onehand_Sword2,Glorious Rapier,5,20,,0,130:80,,1,0,0x000654E3,63,2,2,4,80,1,2,{ .@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon,1; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus bInt,5; },{},{} -13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,5,20,,0,130:80,,1,0,0x000444A2,63,2,2,4,80,1,2,{ .@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon,1; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(.@r>9) bonus bInt,5; },{},{} +13416,Krieger_Onehand_Sword1,Glorious Flamberge,5,20,,0,130,,1,0,0x000654E3,63,2,2,4,80,1,2,{ bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>6) bonus bAspdRate,5; if(.@r>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; } },{},{} +13417,Krieger_Onehand_Sword2,Glorious Rapier,5,20,,0,130:80,,1,0,0x000654E3,63,2,2,4,80,1,2,{ .@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus bInt,5; },{},{} +13418,Krieger_Onehand_Sword3,Glorious Holy Avenger,5,20,,0,130:80,,1,0,0x000444A2,63,2,2,4,80,1,2,{ .@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(.@r>9) bonus bInt,5; },{},{} 13419,Holy_Saber,Holy saber,5,20,,0,160,,1,0,0x000654E2,63,2,2,3,0,0,2,{ bonus2 bAtkEle,Ele_Undead,40; bonus2 bMagicAddEle,Ele_Undead,40; },{},{} 13420,Honglyun's_Sword,Honglyun's Sword,5,20,,1200,160,,1,1,0x000654E2,63,2,2,4,70,1,2,{ bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; bonus3 bAutoSpell,"WZ_METEOR",1,5; },{},{} 13421,Ruber,Ruber,5,20,,1500,170,,1,1,0x000444A2,18,2,2,3,50,1,2,{ autobonus "{ bonus2 bSkillAtk,\"KN_BOWLINGBASH\",20; bonus2 bSkillAtk,\"SM_BASH\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{} -13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,63,2,2,3,1,0,2,{ bonus bUnbreakableWeapon,1; bonus2 bAddSize,Size_All,40; },{},{} +13422,Flamberge_C,Flamberge,5,0,,0,185,,1,0,0x00004080,63,2,2,3,1,0,2,{ bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40; },{},{} 13423,P_Sabre1,Eden Sabre I,5,0,,0,147,,1,0,0x000654E2,63,2,2,2,26,0,2,{},{},{} 13424,P_Sabre2,Eden Sabre II,5,0,,0,170,,1,0,0x000654E2,63,2,2,2,40,0,2,{},{},{} 13425,Tourist_Sword,Tourist Sword,5,0,,500,61,,1,0,0x000654E3,63,2,2,1,1,0,2,{ bonus bStr,1; bonus bDex,1; },{},{} @@ -7469,7 +7544,7 @@ 13441,Thanos_Sword,Thanatos Sword,5,10,,700,150:100,,1,1,0x00004082,56,2,2,4,120,1,2,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 13442,Old_Parasol,Old Parasol,5,10,,500,120:80,,,3,0x000654E2,63,2,2,3,80,1,2,{ bonus bMatk,getrefine(); skill "MG_SOULSTRIKE",10; },{},{} 13444,Pala,Pala,5,20,,700,190,,0,1,0x000654E2,63,2,2,3,0,1,2,{ bonus bAspdRate,8; },{},{} -13445,Half_BF_Sword1,Half BF Sword1,5,20,,0,115,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} +13445,Half_BF_Sword1,Half BF Sword1,5,20,,0,115,,1,0,0x000654E3,63,2,2,3,80,1,2,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} 13449,Gladius_Daemonicus,Gladius Daemonicus,5,20,,1200,130,,,2,0x000654E2,63,2,2,4,80,1,2,{ bonus bAtkEle,Ele_Dark; },{},{} 13450,Saber__,Saber,5,10,,1000,115,,,2,0x000654E2,63,2,2,3,27,1,0,{},{},{} 13451,Ru_Blue_Sword,Blue Sword,5,10,,1200,190,,1,1,0x00000080,56,2,2,3,100,1,2,{ bonus bStr,5; bonus bAgi,5; },{},{} @@ -8199,7 +8274,7 @@ 14217,F_Megaphone_Box1,Megaphone Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12221,1; },{},{} 14218,F_Megaphone_Box5,Megaphone 5 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12221,5; },{},{} 14219,F_Enriched_Elunium_Box5,Enriched Elunium 5 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7619,5; },{},{} -14220,FEnriched_Oridecon_Box5,Enriched Oridecon 5 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7620,5; },{},{} +14220,F_Enriched_Oridecon_Box5,Enriched Oridecon 5 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 7620,5; },{},{} 14221,MP_Scroll_Box,Mystical Amplification Scroll 10 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14593,10; },{},{} 14222,MP_Scroll_Box30,Mystical Amplification Scroll 30 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14593,30; },{},{} 14223,MP_Scroll_Box50,Mystical Amplification Scroll 50 Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14593,50; },{},{} @@ -8403,8 +8478,8 @@ 14522,Big_Bun,Big Bun,0,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 100,0; },{},{} 14523,Pill_,Pill,0,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 0,100; },{},{} 14524,Superb_Fish_Slice,Superb Fish Slice,0,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 100,100; },{},{} -14525,Chewy_Ricecake,Chewy Ricecake,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ATKPOTION,180000,10; },{},{} -14526,Oriental_Pastry,Oriental Pastry,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_MATKPOTION,180000,10; },{},{} +14525,Chewy_Ricecake,Chewy Ricecake,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ATKPOTION,1800000,10; },{},{} +14526,Oriental_Pastry,Oriental Pastry,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_MATKPOTION,1800000,10; },{},{} 14527,Dun_Tele_Scroll1,Dungeon Teleport Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashDungeon",1; },{},{} 14528,PVP_Tele_Scroll,PVP Teleport Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "pvp_n_room",52,25; },{},{} 14529,Greed_Scroll,Greed Scroll,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "BS_GREED",1; },{},{} @@ -8464,7 +8539,7 @@ 14583,WOB_Schwaltz,Green Butterfly Wing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashCity",2; },{},{} 14584,WOB_Rachel,Red Butterfly Wing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashCity",3; },{},{} 14585,WOB_Local,Blue Butterfly Wing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashCity",4; },{},{} -14586,Spark_Candy,Jumping Candy,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HASTEUP; bonus_script "{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; /*EFFECTEndure 9999 100*/ }",60,0,0,SI_STEAMPACK; itemskill "SM_ENDURE",10; },{},{} +14586,Spark_Candy,Jumping Candy,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_HASTEUP; bonus_script "{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; /*EFFECTEndure 9999 100*/ }",60,0,0,EFST_STEAMPACK; itemskill "SM_ENDURE",10; },{},{} 14587,Repair_Scroll_,Equipment Repair Spell Book,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "BS_REPAIRWEAPON",1; },{},{} 14588,Pty_Blessing_Scroll,Party Blessing 10 Scroll,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "CASH_BLESSING",10; },{},{} 14589,Pty_Inc_Agi_Scroll,Party Increase Agi 10 Scroll,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "CASH_INCAGI",10; },{},{} @@ -8475,15 +8550,15 @@ 14594,Quagmire_Scroll,Quagmire Scroll,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "WZ_QUAGMIRE",5; },{},{} 14595,Unsealed_Magic_Spell,Unsealed Magic Spell,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "yuno_fild09",255,127; },{},{} 14596,Pierre_Treasurebox,Pierre's Treasure Box,2,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); },{},{} -14597,PhreeoniS,Phreeoni Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4121,SI_FOODHIT; },{},{} -14598,GhostringS,Ghostring Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4047,SI_ARMOR_PROPERTY; },{},{} +14597,PhreeoniS,Phreeoni Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,180000,4121,EFST_FOOD_BASICHIT; },{},{} +14598,GhostringS,Ghostring Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ITEMSCRIPT,60000,4047,EFST_ARMOR_PROPERTY; },{},{} 14599,Greed_Scroll_C,Greed Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "BS_GREED",1; },{},{} 14600,Mental_Potion,Mental Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bUseSPrate,-10; bonus bMaxSPrate,10; }",1800; },{},{} 14601,Tyr's_Blessing,Tyr's Blessing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FLEEFOOD,300000,30; sc_start SC_HITFOOD,300000,30; sc_start SC_ATKPOTION,300000,20; sc_start SC_MATKPOTION,300000,20; },{},{} -14602,TaogunkaS,Tao Gunka Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,0,0,SI_MVPCARD_TAOGUNKA; },{},{} -14603,MistressS,Mistress Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bNoGemStone,1; bonus bUseSPrate,25; }",180,0,0,SI_MVPCARD_MISTRESS; },{},{} -14604,Orc_HeroS,Orc Hero Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus2 bResEff,Eff_Stun,10000; }",180,0,0,SI_MVPCARD_ORCHERO; },{},{} -14605,Orc_LoadS,Orc Lord Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,0,0,SI_MVPCARD_ORCLORD; },{},{} +14602,TaogunkaS,Tao Gunka Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,0,0,EFST_MVPCARD_TAOGUNKA; },{},{} +14603,MistressS,Mistress Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bNoGemStone; bonus bUseSPrate,25; }",180,0,0,EFST_MVPCARD_MISTRESS; },{},{} +14604,Orc_HeroS,Orc Hero Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus2 bResEff,Eff_Stun,10000; }",180,0,0,EFST_MVPCARD_ORCHERO; },{},{} +14605,Orc_LoadS,Orc Lord Scroll,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,0,0,EFST_MVPCARD_ORCLORD; },{},{} 14606,Job_Manual25,JOB Battle Manual,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 14607,Luxurious_Dinner_W,Luxurious Western Food,2,10000,,600,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCALLSTATUS,3600000,3; },{},{} 14608,Luxurious_Dinner_E,Manchu-Han Imperial Feast,2,20000,,1200,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INCALLSTATUS,3600000,6; },{},{} @@ -8492,12 +8567,12 @@ 14612,M_Mdef_Potion,M Mdef Potion,11,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_SPELLBREAKER; sc_start SC_MDEF_RATE,120000,3; },{},{} 14613,RWC_Scroll_2012,RWC Scroll 2012,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_RWC_Scroll_2012); },{},{} 14614,Ex_Def_Potion,Ex Def Potion,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_GUARD; sc_start SC_DEF_RATE,1800000,3; sc_start SC_MDEF_RATE,1800000,3; },{},{} -14616,STR_Biscuit_Stick,Bar Cookie Of Strength,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_STRFOOD,1800000,15; sc_start SC_INCATKRATE,600000,rand(11,111); },{},{} -14617,VIT_Biscuit_Stick,Bar Cookie Of Vitality,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_VITFOOD,1800000,15; sc_start SC_INCDEFRATE,600000,rand(11,33); },{},{} -14618,AGI_Biscuit_Stick,Bar Cookie Of Agility,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_AGIFOOD,1800000,15; sc_start SC_FLEEFOOD,600000,rand(11,33); },{},{} -14619,INT_Biscuit_Stick,Bar Cookie Of Intelligence,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_INTFOOD,1800000,15; sc_start SC_INCMATKRATE,600000,rand(11,111); },{},{} -14620,DEX_Biscuit_Stick,Bar Cookie Of Dexterity,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_DEXFOOD,1800000,15; sc_start SC_HITFOOD,600000,rand(11,33); },{},{} -14621,LUK_Biscuit_Stick,Bar Cookie Of Lucky,18,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_LUKFOOD,1800000,15; sc_start SC_CRIFOOD,600000,rand(11,33); },{},{} +14616,STR_Biscuit_Stick,Bar Cookie Of Strength,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_STR_CASH,1800000,15; sc_start SC_ATKPOTION,600000,rand(11,111); },{},{} +14617,VIT_Biscuit_Stick,Bar Cookie Of Vitality,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_VIT_CASH,1800000,15; bonus_script "{ bonus bHPRecovRate,rand(11,33); }",1800,1; },{},{} +14618,AGI_Biscuit_Stick,Bar Cookie Of Agility,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_AGI_CASH,1800000,15; sc_start SC_FLEEFOOD,600000,rand(11,33); },{},{} +14619,INT_Biscuit_Stick,Bar Cookie Of Intelligence,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_INT_CASH,1800000,15; sc_start SC_MATKPOTION,600000,rand(11,111); },{},{} +14620,DEX_Biscuit_Stick,Bar Cookie Of Dexterity,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_DEX_CASH,1800000,15; sc_start SC_HITFOOD,600000,rand(11,33); },{},{} +14621,LUK_Biscuit_Stick,Bar Cookie Of Lucky,2,1,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FOOD_LUK_CASH,1800000,15; sc_start SC_CRIFOOD,600000,rand(11,33); },{},{} 14623,Golden_Treasure_Box_,Golden Treasure Box,18,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*getitem callfunc("F_Rand",Devilring card, Angeling card, 11 weapons smelting ticket, armor smelting 11 ticket , horns of the buffalo, ring of recovery, pink bunny costume hair band)*/ },{},{} 14624,Blue_Scroll,Blue Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Blue_Scroll); },{},{} 14626,Indigo_Scroll,Indigo Scroll,2,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Indigo_Scroll); },{},{} @@ -8559,7 +8634,7 @@ 15005,Freyja_SRobe60,Freyja Soul Robe60,4,0,,300,,7,,0,0xFFFFFFFF,63,2,16,,20,0,0,{ bonus bMaxHP,700; },{},{} 15006,Freyja_SRobe90,Freyja Soul Robe90,4,0,,300,,7,,0,0xFFFFFFFF,63,2,16,,20,0,0,{ bonus bMaxHP,700; },{},{} 15007,Time_Keepr_Robe,Time Keeper Robe,4,30000,,0,,62,,0,0xFFFFFFFF,63,2,16,,1,1,0,{ bonus bMdef,1; bonus bStr,2; bonus bMaxHP,200; },{},{} -15008,Flame_Sprits_Armor__,Flame Sprits Armor,4,20,,1000,,25,,0,0xFFFFFFFF,63,2,16,,1,1,0,{ bonus bMdef,1; bonus2 bSubDefEle,Ele_Fire,5; },{},{} +15008,Flame_Sprits_Armor__,Flame Sprits Armor,4,20,,1000,,25,,0,0xFFFFFFFF,63,2,16,,1,1,0,{ bonus bMdef,1; bonus bDefEle,Ele_Fire; bonus2 bSubDefEle,Ele_Earth,4; },{},{} 15009,Para_Team_Uniform1,Eden Team Uniform I,4,0,,0,,35,,0,0xFFFFFFFF,63,2,16,,12,0,0,{ bonus bMaxHP,100; bonus bMaxSP,10; },{},{} 15010,Para_Team_Uniform2,Eden Team Uniform II,4,0,,0,,46,,0,0xFFFFFFFF,63,2,16,,26,0,0,{ bonus bMaxHP,200; bonus bMaxSP,20; },{},{} 15011,Para_Team_Uniform3,Eden Team Uniform III,4,0,,0,,58,,0,0xFFFFFFFF,63,2,16,,40,0,0,{ bonus bMaxHP,300; bonus bMaxSP,30; bonus bMdef,5; },{},{} @@ -8574,7 +8649,7 @@ 15020,Upg_Mail,Upg Mail,4,20,,1650,,60,,1,0x000654E2,63,2,16,,1,1,0,{ bonus bMaxHPrate,3; },{},{} 15021,Upg_Formal_Dress,Upg Formal Dress,4,20,,150,,45,,1,0xFFFFFFFE,63,2,16,,1,1,0,{ bonus bMaxHPrate,3; },{},{} 15022,Brazil_Swimsuit,Brazil Swimsuit,4,20,,100,,1,,0,0xFFFFFFFF,63,2,16,,1,1,0,{ bonus bStr,4; bonus bInt,4; bonus bMdef,3; bonus2 bSubEle,Ele_Water,20; },{},{} -15023,Half_Brynhild,Half Brynhild,4,20,,0,,60,,0,0xFFFFFFFF,63,2,16,,47,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bUnbreakableArmor,1; bonus bNoKnockback,0; },{},{} +15023,Half_Brynhild,Half Brynhild,4,20,,0,,60,,0,0xFFFFFFFF,63,2,16,,47,0,0,{ bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bUnbreakableArmor; bonus bNoKnockback; },{},{} 15024,Army_Padding,Army Padding,4,0,,10,,10,,0,0xFFFFFFFF,63,2,16,,1,1,0,{},{},{} 15025,Golden_Rod_Robe,Golden Rod Robe,4,20,,500,,40,,0,0x00000200,63,2,16,,100,1,0,{ bonus bDefEle,Ele_Wind; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_VERMILION",-3000; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{} 15026,Aqua_Robe,Aqua Robe,4,20,,500,,40,,0,0x00000200,63,2,16,,100,1,0,{ bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_STORMGUST",-3000; if(readparam(bInt)>=120){ bonus bInt,1; } },{},{} @@ -8611,7 +8686,7 @@ 15057,Pure_White_Apron,Pure White Apron,4,20,,600,0,50,0,1,0xFFFFFFFF,63,2,16,,0,1,0,{},{},{} 15058,Rider_Suit,Rider Suit,4,20,,1000,0,40,0,1,75,7,2,16,,1,1,0,{ bonus bAgi,1+(getrefine()/2); },{},{} 15059,2011Love_Daddy,2011Love Daddy,4,20,,100,0,80,0,1,0xFFFFFFFF,63,2,16,,0,1,0,{},{},{} -15060,Sky_Blue_Smock,Sky Blue Smock,4,20,,300,0,1,0,1,0xFFFFFFFF,63,2,16,,0,1,0,{},{},{} +15060,Sky_Blue_Smock,Sky Blue Smock,4,20,,300,0,1,0,1,0xFFFFFFFF,63,2,16,,0,1,0,{ bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; if(BaseLevel<80) { bonus bHealPower,5; } },{},{} 15061,Egir_Armor,Egir Armor,4,200000,,2600,,55,,1,0xFFFFFFFF,63,2,16,,110,1,0,{ bonus bAllStats,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000; },{},{} 15062,TE_Woe_Coat,TE Woe Coat,4,0,,0,,15,,0,0xFFFFFFFF,63,2,16,,40,1,,{ bonus bMdef,15; bonus bMaxHP,250; bonus bMaxSP,250; bonus2 bSubRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25; },{},{} 15063,TE_Woe_Chain_Mail,TE Woe Chain Mail,4,0,,0,,25,,0,0x000444A2,63,2,16,,40,1,,{ bonus bMdef,5; bonus bMaxHP,450; bonus bMaxSP,50; bonus2 bSubRace,RC_Player,15; bonus2 bResEff,Eff_Freeze,25; },{},{} @@ -8622,31 +8697,32 @@ 15069,Suit_Of_Sid,Suit Of Sid,4,20,,1000,,30,,0,0xFFFFFFFF,63,2,16,,0,1,0,{},{},{} 15070,Clothes_of_Happiness,Clothes of Happiness,4,10,,1000,,5,,1,0xFFFFFFFF,63,2,16,,1,1,,{ bonus bMdef,5; bonus bLuk,getrefine(); },{},{} 15073,Anti_Magic_Suit,Anti-Magic Suits,4,10,,1500,,50,,1,0xFFFFFFFF,63,2,16,,99,1,0,{ .@r = getrefine(); bonus bMaxHPrate,5+((.@r >= 9) ? 2 : 0); bonus bMdef,10+((.@r >= 7) ? 5 : 0); },{},{} -15074,Geffen_Mage_Robe,Geffen Magic Robe,4,10,,1000,,40,,1,0xFFFFFFFF,63,2,16,,99,1,0,{ .@r = getrefine(); bonus bUseSPrate,-10-((.@r>=7) ? 5: 0); bonus bVariableCastrate,-15-((.@r>=9) ? 5: 0); bonus bNoCastCancel2,1; },{},{} +15074,Geffen_Mage_Robe,Geffen Magic Robe,4,10,,1000,,40,,1,0xFFFFFFFF,63,2,16,,99,1,0,{ .@r = getrefine(); bonus bUseSPrate,-10-((.@r>=7) ? 5: 0); bonus bVariableCastrate,15-((.@r>=9) ? 5: 0); bonus bNoCastCancel2; },{},{} 15088,School_Uniform,School Uniform,4,20,,500,,25,,1,0xFFFFFFFF,63,2,16,,0,1,0,{ bonus bAgi,1; bonus bLuk,1; bonus bMaxHP,BaseLevel*3; bonus bMaxSP,BaseLevel/2; },{},{} 15089,Menswear,Menswear,4,10,,300,,40,,0,0xFFFFFFFE,63,2,16,,80,1,,{ .@r = getrefine(); bonus bAspdRate,3+((.@r>=7)?2:0); bonus bDelayrate,-3-((.@r>=7)?2:0); bonus bVariableCastrate,-3-((.@r>=7)?2:0); },{},{} 15090,Armor_Of_Gray,Armor of Gray,4,10,,2400,,90,,1,0x000654E2,56,2,16,,120,1,0,{ bonus bMdef,10; bonus2 bSubEle,Ele_Holy,10+getrefine()*2; },{},{} 15091,Gray_Robe,Gray Robe,4,20,,1300,,55,,1,0x00018314,56,2,16,,120,1,0,{ bonus2 bSubEle,Ele_Holy,10+getrefine()*2; },{},{} 15093,Hero_Plate,Hero Plate,4,10,,4000,,120,,1,0x00004082,63,2,16,,160,1,,{ bonus bMdef,5; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"LG_BANISHINGPOINT",10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",10; .@r = getrefine(); bonus5 bAutoSpell,"AL_HEAL",10,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"WZ_STORMGUST",10,50+.@r,BF_SHORT,1; },{},{} -15094,Hero_Magic_Coat,Hero Magic Coat,4,10,,800,,50,,1,0x00010204,63,2,16,,160,1,,{ bonus bMatk,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bFlee,10; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; .@r = getrefine(); if (.@r) { bonus bFixedCastrate,21-.@r/2; bonus bNoCastCancel2,1; bonus bMdef,.@r/2; } },{},{} -15095,Hero_Judgement_Shawl,Hero Judgement Shawl,4,10,,500,,77,,1,0x00008110,63,2,16,,160,1,,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"AB_JUDEX",10; bonus2 bSkillAtk,"AB_ADORAMUS",10; bonus2 bSkillAtk,"SR_DRAGONCOMBO",10; bonus2 bSkillAtk,"SR_SKYNETBLOW",10; bonus2 bSkillAtk,"SR_EARTHSHAKER",10; .@r = getrefine(); bonus5 bAutoSpell,"PR_KYRIE",1,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"PR_LEXAETERNA",10,50+.@r,BF_MAGIC,1; },{},{} +15094,Hero_Magic_Coat,Hero Magic Coat,4,10,,800,,50,,1,0x00010204,63,2,16,,160,1,,{ bonus bMatk,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bFlee,10; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; .@r = getrefine(); if (.@r) { bonus bFixedCastrate,21-.@r/2; bonus bNoCastCancel2; bonus bMdef,.@r/2; } },{},{} +15095,Hero_Judgement_Shawl,Hero Judgement Shawl,4,10,,500,,77,,1,0x00008110,63,2,16,,160,1,,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"AB_JUDEX",10; bonus2 bSkillAtk,"AB_ADORAMUS",10; bonus2 bSkillAtk,"SR_DRAGONCOMBO",10; bonus2 bSkillAtk,"SR_SKYNETBLOW",10; bonus2 bSkillAtk,"SR_EARTHSHAKER",10; .@r = getrefine(); bonus5 bAutoSpell,"PR_KYRIE",10,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"PR_LEXAETERNA",1,50+.@r,BF_MAGIC,1; },{},{} 15096,Hero_Trade_Mail,Hero Trade Mail,4,10,,500,,100,,1,0x00040420,56,2,16,,160,1,,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; .@r = getrefine(); if(readparam(bStr) >= 90) bonus bStr,.@r/2; if(readparam(bInt) >= 90) bonus bInt,.@r/2; if(readparam(bAgi) >= 90) bonus bAgi,.@r/2; if(readparam(bVit) >= 90) bonus bVit,.@r/2; if(readparam(bDex) >= 90) bonus bDex,.@r/2; if(readparam(bLuk) >= 90) bonus bLuk,.@r/2; },{},{} 15097,Hero_Hidden_Cloth,Hero Hidden Cloth,4,10,,200,,70,,1,0x00021040,63,2,16,,160,1,0,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus2 bSkillAtk,"SC_FATALMENACE",10; bonus2 bSkillAtk,"SC_TRIANGLESHOT",10; bonus2 bSkillAtk,"GC_CROSSIMPACT",10; bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",10; autobonus "{ bonus bCritical,20; bonus bFlee,20; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; }",(5+getrefine())*10,10000,BF_WEAPON; },{},{} -15098,Hero_Taget_Suits,Hero Target Suit,4,10,,200,,60,,1,0x00080808,56,2,16,,160,1,,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; .@r = getrefine(); bonus bAllStats,1; bonus5 bAutoSpell,"AC_CONCENTRATION",10,(5+.@r)*5,BG_WEAPON,0; bonus5 bAutoSpell,"AC_DOUBLE",10,(5+.@r)*5,BG_WEAPON,1; },{},{} +15098,Hero_Taget_Suits,Hero Target Suit,4,10,,200,,60,,1,0x00080808,56,2,16,,160,1,,{ bonus bMaxHPrate,5; bonus bMaxSPrate,5; .@r = getrefine(); bonus bAllStats,1; bonus5 bAutoSpell,"AC_CONCENTRATION",10,(5+.@r)*5,BF_WEAPON,0; bonus5 bAutoSpell,"AC_DOUBLE",10,(5+.@r)*5,BF_WEAPON,1; },{},{} 15100,Frozen_Breastplate,Frozen Breastplate,4,20,,1500,,20,,1,0xFFFFFFFF,63,2,16,,130,1,0,{ bonus bDefEle,Ele_Water; },{},{} -15101,Harden_Breastplate,Hardened Breastplate,4,20,,1500,,20,,1,0xFFFFFFFF,63,2,16,,130,1,0,{},{},{} +15101,Harden_Breastplate,Hardened Breastplate,4,20,,1500,,20,,1,0xFFFFFFFF,63,2,16,,130,1,0,{ bonus bDefEle,Ele_Earth; },{},{} 15103,Kirin_Armor,Kirin Armor,4,10,,500,,55,,1,0xFFFFFFFF,63,2,16,,70,,,{ bonus bDefEle,Ele_Holy; },{},{} 15104,FishingMan_Mail,FishingMan Mail,4,10,,500,,30,,1,0xFFFFFFFF,63,2,16,,50,,,{ bonus2 bAddRace,RC_Fish,10; bonus2 bMagicAddRace,RC_Fish,10; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_All,.@r; bonus2 bMagicAddRace,RC_All,.@r; } },{},{} 15105,Kaftan,Kaftan,4,20,,400,,13,,1,0xFFFFFFFF,63,2,16,,0,1,0,{ bonus bMdef,3; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,5; },{},{} 15110,Supplement_Part_Str,Supplement Part Str,4,25000,,2000,,80,,,0x00000400,56,2,16,,100,1,0,{ bonus2 bAddClass,Class_All,5+getrefine()/4; },{},{} -15111,Upgrade_Part_Plate,Reinforced Parts - Gloves,4,10,,3000,,110,,,0x00000400,56,2,16,,100,1,,{ bonus bUnbreakableArmor,1; bonus2 bSubSize,0,10; bonus2 bSubSize,1,10; .@r = getrefine(); if(.@r>=7){ bonus2 bSubSize,2,10; }; if(.@r>=9){ bonus2 bSubSize,0,5; bonus2 bSubSize,1,5; } },{},{} -15116,Airship_Armor,Armor Of Airship,4,10,,700,,100,,0,0xFFFFFFFF,63,2,16,,125,1,,{ bonus bMaxHP,1000; bonus bMaxSP,100; bonus bMdef,10; bonus bAllStats,1; },{},{} -15117,Felock_Armor,Tarlock's Armor,4,10,,750,,70,,0,0xFFFFFFFF,63,2,16,,125,1,,{ bonus bMaxHP,500; bonus bMaxSP,50; bonus bMdef,10; bonus bAllStats,1; .@r = getrefine(); if(.@r>=7) { bonus bMaxHP,500; bonus bMaxSP,50; } if(.@r>=9) { bonus bMaxHP,200; bonus bMaxSP,20; } if(.@r>=12) { bonus bMaxHP,300; bonus bMaxSP,30; } },{},{} +15111,Upgrade_Part_Plate,Reinforced Parts - Gloves,4,10,,3000,,110,,,0x00000400,56,2,16,,100,1,,{ bonus bUnbreakableArmor; bonus2 bSubSize,0,10; bonus2 bSubSize,1,10; .@r = getrefine(); if(.@r>=7){ bonus2 bSubSize,2,10; }; if(.@r>=9){ bonus2 bSubSize,0,5; bonus2 bSubSize,1,5; } },{},{} +15116,Airship_Armor,Airship's Armor,4,10,,700,,100,,0,0xFFFFFFFF,63,2,16,,125,0,,{ bonus bMaxHP,1000; bonus bMaxSP,100; bonus bMdef,10; bonus bAllStats,1; },{},{} +15117,Felock_Armor,Felrock's Armor,4,10,,750,,70,,0,0xFFFFFFFF,63,2,16,,125,1,,{ bonus bMaxHP,500; bonus bMaxSP,50; bonus bMdef,10; bonus bAllStats,1; .@r = getrefine(); if(.@r>=7) { bonus bMaxHP,500; bonus bMaxSP,50; } if(.@r>=9) { bonus bMaxHP,200; bonus bMaxSP,20; } if(.@r>=12) { bonus bMaxHP,300; bonus bMaxSP,30; } },{},{} 15121,Robe_Of_Sarah,Sarah Combat Robe,4,10,,800,,35,,1,0xFFFFFFFF,63,2,16,,145,1,,{ /*TODO: Confirm the real rate and additional MAtk*/ .@r = getrefine(); autobonus "{ bonus bMatk,20; }",100,(10+((.@r) ? .@r*8 : 0))*1000,BF_MAGIC;},{},{} 15123,Whikebain_Suit,Whikebain Suit,4,0,,900,,56,,1,0x00001000,56,2,16,,105,1,,{ .@r = getrefine(); bonus bCritAtkRate,(.@r>=7)?(6):((.@r>=5)?(4):(0)); bonus3 bAutoSpell,"DC_WINKCHARM",1,10; /* Confirm: Success rate */ },{},{} 15126,Female_Poring_Balloon,Private Doram Suits,4,20,,700,,80,,1,0x80000000,7,2,16,,100,1,,{ bonus bMaxHP,500; bonus bMaxSP,100; .@r = getrefine()/3; bonus bDex,.@r; bonus bInt,.@r; },{},{} +15128,Excelion_Suit,Excelion Suit,4,20,,1000,,100,,0,0xFFFFFFFF,63,2,16,,99,1,,{ bonus bVit,6 + (BaseLevel > 129 ? 4 : 0); bonus bMaxHPrate,(getrefine() / 3) * 4; bonus bUnbreakableArmor; },{},{} 15129,Blue_Bellflower_Hat,Luxury Doram Suit,4,20,,800,,100,,1,0x80000000,7,2,16,,140,1,,{ bonus bMaxHPrate,10; bonus bMaxSPrate,10; .@r = getrefine()/2; bonus bDex,.@r; bonus bInt,.@r; },{},{} -15138,Aegir_Armor,Aegir Armor,4,10,,1600,,25,,1,0xFFFFFFFF,63,2,16,,40,1,,{ bonus bMaxHP,500; bonus bMaxSP,50; bonus bUnbreakableArmor,1; },{},{} +15138,Aegir_Armor,Aegir Armor,4,10,,1600,,25,,1,0xFFFFFFFF,63,2,16,,40,1,,{ bonus bMaxHP,500; bonus bMaxSP,50; bonus bUnbreakableArmor; },{},{} 15141,Rift_Ancient_Armor,Rift Ancient Armor,4,10,,500,,30,,1,0xFFFFFFFF,63,2,16,,100,1,,{ .@r = getrefine(); bonus bMaxHP,(.@r >= 9 ? 1500 : .@r >= 7 ? 900 : 500); bonus bMaxSP,-100; },{},{} 15145,EvilDragon_Armor,Evil Dragon Armor,4,0,,4000,,60,,1,0xFFFFFFFF,63,2,16,,,1,,{ .@r = getrefine(); bonus2 bHPDrainRate,100,(.@r>=10)?(3):((.@r>=9)?(4):((.@r>=8)?(6):(0))); bonus2 bSPDrainRate,100,(.@r>=10)?(5):((.@r>=9)?(3):((.@r>=8)?(2):(0))); /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */ },{},{} 15146,Flattery_Robe,Flattery Robe,4,20,,100,,0,,1,0xFFFFFFFF,63,2,16,,100,1,,{ skill "SM_ENDURE",1; .@i = BaseLevel; bonus bMatk,(.@i>=140)?(150):((.@i>=120)?(100):(50)); },{},{} @@ -8688,32 +8764,32 @@ 16013,Mace_Of_Judgement,Mace Of Judgement,5,20,,1200,140:180,,1,2,0x00000100,56,2,2,3,100,1,8,{ bonus bAtkEle,Ele_Holy; bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{} 16014,P_Mace3,Eden Mace III,5,0,,0,172,,1,0,0x0004C5B3,63,2,2,3,60,0,8,{},{},{} 16015,Cat_Club,Cat Club,5,20,,700,88,,1,3,0x0004C5B3,63,2,2,1,1,1,8,{ bonus2 bAddRace,RC_Brute,15; },{},{} -16016,Tuna,Tuna,5,0,,0,180,,1,0,0x0004C5B3,63,2,2,1,50,0,8,{ bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Stun,150; bonus3 bAutoSpell,"SM_BASH",5,20; if(BaseLevel>99) bonus bBaseAtk,20; },{},{} +16016,Tuna,Tuna,5,0,,0,180,,1,0,0x0004C5B3,63,2,2,1,50,0,8,{ bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAutoSpell,"SM_BASH",max(getskilllv("SM_BASH"),5),20; bonus2 bAddEff2,Eff_Freeze,100; if(BaseLevel>99) bonus bBaseAtk,20; },{},{} 16017,Bloody_Cross,Bloody Cross,5,20,,1500,170,,1,0,0x00008110,63,2,2,4,100,1,8,{ bonus bAtkEle,Ele_Dark; .@r = getrefine(); bonus3 bAutoSpell,"WL_HELLINFERNO",1,(.@r?.@r*20:20); },{},{} 16018,Mace_Of_Judgement2,Empowered Mace Of Judgement,5,20,,1200,170:180,,1,1,0x00000100,56,2,2,3,130,1,8,{ bonus bAtkEle,Ele_Holy; bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; },{},{} 16019,Upg_Mace,Upg Mace,5,20,,800,80,,1,1,0x0004C5B3,63,2,2,3,1,1,8,{ .@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bHealPower,.@r; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{} -16020,Velum_Stunner,Vellum Stunner,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus2 bAddEff,Eff_Stun,1000+.@r; bonus4 bSetDefRace,RC_Player,10000,5000,1; bonus4 bSetMDefRace,RC_Player,10000,5000,1; bonus bAspdRate,.@r; },{},{} -16021,Velum_Flail,Vellum Flail,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon,1; bonus3 bStateNoRecoverRace,RC_DemiHuman,10000,10000; .@r = getrefine(); bonus bHit,.@r; bonus bCritical,.@r; },{},{} -16022,Nemesis_,Nemesis,5,20,,900,120,,1,2,0x00008110,63,2,2,4,60,1,8,{ bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy; },{},{} -16023,Metal_Mace,Metal Mace,5,20,,0,80,,1,1,0x0004C5B3,63,2,2,3,1,1,8,{ bonus bUnbreakableWeapon,1; bonus bBaseAtk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} +16020,Velum_Stunner,Vellum Stunner,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon; .@r = getrefine(); bonus2 bAddEff,Eff_Stun,1000+.@r; bonus4 bSetDefRace,RC_Player,10000,5000,1; bonus4 bSetMDefRace,RC_Player,10000,5000,1; bonus bAspdRate,.@r; },{},{} +16021,Velum_Flail,Vellum Flail,5,20,,1500,170,,1,0,0x0004C5B3,63,2,2,4,95,1,8,{ bonus bUnbreakableWeapon; bonus3 bStateNoRecoverRace,RC_DemiHuman,10000,10000; .@r = getrefine(); bonus bHit,.@r; bonus bCritical,.@r; },{},{} +16022,Nemesis_,Nemesis,5,20,,900,120,,1,2,0x00008110,63,2,2,4,60,1,8,{ bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy; },{},{} +16023,Metal_Mace,Metal Mace,5,20,,0,80,,1,1,0x0004C5B3,63,2,2,3,1,1,8,{ bonus bUnbreakableWeapon; bonus bBaseAtk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5); },{},{} 16024,Quadrille_,Quadrille,5,10,,900,165,,,2,0x00008110,63,2,2,4,40,1,8,{ bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10; },{},{} -16025,TE_Woe_Mace,TE Woe Mace,5,0,,0,120,,1,0,0x0004C5B3,63,2,2,3,40,1,8,{ bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; bonus bHPRecovRate,5; bonus bSPRecovRate,5; },{},{} -16026,RWC_Memory_Mace,RWC Memory Mace,5,20,,800,100,,1,1,0x0004C5B2,63,2,2,3,1,1,8,{ bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bBaseAtk,(.@r/30)*30; if(.@r>=9){ .@i = 1; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",1,10; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,5; } },{},{} +16025,TE_Woe_Mace,TE Woe Mace,5,0,,0,120,,1,0,0x0004C5B3,63,2,2,3,40,1,8,{ bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; bonus bHPRecovRate,5; bonus bSPRecovRate,5; },{},{} +16026,RWC_Memory_Mace,RWC Memory Mace,5,20,,800,100,,1,1,0x0004C5B2,63,2,2,3,1,1,8,{ bonus bUnbreakableWeapon; .@r = getrefine(); bonus bBaseAtk,(.@r/30)*30; if(.@r>=9){ .@i = 1; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",1,10; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,5; } },{},{} 16027,Hammer_Of_Evil_Slayer,Evil Slayer Destroyer Hammer,5,10,,1350,125,,1,1,0x0004C5B3,63,2,2,3,100,1,8,{ bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0)); },{},{} 16028,Thanos_Hammer,Thanatos Hammer,5,10,,3000,180:120,,1,1,0x0004C5B2,56,2,2,4,120,1,8,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } -16029,Noble_Cross,Noble Cross,5,10,,1500,195:150,,,1,0x00000010,58,2,2,4,40,1,8,{ bonus3 bAutoSpell,"PR_TURNUNDEAD",6,50; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,12; },{},{} +16029,Noble_Cross,Noble Cross,5,10,,1500,195:150,,,1,0x00000010,58,2,2,4,40,1,8,{ bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"PR_TURNUNDEAD",6,50; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,12; },{},{} 16030,Pilebuncker_S,Pile Bunker S,5,20,,3000,400,,1,1,0x00000400,56,2,2,4,130,1,8,{ bonus bAspdRate,getrefine()/2; },{},{} 16031,Pilebuncker_P,Pile Bunker P,5,20,,4000,450,,1,,0x00000400,56,2,2,4,130,1,8,{ bonus bBaseAtk,getrefine()*5; },{},{} 16032,Pilebuncker_T,Pile Bunker T,5,20,,3500,400,,1,1,0x00000400,56,2,2,4,130,1,8,{ bonus bUseSPrate,getrefine()*-1; },{},{} -16033,Robot's_Arm,Robot's Mechanical Arm,5,20,,3000,195,,1,2,0x00000400,56,2,2,4,130,1,8,{ bonus bUnbreakableWeapon,1; bonus bCritical,20; },{},{} +16033,Robot's_Arm,Robot's Mechanical Arm,5,20,,3000,195,,1,2,0x00000400,56,2,2,4,130,1,8,{ bonus bUnbreakableWeapon; bonus bCritical,20; },{},{} 16034,Half_Mjolnir,Half Mjolnir,5,20,,6000,350,,1,0,0x000444A2,63,2,2,4,95,0,8,{ bonus bAtkEle,Ele_Wind; bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,"MG_THUNDERSTORM",10,100; autobonus "{ bonus bSplashRange,1; }",50,10000; },{},{} -16035,Half_BF_Morning_Star1,Half BF Morning Star1,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} +16035,Half_BF_Morning_Star1,Half BF Morning Star1,5,20,,0,105,,1,0,0x0004C5B3,63,2,2,3,80,1,8,{ bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} 16036,Ru_Blue_Mace,Blue Mace,5,10,,1500,170,,1,1,0x00008000,56,2,2,3,100,1,8,{ bonus bVit,5; bonus bInt,5; },{},{} 16037,Ru_Gold_Mace,Ru Gold Mace,5,0,,1500,170,,1,2,0x00008000,56,2,2,3,120,1,8,{ bonus bVit,8; bonus bInt,8; },{},{} 16038,Infinity_Mace,Infinity Mace,5,10,,500,155,,1,1,0x0004C780,56,2,2,4,100,1,8,{},{},{} 16039,Spoon,Spoon,5,10,,1000,80,,1,1,0x0004C5B3,63,2,2,3,40,1,8,{ bonus bAspd,10; bonus2 bAddEff,Eff_Curse,1000; },{},{} 16040,Crimson_Mace,Crimson Mace,5,20,,800,80,,1,2,0x0004C5B3,63,2,2,3,70,1,8,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} -16041,Mace_of_Vicious_Mind,Mace of Vicious Mind,5,20,,1300,130,,1,1,0x0004C5B3,63,2,2,4,160,1,8,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1; },{},{} +16041,Mace_of_Vicious_Mind,Mace of Vicious Mind,5,20,,1300,130,,1,1,0x0004C5B3,63,2,2,4,160,1,8,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon; },{},{} 16043,Meteor_Strike,Meteor Strike,5,0,,20000,1,,1,2,0x00000001,63,2,2,4,110,1,8,{ bonus bBaseAtk,10*getskilllv("BS_WEAPONRESEARCH"); bonus bBaseAtk,30*getskilllv("MO_IRONHAND"); .@s = getskilllv("AM_AXEMASTERY"); bonus bBaseAtk,7*.@s; bonus bHit,5*.@s; bonus bBaseAtk,10*getrefine(); if (getskilllv("MC_PUSHCART") > 9) skill "MC_CARTREVOLUTION",1; if (getskilllv("SM_SWORD") > 0) skill "KN_BOWLINGBASH",1; .@str = readparam(bStr); if (.@str > 119) bonus bUseSPrate,-30; else if (.@str > 107) bonus bUseSPrate,-20; },{},{} 16048,Unity_Mace,Unity Mace,5,20,,400,76,,1,1,0x0004C5B3,63,2,2,3,1,1,8,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} 16051,Valkyrie_Hammer,Valkyrie Hammer,5,0,,100,50,,1,4,0x0004C3B3,63,2,2,1,70,1,8,{ if ((eaclass()&EAJ_BASEMASK) == EAJ_NOVICE) { bonus bUseSPrate,-5; .@r = getrefine(); bonus bVit,.@r; bonus bMaxHP,200; bonus bFlee2,1; bonus bAspdRate,1; bonus bVariableCast,.@r/2; } else if ((eaclass()&EAJ_BASEMASK) == EAJ_SWORDMAN) { bonus bVit,getrefine(); bonus bMaxHP,500; bonus bMaxSP,100; } else if ((eaclass()&EAJL_2) == EAJ_PRIEST) { bonus bBaseAtk,50; bonus bMatk,100; bonus bAspdRate,getrefine(); } else if ((eaclass()&EAJL_2) == EAJ_MONK) { bonus bMaxSP,200; bonus bUseSPrate,-5; bonus bFlee2,getrefine(); } else if ((eaclass()&EAJ_BASEMASK) == EAJ_MERCHANT) { bonus bBaseAtk,100; bonus bHit,10; bonus bVariableCast,getrefine()/2; } },{},{} @@ -8884,7 +8960,7 @@ 16509,Cooked_Nine_Tail_Box_10,Cooked Nine Tail Box (10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12505,10; },{},{} 16510,Immortal_Stew_Box_10,Immortal Stew Box (10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12506,10; },{},{} 16514,Blessing_Scroll_Box_10,Blessing Scroll Box (10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12522,10; },{},{} -16515,Increase_Agility_Scroll_Box_10,Increase Agility Scroll Box (10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12522,10; },{},{} +16515,Increase_Agility_Scroll_Box_10,Increase Agility Scroll Box (10),18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12523,10; },{},{} // 16542,Xmas_Bless,Xmas Bless,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Xmas_Bless); },{},{} 16543,Snowman_Hat_Box,Snowman Hat Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 5738,1; },{},{} @@ -8951,7 +9027,7 @@ 16670,Field_Manual_Box_A,Field Manual Box A,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 14532,10; if (!rand(10)) getitem callfunc("F_Rand",603,617),1; },{},{} 16673,Libra_Scroll,Libra Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Libra_Scroll); },{},{} 16675,Splash_Scroll,Splash Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getgroupitem(IG_Splash_Scroll); },{},{} -16676,Zodiac_Crown_Pack,Zodiac Crown Box,2,20,,1,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem callfunc("F_Rand",5546,5550,5570,5582,5588,5598,5662,5676,5739,5744,5513,5515),1; },{},{} +16676,Zodiac_Crown_Pack,Zodiac Crown Box,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem callfunc("F_Rand",5546,5550,5570,5582,5588,5598,5662,5676,5739,5744,5513,5515),1; },{},{} 16677,Universal_Catalog_Gold_Box10,Universal Catalog Gold 10 Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12581,10; },{},{} 16678,Universal_Catalog_Gold_Box50,Universal Catalog Gold 50 Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12581,50; },{},{} 16679,Universal_Catalog_Gold_Box10_,Universal Catalog Gold 10 Box,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12581,10; },{},{} @@ -9171,7 +9247,7 @@ 17115,Sprout_Hat_Box,Sprout Hat Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 18596,1; },{},{} 17116,Mercury_Helm_Box,Mercury Helm Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 18597,1; },{},{} 17117,Aries_Scroll,Aries Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} -17118,ASPD_Potion_Box10,ASPD Enhanced Potion Box,18,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12684,3; },{},{} +17118,ASPD_Potion_Box10,ASPD Enhanced Potion Box,18,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12684,10; },{},{} 17120,Taurus_Scroll,Taurus Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 17121,Starry_Scroll,Starry Scroll,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 17122,Immuned_Shield_Box,Immuned Shield Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 2168,1; },{},{} @@ -9419,15 +9495,15 @@ 18101,F_Bow_Of_Rudra_C,Rudra Bow,5,2,,0,185,,5,0,0x000A0848,63,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{} 18102,E_Bow_Of_Rudra_C,Rudra Bow,5,2,,0,185,,5,0,0x000A0848,63,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{} 18103,Mystic_Bow,Mystic Bow,5,0,,1700,75:100,,5,0,0x00080800,56,2,34,3,105,1,11,{ bonus bInt,4; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",10; },{},{} -18104,Adventure_Bow,Adventure Bow,5,0,,0,60,,1,0,0x00080800,63,2,34,1,1,0,11,{ bonus bUnbreakableWeapon,1; },{},{} +18104,Adventure_Bow,Adventure Bow,5,0,,0,60,,1,0,0x00080800,63,2,34,1,1,0,11,{ bonus bUnbreakableWeapon; },{},{} 18105,Academy_Bow,Academy Bow,5,0,,1200,90,,5,1,0x00080800,63,2,34,1,1,1,11,{},{},{} 18106,P_Bow3,Eden Bow III,5,0,,0,140,,5,0,0x000A0848,63,2,34,3,60,0,11,{},{},{} -18107,Malang_Snow_Crab,Malangdo Crab,5,0,,0,120,,5,0,0x000A0848,63,2,34,1,50,0,11,{ bonus bUnbreakableWeapon,1; bonus bLuk,3; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bLongAtkRate,10; } },{},{} -18108,Brindle_Eel,Zebra Eel,5,0,,0,180,,5,0,0x00080800,63,2,34,1,50,0,11,{ bonus bUnbreakableWeapon,1; bonus bAgi,3; autobonus "{ bonus bAspd,2; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(BaseLevel>99) { bonus bLongAtkRate,10; } },{},{} +18107,Malang_Snow_Crab,Malangdo Crab,5,0,,0,120,,5,0,0x000A0848,63,2,34,1,50,0,11,{ bonus bUnbreakableWeapon; bonus bLuk,3; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bLongAtkRate,10; } },{},{} +18108,Brindle_Eel,Zebra Eel,5,0,,0,180,,5,0,0x00080800,63,2,34,1,50,0,11,{ bonus bUnbreakableWeapon; bonus bAgi,3; autobonus "{ bonus bAspd,2; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(BaseLevel>99) { bonus bLongAtkRate,10; } },{},{} 18109,Catapult,Thief Crossbow,5,56000,,1100,150,,5,2,0x00020000,63,2,34,4,100,1,11,{ .@r = getrefine(); bonus2 bSkillAtk,"SC_TRIANGLESHOT",(.@r*2); bonus2 bSkillUseSP,"SC_TRIANGLESHOT",(.@r*2); },{},{} 18110,Big_CrossBow,Giant Crossbow,5,56000,,900,160,,5,2,0x00000800,63,2,34,4,110,1,11,{ .@r = getrefine(); bonus2 bSkillAtk,"RA_ARROWSTORM",(.@r*5); bonus2 bSkillUseSP,"RA_ARROWSTORM",-(.@r*5); if(readparam(bAgi)>=120){ bonus bAspd,1; } },{},{} 18111,Creeper_Bow,Creeper Bow,5,56000,,1500,150,,5,2,0x00080800,63,2,34,3,120,1,11,{ bonus bDex,1; bonus3 bAutoSpell,"PF_SPIDERWEB",1,200; },{},{} -18112,Upg_Bow,Upg Bow,5,20,,600,60,,5,1,0x000A0848,63,2,34,3,1,0,11,{ .@r = getrefine(); bonus bBaseAtk,(.@r*7); bonus bLongAtkRate,(.@r*2); if(BaseJob==Job_Hunter) bonus bBaseAtk,20; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10); },{},{} +18112,Upg_Bow,Upg Bow,5,20,,600,60,,5,1,0x000A0848,63,2,34,3,1,1,11,{ .@r = getrefine(); bonus bBaseAtk,(.@r*7); bonus bLongAtkRate,(.@r*2); if(BaseJob==Job_Hunter) bonus bBaseAtk,20; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10); },{},{} 18113,Velum_Arbalest,Vellum Arbalest,5,20,,1100,50,,5,0,0x000A0848,63,2,34,4,95,1,11,{ bonus3 bSPVanishRaceRate,RC_Player,10000,4; bonus bAspd,-5; },{},{} 18114,Velum_CrossBow,Vellum CrossBow,5,20,,1100,110,,5,0,0x000A0848,63,2,34,4,95,1,11,{ bonus2 bAddRace,RC_Player,30+getrefine(); bonus2 bIgnoreDefRaceRate,RC_Player,30; },{},{} 18115,Orc_Archer_Bow_,Orc Archer Bow,5,20,,1600,120,,5,1,0x000A0848,63,2,34,3,65,1,11,{},{},{} @@ -9439,7 +9515,7 @@ 18121,Bow_of_Vicious_Mind,Bow of Vicious Mind,5,20,,1700,170,,5,1,0x000A0808,63,2,34,4,160,1,11,{ bonus bAtk,pow(min(getrefine(),15),2); },{},{} 18122,Gigantic_Bow,Giant Bow,5,20,,3000,195,,5,1,0x00000800,63,2,34,4,130,1,11,{ bonus bLongAtkRate,40; bonus bAspdRate,-15; bonus bHit,50; },{},{} 18123,Bow_Of_Storm,Bow of Storms,5,20,,1500,160,,5,1,0x00080800,63,2,34,4,130,1,11,{ bonus bLongAtkRate,30; bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",15; },{},{} -18124,Half_BF_Bow1,Half BF Bow1,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} +18124,Half_BF_Bow1,Half BF Bow1,5,20,,0,100,,5,0,0x000A0848,63,2,34,3,80,1,11,{ bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} 18125,Arcus_Daemonicus,Arcus Daemonicus,5,20,,1000,130,,5,2,0x00020008,63,2,34,4,80,1,11,{ /*Fix me: bonus2 bAddClass,Class_All,50; when equipped with shadow arrows*/ if(getrefine()>9){ bonus bAspd,1; bonus bUseSPrate,-20; } },{},{} 18126,Ru_Blue_Bow,Blue Bow,5,10,,1200,150,,5,1,0x00000800,56,2,2,3,100,1,11,{ bonus bAgi,5; bonus bDex,5; },{},{} 18127,Ru_Gold_Bow,Ru Gold Bow,5,0,,1200,150,,5,2,0x00000800,56,2,34,3,120,1,11,{ bonus bAgi,8; bonus bDex,8; },{},{} @@ -9466,11 +9542,11 @@ 18510,Blood_Angel_Hair_Band,Blood Angel Hair Band,4,0,,0,,1,,0,0xFFFFFFFF,63,2,256,,60,0,679,{ bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_DemiHuman,10; },{},{} 18511,Blood_Angel_Wing_Ear,Blood Angel Wing Ear,4,0,,0,,1,,0,0xFFFFFFFF,63,2,512,,60,0,680,{},{},{} 18512,Juho_Necktie,Juho Necktie,4,0,,0,,1,,1,0xFFFFFFFF,63,2,256,,20,1,443,{},{},{} -18513,Shining_Sunflower,Shining Sunflower,4,20,,300,,0,,0,0xFFFFFFFE,63,2,256,,0,0,681,{ bonus bLuk,2; },{},{} +18513,Shining_Sunflower,Shining Sunflower,4,20,,300,,0,,0,0xFFFFFFFE,63,2,256,,0,0,681,{ bonus bLuk,2; bonus3 bAutoSpellWhenHit,"SM_ENDURE",1,10; },{},{} 18514,Para_Team_Hat2,Eden Team Hat II,4,0,,0,,5,,1,0xFFFFFFFF,63,2,256,,60,1,682,{ autobonus "{ bonus bBaseAtk,10; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; },{},{} -18515,RTC_Winner_Headgear,RTC Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,683,{ bonus bAllStats,5; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50; },{},{} -18516,RTC_2nd_Headgear,RTC 2nd Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,684,{ bonus bAllStats,3; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50; },{},{} -18517,RTC_3rd_Headgear,RTC 3rd Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,685,{ bonus bAllStats,1; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;},{},{} +18515,RTC_Winner_Headgear,RTC Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,683,{ bonus bAllStats,5; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50; },{},{} +18516,RTC_2nd_Headgear,RTC 2nd Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,684,{ bonus bAllStats,3; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50; },{},{} +18517,RTC_3rd_Headgear,RTC 3rd Winner Hat,4,20,,100,,2,,1,0xFFFFFFFF,63,2,512,,1,0,685,{ bonus bAllStats,1; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;},{},{} 18518,Ear_Of_Angel's_Wing_,Angel Wing Ears,4,20,,100,,3,,1,0xFFFFFFFF,63,2,512,,70,0,158,{ bonus bStr,1; },{},{} 18519,Ear_Of_Devil's_Wing_,Evil Wing Ears,4,20,,100,,3,,1,0xFFFFFFFF,63,2,512,,70,0,152,{ bonus bStr,1; },{},{} 18520,Jaty_C,Jaty Crown,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,1,1,686,{ bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Plant,5; bonus2 bAddRace,RC_Brute,5; },{},{} @@ -9483,7 +9559,7 @@ 18527,Gloomy_Pumpkin_Hat,Dark Pumpkin-head,4,20,,500,,5,,0,0xFFFFFFFF,63,2,256,,45,1,691,{ bonus2 bAddMonsterDropItem,12192,10; bonus bMdef,5; },{},{} 18528,Tare_Neko_Cru,Drooping Neko Crew,4,20,,100,,0,,1,0xFFFFFFFF,63,2,256,,1,1,692,{ bonus bInt,2; bonus bMdef,5; .@r = getrefine(); if(.@r>=7){ .@i = 1; bonus bMatkRate,(.@r>=9)?7:2; } else .@i = 5; bonus2 bIgnoreMdefClassRate,Class_Normal,.@i+.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,.@i+.@r; },{},{} 18529,Drooping_Wild_Rose,Accurate Wild Rose,4,20,,500,,5,,1,0xFFFFFFFF,63,2,768,,30,1,541,{ bonus bMaxHPrate,-10; bonus bAspdRate,3; },{},{} -18530,Tha_Despero_Mask,Thanatos Despero Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,513,,30,0,693,{ bonus bUnbreakableHelm,1; bonus bLuk,-5; bonus bFlee,4; },{},{} +18530,Tha_Despero_Mask,Thanatos Despero Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,513,,30,0,693,{ bonus bUnbreakableHelm; bonus bLuk,-5; bonus bFlee,4; },{},{} 18531,Drooping_Permeter,Drooping Permeter,4,20,,1000,,8,,1,0xFFFFFFFF,63,2,256,,10,1,694,{ bonus2 bAddDefMonster,1314,-20; bonus2 bAddDefMonster,1316,-20; bonus2 bAddDefMonster,1319,-20; bonus2 bAddDefMonster,1315,-20; bonus2 bAddDefMonster,1318,-20; bonus2 bAddDefMonster,1312,-20; },{},{} 18532,Heart_Ribbon_Band,Heart Ribbon Hairband,4,20,,100,,0,,1,0xFFFFFFFF,63,2,256,,10,1,708,{ bonus bInt,2; },{},{} 18533,Honeybee_Hat,Honey Bee Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,50,1,709,{ bonus bMdef,3; bonus2 bAddRace,RC_Insect,5; bonus2 bMagicAddRace,RC_Insect,5; bonus2 bSubRace,RC_Insect,5; bonus3 bAddMonsterDropItem,518,RC_Insect,2; },{},{} @@ -9491,7 +9567,7 @@ 18535,Pumpkin_Hat_2010,Pumpkin Hat 2010,4,20,,200,,0,,0,0xFFFFFFFF,63,2,256,,0,1,206,{},{},{} 18536,Foxtail,Foxtail,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,711,{ bonus bMatk,10; bonus bFixedCast,-100; },{},{} 18537,Malangdo_Hat,Malangdo Hat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,726,{ bonus bFlee,6; },{},{} -18538,Devil_Whisper,Spirit Whispers,4,20,,300,,3,,0,0xFFFFFFFF,63,2,512,,0,0,712,{ bonus bUnbreakableHelm,1; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400; },{},{} +18538,Devil_Whisper,Spirit Whispers,4,20,,300,,3,,0,0xFFFFFFFF,63,2,512,,0,0,712,{ bonus bUnbreakableHelm; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400; },{},{} 18539,Skull_Cap,Skull Cap,4,40,,200,,5,,1,0xFFFFFFFF,63,2,256,,10,1,713,{ bonus bMatkRate,2; .@r = getrefine(); if(.@r >= 5) { bonus bMatkRate,3; } if(.@r >= 7) { bonus bMatkRate,3; } },{},{} 18540,Evil_Mask,Evil Mask,4,20,,1000,,3,,0,0xFFFFFFFF,63,2,513,,10,0,714,{ bonus2 bSPLossRate,1,2000; bonus bAspdRate,1; },{},{} 18541,Little_Feather_Hat,Little Feather Hat,4,20,,500,,1,,1,0xFFFFFFFF,63,2,256,,30,1,715,{ bonus bDex,2; bonus bCritAtkRate,10; },{},{} @@ -9517,12 +9593,12 @@ 18561,B_Feather_Beret,B Feather Beret,4,20,,300,,5,,1,0xFFFFFFFF,63,2,256,,40,1,731,{ bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} 18562,Bone_Hat,Bone Hat,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,732,{ bonus bMdef,3; },{},{} 18563,Heart_Wing_Hairband,Heart Wing Hairband,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,50,1,733,{ .@r = getrefine()/3; bonus bUseSPrate,-(10+.@r*3); bonus bDelayrate,-(5+.@r*3); },{},{} -18564,Love_Piece,Love Piece,4,20,,200,,0,,0,0xFFFFFFFF,63,2,1,,50,0,734,{ bonus bNoCastCancel,1; bonus bUseSPrate,15; },{},{} +18564,Love_Piece,Love Piece,4,20,,200,,0,,0,0xFFFFFFFF,63,2,1,,50,0,734,{ bonus bNoCastCancel; bonus bUseSPrate,15; },{},{} 18565,Leprechaun_Hat,St Patrick's Hat,4,20,,300,,8,,1,0xFFFFFFFF,63,2,256,,40,1,735,{ bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>7){ bonus2 bAddMonsterDropItem,12135,50; } },{},{} 18566,Nut_Donut_In_Mouth,Nut Donut In Mouth,4,20,,0,,1,,0,0xFFFFFFFF,63,2,1,,0,0,736,{ bonus bBaseAtk,5; bonus bMatk,5; },{},{} 18567,Stretched_Nose,Stretched Nose,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,737,{},{},{} 18568,Humming_Bird,Humming Bird,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,10,0,702,{ bonus bMdef,6; },{},{} -18569,Soft_Sheep_Hat,Soft Sheep Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,0,738,{ bonus bMaxHPrate,1+getrefine(); if(getrefine()>9) { bonus2 bExpAddClass,Class_All,5; }; },{},{} +18569,Soft_Sheep_Hat,Soft Sheep Hat,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,1,738,{ bonus bMaxHPrate,1+getrefine(); if(getrefine()>9) { bonus2 bExpAddClass,Class_All,5; }; },{},{} 18570,Ancient_Gold_Deco,Ancient Gold Ornament,4,20,,400,,7,,1,0xFFFFFFFE,63,2,256,,100,1,739,{ if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddClass,Class_All,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatkRate,8; bonus bHealPower,7; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; } },{},{} 18571,Lucky_Hat,Lucky Hat,4,20,,1000,,0,,1,0xFFFFFFFF,63,2,256,,0,0,740,{ bonus2 bExpAddRace,RC_All,3; },{},{} 18572,Korean_Judge_Hat,Korean Judge Hat,4,20,,300,,2,,1,0xFFFFFFFF,63,2,256,,0,1,377,{ bonus bMdef,2; bonus bVariableCastrate,-6; bonus bAspdRate,6; .@r = getrefine(); if(.@r>6){ bonus2 bSubRace,RC_DemiHuman,2;bonus2 bSubRace,RC_Player,2; } if(BaseClass==Job_Swordman || BaseClass==Job_Merchant || BaseClass==Job_Thief || Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Monk || Class==Job_Champion || Class==Job_Sura || Class==Job_Sura_T) bonus2 bAddClass,Class_All,(.@r/2);if(BaseClass==Job_Mage || BaseClass==Job_Acolyte || Class==Job_Ninja || Class==Job_Soul_Linker) bonus bMatkRate,(.@r/2); if(BaseClass==Job_Archer || Class==Job_Gunslinger) bonus bBaseAtk,.@r; },{},{} @@ -9565,8 +9641,8 @@ 18609,Dark_Blindfold_,Dark Blinder,4,20,,100,,0,,1,0xFFFFFFFE,63,2,512,,0,0,187,{ bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Stun,200; },{},{} 18610,7th_Anni_Hat_B,7th Anni Hat B,4,20,,500,,4,,0,0xFFFFFFFF,63,2,256,,0,1,778,{ bonus bAllStats,5; bonus bMdef,4; },{},{} 18611,Black_Glasses_,Black Glasses,4,20,,200,,2,,1,0xFFFFFFFF,63,2,512,,0,0,404,{ bonus bInt,1; bonus bMdef,2; },{},{} -18612,White_Musang_Hat,White Musang Hat,4,40,,400,,3,,1,0xFFFFFFFF,63,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,1; },{},{} -18613,Black_Musang_Hat,Black Musang Hat,4,40,,400,,3,,1,0xFFFFFFFF,63,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,1; },{},{} +18612,White_Musang_Hat,White Musang Hat,4,40,,400,,3,,1,0xFFFFFFFF,63,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm; },{},{} +18613,Black_Musang_Hat,Black Musang Hat,4,40,,400,,3,,1,0xFFFFFFFF,63,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm; },{},{} 18614,Grim_Reaper_Hat,Grim Reaper Hat,4,20,,200,,2,,1,0xFFFFFFFF,63,2,256,,20,1,732,{ bonus bFlee,3; },{},{} 18615,Injured_Eyepatch,Injured Eyepatch,4,20,,200,,2,,0,0xFFFFFFFE,63,2,512,,20,0,772,{},{},{} 18616,Long_Tongue,Long Tongue,4,20,,200,,0,,0,0xFFFFFFFE,63,2,1,,20,0,773,{},{},{} @@ -9575,12 +9651,12 @@ 18619,Thief_Bandana,Thief Bandana,4,20,,200,,1,,0,0xFFFFFFFE,63,2,256,,20,1,776,{ bonus3 bAutoSpell,"TF_STEAL",1,20; },{},{} 18620,Heart_Eyepatch,Heart Eyepatch,4,5,,50,,2,,0,0xFFFFFFFF,63,2,512,,20,1,779,{},{},{} 18621,Gangster_Mask_A,Gangster Mask A,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,52,{},{},{} -18622,Rocket_Helm1,Rocket Helm 1,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,764,{ bonus bAllStats,5; bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{} -18623,Rocket_Helm2,Rocket Helm 2,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,765,{ bonus bAllStats,4; bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{} -18624,Rocket_Helm3,Rocket Helm 3,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,768,{ bonus bAllStats,3; bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{} -18625,Rocket_Helm_RWC,Rocket Helm RWC,4,10000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,769,{ bonus bAllStats,2; bonus bMdef,5; bonus bUnbreakableHelm,1; bonus bSpeedRate,25; },{},{} +18622,Rocket_Helm1,Rocket Helm 1,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,764,{ bonus bAllStats,5; bonus bMdef,5; bonus bUnbreakableHelm; },{},{} +18623,Rocket_Helm2,Rocket Helm 2,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,765,{ bonus bAllStats,4; bonus bMdef,5; bonus bUnbreakableHelm; },{},{} +18624,Rocket_Helm3,Rocket Helm 3,4,20,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,768,{ bonus bAllStats,3; bonus bMdef,5; bonus bUnbreakableHelm; },{},{} +18625,Rocket_Helm_RWC,Rocket Helm RWC,4,10000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,1,769,{ bonus bAllStats,2; bonus bMdef,5; bonus bUnbreakableHelm; bonus bSpeedRate,25; },{},{} 18626,Gelato_Hat,Gelato Hat,4,20,,200,,2,,0,0xFFFFFFFF,63,2,256,,40,1,777,{},{},{} -18627,Dried_Leaf,Dried Leaf,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,10,0,711,{ bonus bUnbreakableHelm,1; },{},{} +18627,Dried_Leaf,Dried Leaf,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,10,0,711,{ bonus bUnbreakableHelm; },{},{} 18628,Tare_Brownie,Tare Brownie,4,20,,500,,5,,1,0xFFFFFFFF,63,2,256,,50,0,781,{ bonus bMdef,5; },{},{} 18629,B_Desert_Wolf_Hat,Baby Desert Wolf Hat,4,10,,300,,0,,1,0xFFFFFFFF,63,2,256,,1,1,783,{ bonus bMdef,5; bonus bLongAtkDef,5; },{},{} 18630,Dep_Alice_Hat,Drooping Alicel,4,20,,500,,6,,0,0xFFFFFFFE,63,2,256,,70,1,784,{ bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; if (getrefine() > 10) { autobonus "{ bonus bAspdRate,100; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; } },{},{} @@ -9609,7 +9685,7 @@ 18653,Devi_Headphone,Deviruchi Headphone,4,20,,200,,8,,1,0xFFFFFFFF,63,2,256,,30,1,805,{ bonus bMdef,4; },{},{} 18655,Lupin_One_Eyed_Glasses,Goedo Monocle,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,50,0,807,{ bonus bAgi,2; },{},{} 18656,Wit_Pumpkin_Hat,Witch's Pumpkin Hat,4,20,,300,,10,,0,0xFFFFFFFF,63,2,256,,20,1,717,{ bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15; },{},{} -18657,Pegasus_Wing_Ears,Pegasus Wing Ears,4,20,,500,,1,,0,0xFFFFFFFF,63,2,512,,80,0,568,{ bonus bUnbreakableHelm,1; .@i = BaseLevel; bonus bAspdRate,(.@i>=150)?(3):((.@i>=100)?(2):((.@i>=50)?(1):(0))); },{},{} +18657,Pegasus_Wing_Ears,Pegasus Wing Ears,4,20,,500,,1,,0,0xFFFFFFFF,63,2,512,,80,0,568,{ bonus bUnbreakableHelm; .@i = BaseLevel; bonus bAspdRate,(.@i>=150)?(3):((.@i>=100)?(2):((.@i>=50)?(1):(0))); },{},{} 18658,Holy_Santa_Beard,Holy Santa Beard,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,1,0,25,{},{},{} 18659,Boitata_Hat,Boitata Hat,4,20,,0,,5,,1,0xFFFFFFFF,63,2,768,,0,1,808,{ autobonus "{ bonus bAtkEle,Ele_Fire; }",10,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; bonus3 bAutospell,"AS_SONICBLOW",5,10; },{},{} 18660,Indi_Feather_Band,Indian Feather Headband,4,20,,400,,3,,1,0xFFFFFFFE,63,2,256,,0,1,809,{ bonus bAgi,2; },{},{} @@ -9624,8 +9700,8 @@ 18669,Cowhide_Hat,Cowhide Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,819,{ bonus bDex,2; bonus bMaxHPrate,1; },{},{} 18670,Hankie_In_Mouth,Hankie In Mouth,4,20,,100,,1,,0,0xFFFFFFFF,63,2,1,,12,0,818,{ bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; },{},{} 18671,Rudolf_Hairband,Rudolf Hairband,4,20,,200,,5,,0,0xFFFFFFFF,63,2,256,,30,1,836,{},{},{} -18672,Tare_Pope,Drooping Pope,4,20,,300,,0,,0,0xFFFFFFFF,63,2,256,,1,0,817,{ bonus bMdef,1; bonus bSPrecovRate,2; bonus bUnbreakableHelm,1; },{},{} -18673,Tare_Pope_,Drooping Pope,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,1,1,817,{ bonus bMdef,7; bonus bSPrecovRate,2; bonus bUnbreakableHelm,1; .@r = getrefine(); if (.@r >= 7 ) { bonus bHealPower,1; } if (.@r >= 9 ) {bonus bMatkRate,7; } if (.@r >= 12 ) {bonus bMatkRate,5; } },{},{} +18672,Tare_Pope,Drooping Pope,4,20,,300,,0,,0,0xFFFFFFFF,63,2,256,,1,0,817,{ bonus bMdef,1; bonus bSPrecovRate,2; bonus bUnbreakableHelm; },{},{} +18673,Tare_Pope_,Drooping Pope,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,1,1,817,{ bonus bMdef,7; bonus bSPrecovRate,2; bonus bUnbreakableHelm; .@r = getrefine(); if (.@r >= 7 ) { bonus bHealPower,1; } if (.@r >= 9 ) {bonus bMatkRate,7; } if (.@r >= 12 ) {bonus bMatkRate,5; } },{},{} 18674,Planewing_Hat,Planewing Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,820,{ bonus bAgi,3; bonus bAspdRate,1; bonus2 bSPLossRate,5,10000; },{},{} 18675,Green_Apple_Hat,Green Apple Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,20,1,821,{ bonus bDex,2; bonus bHit,5; },{},{} 18676,Hexagon_Spectacles,Hexagon Spectacles,4,20,,400,,3,,0,0xFFFFFFFE,63,2,512,,20,0,822,{ bonus bFlee,2; },{},{} @@ -9638,11 +9714,11 @@ 18683,Carrot_In_Mouth,Carrot In Mouth,4,20,,200,,1,,0,0xFFFFFFFF,63,2,1,,1,0,829,{ bonus2 bSubRace,RC_Plant,3; },{},{} 18684,Showy_High_Cap,Showy High Cap,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,830,{ bonus bStr,3; bonus bInt,2; bonus2 bAddItemHealRate,505,50; },{},{} 18685,Stardust_Hairband,Stardust Hairband,4,20,,1000,,0,,0,0xFFFFFFFF,63,2,256,,10,0,831,{},{},{} -18686,2011_RMSC_1,2011 RMSC 1,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm,1; bonus bAllStats,5; },{},{} -18687,2011_RMSC_2,2011 RMSC 2,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm,1; bonus bAllStats,3; },{},{} -18688,2011_RMSC_3,2011 RMSC 3,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm,1; bonus bAllStats,1; },{},{} -18689,2011_RMSC_4,2011 RMSC 4,4,20,,10,,0,,0,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm,1; },{},{} -18690,Sirt_Evil_Eye,Sirt Evil Eye,4,20,,400,,0,,0,0xFFFFFFFF,63,2,512,,50,0,345,{ bonus bUnbreakableHelm,1; bonus bStr,1; },{},{} +18686,2011_RMSC_1,2011 RMSC 1,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm; bonus bAllStats,5; },{},{} +18687,2011_RMSC_2,2011 RMSC 2,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm; bonus bAllStats,3; },{},{} +18688,2011_RMSC_3,2011 RMSC 3,4,20,,2500,,20,,1,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm; bonus bAllStats,1; },{},{} +18689,2011_RMSC_4,2011 RMSC 4,4,20,,10,,0,,0,0xFFFFFFFF,63,2,256,,1,0,832,{ bonus bUnbreakableHelm; },{},{} +18690,Sirt_Evil_Eye,Sirt Evil Eye,4,20,,400,,0,,0,0xFFFFFFFF,63,2,512,,50,0,345,{ bonus bUnbreakableHelm; bonus bStr,1; },{},{} 18691,Rising_Black_Dragon,Rising Black Dragon,4,20,,100,,3,,0,0xFFFFFFFF,63,2,256,,1,1,863,{},{},{} 18692,Mike_Hat,Mike Hat,4,20,,200,,3,,1,0xFFFFFFFE,63,2,256,,1,1,837,{ bonus bDex,2; bonus bLuk,1; },{},{} 18693,Sleeping_Kitty_Cat,Sleeping Kitty Cat,4,20,,200,,4,,1,0xFFFFFFFE,63,2,256,,20,1,838,{ bonus2 bAddRace,RC_Brute,2; },{},{} @@ -9671,14 +9747,14 @@ 18718,Rose_Hairband,Rose Hairband,4,20,,200,,3,,0,0xFFFFFFFF,63,2,256,,30,0,864,{ bonus bInt,1; bonus bVit,1; bonus bAspdRate,3; bonus bVariableCastrate,-3; },{},{} 18724,L_Magestic_Goat_,Gigantic Majestic Goat,4,20,,800,,5,,1,0xFFFFFFFF,63,2,256,,0,1,380,{ bonus2 bAddRace,RC_DemiHuman,12; bonus2 bAddRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7; },{},{} 18727,Sedora_Hat,Sedora Hat,4,20,,300,,13,,1,0xFFFFFFFF,63,2,256,,10,1,869,{},{},{} -18728,Egir_Helm,Egir Helm,4,200000,,800,,10,,1,0xFFFFFFFF,63,2,256,,110,1,870,{ bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{} +18728,Egir_Helm,Egir Helm,4,200000,,800,,10,,1,0xFFFFFFFF,63,2,256,,110,1,870,{ bonus bMdef,5; bonus bUnbreakableHelm; },{},{} 18729,MVP_Basketball,MVP Basketball,4,20,,150,,6,,1,0xFFFFFFFF,63,2,256,,1,1,871,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddItemHealRate,522,30; .@r = getrefine(); bonus bVariableCastrate,(.@r>=12)?(-5):((.@r>=10)?(-4):(-3)); },{},{} 18730,Cryptura_Academy_Hat,Cryptura Academy Hat,4,0,,200,,2,,1,0xFFFFFFFF,63,2,256,,0,1,872,{ bonus bMaxHP,15; bonus bMaxSP,5; },{},{} 18732,TE_Woe_Cap,TE Woe Cap,4,0,,0,,5,,0,0xFFFFFFFF,63,2,256,,40,1,14,{ bonus bMdef,5; bonus bBaseAtk,5; bonus bMatk,5; bonus2 bAddRace,RC_Player,10; bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25; },{},{} 18733,TE_Woe_Bone_Helm,TE Woe Bone Helm,4,0,,0,,10,,0,0x000444A2,63,2,256,,40,1,103,{ bonus bBaseAtk,10; bonus2 bAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25; },{},{} 18734,TE_Woe_Magic_Eyes,TE Woe Magic Eyes,4,0,,0,,5,,0,0x00818315,63,2,256,,40,1,209,{ bonus bMdef,5; bonus bMatk,10; bonus2 bMagicAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25; },{},{} 18736,Censor_Bar_,Censor Bar,4,0,,100,,,,0,0xFFFFFFFF,63,2,512,,1,0,229,{},{},{} -18737,Fortier_Mask,Fortier Masque,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,10,0,876,{ bonus bUnbreakableHelm,1; bonus2 bMagicAtkEle,Ele_Fire,4; },{},{} +18737,Fortier_Mask,Fortier Masque,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,10,0,876,{ bonus bUnbreakableHelm; bonus2 bMagicAtkEle,Ele_Fire,4; },{},{} 18739,Carnation_Hairband,Carnation Hairband,4,20,,100,,0,,0,0xFFFFFFFF,63,2,256,,0,1,878,{ bonus bLuk,1; },{},{} 18740,C_Hair_Of_The_Strong,RMSC2012 Special Costume,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,879,{},{},{} 18741,C_Will_O_Wisp,Costume Will O Wisp,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,,880,{},{ sc_start SC_STRANGELIGHTS,-1,0; },{ sc_end SC_STRANGELIGHTS; } @@ -9693,11 +9769,11 @@ 18750,Poker_Card_In_Mouth,Poker Card In Mouth,4,20,,50,,0,,0,0xFFFFFFFF,63,2,1,,10,0,889,{ bonus2 bAddRace,RC_DemiHuman,2; },{},{} 18752,Cursed_Book,Cursed Book,4,20,,300,,3,,1,0xFFFFFFFE,63,2,256,,99,1,890,{ .@r = getrefine(); bonus2 bHPLossRate,.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3); },{},{} 18753,Tw_Rice_Ball,Tw Rice Ball,4,20,,100,,6,,0,0xFFFFFFFF,63,2,256,,0,0,892,{ bonus bLuk,1; bonus2 bAddMonsterDropItem,564,100; },{},{} -18754,Blood_Sucker,Blood Sucker,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1,,40,0,893,{ bonus bUnbreakableHelm,1; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} +18754,Blood_Sucker,Blood Sucker,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1,,40,0,893,{ bonus bUnbreakableHelm; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100; },{},{} 18755,Feather_Beret_,Feather Beret,4,0,,600,,1,,1,0xFFFFFFFF,63,2,256,,1,1,224,{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{} 18756,Black_Shiba_Inu_Hat,Black Shiba Inu Hat,4,20,,400,,6,,1,0xFFFFFFFF,63,2,256,,50,1,894,{ bonus bBaseAtk,30; bonus2 bAddRace,RC_Brute,10; },{},{} 18758,Hat_Of_Scrat,Hat Of Scrat,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,0,1,896,{},{},{} -18759,Stretched_Nose_M,Wood Goblin's Nose,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,50,0,737,{ bonus bUnbreakableHelm,1; bonus2 bAddMonsterDropItem,1032,400; bonus2 bAddMonsterDropItem,1033,100; bonus3 bAddMonsterDropItem,576,RC_Plant,40; },{},{} +18759,Stretched_Nose_M,Wood Goblin's Nose,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,50,0,737,{ bonus bUnbreakableHelm; bonus2 bAddMonsterDropItem,1032,400; bonus2 bAddMonsterDropItem,1033,100; bonus3 bAddMonsterDropItem,576,RC_Plant,40; },{},{} 18760,Remodel_Wizardry_Hat,Improved Mage Hat,4,20,,300,,2,,1,0x00810204,63,2,256,,0,1,112,{ bonus bInt,2; bonus bMaxSP,150; .@r = getrefine(); bonus bMatk,.@r; if(.@r>=7) bonus bInt,.@r-6; },{},{} 18761,Remodel_Magician_Hat,Improved Magician Hat,4,20,,500,,6,,1,0x00818314,63,2,256,,50,1,130,{ bonus bDex,1; bonus bAgi,1; bonus bMaxSP,50; .@r = getrefine(); bonus bMaxSP,.@r*5; if(.@r>=7) bonus bDex,.@r-6; },{},{} 18762,Remodel_Mask_Of_Fox,Improved Kitsune Mask,4,20,,300,,2,,0,0xFFFFFFFE,63,2,256,,0,1,153,{ bonus bAgi,2; bonus bLuk,2; if(getrefine()>=7) bonus bFlee2,4; },{},{} @@ -9707,25 +9783,25 @@ 18766,Enhanced_Helm_Of_Angel,Enhanced Helm of Angel,4,20,,1600,,10,,1,0x00CFDF80,63,2,256,,99,1,110,{ bonus bAgi,1; bonus bLuk,1; bonus bMdef,3; .@r = getrefine(); if(.@r>=7){ bonus bAgi,2; bonus bLuk,2; } if(.@r>=9) bonus bAspd,1; },{},{} 18767,Enhanced_Helm_Of_Sun,Enhanced Hat of the Sun God,4,20,,2400,,4,,1,0x00CFDF80,63,2,768,,99,1,138,{ bonus bStr,3; bonus bInt,2; .@j = getrefine(); if(.@j>=7) .@i = 1; if(.@j>=9) .@i = 2; bonus bBaseAtk,10+(15*.@i); bonus bMatk,10+(15*.@i); },{},{} 18768,Enhanced_Bone_Helm,Enhanced Bone Helm,4,20,,800,,15,,1,0x000444A2,63,2,256,,70,1,103,{ bonus2 bSubEle,Ele_Dark,-15; .@j = getrefine(); if(.@j>=7) .@i = 1; if(.@j>=9) .@i = 2; bonus2 bSubEle,Ele_Neutral,2+(2*.@i); },{},{} -18769,Remodel_Munak_Turban,Improved Munak Hat,4,20,,300,,5,,1,0xFFFFFFFF,63,2,769,,0,0,51,{ bonus2 bSubRace,RC_Undead,10; if(getrefine()>=7) bonus2 bAddRace,RC_Undead,10; },{},{} -18770,Remodel_Bongun_Hat,Improved Bongun Hat,4,20,,300,,5,,1,0xFFFFFFFF,63,2,769,,0,0,139,{ bonus2 bSubRace,RC_Demon,10; if(getrefine()>=7) bonus2 bAddRace,RC_Demon,10; },{},{} +18769,Remodel_Munak_Turban,Improved Munak Hat,4,20,,300,,5,,1,0xFFFFFFFF,63,2,769,,0,1,51,{ bonus2 bSubRace,RC_Undead,10; if(getrefine()>=7) bonus2 bAddRace,RC_Undead,10; },{},{} +18770,Remodel_Bongun_Hat,Improved Bongun Hat,4,20,,300,,5,,1,0xFFFFFFFF,63,2,769,,0,1,139,{ bonus2 bSubRace,RC_Demon,10; if(getrefine()>=7) bonus2 bAddRace,RC_Demon,10; },{},{} 18771,Remodel_Opera_Mask,Improved Opera Phantom Mask,4,20,,200,,2,,0,0xFFFFFFFF,63,2,512,,20,0,128,{ bonus bBaseAtk,5; bonus bMatk,5; },{},{} 18772,Improved_Binoculars,Advanced Binoculars,4,20,,100,,2,,0,0x00080808,63,2,512,,50,0,83,{ bonus bDex,1; bonus bLongAtkRate,1; },{},{} 18773,Improved_Fin_Helm,Advanced Fin Helm,4,20,,300,,5,,0,0x00004082,63,2,512,,65,0,100,{ bonus bMaxHP,300+BaseLevel; /* unconfirmed */ },{},{} 18774,Improved_Assassin_Mask,Advanced Assassin Mask,4,20,,100,,1,,0,0x00001100,63,2,1,,70,0,180,{ bonus bCritical,1; bonus bCritAtkRate,1; },{},{} 18775,Improved_Welding_Mask,Advanced Welding Mask,4,20,,300,,2,,0,0x00040420,63,2,513,,50,0,79,{ bonus2 bSubEle,Ele_Fire,10; bonus bDex,5; bonus bLuk,5; },{},{} 18776,Improved_Kiss_Of_Angel,Advanced Angel's Kiss,4,10000,,300,,6,,1,0x00000001,63,2,256,,99,1,255,{ bonus bSPrecovRate,30; },{},{} -18779,RWC_Champ_Crown_Red,RWC Champ Crown First Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,902,{ bonus2 bResEff,Eff_Stun,10000; bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,7; bonus bMdef,5; },{},{} -18780,RWC_Champ_Crown_Blue,RWC Champ Crown Second Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,903,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,7; bonus bMdef,5; },{},{} -18781,RWC_Champ_Crown_Black,RWC Champ Crown Third Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,904,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,3; bonus bMdef,1; },{},{} -18782,Butterfly_Wing_Ear_J,Butterfly Wing Ear,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,0,0,695,{ bonus bDex,2; bonus bUnbreakableHelm,1; },{},{} +18779,RWC_Champ_Crown_Red,RWC Champ Crown First Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,902,{ bonus2 bResEff,Eff_Stun,10000; bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,7; bonus bMdef,5; },{},{} +18780,RWC_Champ_Crown_Blue,RWC Champ Crown Second Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,903,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,7; bonus bMdef,5; },{},{} +18781,RWC_Champ_Crown_Black,RWC Champ Crown Third Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,904,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,3; bonus bMdef,1; },{},{} +18782,Butterfly_Wing_Ear_J,Butterfly Wing Ear,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,0,0,695,{ bonus bDex,2; bonus bUnbreakableHelm; },{},{} 18785,King_Poring_Hat,King Poring Hat,4,20,,600,,10,,1,0xFFFFFFFF,63,2,256,,10,1,905,{ bonus bDex,1; bonus bLuk,1; .@r = getrefine(); if(.@r>=3){ bonus bDex,(.@r-4); bonus bLuk,(.@r-4); } },{},{} -18786,Anemos_Mask,Anemos Mask,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,10,0,906,{ bonus bUnbreakableHelm,1; bonus2 bMagicAtkEle,Ele_Wind,4; },{},{} +18786,Anemos_Mask,Anemos Mask,4,20,,200,,0,,0,0xFFFFFFFF,63,2,512,,10,0,906,{ bonus bUnbreakableHelm; bonus2 bMagicAtkEle,Ele_Wind,4; },{},{} 18790,Rainbow_Poring_Hat,Rainbow Poring Hat,4,20,,100,,3,,1,0xFFFFFFFF,63,2,256,,0,1,900,{},{},{} 18791,Shrine_Maiden_Hat,Shrine Maiden Hat,4,20,,200,,30,,1,0xFFFFFFFF,63,2,256,,,,908,{},{},{} 18792,Idn_Sakkat,Indonesian Independence Sakkat,4,10,,400,,,,0,0xFFFFFFFE,63,2,256,,45,1,901,{ bonus bVit,10; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bSubRace,RC_DemiHuman,10; },{},{} 18793,Sorc_Night_Cap,Sorcerer's Night Cap,4,20,,200,,25,,1,0x00010000,56,2,256,,100,1,911,{ .@r = getrefine(); bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",50; bonus2 bSkillAtk,"MG_FIREBOLT",50; bonus2 bSkillAtk,"MG_COLDBOLT",50; bonus bMdef,10; if(.@r>6) bonus2 bSkillAtk,"SC_SPELLFIST",25; if(.@r>8) bonus bAspd,5; },{},{} -18796,RWC_Champ_Crown_QF,RWC Champ Crown Fourth Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,914,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,2; },{},{} +18796,RWC_Champ_Crown_QF,RWC Champ Crown Fourth Place,4,20,,500,,12,,1,0xFFFFFFFF,63,2,256,,1,,914,{ bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,2; },{},{} 18803,Rose_Cascade,Rose Cascade,4,0,,500,,,,1,0xFFFFFFFF,63,2,256,,,1,920,{ .@dex = readparam(bDex); bonus bUseSPrate,-5-((.@dex >= 120)?5:0)-((.@dex >= 100)?5:0); },{},{} 18805,Eclipse_Hat,Eclipse Hat,4,20,,300,,2,,0,0xFFFFFFFF,63,2,256,,0,1,922,{ bonus bLuk,3; bonus bMdef,5; },{},{} 18806,Black_Rabbit_Hat,Black Rabbit Hat,4,20,,300,,2,,1,0xFFFFFFFF,63,2,256,,0,1,923,{ bonus bDex,2; bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10; },{},{} @@ -9737,28 +9813,28 @@ 18815,Devil_School_Cap,Devil School Cap,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,0,1,928,{ bonus bStr,2; bonus bVit,1; },{},{} 18816,Adv_Angel_School_Cap,Evoked Angel School Cap,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,0,1,929,{ bonus bInt,2; bonus bVit,2; bonus bLuk,1; },{},{} 18817,Adv_Devil_School_Cap,Evoked Devil School Cap,4,20,,100,,4,,1,0xFFFFFFFE,63,2,256,,0,1,930,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; },{},{} -18818,Red_Pencil_In_Mouth,Red Pencil In Mouth,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,931,{ bonus bUnbreakableHelm,1; bonus bHit,3; },{},{} -18819,Blue_Pencil_In_Mouth,Blue Pencil In Mouth,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,932,{ bonus bUnbreakableHelm,1; bonus bHit,3; },{},{} +18818,Red_Pencil_In_Mouth,Red Pencil In Mouth,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,931,{ bonus bUnbreakableHelm; bonus bHit,3; },{},{} +18819,Blue_Pencil_In_Mouth,Blue Pencil In Mouth,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1,,0,0,932,{ bonus bUnbreakableHelm; bonus bHit,3; },{},{} 18820,Gray_Helmet,Gray Helmet,4,20,,450,,35,,1,0xFFFFFFFF,56,2,256,,120,1,941,{ bonus2 bSubEle,Ele_Holy,3+getrefine()/2; },{},{} 18821,Rainbow_Feather_Deco,Rainbow Feather Deco,4,20,,300,,5,,1,0xFFFFFFFF,63,2,256,,1,1,934,{ bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; },{},{} -18823,Imperial_Feather,Imperial Feather,4,10,,500,,,,0,0xFFFFFFFF,63,2,512,,70,1,935,{ bonus bAspdRate,1; bonus2 bSubEle,Ele_Wind,5; if(readparam(bAgi)>108){ bonus bAspd,1; bonus bAspdRate,1; } },{},{} +18823,Imperial_Feather,Imperial Feather,4,10,,500,,,,0,0xFFFFFFFF,63,2,512,,70,1,935,{ bonus bAspdRate,1; bonus2 bSubEle,Ele_Wind,5; if(readparam(bAgi)>107){ bonus bAspd,1; bonus bAspdRate,1; } },{},{} 18827,Valkyrie_Circlet,Valkyrie Circlet,4,0,,300,,10,,1,0xFFFFFFFF,63,2,256,,,1,940,{ bonus bStr,3; bonus2 bAddEle,Ele_Dark,10; bonus2 bAddRace,RC_Demon,10; },{},{} -18828,2012RMSCNO1,2012 RWC Winners Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,942,{ bonus bAllStats,5; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1; },{},{} -18829,2012RMSCNO2,2012 RWC Runners-Up Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,943,{ bonus bAllStats,4; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1; },{},{} -18830,2012RMSCNO3,2012 RWC 2nd Runner Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,944,{ bonus bAllStats,3; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1; },{},{} +18828,2012RMSCNO1,2012 RWC Winners Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,942,{ bonus bAllStats,5; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm; },{},{} +18829,2012RMSCNO2,2012 RWC Runners-Up Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,943,{ bonus bAllStats,4; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm; },{},{} +18830,2012RMSCNO3,2012 RWC 2nd Runner Helmet,4,1000,,1000,,20,,1,0xFFFFFFFF,63,2,256,,60,1,944,{ bonus bAllStats,3; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm; },{},{} 18831,2012RMSCNO4,2012 RWC Special Helmet,4,0,,1000,,20,,1,0xFFFFFFFF,63,2,256,,95,0,945,{ bonus bAllStats,2; bonus bMdef,5; bonus bSpeedAddRate,10; },{},{} 18832,Rolf_Von_Gigue_666,Rolf Von Gigue 666,4,20,,300,,0,,0,0xFFFFFFFF,63,2,256,,0,1,946,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,5; },{},{} 18839,Poring_Sunglasses,Poring Sunglasses,4,0,,100,,10,,1,0xFFFFFFFF,63,2,512,,1,0,954,{ bonus bDex,1; },{},{} 18841,Small_Poring_Band,Small Poring Band,4,20,,350,,8,,1,0xFFFFFFFF,63,2,256,,0,1,955,{ .@r = getrefine(); bonus bAspdRate,2*(.@r/3); if(.@r>9) bonus bAspd,1; bonus2 bExpAddRace,RC_All,3; },{},{} 18842,Hat_Of_Girl,Hat Of Girl,4,20,,350,,8,,1,0xFFFFFFFF,63,2,256,,0,1,956,{ .@r = getrefine(); bonus bInt,2*(.@r/3); bonus2 bSubRace,RC_DemiHuman,7; bonus bMaxHPrate,-3; },{},{} 18843,Small_Deviling_Hat,Small Deviling Hat,4,20,,350,,7,,1,0xFFFFFFFF,63,2,256,,0,1,957,{ .@r = getrefine(); if(.@r>7) bonus bMaxHPrate,.@r-7; bonus2 bSubRace,RC_DemiHuman,5; },{},{} -18844,Blue_Poring_Bubble,Blue Poring Bubble,4,20,,50,,5,,0,0xFFFFFFFF,63,2,1,,0,0,958,{ bonus bAllStats,2; bonus bUnbreakableHelm,1; bonus bFlee,20; },{},{} -18845,Banshee_Master_Kiss,Banshee Master Kiss,4,20,,200,,5,,0,0xFFFFFFFF,63,2,1,,0,0,959,{ bonus bUnbreakableHelm,1; bonus bMaxSPrate,3; autobonus2 "{ bonus2 bSubRace,RC_DemiHuman,100; bonus2 bSubRace,RC_Player,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} +18844,Blue_Poring_Bubble,Blue Poring Bubble,4,20,,50,,5,,0,0xFFFFFFFF,63,2,1,,0,0,958,{ bonus bAllStats,2; bonus bUnbreakableHelm; bonus bFlee,20; },{},{} +18845,Banshee_Master_Kiss,Banshee Master Kiss,4,20,,200,,5,,0,0xFFFFFFFF,63,2,1,,0,0,959,{ bonus bUnbreakableHelm; bonus bMaxSPrate,3; autobonus2 "{ bonus2 bSubRace,RC_DemiHuman,100; bonus2 bSubRace,RC_Player,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{} 18846,Seagod_Protector,Seagod Protector,4,20,,100,,0,,0,0xFFFFFFFF,63,2,512,,10,0,960,{ bonus2 bSubDefEle,Ele_Water,5; },{},{} -18847,Jolly_Roger,Jolly Roger,4,20,,500,,10,,1,0xFFFFFFFF,63,2,256,,1,0,962,{ bonus bVit,1; bonus2 bSubDefEle,Ele_Water,2; bonus2 bAddEle,Ele_Water,2; .@r = getrefine(); if(.@r>6) { bonus2 bAddEle,Ele_Water,3; } if(.@r>8) { bonus2 bSubDefEle,Ele_Water,3; } },{},{} +18847,Jolly_Roger,Jolly Roger,4,20,,500,,10,,1,0xFFFFFFFF,63,2,256,,1,1,962,{ bonus bVit,1; bonus2 bSubDefEle,Ele_Water,2; bonus2 bAddEle,Ele_Water,2; .@r = getrefine(); if(.@r>6) { bonus2 bAddEle,Ele_Water,3; } if(.@r>8) { bonus2 bSubDefEle,Ele_Water,3; } },{},{} 18848,Lush_Rose,Lush Rose,4,10,,200,0:20,0,,1,0xFFFFFFFF,63,2,256,,1,1,963,{ bonus bMagicHPGainValue,100; bonus bMagicSPGainValue,100; },{},{} 18849,Celines_Ribbon,Celines Ribbon,4,10,,200,,,,1,0xFFFFFFFF,63,2,256,,1,1,967,{ bonus bDex,3; bonus bMatk,40+getrefine(); bonus bMagicHPGainValue,200; bonus2 bHPLossRate,50,5000; },{},{} -18850,Polar_Bear_Cap,Polar Bear Cap,4,20,,300,,7,,0,0xFFFFFFFF,63,2,256,,1,0,966,{ bonus bUnbreakableHelm,1; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100; },{},{} +18850,Polar_Bear_Cap,Polar Bear Cap,4,20,,300,,7,,0,0xFFFFFFFF,63,2,256,,1,0,966,{ bonus bUnbreakableHelm; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100; },{},{} //18851,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,966,{ /*Is this correct item?*/ },{},{} 18851,ValentineHeart,Valentine Heart,4,20,,0,,,,0,0xFFFFFFFF,63,2,256,,1,1,397,{ bonus bMaxHPrate,5+(getrefine()/2); bonus bAllStats,7; },{},{} 18852,Berry_Hat_Decoration,Tasty Strawberry Hat,4,20,,150,,4,,,0xFFFFFFFF,63,2,256,,30,1,968,{ bonus bAllStats,1; if(getrefine()>11) bonus bAspd,2; },{},{} @@ -9778,11 +9854,11 @@ 18868,Assassin_Skull_Mask,Assassin Skull Mask,4,10,,500,,2,,0,0xFFFFFFFF,63,2,513,,70,,984,{ bonus bCritical,5; },{},{} 18870,Very_Sweet_Candy_Bar,Very Sweet Candy Bar,4,10,,10,,,,0,0xFFFFFFFF,63,2,1,,1,1,446,{ bonus bAllStats,2; bonus bBaseAtk,10; bonus bMatk,10; bonus2 bExpAddClass,Class_All,2; },{},{} 18871,Very_Sweet_Candy,Very Sweet Candy,4,10,,10,,,,0,0xFFFFFFFF,63,2,1,,1,1,446,{ bonus bAllStats,1; bonus bBaseAtk,5; bonus bMatk,5; },{},{} -18872,Snake_Hat,Snake Hat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,986,{ bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm,1; },{},{} +18872,Snake_Hat,Snake Hat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,0,1,986,{ bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm; },{},{} 18873,Sweet_Valentine_Out,Sweet Valentine Out,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,1,1,865,{ bonus bMaxHPrate,7; bonus bMaxSPrate,7; },{},{} 18874,One_Eyed_Glass_,Cyclops Glasses,4,10,,100,,,,1,0xFFFFFFFF,63,2,512,,1,,23,{},{},{} 18877,Baron_Evil_Eye,Baron's Evil Eye,4,10,,300,,,,0,0xFFFFFFFF,63,2,512,,30,,989,{ bonus bDelayrate,-5; bonus bUseSPrate,5; },{},{} -18878,Palace_Guard_Cap,Palace Guard Cap,4,10,,1000,,15,,1,0xFFFFFFFF,63,2,256,,50,1,991,{ .@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm,1; },{},{} +18878,Palace_Guard_Cap,Palace Guard Cap,4,10,,1000,,15,,1,0xFFFFFFFF,63,2,256,,50,1,991,{ .@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm; },{},{} 18879,Angry_Scorpion_Hat,Angry Scorpion Hat,4,10,,100,,5,,0,0xFFFFFFFF,63,2,256,,0,1,995,{ bonus bMdef,5; },{},{} 18880,Advanced_Jao_King_Hat,Advanced Jao King Hat,4,10,,1500,,4,,1,0xFFFFFFFF,63,2,256,,175,1,996,{ bonus bAllStats,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5; },{},{} 18882,Kannam_On_Head,Kannam On Head,4,10,,200,,5,,0,0xFFFFFFFF,63,2,256,,20,1,1003,{ bonus3 bAutoSpellWhenHit,"SA_DELUGE",1,50; .@r = getrefine(); if (.@r > 3) bonus3 bAutoSpellWhenHit,"WZ_WATERBALL",.@r/3,50; },{},{} @@ -9805,10 +9881,10 @@ 18908,Isabella_Red_Ear,Isabella Red Ear,4,10,,300,,8,,1,0xFFFFFFFF,63,2,256,,1,1,1030,{ bonus bStr,5; bonus bMaxHPrate,5; bonus2 bSubDefEle,Ele_Fire,10; .@r = getrefine(); if (.@r >= 9) bonus bAspd,.@r-8; },{},{} 18909,Isabella_Brown_Ear,Isabella Brown Ear,4,10,,300,,8,,1,0xFFFFFFFF,63,2,256,,1,1,1031,{ bonus bMaxHPrate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bMatk,getrefine()*2; },{},{} 18910,Isabella_Blue_Ear,Isabella Blue Ear,4,10,,300,,8,,1,0xFFFFFFFF,63,2,256,,1,1,1032,{ bonus bMaxHPrate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddSize,Size_Medium,10; if(getrefine()>=12){ bonus bShortWeaponDamageReturn,5; } },{},{} -18917,LoveLove_Balloon,LoveLove Balloon,4,10,,200,,5,,0,0xFFFFFFFF,63,2,1,,1,0,1039,{ bonus bAllStats,1; bonus bUnbreakableHelm,1; },{},{} -18918,Long_Octopus_Balloon,Long Octopus Balloon,4,10,,200,,5,,0,0xFFFFFFFF,63,2,1,,1,,1040,{ bonus bVit,1; bonus bInt,1; bonus bMaxSP,30; bonus bUnbreakableHelm,1; },{},{} +18917,LoveLove_Balloon,LoveLove Balloon,4,10,,200,,5,,0,0xFFFFFFFF,63,2,1,,1,0,1039,{ bonus bAllStats,1; bonus bUnbreakableHelm; },{},{} +18918,Long_Octopus_Balloon,Long Octopus Balloon,4,10,,200,,5,,0,0xFFFFFFFF,63,2,1,,1,,1040,{ bonus bVit,1; bonus bInt,1; bonus bMaxSP,30; bonus bUnbreakableHelm; },{},{} 18925,GodOfWinds_Fan,GodOfWinds Fan,4,0,,300,,,,0,0xFFFFFFFF,63,2,1,,,0,1051,{ bonus2 bSkillAtk,"WZ_VERMILION",3; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",3; bonus bUseSPrate,5; },{},{} -18929,Elephant_Model_Hat,Elephant Model Hat,4,10,,300,,10,,1,0xFFFFFFFF,63,2,256,,30,0,1065,{ .@r = getrefine(); bonus bDex,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_STORMGUST",5,50; },{},{} +18929,Elephant_Model_Hat,Elephant Model Hat,4,10,,300,,10,,1,0xFFFFFFFF,63,2,256,,30,1,1065,{ .@r = getrefine(); bonus bDex,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_STORMGUST",5,50; },{},{} 18930,Gorilla_Model_Hat,Gorilla Model Hat,4,10,,300,,10,,1,0xFFFFFFFF,63,2,256,,30,1,1066,{ bonus bStr,2+((getrefine()>=11) ? 3 : 0); bonus3 bAutoSpell,"KN_BOWLINGBASH",1,50; },{},{} 18931,Lion_Model_Hat,Lion Model Hat,4,10,,300,,10,,1,0xFFFFFFFF,63,2,256,,30,1,1067,{ .@r = getrefine(); bonus bInt,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_METEOR",5,50; },{},{} 18932,Rhino_Model_Hat,Rhino Model Hat,4,10,,300,,10,,1,0xFFFFFFFF,63,2,256,,30,1,1068,{ .@r = getrefine(); bonus bVit,2+((.@r >= 11) ? (.@r/11) : 0); bonus3 bAutoSpellWhenHit,"WZ_VERMILION",1,50; },{},{} @@ -9832,13 +9908,13 @@ 18977,Old_Midas_Whisper,Old Midas Whisper,4,10,,100,,10,,1,0x00040000,56,2,256,,170,1,629,{ bonus bAllStats,1; .@r = getrefine(); bonus bBaseAtk,4*.@r; bonus bLongAtkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"GN_CARTCANNON",15*.@r/2; },{},{} 18978,Old_Magic_Stone_Hat,Old Magic Stone Hat,4,10,,100,,10,,1,0x00000200,56,2,256,,170,1,630,{ bonus bAllStats,1; .@r = getrefine(); bonus bMdef,5; bonus bMatkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"WL_SOULEXPANSION",5*.@r/2; bonus2 bSkillCooldown,"WL_CRIMSONROCK",-1000-(.@r*100); },{},{} 18979,Old_Blazing_Soul,Old Blazing Soul,4,10,,100,,10,,1,0x00008000,56,2,256,,170,1,631,{ bonus bAllStats,1; .@r = getrefine(); bonus bBaseAtk,4*.@r; bonus bCritical,2*.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15*.@r/2; bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",20*.@r/2; },{},{} -18980,Old_Wind_Whisper,Old Wind Whisper,4,10,,100,,10,,1,0x10000,56,2,256,,170,1,633,{ bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus2 bSkillAtk,"SO_POISON_BUSTER",15*.@r/2; bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20*.@r/2; },{},{} +18980,Old_Wind_Whisper,Old Wind Whisper,4,10,,100,,10,,1,0x10000,56,2,256,,170,1,633,{ bonus bAllStats,1; .@r = getrefine(); bonus bAtk2,4*.@r; bonus bMatkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus2 bSkillAtk,"SO_POISON_BUSTER",15*(.@r/2); bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20*(.@r/2); },{},{} 18981,Old_Dying_Swan,Old Dying Swan,4,10,,100,,10,,1,0x00080000,56,0,256,,170,1,635,{ bonus bAllStats,1; .@r = getrefine(); bonus bLongAtkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"CG_ARROWVULCAN",20*.@r/2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",5*.@r/2; },{},{} 18982,Old_Circlet_Of_Bone,Old Circlet Of Bones,4,10,,100,,10,,1,0x00001000,56,2,256,,170,1,1141,{ bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bCriticalRate,.@r; bonus bAspdRate,1; bonus2 bSkillAtk,"GC_CROSSIMPACT",10*.@r/2; bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",20*.@r/2; },{},{} 18983,Old_Protect_Of_Crown,Old Protect Of Crown,4,10,,100,,10,,1,0x00004000,56,2,256,,170,1,1140,{ bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus bBaseAtk,4*.@r; bonus bAspd,.@r/5; bonus2 bSkillAtk,"LG_CANNONSPEAR",20*.@r/2; bonus2 bSkillAtk,"LG_OVERBRAND",5*.@r/2; },{},{} 18984,Old_Camo_RabbitHood,Old Camouflage Rabbit Hood,4,10,,100,,10,,1,0x0000800,56,2,256,,170,1,1142,{ bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bLongAtkRate,.@r; bonus bFlee2,.@r/3; bonus2 bSkillAtk,"RA_CLUSTERBOMB",15*.@r/2; bonus2 bSkillAtk,"RA_WUGSTRIKE",10*.@r/2; },{},{} 18985,Falconer_Flute,Falconer Flute,4,0,,100,,,,0,0x0000800,63,2,1,,75,0,1143,{ set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus3 bAutoSpell,"HT_BLITZBEAT",.@i,((.@bblvl / 3) * 10) + (.@luk * 10) + (((.@bblvl / 5) * .@bblvl) * 2); },{},{} -18987,RWC13_Jormungandr_Hat,RWC13 Jormungandr Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1149,{ bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150; },{ sc_end SC_SpeedUp0; },{} +18987,RWC13_Jormungandr_Hat,RWC13 Jormungandr Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,1,1149,{ bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150; },{ sc_end SC_SpeedUp0; },{} 18997,Riot_Chip,Runaway Chip,4,10,,300,,,,1,0xFFFFFFFF,63,2,256,,100,1,1201,{ bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50; },{},{} 19019,Elemental_Crown,Elemental Crown,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,,1,1219,{ .@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4; },{},{} 19020,Survive_Circlet,Survive Circlet,4,0,,500,,10,,0,0xFFFFFFFF,63,2,256,,,1,1220,{ .@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4; },{},{} @@ -9852,7 +9928,8 @@ 19038,12_Anniversary_Crown_Of_Saint,12 Anniversary Crown of Saint,4,10,,120,,12,,1,0xFFFFFFFF,63,2,256,,0,1,1117,{ bonus bAllStats,2; bonus bMdef,12; },{},{} 19039,12_Anniversary_Elf_Ears,12 Anniversary Elf Ears,4,10,,120,,0,,0,0xFFFFFFFF,63,2,512,,0,1,875,{ bonus2 bSubRace,RC_All,4; bonus2 bSubRace,RC_Player,-4; },{},{} 19047,Angeling_KnitCap,Angeling KnitCap,4,0,,300,,5,,1,0xFFFFFFFF,63,2,256,,20,1,953,{ bonus2 bSPGainRace,RC_Angel,5; bonus bHPGainValue,100; .@r = getrefine(); if (.@r >= 5) { bonus2 bSubRace,RC_Angel,5+((.@r >= 7) ? 5 : 0); } },{},{} -19048,Elemental_Clothe,Elemental Clothes,4,0,,500,,45,,1,0xFFFFFFFF,63,2,16,,80,1,,{ .@r = getrefine(); bonus bLongAtkRate,2+((.@r >= 9) ? 3 : 0)+((.@r >= 7) ? 2 : 0); if (.@r >= 7) bonus bUnbreakableArmor,1; },{},{} +19048,Elemental_Clothe,Elemental Clothes,4,0,,500,,45,,1,0xFFFFFFFF,63,2,16,,80,1,,{ .@r = getrefine(); bonus bLongAtkRate,2+((.@r >= 9) ? 3 : 0)+((.@r >= 7) ? 2 : 0); if (.@r >= 7) bonus bUnbreakableArmor; },{},{} +19050,Loki_Nidhogg_Hat,Loki & Nidhoggur's Hat,4,0,,100,,0,,1,0xFFFFFFFF,63,2,256,,1,1,1304,{},{},{} 19051,Warrior_Moon_Cat,Warrior Moon Cat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,1,1,1308,{ /*Enables use of Level 1 Monster's Cry*/ bonus bAllStats,3; bonus2 bHPDrainRate,40,5; bonus2 bSPDrainRate,10,2; },{},{} 19052,Sigruns_Wing,Rental Sigrun's Wing,4,10,,0,,2,,0,0xFFFFFFFF,63,2,512,,1,0,568,{ if (Class == Job_Swordman || Class == Job_Thief || Class == Job_Merchant || Class == Job_Taekwon || Class == Job_Star_Gladiator || Class == Job_Star_Gladiator2) bonus bAspd,1; else if (Class == Job_Mage || Class == Job_Acolyte || Class == Job_Ninja || Class == Job_Soul_Linker) { bonus bMatk,5; bonus bHealPower,2; } else if (Class == Job_Archer || Class == Job_Gunslinger) bonus bLongAtkRate,2; else if (Class == Job_Novice || Class == Job_SuperNovice) { bonus bMaxHP,120; bonus bMaxSP,60; } },{},{} 19053,Fighter_Moon_Cat,Fighter Moon Cat,4,20,,100,,5,,1,0xFFFFFFFF,63,2,256,,1,1,1308,{ /*Enables use of Level 1 Monster's Cry*/ .@r = getrefine(); bonus bAllStats,3; bonus2 bAddEff,Eff_Stun,500+(.@r*100); },{},{} @@ -9916,6 +9993,9 @@ 19179,Rabbit_Magic_Hat_,Magic Rabit Hat,4,0,,800,,4,,1,0xFFFFFFFF,63,2,256,,0,1,497,{ bonus bDex,1; bonus bAgi,1; bonus bMdef,1; bonus bAspdRate,5; bonus bDelayRate,-4; },{},{} 19180,Anubis_Helm_,Anubis Helm,4,20,,0,,8,,1,0xFFFFFFFF,63,2,768,,65,0,485,{ bonus bMdef,5; bonus2 bSubClass,Class_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10; },{},{} 19181,New_Wave_Sunglasses_,New Wave Sunglasses,4,20,,100,,1,,1,0xFFFFFFFF,63,2,512,,30,0,856,{ bonus bDelayRate,-5; },{},{} +// +19246,Royal_Guard_Necklace,Royal Guard Necklace,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1,,80,0,1629,{ bonus bAspd,1; },{},{} +19306,Gambler_Card,Heart Card in Mouth,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1,,80,0,1679,{ bonus bCritAtkRate,5; },{},{} //=================================================================== // Costume System //=================================================================== @@ -9926,54 +10006,54 @@ 19504,T_Sunglasses,T Sunglasses,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,0,0,12,{},{},{} 19505,T_Cigarette,T Cigarette,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,0,0,54,{},{},{} 19506,T_Valkyrie_Feather_Band,T Valkyrie Feather Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,1,300,{},{},{} -19507,Fine_Sun,Clear Sun,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,654,{ bonus bUnbreakableHelm,1; },{},{} -19508,T_Gemmed_Sallet,T Gemmed Sallet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,1,0,{ bonus bUnbreakableHelm,1; },{},{} -19509,Butterfly_Wing_Ear,Butterfly Wing Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,695,{ bonus bUnbreakableHelm,1; },{},{} -19510,Nut_On_Head,Screw Stuck in Head,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,696,{ bonus bUnbreakableHelm,1; },{},{} -19511,Heart_Eye_Patch1,Heart Eye Patch 1,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,697,{ bonus bUnbreakableHelm,1; },{},{} -19512,Heart_Eye_Patch2,Heart Eye Patch 2,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,698,{ bonus bUnbreakableHelm,1; },{},{} -19513,Chicken_Beak,Chicken Bill,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,699,{ bonus bUnbreakableHelm,1; },{},{} -19514,Charlie_Beard,Charlies Beard,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,700,{ bonus bUnbreakableHelm,1; },{},{} -19515,Yellow_Hat,Yellow Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,701,{ bonus bUnbreakableHelm,1; },{},{} -19516,Singing_Bird,Singing Bird,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,702,{ bonus bUnbreakableHelm,1; },{},{} -19517,Cocks_Comb,Chicken Crest,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,703,{ bonus bUnbreakableHelm,1; },{},{} -19518,Rainbow,Rainbow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,704,{ bonus bUnbreakableHelm,1; },{},{} -19519,Lightning_Cloud,Thunderstorm Cloud,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,688,{ bonus bUnbreakableHelm,1; },{},{} -19520,Rain_Cloud,Rain Cloud,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,705,{ bonus bUnbreakableHelm,1; },{},{} -19521,Charlie_Hat,Charlies Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,706,{ bonus bUnbreakableHelm,1; },{},{} -19522,Mini_Crown1,Mini Crown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,707,{ bonus bUnbreakableHelm,1; },{},{} -19523,Donation_Ribbon,Green Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,244,{ bonus bUnbreakableHelm,1; },{},{} -19524,C_Green_Feeler,Costume Green Feeler,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,85,{ bonus bUnbreakableHelm,1; },{},{} -19525,C_Jack_A_Dandy,Costume Jack A Dandy,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,58,{ bonus bUnbreakableHelm,1; },{},{} -19526,C_Helm,Costume Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,40,{ bonus bUnbreakableHelm,1; },{},{} -19527,C_Sharp_Gear,Costume Spiky Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,43,{ bonus bUnbreakableHelm,1; },{},{} -19528,C_Iron_Cane,Costume Iron Cain,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,53,{ bonus bUnbreakableHelm,1; },{},{} -19529,C_Angelic_Chain,Costume Angel Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,38,{ bonus bUnbreakableHelm,1; bonus bVit,1; bonus bAgi,1; },{},{} -19530,C_Wild_Rose,Costume Wild Rose,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,541,{ bonus bUnbreakableHelm,1; bonus bBaseAtk,2; bonus bMatk,2; },{},{} -19531,C_Cube_Mask,Costume Cube Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,0,0,472,{ bonus bUnbreakableHelm,1; bonus bFlee,1; },{},{} -19532,C_Red_Bunny_Band,Red Bunny Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,640,{ bonus bUnbreakableHelm,1; bonus bDex,1; },{},{} -19533,C_Spore_Hat,Costume Spore Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,114,{ bonus bUnbreakableHelm,1; bonus bVit,1; bonus2 bExpAddRace,RC_All,1; },{},{} +19507,Fine_Sun,Clear Sun,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,654,{ bonus bUnbreakableHelm; },{},{} +19508,T_Gemmed_Sallet,T Gemmed Sallet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,1,0,{ bonus bUnbreakableHelm; },{},{} +19509,Butterfly_Wing_Ear,Butterfly Wing Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,695,{ bonus bUnbreakableHelm; },{},{} +19510,Nut_On_Head,Screw Stuck in Head,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,696,{ bonus bUnbreakableHelm; },{},{} +19511,Heart_Eye_Patch1,Heart Eye Patch 1,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,697,{ bonus bUnbreakableHelm; },{},{} +19512,Heart_Eye_Patch2,Heart Eye Patch 2,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,698,{ bonus bUnbreakableHelm; },{},{} +19513,Chicken_Beak,Chicken Bill,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,699,{ bonus bUnbreakableHelm; },{},{} +19514,Charlie_Beard,Charlies Beard,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,700,{ bonus bUnbreakableHelm; },{},{} +19515,Yellow_Hat,Yellow Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,701,{ bonus bUnbreakableHelm; },{},{} +19516,Singing_Bird,Singing Bird,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,702,{ bonus bUnbreakableHelm; },{},{} +19517,Cocks_Comb,Chicken Crest,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,703,{ bonus bUnbreakableHelm; },{},{} +19518,Rainbow,Rainbow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,704,{ bonus bUnbreakableHelm; },{},{} +19519,Lightning_Cloud,Thunderstorm Cloud,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,688,{ bonus bUnbreakableHelm; },{},{} +19520,Rain_Cloud,Rain Cloud,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,705,{ bonus bUnbreakableHelm; },{},{} +19521,Charlie_Hat,Charlies Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,706,{ bonus bUnbreakableHelm; },{},{} +19522,Mini_Crown1,Mini Crown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,707,{ bonus bUnbreakableHelm; },{},{} +19523,Donation_Ribbon,Green Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,244,{ bonus bUnbreakableHelm; },{},{} +19524,C_Green_Feeler,Costume Green Feeler,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,85,{ bonus bUnbreakableHelm; },{},{} +19525,C_Jack_A_Dandy,Costume Jack A Dandy,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,58,{ bonus bUnbreakableHelm; },{},{} +19526,C_Helm,Costume Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,40,{ bonus bUnbreakableHelm; },{},{} +19527,C_Sharp_Gear,Costume Spiky Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,43,{ bonus bUnbreakableHelm; },{},{} +19528,C_Iron_Cane,Costume Iron Cain,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,53,{ bonus bUnbreakableHelm; },{},{} +19529,C_Angelic_Chain,Costume Angel Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,38,{ bonus bUnbreakableHelm; bonus bVit,1; bonus bAgi,1; },{},{} +19530,C_Wild_Rose,Costume Wild Rose,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,541,{ bonus bUnbreakableHelm; bonus bBaseAtk,2; bonus bMatk,2; },{},{} +19531,C_Cube_Mask,Costume Cube Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,0,0,472,{ bonus bUnbreakableHelm; bonus bFlee,1; },{},{} +19532,C_Red_Bunny_Band,Red Bunny Band,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,640,{ bonus bUnbreakableHelm; bonus bDex,1; },{},{} +19533,C_Spore_Hat,Costume Spore Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,114,{ bonus bUnbreakableHelm; bonus bVit,1; bonus2 bExpAddRace,RC_All,1; },{},{} 19534,C_Tha_Despero_Mask,Costume Thanatos Despero Mask,4,20,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,693,{ bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; bonus bHealPower,1; },{},{} -19535,C_Sinsuncho_Hat,Costume Sinsuncho Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,730,{ bonus bUnbreakableHelm,1; bonus bStr,1; bonus2 bExpAddRace,RC_All,1; },{},{} -19536,C_Rose_Corsage,Costume Rose Corsage,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,533,{ bonus bUnbreakableHelm,1; bonus bInt,1; },{},{} -19537,C_Gryphon_Hat,Costume Gryphon Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,591,{ bonus bUnbreakableHelm,1; },{},{} +19535,C_Sinsuncho_Hat,Costume Sinsuncho Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,730,{ bonus bUnbreakableHelm; bonus bStr,1; bonus2 bExpAddRace,RC_All,1; },{},{} +19536,C_Rose_Corsage,Costume Rose Corsage,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,533,{ bonus bUnbreakableHelm; bonus bInt,1; },{},{} +19537,C_Gryphon_Hat,Costume Gryphon Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,591,{ bonus bUnbreakableHelm; },{},{} 19538,Full_Moon,Full Moon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,780,{ autobonus "{ bonus bBaseAtk,50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus "{ bonus bMatk,50; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; /* showscript */ }"; },{},{} 19539,C_Reginleif_Hairband,Costume Hairband Of Reginleif,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,468,{ bonus bAllStats,1; },{},{} 19540,C_Rabbit_Earplug,Costume Rabbit Earplugs,4,20,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,515,{ bonus bAgi,1; bonus bFlee,2; },{},{} -19541,C_Romantic_White_Flower,Costume Romantic White Flower,4,20,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,259,{ bonus bUnbreakableHelm,1; },{},{} -19542,C_Devil_Whisper,Costume Devil Whisper,4,20,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,712,{ bonus bUnbreakableHelm,1; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400; },{},{} -19543,Oliver_Wolf_Hood,Oliver Wolf Hood,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1024,,70,0,849,{ bonus bUnbreakableHelm,1; },{},{} -19544,C_Tare_Neko_Cru,Costume Tare Neko Cru,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,692,{ bonus bUnbreakableHelm,1; },{},{} -19545,C_Boys_Cap,Costume Boy's Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,102,{ bonus bUnbreakableHelm,1; },{},{} -19546,C_Valkyrie_Helm,Costume Valkyrie Helm,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,225,{ bonus bUnbreakableHelm,1; },{},{} -19547,C_Deviruchi_Cap,Costume Deviruchi Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,123,{ bonus bUnbreakableHelm,1; },{},{} -19548,C_Frog_Cap,Costume Frog Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,448,{},{ bonus bUnbreakableHelm,1; },{} -19549,C_Magestic_Goat,Costume Magestic Goat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,41,{ bonus bUnbreakableHelm,1; },{},{} -19550,C_Blush,Costume Blush,4,20,,100,,0,,0,0xFFFFFFFF,63,2,2048,,100,0,125,{ bonus bUnbreakableHelm,1; },{},{} -19551,C_Elven_Ears,Costume Elven Ears,4,20,,100,,0,,0,0xFFFFFFFF,63,2,2048,,100,0,73,{ bonus bUnbreakableHelm,1; },{},{} -19552,C_Centimental_Flower,Costume Centimental Flower,4,20,,100,,0,,0,0xFFFFFFFF,63,2,4096,,100,0,56,{ bonus bUnbreakableHelm,1; },{},{} -19553,C_Assassin_Mask_,Costume Assassin Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,4096,,100,0,180,{ bonus bUnbreakableHelm,1; },{},{} -19554,C_Hahoe_Mask,Costume Hahoe Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,6144,,100,0,230,{ bonus bUnbreakableHelm,1; },{},{} +19541,C_Romantic_White_Flower,Costume Romantic White Flower,4,20,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,259,{ bonus bUnbreakableHelm; },{},{} +19542,C_Devil_Whisper,Costume Devil Whisper,4,20,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,712,{ bonus bUnbreakableHelm; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400; },{},{} +19543,Oliver_Wolf_Hood,Oliver Wolf Hood,4,20,,300,,0,,0,0xFFFFFFFF,63,2,1024,,70,0,849,{ bonus bUnbreakableHelm; },{},{} +19544,C_Tare_Neko_Cru,Costume Tare Neko Cru,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,692,{ bonus bUnbreakableHelm; },{},{} +19545,C_Boys_Cap,Costume Boy's Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,102,{ bonus bUnbreakableHelm; },{},{} +19546,C_Valkyrie_Helm,Costume Valkyrie Helm,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,225,{ bonus bUnbreakableHelm; },{},{} +19547,C_Deviruchi_Cap,Costume Deviruchi Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,123,{ bonus bUnbreakableHelm; },{},{} +19548,C_Frog_Cap,Costume Frog Cap,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,448,{},{ bonus bUnbreakableHelm; },{} +19549,C_Magestic_Goat,Costume Magestic Goat,4,20,,100,,0,,0,0xFFFFFFFF,63,2,1024,,100,0,41,{ bonus bUnbreakableHelm; },{},{} +19550,C_Blush,Costume Blush,4,20,,100,,0,,0,0xFFFFFFFF,63,2,2048,,100,0,125,{ bonus bUnbreakableHelm; },{},{} +19551,C_Elven_Ears,Costume Elven Ears,4,20,,100,,0,,0,0xFFFFFFFF,63,2,2048,,100,0,73,{ bonus bUnbreakableHelm; },{},{} +19552,C_Centimental_Flower,Costume Centimental Flower,4,20,,100,,0,,0,0xFFFFFFFF,63,2,4096,,100,0,56,{ bonus bUnbreakableHelm; },{},{} +19553,C_Assassin_Mask_,Costume Assassin Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,4096,,100,0,180,{ bonus bUnbreakableHelm; },{},{} +19554,C_Hahoe_Mask,Costume Hahoe Mask,4,20,,100,,0,,0,0xFFFFFFFF,63,2,6144,,100,0,230,{ bonus bUnbreakableHelm; },{},{} 19555,C_Crescent_Moon_Helm,Costume Crescent Moon Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,1,213,{ bonus bVit,1; },{},{} 19556,C_Kabuki_Mask,Costume Kabuki Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,1,214,{ bonus bInt,1; },{},{} 19557,C_Ayothaya_Hat,Costume Ayothaya Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,334,{ bonus bStr,1; },{},{} @@ -9993,7 +10073,7 @@ 19571,C_White_Musang_Hat,Costume White Musang Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,770,{ bonus bStr,1; },{},{} 19572,C_Black_Musang_Hat,Costume Black Musang Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,771,{ bonus bInt,1; },{},{} 19573,C_Heart_Wing_Hairband,Costume Heart Wing Hairband,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,733,{},{},{} -19574,C_Lord_of_Death,Costume Lord of Death,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,0,1,742,{ bonus bUnbreakableHelm,1; },{},{} +19574,C_Lord_of_Death,Costume Lord of Death,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,0,1,742,{ bonus bUnbreakableHelm; },{},{} 19575,C_Ascension_Black_Dragon,Costume Ascension Black Dragon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,1,863,{},{},{} 19576,C_Tare_Pope,Costume Tare Pope,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,817,{},{},{} 19577,10th_Anni_Poring_Hat,10th Anni Poring Hat,4,10,,100,,1,,0,0xFFFFFFFF,63,2,1024,,1,1,874,{},{},{} @@ -10006,7 +10086,7 @@ 19584,C_Pirate_Dagger,Costume Dagger In Mouth,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,1,327,{},{},{} 19585,C_Feather_Beret,Costume Feather Beret,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,224,{},{},{} 19586,C_Pink_Bunny_Band_J,Costume Pink Bunny Hair Band,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,898,{},{},{} -19587,C_King_Poring_Hat,Costume King Poring Hat,4,0,,100,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,905,{ bonus bUnbreakableHelm,1; },{},{} +19587,C_King_Poring_Hat,Costume King Poring Hat,4,0,,100,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,905,{ bonus bUnbreakableHelm; },{},{} 19588,C_Cat_Hat_J,Costume Cat Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,182,{ bonus bAllStats,3; bonus2 bExpAddClass,Class_All,30; },{},{} 19589,C_Fallen_Angel_Lost_J,Costume Fallen Angel Lost,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,907,{},{},{} 19590,C_Twin_Ribbon_J,Costume Maiden's Twin Ribbon,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,239,{},{},{} @@ -10105,7 +10185,7 @@ 19701,C_Red_Bonnet,Costume Red Bonnet,4,10,,100,,,,0,0xFFFFFFFF,63,2,1024,,1,1,190,{},{},{} 19702,C_Santa_Hat_1,Costume Twin Pompom By JB,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,390,{},{},{} 19706,C_Red_Dress_Hat,Costume Red Dress Hat,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,670,{},{},{} -19707,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,966,{ bonus bUnbreakableHelm,1; },{},{} +19707,C_Polar_Bear_Cap,Costume Polar Bear Cap,4,20,,0,,0,,0,0xFFFFFFFF,63,2,1024,,0,0,966,{ bonus bUnbreakableHelm; },{},{} 19708,C_White_Snake_Hat,Costume White Snake Hat,4,10,,0,,,,0,0xFFFFFFFF,63,2,256,,1,1,413,{},{},{} 19709,C_Yellow_Ribbon,Costume Yellow Ribbon,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,310,{},{},{} 19710,C_Wings_Of_Victory,Costume Wings Of Victory,4,10,,0,,,,0,0xFFFFFFFF,63,2,2048,,1,1,365,{},{},{} @@ -10243,7 +10323,7 @@ 19903,C_Witchs_Hat,Costume Witch's Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,717,{ bonus bVariableCastrate,-10; },{},{} 19910,C_Halloween_Hat,Costume Halloween Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,,1,1098,{},{},{} 19913,C_Poo_Poo_Hat,Costume Poo Poo Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,,1,76,{},{},{} -19914,Felock_Cap,Costume Tarlock's Hat,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1101,{},{},{} +19914,Felock_Cap,Felrock's Hat,4,10,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1101,{},{},{} 19916,C_Black_Cat_Hat,Costume Black Cat Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1105,{},{},{} 19917,C_Gloomy_Pumpkin_Hat,Costume Pumpkin Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,691,{ bonus bSpeedRate,25; },{},{} 19918,C_Lude_Mask,Costume Lude Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,802,{ bonus bAddItemHealRate,20; },{},{} @@ -10669,7 +10749,7 @@ 20375,C_Ignis_Cap,Costume Ignis Cap,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,803,{},{},{} 20376,C_Memory_of_Lovers,Costume Memory of Lovers,4,0,,0,,,,0,0xFFFFFFFF,63,2,2048,,1,1,1072,{},{},{} 20377,C_Flight_Cap,Costume Flight Cap,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,820,{},{},{} -20378,C_Sky_Met,Costume Sky Met,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,868,{},{},{} +20378,C_Skymet,Costume Sky Met,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,868,{},{},{} 20379,C_Pocketwatch_Hair_Ornament,Costume Pocketwatch Hair Ornament,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1404,{},{},{} 20380,C_Mechanical_Feather_Hairband,Costume Mechanical Feather Hairband,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1405,{},{},{} 20381,C_Steampunk_Hat,Costume Steampunk Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,1,1406,{},{},{} @@ -10761,8 +10841,12 @@ 20508,C_Poster_Girl_Hat,Costume Poster Girl Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1446,{},{},{} 20509,C_Wings_of_Uriel,Costume Wings of Uriel,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,17,{},{},{} 20510,C_SwordWing,Costume Sword Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,19,{},{},{} -20600,Fantastic_Aura,Fantastic Aura,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,0,{ /*TODO: View ID*/ bonus bUnbreakableHelm,1; },{},{} -20700,Egir_Manteau,Egir Manteau,4,200000,,300,,10,,1,0xFFFFFFFF,63,2,4,,110,1,0,{ bonus bUnbreakableGarment,1; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); } },{},{} +20511,C_Blue_Fairy_Wing,Blue Wings of Fairy,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,21,{},{},{} +20512,C_Bag_of_Adventurer_j,Costume Adventurer's Backpack,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,2,{},{},{} +20514,C_Thanatos_Sword,Costume Thanatos Sword,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,23,{},{},{} +20516,C_Wings_of_Michael,Costume Wings of Michael,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,24,{},{},{} +20600,Fantastic_Aura,Fantastic Aura,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,0,{ /*TODO: View ID*/ bonus bUnbreakableHelm; },{},{} +20700,Egir_Manteau,Egir Manteau,4,200000,,300,,10,,1,0xFFFFFFFF,63,2,4,,110,1,0,{ bonus bUnbreakableGarment; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); } },{},{} 20702,TE_Woe_Muffler,TE Woe Muffler,4,0,,0,,5,,0,0xFFFFFFFF,63,2,4,,40,1,,{ bonus bMdef,5; bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,25; },{},{} 20703,TE_Woe_Manteau,TE Woe Manteau,4,0,,0,,10,,0,0x000444A2,63,2,4,,40,1,,{ bonus2 bAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25; },{},{} 20704,TE_Woe_Magic_Manteau,TE Woe Magic Manteau,4,0,,0,,5,,0,0x00818315,63,2,4,,40,1,,{ bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25; },{},{} @@ -10777,21 +10861,22 @@ 20724,Love_Dad_Wings_2012,Love Dad Wings 2012,4,0,,100,,15,,1,0xFFFFFFFF,63,2,4,,1,1,5,{ .@r = getrefine(); if ((readparam(bStr)>89)) { bonus bAllStats,1; bonus bStr,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bAgi)>89)) { bonus bAllStats,1; bonus bAgi,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bVit)>89)) { bonus bAllStats,1; bonus bVit,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bInt)>89)) { bonus bAllStats,1; bonus bInt,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bDex)>89)) { bonus bAllStats,1; bonus bDex,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bLuk)>89)) { bonus bAllStats,1; bonus bLuk,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } },{},{} 20725,Ribbon_Piamat,Ribbon Piamat,4,10,,100,0:10,,,1,0xFFFFFFFF,63,2,4,,30,1,7,{ bonus bInt,1; bonus bDex,1; },{},{} 20727,Brilliant_Golden_Wings,Brilliant Golden Wings,4,10,,0,,,,0,0xFFFFFFFF,63,2,8192,,1,1,5,{},{},{} -20730,Loyalists_Hood,Loyalists Hood,4,10,,200,,30,,1,0xFFFFFFFF,63,2,8192,,80,,,{ bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback,1; bonus2 bSubEle,Ele_All,-20; },{},{} +20730,Loyalists_Hood,Loyalists Hood,4,10,,200,,30,,1,0xFFFFFFFF,63,2,8192,,80,,,{ bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback; bonus2 bSubEle,Ele_All,-20; },{},{} 20732,Supplement_Part_Con,Supplement Part Con,4,25000,,500,,20,,1,0x00000400,56,2,4,,100,1,,{ .@r = getrefine(); bonus bMaxHPrate,6+(.@r/2); if(.@r>=9){bonus bHPrecovRate,50;} },{},{} 20733,Upgrade_Part_Engine,Reinforced Parts - Engine,4,10,,1500,,25,,1,0x00000400,56,2,4,,100,1,,{ bonus bDelayrate,-10; .@r = getrefine(); if(.@r>=7) {bonus2 bSubEle,0,10;}; if(.@r>=9) {bonus bDelayrate,-10;} },{},{} 20737,C_Kirin_Wing,Costume Kirin Wing,4,10,,0,,,,0,0xFFFFFFFF,63,2,8192,,1,0,6,{},{},{} -20743,Airship_Cape,Cloak Of Airship,4,10,,0,,25,,1,0xFFFFFFFF,63,2,4,,125,0,,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-20; },{},{} -20744,Felock_Cape,Tarlock's Cloak,4,10,,400,,12,,1,0xFFFFFFFF,63,2,4,,125,1,,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-10; .@r = getrefine(); if(.@r>=7) { bonus bVariableCastrate,-10; } if(.@r>=9) { bonus bVariableCastrate,-10;} if(.@r>=12) { bonus bVariableCastrate,-5; } },{},{} +20743,Airship_Cape,Airship's Cloak,4,10,,0,,25,,1,0xFFFFFFFF,63,2,4,,125,0,,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-20; },{},{} +20744,Felock_Cape,Felrock's Cloak,4,10,,400,,12,,1,0xFFFFFFFF,63,2,4,,125,1,,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-10; .@r = getrefine(); if(.@r>=7) { bonus bVariableCastrate,-10; } if(.@r>=9) { bonus bVariableCastrate,-10;} if(.@r>=12) { bonus bVariableCastrate,-5; } },{},{} 20746,C_Rudra_Wing,Costume Rudra Wings,4,10,,0,,,,0,0xFFFFFFFF,63,2,8192,,1,0,8,{},{},{} 20748,Manteau_Of_Fallen,Cloak Of Casualties,4,10,,600,,20,,0,0xFFFFFFFF,63,2,4,,120,1,,{ .@r = getrefine(); bonus bAgi,5; bonus bFlee,10; if(readparam(bStr)>=90) bonus bBaseAtk,10+(.@r*2); if(readparam(bInt)>=90) bonus bMatk,20+(.@r*3); if(readparam(bVit)>=90) bonus2 bSubEle,Ele_Neutral,3+((.@r>=8)?3:0)+((.@r>=10)?4:0); if(readparam(bAgi)>=90){ bonus bAspdRate,3+(.@r/2); bonus bAspd,((.@r>=10)?1:0); } if(readparam(bDex)>=90) bonus bLongAtkRate,3+(.@r/2); if(readparam(bLuk)>=90) bonus bCriticalRate,5+.@r; },{},{} 20749,Manteau_Of_Fallen_,Cloak Of Casualties,4,10,,600,,30,,1,0xFFFFFFFF,63,2,4,,170,1,,{ .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bAgi,5; bonus bFlee,10; if(readparam(bStr)>=90) bonus bBaseAtk,10+(.@r*2); if(readparam(bInt)>=90) bonus bMatk,20+(.@r*3); if(readparam(bVit)>=90) bonus2 bSubEle,Ele_Neutral,3+((.@r>=8)?3:0)+((.@r>=10)?4:0); if(readparam(bAgi)>=90){ bonus bAspdRate,3+(.@r/2); bonus bAspd,((.@r>=10)?1:0); } if(readparam(bDex)>=90) bonus bLongAtkRate,3+(.@r/2); if(readparam(bLuk)>=90) bonus bCriticalRate,5+.@r; },{},{} 20753,Lian_Robe,Lian Robe,4,0,,700,,20,1,1,0xFFFFFFFF,63,2,4,,65,1,,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5; },{},{} -20756,Aegir_Cloak,Aegir Cloak,4,10,,300,,10,,1,0xFFFFFFFF,63,2,4,,40,1,,{ bonus bUnbreakableGarment,1; bonus bMaxHP,500; bonus bMaxSP,50; },{},{} +20756,Aegir_Cloak,Aegir Cloak,4,10,,300,,10,,1,0xFFFFFFFF,63,2,4,,40,1,,{ bonus bUnbreakableGarment; bonus bMaxHP,500; bonus bMaxSP,50; },{},{} 20761,C_Wing_Of_Happiness,Costume Happiness Wings,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,9,{},{},{} 20762,C_GreatDevilWing,Costume Great Devil Wings,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,10,{},{},{} 20763,C_Amistr_Bag,Costume Amistr Bag,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,4,{},{},{} 20764,C_Fallen_Angel_Wing,Costume Fallen Angel Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,8192,,1,0,3,{},{},{} +20773,Excelion_Wing,Excelion Wing,4,20,,900,,40,,0,0xFFFFFFFF,63,2,4,,99,1,,{ bonus bFlee,getrefine() * 2; bonus bFlee2,8 + (BaseLevel > 129 ? 2 : 0); },{},{} 20779,Rift_Manteau,Rift Manteau,4,20,,500,,16,,1,0xFFFFFFFF,63,2,4,,100,1,,{ .@r = getrefine(); bonus bMaxHP,(.@r >= 9 ? 1300 : .@r >= 7 ? 700 : 300); bonus bMaxSP,-50; },{},{} 20780,Unity_STR_Manteau,Unity STR Manteau,4,32000,,300,,20,,1,0xFFFFFFFF,63,2,4,,1,1,0,{ .@r = getrefine(); if(BaseLevel<100) { bonus2 bExpAddRace,RC_All,4; bonus bMaxHPrate,2*(.@r/2); } },{},{} 20781,Unity_AGI_Manteau,Unity AGI Manteau,4,32000,,300,,20,,1,0xFFFFFFFF,63,2,4,,1,1,0,{ .@r = getrefine(); if(BaseLevel<100) { bonus2 bExpAddRace,RC_All,4; bonus bFlee,3*(.@r/2); } },{},{} @@ -10801,10 +10886,10 @@ 20788,Private_Doram_Manteau,Private Doram Manteau,4,20,,300,,20,,1,0x80000000,7,2,4,,100,1,,{ bonus bFlee,5; bonus2 bSubEle,Ele_Neutral,2; bonus bFlee2,getrefine()/3; },{},{} 20789,Luxury_Doram_Manteau,Luxury Doram Manteau,4,20,,400,,25,,1,0x80000000,7,2,4,,140,1,,{ bonus bFlee,7; bonus2 bSubEle,Ele_Neutral,3; .@r = getrefine()/3; bonus bFlee2,.@r; bonus bLuk,.@r; },{},{} 20790,Elegant_Doram_Manteau,Elegant Doram Manteau,4,20,,500,,30,,1,0x80000000,7,2,4,,175,1,,{ bonus bFlee,10; bonus2 bSubEle,Ele_Neutral,5; .@r = getrefine()/2; bonus bFlee2,.@r; bonus bInt,.@r; bonus bDex,.@r; bonus bLuk,.@r; },{},{} -20797,Etran_Shirt,Etran Shirt,4,0,,150,,,,1,0xFFFFFFFF,63,2,4,,1,1,,{ bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback,1; },{},{} +20797,Etran_Shirt,Etran Shirt,4,0,,150,,,,1,0xFFFFFFFF,63,2,4,,1,1,,{ bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback; },{},{} 20798,GrimReaper_Protection,Costume Grim Reaper Protection,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1450,{},{},{} 20815,SeraphimRobe,Seraphim Robe,4,0,,300,,18,,1,0xFFFFFFFF,63,2,4,,1,1,,{ bonus bMaxHPrate,10; bonus2 bMagicAtkEle,Ele_Neutral,5; .@r = getrefine(); if (.@r > 6) { bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Holy,20; bonus bMatkRate,10; } if (.@r > 8) { bonus2 bSubEle,Ele_Dark,10; bonus2 bSubEle,Ele_Holy,10; bonus bVariableCastrate,-5; } if (getskilllv("CR_TRUST") > 0) { bonus2 bSubEle,Ele_Holy,.@r*3; } },{},{} -20819,Oxygen_Bottle,Oxygen Bottle,4,0,,500,,0,,1,0xFFFFFFFF,63,2,4,,40,0,0,{ bonus bFlee,12+getrefine(); bonus bHit,getrefine(); },{},{} +20819,Oxygen_Bottle,Oxygen Bottle,4,0,,500,,0,,1,0xFFFFFFFF,63,2,4,,40,1,0,{ bonus bFlee,12+getrefine(); bonus bHit,getrefine(); },{},{} 20823,Para_Team_Manteau100,Awakened Eden Group Manteau I,4,0,,0,,20,,0,0xFFFFFFFF,63,2,4,,100,1,0,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus bFlee2,2; if(.@r >= 9){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; } } },{},{} 20824,Para_Team_Manteau130,Awakened Eden Group Manteau II,4,0,,0,,25,,0,0xFFFFFFFF,63,2,4,,130,1,0,{ bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; bonus bMaxHP,500; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; if(.@r >= 9){ bonus2 bSubEle,Ele_Neutral,5; } } },{},{} 20825,Para_Team_Manteau160,Awakened Eden Group Manteau III,4,0,,0,,30,,0,0xFFFFFFFF,63,2,4,,160,1,0,{ bonus2 bSubEle,Ele_All,10; bonus bFlee,12; bonus bMaxHP,1000; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus2 bSubEle,Ele_Neutral,5; if(.@r >= 9){ skill "BS_GREED",1; } } },{},{} @@ -10824,24 +10909,24 @@ 21008,Small_Karasuma,Small Karasuma,5,20,,1000,170,,1,2,0x00004082,63,2,34,4,50,1,3,{ bonus bCritAtkRate,getrefine()*2; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; },{},{} 21009,Thanos_Great_Sword,Thanatos Great Sword,5,10,,1300,280:120,,1,1,0x00004082,56,2,34,4,120,1,3,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 21010,Tw_Sword_Of_Evil_Slayer,Evil Slayer Slasher Sword,5,10,,2000,225,,1,1,0x00004082,63,2,34,3,100,1,3,{ bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0)); },{},{} -21011,Giant_Blade,Gigantic Blade,5,10,,5000,300,,1,1,0x00004082,56,2,34,4,130,1,3,{ bonus bUnbreakableWeapon,1; bonus bAspdRate,-5; bonus bCritAtkRate,getrefine(); if(readparam(bStr)<=110){ bonus bAtk,-250; } },{},{} +21011,Giant_Blade,Gigantic Blade,5,10,,5000,300,,1,1,0x00004082,56,2,34,4,130,1,3,{ bonus bUnbreakableWeapon; bonus bAspdRate,-5; bonus bCritAtkRate,getrefine(); if(readparam(bStr)<=110){ bonus bAtk,-250; } },{},{} 21012,Some_Wizard_MagicSword,Some Wizard MagicSword,5,0,,2200,200:150,,1,2,0x00000080,56,2,34,4,110,1,3,{},{},{} 21013,Hetairoi_Sword,Hetairoi Sword,5,0,,2200,210,,1,2,0x00000080,56,2,34,4,110,1,3,{ bonus2 bSkillUseSP,"KN_AUTOCOUNTER",2; bonus2 bSkillUseSP,"LK_PARRYING",25; },{},{} 21014,Infinity_Two-Handed_Sword,Infinity Two-Handed Sword,5,20,,500,230,,1,1,0x00004082,56,2,34,4,100,1,3,{},{},{} 21015,Crimson_Two-Handed_Sword,Crimson Two-Handed Sword,5,20,,1700,170,,1,2,0x00004082,63,2,34,3,70,1,3,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); },{},{} 21016,Two_Handed_Sword_of_Vicious_Mind,Two-Handed Sword of Vicious Mind,5,20,,2200,220,,1,1,0x00004082,63,2,34,4,160,1,3,{ bonus bAtk,pow(min(getrefine(),15),2); },{},{} -21018,Lindy_Hop,Lindy Hop,5,20,,3400,340,,1,2,0x00004082,56,2,34,4,170,1,3,{ .@r = getrefine(); bonus2 bAddClass,Class_All,.@r/2; bonus bAspdRate,.@r; bonus bUnbreakableWeapon,0; },{},{} -21019,Onimaru,Onimaru,5,0,,4200,75,,1,2,0x00000080,56,2,34,4,130,1,3,{ .@bStr = readparam(bStr); .@r = getrefine(); bonus bBaseAtk,(min(120,.@bStr)); if (.@bStr > 119) bonus bBaseAtk,160; else if (.@bStr > 107) bonus bBaseAtk,80; else if (.@bStr > 94) bonus bBaseAtk,40; if (.@r > 6) bonus bUnbreakableWeapon,1; bonus4 bAutoSpell,"NPC_WIDECURSE",4,100,0; if (.@r > 8) bonus4 bAutoSpellOnSkill,"LK_BERSERK","BS_OVERTHRUST",5,100; },{},{} +21018,Lindy_Hop,Lindy Hop,5,20,,3400,340,,1,2,0x00004082,56,2,34,4,170,1,3,{ .@r = getrefine(); bonus2 bAddClass,Class_All,.@r/2; bonus bAspdRate,.@r; bonus bUnbreakableWeapon; },{},{} +21019,Onimaru,Onimaru,5,0,,4200,75,,1,2,0x00000080,56,2,34,4,130,1,3,{ .@bStr = readparam(bStr); .@r = getrefine(); bonus bBaseAtk,(min(120,.@bStr)); if (.@bStr > 119) bonus bBaseAtk,160; else if (.@bStr > 107) bonus bBaseAtk,80; else if (.@bStr > 94) bonus bBaseAtk,40; if (.@r > 6) bonus bUnbreakableWeapon; bonus4 bAutoSpell,"NPC_WIDECURSE",4,100,0; if (.@r > 8) bonus4 bAutoSpellOnSkill,"LK_BERSERK","BS_OVERTHRUST",5,100; },{},{} //=================================================================== // New Shoes //=================================================================== -22000,Temporal_Str_Boots,Temporal Boots Of Strength,4,20,,600,,25,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{} +22000,Temporal_Str_Boots,Temporal Boots Of Strength,4,20,,600,,25,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bAtk,50; },{},{} 22001,Temporal_Int_Boots,Temporal Boots Of Intelligence,4,20,,600,,20,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{} 22002,Temporal_Agi_Boots,Temporal Boots Of Agility,4,20,,600,,25,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1; },{},{} 22003,Temporal_Vit_Boots,Temporal Boots Of Vitality,4,20,,600,,25,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{} 22004,Temporal_Dex_Boots,Temporal Boots Of Dexterity,4,20,,600,,25,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{} 22005,Temporal_Luk_Boots,Temporal Boots Of Luck,4,20,,600,,20,,0,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30; },{},{} -22006,Temporal_Str_Boots_,Temporal Boots Of Strength,4,20,,600,,25,,1,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bBaseAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{} +22006,Temporal_Str_Boots_,Temporal Boots Of Strength,4,20,,600,,25,,1,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bAtk,50; },{},{} 22007,Temporal_Vit_Boots_,Temporal Boots Of Vitality,4,20,,600,,25,,1,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{} 22008,Temporal_Dex_Boots_,Temporal Boots Of Dexterity,4,20,,600,,25,,1,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{} 22009,Temporal_Int_Boots_,Temporal Boots Of Intelligence,4,20,,600,,20,,1,0xFFFFFFFF,56,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{} @@ -10856,13 +10941,13 @@ 22035,Vet_Nepen_Heel,Heoric Nepenthes Shoes,4,10,,300,,10,,1,0xFFFFFFFF,63,2,64,,160,1,,{ .@r = getrefine(); if (.@r>=8 && .@r<=10) .@i=5+.@r; else if (.@r>=11 && .@r<=13) .@i=5+(.@r*3); else if (.@r>13) .@i=42; bonus bVariableCastrate,-10-.@i; },{},{} 22036,Vet_SliverFox_Boots,Heroic Silver Fox Leather Boots,4,10,,300,,15,,1,0xFFFFFFFF,63,2,64,,160,1,,{ .@r = getrefine(); if (.@r>=8 && .@r<=13) .@i=.@r; else if (.@r>13) .@i=13; bonus bLongAtkRate,5+.@i; },{},{} 22037,Vet_Ungo_Boots,Heroic Ungoliant Upgrade Boots,4,10,,300,,10,,1,0xFFFFFFFF,63,2,64,,160,1,,{ .@r = getrefine(); if (.@r>=8 && .@r<=13) .@i=.@r; else if (.@r>13) .@i=13; bonus bUseSPrate,-5-.@i; },{},{} -22042,Talaria_Shoes,Talaria Shoes,4,10,,300,,15,,1,0xFFFFFFFF,63,2,64,,50,1,,{ bonus bAgi,2; bonus bAspd,1; bonus bUnbreakableShoes,1; },{},{} +22042,Talaria_Shoes,Talaria Shoes,4,10,,300,,15,,1,0xFFFFFFFF,63,2,64,,50,1,,{ bonus bAgi,2; bonus bAspd,1; bonus bUnbreakableShoes; },{},{} 22043,Supplement_Part_Agi,Supplement Part Agi,4,25000,,350,,25,,1,0x00000400,56,2,64,,100,1,,{ bonus bAspdRate,5+(getrefine()/4); },{},{} 22044,Upgrade_Part_Booster,Reinforced Parts - Booster,4,10,,1000,,23,,1,0x00000400,56,2,64,,100,1,,{ bonus2 bSkillUseSP,"NC_HOVERING",15; if(getrefine()>=7){bonus2 bSkillUseSP,"NC_HOVERING",-20;} },{},{} 22045,Beach_Sandals,Summer Sandals,4,10,,200,,5,,0,0xFFFFFFFF,63,2,64,,0,1,0,{ bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,300; },{},{} -22046,Airship_Boots,Boots Of Airship,4,10,,0,,26,,0,0xFFFFFFFF,63,2,64,,125,1,,{ bonus bAgi,1; bonus bSpeedRate,10; },{},{} -22047,Felock_Boots,Tarlock's Boots,4,10,,250,,13,,0,0xFFFFFFFF,63,2,64,,125,1,,{ bonus bAgi,1; .@r = getrefine(); bonus bAspdRate,5; if(.@r>=7) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=9) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=12) { bonus bAspd,1; } },{},{} -22059,Aegir_Shoes,Aegir Shoes,4,10,,300,,13,,1,0xFFFFFFFF,63,2,64,,40,1,,{ bonus bUnbreakableShoes,1; bonus bMaxHP,500; bonus bMaxSP,50; },{},{} +22046,Airship_Boots,Airship's Boots,4,10,,0,,26,,0,0xFFFFFFFF,63,2,64,,125,0,,{ bonus bAgi,1; bonus bSpeedRate,10; },{},{} +22047,Felock_Boots,Felrock's Boots,4,10,,250,,13,,0,0xFFFFFFFF,63,2,64,,125,1,,{ bonus bAgi,1; .@r = getrefine(); bonus bAspdRate,5; if(.@r>=7) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=9) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=12) { bonus bAspd,1; } },{},{} +22059,Aegir_Shoes,Aegir Shoes,4,10,,300,,13,,1,0xFFFFFFFF,63,2,64,,40,1,,{ bonus bUnbreakableShoes; bonus bMaxHP,500; bonus bMaxSP,50; },{},{} 22064,Thorny_Shoes,Thorny Shoes,4,0,,1000,,25,,1,0xFFFFFFFF,63,2,64,,,1,,{ bonus bShortWeaponDamageReturn,getrefine()/2; },{},{} 22067,Witch_Shoes,Shoe of Witch,4,10,,400,,10,,0,0xFFFFFFFE,63,2,64,,1,1,,{ skill "ALL_CATCRY",1; },{},{} 22069,Lian_Shoes,Lian Shoes,4,0,,250,,12,,1,0xFFFFFFFF,63,2,64,,90,1,,{ bonus bMdef,3; bonus2 bSubEle,Ele_Neutral,5; .@r = getrefine(); bonus bMaxHPrate,.@r; bonus bMaxSPrate,.@r; },{},{} @@ -10929,6 +11014,7 @@ 22534,Closedmind_Box,Closed Mind Box,18,10,,1000,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getgroupitem(IG_Sealed_Mind_Box); },{},{} 22535,WorkerScroll_A,Scroll Summoning Workers(Male),2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{},{},{} 22536,WorkerScroll_B,Scroll Summoning Workers(Female),2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{},{},{} +22537,PrizeOfHero,Prize Of Hero,2,0,,100,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getrandgroupitem(IG_PrizeOfHero,1); },{},{} 22538,Hanbok_bag,Hanbok bag,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,1,,,{},{},{} 22540,Runstone_Lux,Lux Anima Runestone,11,2,,100,,,,,0xFFFFFFFF,56,2,,,,,,{ itemskill "RK_LUXANIMA",1; },{},{} 22541,PC_Room_Coupon_Box_VI,PC Room Coupon Box VI,18,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -11030,19 +11116,19 @@ 22734,Revolution_Quiz_Box,Revolution Quiz Box,18,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 6635,2; getitem 6423,1; /*1x Enchanted Letter Introduction*/ },{},{} 22735,Sealed_Moonlight_Flower_Scroll,Sealed Moonlight Flower Scroll,18,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO: Confirm the rates*/ getitem callfunc("F_Rand",6228,6232,24150,19934,6635,17474),1; },{},{} 22736,July_Gift_Box,July Gift Box,2,10,,100,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 20212,1; },{},{} -22737,Bullet_Case_Blood_,Bloody Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13222,500; },{},{} -22738,Bullet_Case_Silver_,Silver Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13221,500; },{},{} -22739,Sphere_Case_Wind_,Lightning Sphere Pack,18,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13224,500; },{},{} -22740,Sphere_Case_Darkness_,Blind Sphere Pack,18,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13226,500; },{},{} -22741,Sphere_Case_Poison_,Poison Sphere Pack,18,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13225,500; },{},{} -22742,Sphere_Case_Water_,Freezing Sphere Pack,18,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13227,500; },{},{} -22743,Sphere_Case_Fire_,Flare Sphere Pack,18,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13223,500; },{},{} -22744,Bullet_Case_AP,Armor-Piercing Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13215,500; },{},{} -22745,Bullet_Case_Blaze,Incandescence Shot Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13216,500; },{},{} -22746,Bullet_Case_Fleeze,Glaciation Shot Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13217,500; },{},{} -22747,Bullet_Case_Electric,Dengeki Shot Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13218,500; },{},{} -22748,Bullet_Case_Stone,Hearthstone Shot Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13219,500; },{},{} -22749,Sanctified_Bullet_Case,Purification Shot Cartridge,18,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13220,500; },{},{} +22737,Bullet_Case_Blood_,Bloody Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13222,500; },{},{} +22738,Bullet_Case_Silver_,Silver Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13221,500; },{},{} +22739,Sphere_Case_Wind_,Lightning Sphere Pack,2,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13224,500; },{},{} +22740,Sphere_Case_Darkness_,Blind Sphere Pack,2,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13226,500; },{},{} +22741,Sphere_Case_Poison_,Poison Sphere Pack,2,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13225,500; },{},{} +22742,Sphere_Case_Water_,Freezing Sphere Pack,2,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13227,500; },{},{} +22743,Sphere_Case_Fire_,Flare Sphere Pack,2,10,,350,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13223,500; },{},{} +22744,Bullet_Case_AP,Armor-Piercing Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13215,500; },{},{} +22745,Bullet_Case_Blaze,Incandescence Shot Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13216,500; },{},{} +22746,Bullet_Case_Fleeze,Glaciation Shot Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13217,500; },{},{} +22747,Bullet_Case_Electric,Dengeki Shot Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13218,500; },{},{} +22748,Bullet_Case_Stone,Hearthstone Shot Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13219,500; },{},{} +22749,Sanctified_Bullet_Case,Purification Shot Cartridge,2,10,,250,,,,0,0xFFFFFFFF,63,2,,,,,,{ getitem 13220,500; },{},{} 22750,Trans_Scroll_Horn_Scaraba,Transformation Scroll(Horn Scaraba),2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ transform 2161,1200000,SC_MTF_ASPD2,2,10; },{},{} 22751,Trans_Scroll_Wanderer,Transformation Scroll(Wanderer),2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ transform 1208,1200000,SC_MTF_ASPD2,2,10; },{},{} 22752,Trans_Scroll_Gazeti,Transformation Scroll(Gazeti),2,10,,10,,,,0,0xFFFFFFFF,63,2,,,,,,{ transform 1778,1200000,SC_MTF_RANGEATK2,30; },{},{} @@ -11074,6 +11160,7 @@ 22812,Sealed_Dracula_Scroll,Sealed Dracula Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getitem callfunc("F_Rand",6228,6232,22813,19937,17314, 6635),1; },{},{} 22813,Bearer's_Shadow_Box,Bearer's Shadow Box,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1; },{},{} 22814,Cat_Hand_Ticket,Cat Hand Ticket,3,10,,0,,,,,,,,,,,,,{},{},{} +22822,Summer_Vacation_Costumes,Summer Vacation Costumes,2,,,100,,,,0,0xFFFFFFFF,63,2,,,1,,,{ sc_start SC_DRESSUP,600000,1; },{},{} 22823,Sealed_Sniper_Scroll,Sealed Sniper Scroll,2,10,,10,,,,,,,,,,,,,{ /*getitem callfunc("F_Rand",4491,6228,6232,24196, Hasty Shadow Armor, 19882, 17474, 6635),1;*/ },{},{} 22826,Enchant_Stone_Box4,Costume Enchantment Stone Box 4,2,10,,10,,,,,,,,,,,,,{},{},{} 22827,Shadow_Cube,Shadow Cube,2,10,,10,,,,,,,,,,,,,{/*No Info*/},{},{} @@ -11126,6 +11213,12 @@ 22984,Kahluna_Milk,Kahluna Milk,0,6,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_DORAM_BUF_01, 180000, 0; },{},{} 22985,Basil,Basil,0,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_DORAM_BUF_02, 180000, 0; },{},{} // +23123,Bullet_Case_Flare,Flare Bullet Cartridge,2,10,,250,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 13228,500; },{},{} +23124,Bullet_Case_Lighting,Lightning Bullet Cartridge,2,10,,250,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 13229,500; },{},{} +23125,Bullet_Case_Ice,Ice Bullet Cartridge,2,10,,250,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 13230,500; },{},{} +23126,Bullet_Case_Poison,Poison Bullet Cartridge,2,10,,250,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 13231,500; },{},{} +23127,Bullet_Case_Blind,Blind Bullet Cartridge,2,10,,250,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 13232,500; },{},{} +// 23177,Kafra_Card_,Kafra Card,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashStore"; },{},{} 23191,Varetyr_Spear_Scroll_1_5,Level 5 Varetyr Spear,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "SO_VARETYR_SPEAR",5; },{},{} 23192,Diamond_Dust_Scroll_1_5,Level 5 Diamond Dust,11,10,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "SO_DIAMONDDUST",5; },{},{} @@ -11135,24 +11228,24 @@ //=================================================================== // Shadow Equipments //=================================================================== -24000,T1_Shadow_Armor,Shadow Armor (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,,,{ bonus bStr,1; },{},{} -24001,T1_Shadow_Weapon,Shadow Gauntlets (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,1,,,{ bonus bDex,1; },{},{} -24002,T1_Shadow_Shield,Shadow Shield (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,,,{ bonus bLuk,1; },{},{} -24003,T1_Shadow_Shoes,Shadow Shoes (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,,,{ bonus bAgi,1; },{},{} -24004,T1_Shadow_R_Accessory,Shadow Ring (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,,,{ bonus bVit,1; },{},{} -24005,T1_Shadow_L_Accessory,Shadow Pendant (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ bonus bInt,1; },{},{} -24006,T2_Shadow_Armor,Shadow Armor (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,30,,,{ bonus bStr,2; },{},{} -24007,T2_Shadow_Weapon,Shadow Gauntlets (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,30,,,{ bonus bDex,2; },{},{} -24008,T2_Shadow_Shield,Shadow Shield (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,60,,,{ bonus bLuk,2; },{},{} -24009,T2_Shadow_Shoes,Shadow Shoes (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,90,,,{ bonus bAgi,2; },{},{} -24010,T2_Shadow_R_Accessory,Shadow Ring (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,120,,,{ bonus bVit,2; },{},{} -24011,T2_Shadow_L_Accessory,Shadow Pendant (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,150,,,{ bonus bInt,2; },{},{} -24012,S_Promotion_Weapon,Shadow Weapon,12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,1,,,{ bonus bDex,1; },{},{} -24013,S_Promotion_Armor,Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,,,{ bonus bLuk,1; },{},{} -24014,S_Promotion_Shoes,Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,,,{ bonus bAgi,1; },{},{} -24015,S_Promotion_Shield,Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,,,{ bonus bVit,1; },{},{} -24016,S_Promotion_Earring,Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,,,{ bonus bInt,1; },{},{} -24017,S_Promotion_Pendant,Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ bonus bStr,1; },{},{} +24000,T1_Shadow_Armor,Shadow Armor (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bStr,1; },{},{} +24001,T1_Shadow_Weapon,Shadow Gauntlets (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,1,1,,{ bonus bDex,1; },{},{} +24002,T1_Shadow_Shield,Shadow Shield (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ bonus bLuk,1; },{},{} +24003,T1_Shadow_Shoes,Shadow Shoes (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ bonus bAgi,1; },{},{} +24004,T1_Shadow_R_Accessory,Shadow Ring (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ bonus bVit,1; },{},{} +24005,T1_Shadow_L_Accessory,Shadow Pendant (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ bonus bInt,1; },{},{} +24006,T2_Shadow_Armor,Shadow Armor (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,30,1,,{ bonus bStr,2; },{},{} +24007,T2_Shadow_Weapon,Shadow Gauntlets (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,30,1,,{ bonus bDex,2; },{},{} +24008,T2_Shadow_Shield,Shadow Shield (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,60,1,,{ bonus bLuk,2; },{},{} +24009,T2_Shadow_Shoes,Shadow Shoes (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,90,1,,{ bonus bAgi,2; },{},{} +24010,T2_Shadow_R_Accessory,Shadow Ring (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,120,1,,{ bonus bVit,2; },{},{} +24011,T2_Shadow_L_Accessory,Shadow Pendant (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,150,1,,{ bonus bInt,2; },{},{} +24012,S_Promotion_Weapon,Shadow Weapon,12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,1,1,,{ bonus bDex,1; },{},{} +24013,S_Promotion_Armor,Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bLuk,1; },{},{} +24014,S_Promotion_Shoes,Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ bonus bAgi,1; },{},{} +24015,S_Promotion_Shield,Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ bonus bVit,1; },{},{} +24016,S_Promotion_Earring,Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ bonus bInt,1; },{},{} +24017,S_Promotion_Pendant,Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ bonus bStr,1; },{},{} 24018,S_Physical_Earring,Physical Earring (Shadow),12,0,,0,,0,,0,0xFFFFFFFF,63,2,1048576,,1,1,0,{ bonus bAspdRate,(getrefine()>=7)?2:1; },{},{} 24019,S_Physical_Weapon,Physical Weapon (Shadow),12,0,,0,,0,,0,0xFFFFFFFF,63,2,131072,,1,1,0,{ bonus bBaseAtk,10; if(getrefine()>=7) { bonus2 bAddClass,Class_All,1; } },{},{} 24020,S_Physical_Pendant,Physical Pendant (Shadow),12,0,,0,,0,,0,0xFFFFFFFF,63,2,2097152,,1,1,0,{ bonus bMaxHP,100; if(getrefine()>=7) { bonus bMaxHPrate,1; } },{},{} @@ -11375,9 +11468,9 @@ 24237,S_Boned_Pendant,Boned Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Medium,.@rate; bonus2 bMagicAddSize,Size_Medium,.@rate; },{},{} 24238,S_Gigantic_Earring,Gigantic Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ .@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Small,.@rate; bonus2 bMagicAddSize,Size_Small,.@rate; },{},{} 24239,S_Gigantic_Pendant,Gigantic Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Small,.@rate; bonus2 bMagicAddSize,Size_Small,.@rate; },{},{} -24240,S_Caster_Shoes,Caster Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} -24241,S_Caster_Shield,Caster Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} -24242,S_Caster_Armor,Caster Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} +24240,S_Caster_Shoes,Caster Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} +24241,S_Caster_Shield,Caster Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} +24242,S_Caster_Armor,Caster Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2); },{},{} 24243,S_Reload_Shoes,Reload Shadow Shoes,12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ .@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3); },{},{} 24244,S_Reload_Shield,Reload Shadow Shield,12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ .@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3); },{},{} 24245,S_Reload_Armor,Reload Shadow Armor,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ .@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3); },{},{} @@ -11385,13 +11478,13 @@ 24247,S_Merchant_Earring,Merchant Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ .@r = getrefine(); bonus2 bSkillUseSPrate,"MC_MAMMONITE",-20-(3*.@r); },{},{} 24248,S_Acolyte_Earring,Acolyte Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ .@r = getrefine(); bonus2 bSkillUseSPrate,"AL_HEAL",-20-(3*.@r); },{},{} 24249,S_Magician_Earring,Magician Shadow Earring,12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ .@r = getrefine(); bonus2 bSkillUseSPrate,"MG_COLDBOLT",-20-(3*.@r); bonus2 bSkillUseSPrate,"MG_FIREBOLT",-20-(3*.@r); bonus2 bSkillUseSPrate,"MG_LIGHTNINGBOLT",-20-(3*.@r); },{},{} -24250,S_Swordman_Pendant,Swordman Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bSkillAtk,"SM_MAGNUM",20+(5*.@r); },{},{} -24251,S_Merchant_Pendant,Merchant Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bSkillAtk,"MC_CARTREVOLUTION",20+(5*.@r); },{},{} -24252,S_Acolyte_Pendant,Acolyte Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bSkillAtk,"AL_HOLYLIGHT",20+(5*.@r); },{},{} -24253,S_Thief_Pendant,Thief Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bSkillAtk,"TF_POISON",20+(5*.@r); },{},{} -24254,S_Magician_Pendant,Magician Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bMagicAtkEle,Ele_Fire,20+(5*.@r); },{},{} -24255,S_Archer_Pendant,Archer Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,,,{ .@r = getrefine(); bonus2 bSkillAtk,"AC_SHOWER",20+(5*.@r); },{},{} -24330,S_Caster_Armor_II,Caster Shadow Armor II,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,,,{ bonus bInt,3; bonus bSPrecovRate,20; bonus bVariableCastrate,-getrefine()/2; },{},{} +24250,S_Swordman_Pendant,Swordman Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bSkillAtk,"SM_MAGNUM",20+(5*.@r); },{},{} +24251,S_Merchant_Pendant,Merchant Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bSkillAtk,"MC_CARTREVOLUTION",20+(5*.@r); },{},{} +24252,S_Acolyte_Pendant,Acolyte Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bSkillAtk,"AL_HOLYLIGHT",20+(5*.@r); },{},{} +24253,S_Thief_Pendant,Thief Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bSkillAtk,"TF_POISON",20+(5*.@r); },{},{} +24254,S_Magician_Pendant,Magician Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bMagicAtkEle,Ele_Fire,20+(5*.@r); },{},{} +24255,S_Archer_Pendant,Archer Shadow Pendant,12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ .@r = getrefine(); bonus2 bSkillAtk,"AC_SHOWER",20+(5*.@r); },{},{} +24330,S_Caster_Armor_II,Caster Shadow Armor II,12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bInt,3; bonus bSPrecovRate,20; bonus bVariableCastrate,-getrefine()/2; },{},{} //=================================================================== // New etc. //=================================================================== @@ -11458,7 +11551,7 @@ 27166,Faceworm_Egg_Card,Faceworm Egg Card,6,20,,10,,,,,,,,64,,,,,{ .@r = getrefine(); .@sub = 2+(.@r >= 9 ? 3 : .@r >= 7 ? 1 : 0); bonus bNearAtkDef,.@sub; bonus bMagicAtkDef,.@sub; },{},{} 27167,Faceworm_Larva_Card,Faceworm Larva Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAddSize,Size_All,getrefine()*3; },{},{} 27168,Irene_High_Elder_Card,Irene High Elder Card,6,20,,10,,,,,,,,4,,,,,{ bonus bHit,10 + 5 * (getrefine()/3); },{},{} -27169,Payon_Soldier_Card,Payon Soldier Card,6,20,,10,,,,,,,,2,,,,,{ .@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } } bonus bAtk,.@atk; bonus bMatk,.@atk; },{},{} +27169,Payon_Soldier_Card,Payon Soldier Card,6,20,,10,,,,,,,,2,,,,,{ .@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } bonus bAtk,.@atk; bonus bMatk,.@atk; },{},{} 27181,Airship_Raid_Card,Airship Raid Card,6,20,,10,,,,,,,,2,,,,,{ .@r = getrefine(); bonus bLongAtkRate,1 + .@r/2; bonus bCritical,.@r/2; },{},{} 27182,Captain_Felock_Card,Captain Felock Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtk,30; .@r = getrefine(); bonus2 bSkillAtk,"RL_AM_BLAST",.@r >= 10 ? 60 : 30; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",.@r >= 10 ? 60 : 30; },{},{} 27183,Gigantes_Card,Gigantes Card,6,20,,10,,,,,,,,128,,,,,{ bonus bAtk,20; if(readparam(bStr) >= 120) { bonus bAtk,20; bonus bAspdRate,-3; } },{},{} @@ -11470,9 +11563,9 @@ 27253,Geffen_Shoplifter_Card,Geffen Shoplifter Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Fire,5; bonus2 bMagicAtkEle,Ele_Holy,5; },{},{} 27254,Faymont_Card,Faymont Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"CH_SOULCOLLECT",1,10; },{},{} 27255,Ordre_Card,Ordre Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Wind,5; bonus2 bMagicAtkEle,Ele_Water,5; },{},{} -27256,Blut_Hase_Card,Blut Hase Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAtkRate,3; bonus bLongAtkRate,5; },{},{} +27256,Blut_Hase_Card,Blut Hase Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bAddClass,Class_All,3; bonus bLongAtkRate,5; },{},{} 27257,Kuro_Akuma_Card,Kuro Akuma Card,6,20,,10,,,,,,,,64,,,,,{ bonus bCastrate,3; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NJ_HUUJIN",5; bonus2 bSkillAtk,"NJ_HYOUSENSOU",5; bonus2 bSkillAtk,"NJ_KOUENKA",5; },{},{} -27258,Ifodes_Card,Ifodes Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAtkRate,3; bonus bAspdRate,5; },{},{} +27258,Ifodes_Card,Ifodes Card,6,20,,10,,,,,,,,64,,,,,{ bonus2 bAddClass,Class_All,3; bonus bAspdRate,5; },{},{} 27259,Licheniyes_Card,Licheniyes Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Holy,5; bonus bHealPower,5; },{},{} 27260,Odoric_Card,Odoric Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAspdRate,3; bonus bLongAtkRate,5; },{},{} 27261,Ju_Card,Ju Card,6,20,,10,,,,,,,,2,,,,,{ .@rate = 10 + (getiteminfo(getequipid(EQI_HAND_R),11) == W_BOOK ? 20 : 0) + (getrefine() >= 14 ? 20 : 0); bonus2 bSkillAtk,"MG_FIREBOLT",.@rate; bonus2 bSkillAtk,"MG_COLDBOLT",.@rate; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@rate; },{},{} @@ -11485,24 +11578,24 @@ //=================================================================== 28000,Thanos_Katar,Thanatos Katar,5,10,,1800,220:80,,1,1,0x00001000,56,2,34,4,120,1,16,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 28001,Katar_Of_Evil_Slayer,Katar Of Evil Slayer,5,10,,1200,120,,1,1,0x00001000,63,2,34,3,100,1,16,{ bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); if(.@r>=9){ bonus2 bAddClass,Class_All,5; } if(.@r>=12){ bonus2 bAddClass,Class_All,7; } },{},{} -28002,Half_BF_Katar2,Half BF Katar2,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus bCritAtkRate,10; bonus bAspdRate,3; bonus bUnbreakableWeapon,1; },{},{} +28002,Half_BF_Katar2,Half BF Katar2,5,20,,0,130,,1,0,0x00001000,63,2,34,3,80,1,16,{ bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus bCritAtkRate,10; bonus bAspdRate,3; bonus bUnbreakableWeapon; },{},{} 28005,Ru_Blue_Katar,Blue Katar,5,10,,1200,190,,1,1,0x00001000,56,2,34,3,100,1,16,{ bonus bAgi,5; bonus bStr,5; },{},{} 28006,Ru_Gold_Katar,Ru Gold Katar,5,0,,1200,190,,1,2,0x00001000,56,2,34,3,120,1,16,{ bonus bAgi,8; bonus bStr,8; },{},{} 28007,Crimson_Katar,Crimson Katar,5,20,,1300,130,,1,2,0x00001000,63,2,34,3,70,1,16,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} 28008,Katar_of_Vicious_Mind,Katar of Vicious Mind,5,20,,1800,180,,1,1,0x00001000,63,2,34,4,160,1,16,{ bonus bAtk,pow(min(getrefine(),15),2); },{},{} -28010,Juliette_D._Rachel,Juliette D. Rachel,5,20,,2500,300,,1,2,0x00001000,56,2,34,4,170,1,16,{ .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r/2); bonus bAspdRate,.@r; bonus bUnbreakableWeapon,1; },{},{} +28010,Juliette_D._Rachel,Juliette D. Rachel,5,20,,2500,300,,1,2,0x00001000,56,2,34,4,170,1,16,{ .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r/2); bonus bAspdRate,.@r; bonus bUnbreakableWeapon; },{},{} 28011,Unity_Katar,Unity Katar,5,20,,650,123,,1,1,0x00001000,63,2,34,3,1,1,16,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} //=================================================================== // New Axes //=================================================================== 28100,Thanos_Axe,Thanatos Axe,5,10,,4000,300:80,,1,1,0x000444A2,56,2,34,4,120,1,7,{ bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000; },{},{ heal -1000,0; } 28101,Tornado_Axe,Axe Tornado,5,10,,4000,320,,,1,0x00000400,56,2,34,4,130,1,7,{ bonus bAtkEle,Ele_Wind; bonus2 bSkillCooldown,"NC_AXETORNADO",-1000; },{},{} -28102,Half_BF_Two_Handed_Axe1,Half BF Two Handed Axe1,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} +28102,Half_BF_Two_Handed_Axe1,Half BF Two Handed Axe1,5,20,,0,200,,1,0,0x000444A2,63,2,34,3,80,1,7,{ bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} 28103,Ru_Blue_Axe_M,Blue Twohand Axe,5,10,,3000,330,,1,1,0x00000400,56,2,34,3,1,1,7,{ bonus bStr,5; bonus bVit,5; },{},{} 28104,Ru_Gold_Axe_M,Ru Gold Axe M,5,0,,3000,330,,1,2,0x00000400,56,2,34,3,120,1,7,{ bonus bStr,8; bonus bVit,8; },{},{} 28105,Infinity_Axe,Infinity Axe,5,10,,500,265,,1,1,0x000444A2,56,2,34,4,100,1,7,{},{},{} -28106,Crimson_Two-Handed_Axe,Crimson Two-Handed Axe,5,20,,2000,200,,1,2,0x000444A2,63,2,34,3,70,1,7,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1; },{},{} -28107,Two_Handed_Axe_of_Vicious_Mind,Two Handed Axe of Vicious Mind,5,20,,2500,250,,1,1,0x000444A2,63,2,34,4,160,1,7,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1; },{},{} +28106,Crimson_Two-Handed_Axe,Crimson Two-Handed Axe,5,20,,2000,200,,1,2,0x000444A2,63,2,34,3,70,1,7,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon; },{},{} +28107,Two_Handed_Axe_of_Vicious_Mind,Two Handed Axe of Vicious Mind,5,20,,2500,250,,1,1,0x000444A2,63,2,34,4,160,1,7,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon; },{},{} 28110,Unity_Two-Handed_Axe,Unity Two-Handed Axe,5,20,,1000,190,,1,1,0x000444A2,63,2,34,3,1,1,7,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} //=================================================================== // New Guns @@ -11510,8 +11603,8 @@ 28200,END_OF_HORIZO,End Of The Horizon,5,2700000,,2400,410,,9,1,0x40000000,63,2,34,4,110,1,21,{},{},{} 28201,Southern_Cross_R,Southern Cross,5,2800000,,2000,480,,9,0,0x40000000,63,2,34,4,141,1,21,{ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,50; },{},{} 28202,Southern_Cross_R_,Southern Cross,5,2800000,,2000,480,,9,1,0x40000000,63,2,34,4,141,1,21,{ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,50; },{},{} -28203,Half_BF_Rifle1,Half BF Rifle1,5,0,,0,50,,9,0,0x41000000,63,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; },{},{} -28204,Half_BF_Shotgun1,Half BF Shotgun1,5,0,,0,100,,9,0,0x41000000,63,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1; },{},{} +28203,Half_BF_Rifle1,Half BF Rifle1,5,0,,0,50,,9,0,0x41000000,63,2,34,3,80,1,18,{ bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; },{},{} +28204,Half_BF_Shotgun1,Half BF Shotgun1,5,0,,0,100,,9,0,0x41000000,63,2,34,3,80,1,20,{ bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon; },{},{} //=================================================================== // New Accessories //=================================================================== @@ -11592,6 +11685,7 @@ 28472,Para_Team_Agi_Necklace160,Awakened Eden Group Necklace of Agility V,4,0,,0,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{ bonus bDex,4; skill "AL_TELEPORT",1; },{},{} 28483,Royal_Guardian_Ring,Royal Guardian Ring,4,0,,10,,1,,1,0xFFFFFFFF,63,2,136,,99,,,{ .@b = min(BaseLevel/25,7); bonus bMaxHPrate,.@b; bonus bMaxSPrate,.@b; },{},{} 28499,Proof_of_Glory,Proof of Glory,4,0,,100,,0,,0,0xFFFFFFFF,63,2,136,,100,,,{ bonus bAllStats,1; bonus2 bAddRace,RC_All,2; bonus2 bMagicAddRace,RC_All,2; if(BaseLevel>=150) { bonus bAllStats,1; bonus2 bAddRace,RC_All,2; bonus2 bMagicAddRace,RC_All,2; } },{},{} +28551,Imperial_Glove,Imperial Glove,4,20,,400,,0,,1,0xFFFFFFFF,63,2,136,,100,0,0,{ bonus2 bAddClass,Class_All,5; bonus bVariableCastrate,-10; bonus bNoCastCancel; },{},{} //=================================================================== // More books //=================================================================== @@ -11599,7 +11693,7 @@ 28601,Ru_Gold_Book,Ru Gold Book,5,0,,500,160,,1,2,0x00000008,63,2,2,3,120,1,15,{ bonus bVit,8; bonus bInt,8; },{},{} 28602,Demon_Hunting_Bible,Demon Hunting Bible,5,0,,500,30:170,,1,2,0x00000008,63,2,2,3,110,1,15,{ bonus bInt,2; bonus bDex,2; .@b = readparam(bInt); bonus2 bSkillAtk,"PR_MAGNUS",30+min(.@b,120); },{},{} 28604,Crimson_Bible,Crimson Bible,5,20,,450,45,,1,2,0x00410100,63,2,2,3,70,1,15,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); },{},{} -28605,Book_of_Vicious_Mind,Book of Vicious Mind,5,20,,950,95,,1,1,0x00010100,63,2,2,4,160,1,15,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1; },{},{} +28605,Book_of_Vicious_Mind,Book of Vicious Mind,5,20,,950,95,,1,1,0x00010100,63,2,2,4,160,1,15,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon; },{},{} 28606,Unity_Bible,Unity Bible,5,20,,220,42,,1,1,0x00410100,63,2,2,3,1,1,15,{ bonus bBaseAtk,pow(getrefine(),2)*125/100; },{},{} //=================================================================== // More daggers @@ -11614,8 +11708,8 @@ // More shields //=================================================================== 28900,Guardsmen's_Shield,Guardsmen's Shield,4,20,,3000,,30,,1,0xFFFFFFFF,63,2,32,,100,1,1,{ .@r = getrefine(); skill "LG_SHIELDSPELL",1; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,(10+(.@r*10)); bonus bDef,(.@r*10); bonus bMdef,.@r; },{},{} -28901,Cursed_Mad_Bunny,Cursed Mad Bunny,4,20,,100,,0,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus bAspd,3; bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel,0; } },{},{} -28902,Mad_Bunny_,Mad Bunny,4,20,,100,,0,,1,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel,0; } },{},{} +28901,Cursed_Mad_Bunny,Cursed Mad Bunny,4,20,,100,,0,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus bAspd,3; bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel; } },{},{} +28902,Mad_Bunny_,Mad Bunny,4,20,,100,,0,,1,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel; } },{},{} 28903,Scutum,Scutum,4,0,,500,,1,,1,0xFFFFFFFF,63,2,32,,1,1,1,{ .@r = getrefine(); bonus bFlee,5+(.@r*3); bonus bFlee2,1+(.@r*2); if (.@r > 10) { bonus bMaxHPrate,10; bonus bMaxSPrate,10; } },{},{} 28904,Unity_Guard,Unity Guard,4,20,,300,,60,,1,0xFFFFFFFF,63,2,32,,100,1,1,{ if(BaseLevel<100) { bonus bDef,12*getrefine(); } },{},{} 28905,Unity_Buckler,Unity Buckler,4,20,,300,,60,,1,0xFFFFFFFF,63,2,32,,100,1,1,{ if(BaseLevel<100) { bonus bMaxSPrate,2*getrefine(); } },{},{} @@ -11801,7 +11895,7 @@ 31085,C_Long_Pony_Crimson,Costume Long Pony Crimson,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1525,{},{},{} 31086,C_Long_Pony_Purple,Costume Long Pony Purple,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1526,{},{},{} 31087,C_Dwarf_Beard,Costume Dwarf Beard,4,0,,0,,,,0,0xFFFFFFFF,63,2,4096,,1,0,1349,{},{},{} -31088,C_Mad_Hatter,Costume Mad Hatter,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,1421,{},{},{} +31088,C_Mad_Hatter,Costume Mad Hatter,4,0,,0,,,,0,0xFFFFFFFF,63,2,5120,,1,0,1421,{},{},{} 31089,C_Exploding_Crimson_Flame,Costume Exploding Crimson Flame,4,0,,0,,,,0,0xFFFFFFFF,63,2,2048,,1,0,0,{},{},{} 31090,C_Angelring_Hat,Costume Angelring Hat,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,348,{},{},{} 31091,C_Show_Me_The_Zeny,Costume Show Me The Zeny,4,0,,0,,,,0,0xFFFFFFFF,63,2,1024,,1,0,0,{},{},{} @@ -11859,6 +11953,8 @@ 31151,C_Chasher_Ear,Costume Cheshire's Cat Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1565,{},{},{} 31152,C_Piamette_BowTie_Red,Costume Piamette's Red Bow Tie,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1566,{},{},{} 31153,C_Aniv_Star_Hat2,Costume Cactus Flower Corsage,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1567,{},{},{} +31154,C_Cap,C Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,14,{},{},{} +31158,C_Squirrel_Ear_Hat,Costume Squirrel Ear Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1486,{},{},{} 31160,C_Rune_Helm,Costume Rune Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1361,{},{},{} 31161,C_Tiger_Mask,Costume Tiger Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,181,{},{},{} 31162,C_Shaving_Foam,Costume Shaving Foam,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1129,{},{},{} @@ -11872,3 +11968,237 @@ 31170,C_Wind_Wings,Costume Wings of Wind,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,493,{},{},{} 31171,C_Nekomimi,Costume Nekomimi,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,182,{},{},{} 31172,C_Roast_Memory,Costume Roast Memory,4,0,,0,,,,0,0xFFFFFFFF,63,2,7168,,1,0,1576,{},{},{} +31173,C_Oyster_Parakeet,Costume Oyster Parakeet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,419,{},{},{} +31174,C_Suspicious_Bread_Bag,C Suspicious Bread Bag,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,429,{},{},{} +31175,C_Strawberry_Hat,Costume Strawberry Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,755,{},{},{} +31176,C_Looking,C Looking,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1577,{},{},{} +31177,C_Tail_Hat,C Tail Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1578,{},{},{} +31178,C_Fire_Muffler,C Fire Muffler,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1579,{},{},{} +31179,C_Wolf_Masquerade,C Wolf Masquerade,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1580,{},{},{} +31180,C_King_Sura_Headband,C King Sura Headband,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1581,{},{},{} +31181,C_Necklace_Rosary,Costume Necklace Rosary,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1471,{},{},{} +31182,C_Side_Cap,Costume Side Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,529,{},{},{} +31183,C_Fallen_Angel_Blessing,Costume Blessing of Fallen Angel,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1250,{},{},{} +31184,C_Hawkeye,Costume Hawkeye,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,609,{},{},{} +31185,C_Engineer_Cap,Costume Engineer Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,608,{},{},{} +31186,C_Black_Cat,Costume Black Cat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1582,{},{},{} +31187,C_War_Princess_Ribbon,Costume War Princess Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1583,{},{},{} +31188,C_Mono_Gothic_Bonnet,Costume Mono Gothic Bonnet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1584,{},{},{} +31189,C_Cat_Ears_Cape_Red,Costume Red Cat Ears Cape,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1591,{},{},{} +31190,C_Angel_Mini_Silk_Hat_B,Costume Black Angel Mini Silk Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1586,{},{},{} +31191,C_Whikebain_Ears_Gold,Vibrant Cat Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1588,{},{},{} +31192,C_Bluecat_Ear,Blue Cat Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1589,{},{},{} +31193,C_Tare_Ahat,Costume Drooping Ahat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1590,{},{},{} +31194,C_Spinning_Propeller,Costume Spinning Propeller,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,270,{},{},{} +31195,C_Choco_Minihat,Costume Mini Chocolate Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1592,{},{},{} +31196,C_JP_EV12,C Drooping Chuni Penguin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1596,{},{},{} +31197,C_Egg_Crispinette,Costume Egg Crispinette,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1598,{},{},{} +31198,C_Octopus_Hat,C Octopus Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,538,{},{},{} +31199,C_Weird_Beard,C Weird Beard,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,21,{},{},{} +31200,C_Wrapping_Ribbon,C Wrapping Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1599,{},{},{} +31201,C_Royal_Rabbit_Crown,C Royal Rabbit Crown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1600,{},{},{} +31202,C_Dog_Officer,C Dog Officer,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1601,{},{},{} +31203,C_Charcoal_Stove,C Charcoal Stove,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1602,{},{},{} +31204,C_Drooping_White_Cat,C Drooping White Cat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,378,{},{},{} +31205,C_Large_Orc_Hero_Helm,C Large Orc Hero Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,381,{},{},{} +31206,C_Rune_Hairband,C Rune Hairband,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,564,{},{},{} +31207,C_Dokkebi_Mask,C Dokkebi Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,689,{},{},{} +31208,C_Straight_Long_YL,C Straight_Long Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1603,{},{},{} +31209,C_Straight_Long_WH,C Straight Long White,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1604,{},{},{} +31210,C_Side_Pigtail_BU,C Side Pigtail Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1605,{},{},{} +31211,C_Side_Pigtail_RD,C Side Pigtail Red,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1606,{},{},{} +31212,C_Side_Pigtail_YL,C Side Pigtail Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1607,{},{},{} +31213,C_Side_Pigtail_GN,C Side Pigtail Green,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1608,{},{},{} +31214,C_Side_Pigtail_BL,C Side Pigtail Black,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1609,{},{},{} +31215,C_Side_Pigtail_WH,C Side Pigtail White,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1610,{},{},{} +31216,C_Side_Pigtail_OM,C Side Pigtail Brown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1611,{},{},{} +31217,C_Side_Pigtail_PP,C Side Pigtail Purple,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1612,{},{},{} +31218,C_Low_Pony_BU,C Low Pony Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1613,{},{},{} +31219,C_Low_Pony_RD,C Low Pony Red,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1614,{},{},{} +31220,C_Low_Pony_YL,C Low Pony Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1615,{},{},{} +31221,C_Low_Pony_GN,C Low Pony Green,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1616,{},{},{} +31222,C_Low_Pony_BL,C Low Pony Black,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1617,{},{},{} +31223,C_Low_Pony_WH,C Low Pony White,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1618,{},{},{} +31224,C_Low_Pony_OM,C Low Pony Brown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1619,{},{},{} +31225,C_Low_Pony_PP,C Low Pony Purple,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1620,{},{},{} +31226,C_Long_Twin_BU,C Long Twin Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1621,{},{},{} +31227,C_Long_Twin_RD,C Long Twin Red,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1622,{},{},{} +31228,C_Long_Twin_YL,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1623,{},{},{} +31229,C_Long_Twin_GN,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1624,{},{},{} +31230,C_Long_Twin_BL,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1625,{},{},{} +31231,C_Long_Twin_WH,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1626,{},{},{} +31232,C_Long_Twin_OM,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1627,{},{},{} +31233,C_Long_Twin_PP,C Long Twin Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1628,{},{},{} +31234,C_Persica,C Persica,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,659,{},{},{} +31235,C_Large_Ribbon_Muffler_Mid,C Large Ribbon Muffler Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1312,{},{},{} +31236,C_Vicious_Mind_Aura_Mid,C Vicious Mind Aura Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1267,{},{},{} +31237,C_Pale_Yellow_Ribbon_Lower,C Pale Yellow Ribbon Lower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1474,{},{},{} +31238,C_True_Love_Upper,C True Love Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,489,{},{},{} +31239,C_Love_Rabbit_Hood_Upper,C Love Rabbit Hood Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,549,{},{},{} +31240,C_Whisper_Mask_,C Whisper Mask Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,321,{},{},{} +31241,C_Burning_Sun_Lower,C Burning Sun Lower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,654,{},{},{} +31242,C_Anubis_Helm_,C Anubis Hat Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,485,{},{},{} +31243,C_Tongue_Mask_Mid,C Tongue Mask Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,253,{},{},{} +31244,C_Skymet_,C Skymet Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,868,{},{},{} +31245,C_Cherry,C Cherry,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,602,{},{},{} +31246,C_Humming_Bird,C Humming Bird,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,702,{},{},{} +31247,C_Hippo_Hat,C Hippo Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,859,{},{},{} +31248,C_Isabella_Red_Ears,C Isabella Red Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1030,{},{},{} +31249,C_Rabbit_Hopping,C Hopping Rabbit,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1635,{},{},{} +31250,C_Wonderful_Beast_Ear,C Wonderful Beast Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1636,{},{},{} +31251,C_Cat_Mouth,C Cats Mouth,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1637,{},{},{} +31252,C_Cat_Ear_Hat_White,C White Cat Ears Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1638,{},{},{} +31253,C_Rinzu_Helmet,C Rinzu Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,548,{},{},{} +31254,C_Red_Hare_Hat,C Red Hare Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,1631,{},{},{} +31255,C_Sweet_Helmet,C Sweet Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,1374,{},{},{} +31256,C_Jaguar_Mask,C Jaguar Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,530,{},{},{} +31260,C_Observer_J,C Observer,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1639,{},{},{} +31261,C_Soda_in_Mouth,C Soda in Mouth,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1643,{},{},{} +31262,C_Disposable_3D_Glasses,C Disposable 3D Glasses,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,661,{},{},{} +31263,C_Disposable_Popcorn_Hat,C Disposable Popcorn Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,415,{},{},{} +31264,C_Wings_of_Protector_Lower,C Wings of Protector Lower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,990,{},{},{} +31265,C_Straight_Pony_Blue_Mid,C Straight Pony Blue Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1394,{},{},{} +31266,C_Straight_Pony_Red_Mid,C Straight Pony Red Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1392,{},{},{} +31267,C_Straight_Pony_Yellow_Mid,C Straight Pony Yellow Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1389,{},{},{} +31268,C_Straight_Pony_Green_Mid,C Straight_Pony Green Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1390,{},{},{} +31269,C_Straight_Pony_Black_Mid,C Straight Pony Black Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1371,{},{},{} +31270,C_Straight_Pony_White_Mid,C Straight Pony White Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1395,{},{},{} +31271,C_Straight_Pony_Crimson_Mid,C Straight Pony Crimson Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1393,{},{},{} +31272,C_Straight_Pony_Purple_Mid,C Straight Pony Purple Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1391,{},{},{} +31273,C_Cowlick_Blue_Mid,C Cowlick Blue Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1387,{},{},{} +31274,C_Cowlick_Red_Mid,C Cowlick Red Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1385,{},{},{} +31275,C_Cowlick_Yellow_Mid,C Cowlick Yellow Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1382,{},{},{} +31276,C_Cowlick_Green_Mid,C Cowlick Green Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1383,{},{},{} +31277,C_Cowlick_Black_Mid,C Cowlick Black Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1372,{},{},{} +31278,C_Cowlick_White_Mid,C Cowlick White Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1388,{},{},{} +31279,C_Cowlick_Crimson_Mid,C Cowlick Crimson Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1386,{},{},{} +31280,C_Cowlick_Purple_Mid,C Cowlick Purple Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1384,{},{},{} +31281,C_Loose_Wave_Twin_Blue_Mid,C Loose Wave Twin Blue Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1401,{},{},{} +31282,C_Loose_Wave_Twin_Red_Mid,C Loose Wave Twin Red Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1399,{},{},{} +31283,C_Loose_Wave_Twin_Yellow_Mid,C Loose Wave Twin Yellow Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1396,{},{},{} +31284,C_Loose_Wave_Twin_Green_Mid,C Loose Wave Twin Green Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1397,{},{},{} +31285,C_Loose_Wave_Twin_Black_Mid,C Loose Wave Twin Black Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1373,{},{},{} +31286,C_Loose_Wave_Twin_White_Mid,C Loose Wave Twin White Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1402,{},{},{} +31287,C_Loose_Wave_Twin_Crimson_Mid,C Loose Wave Twin Crimson Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1400,{},{},{} +31288,C_Loose_Wave_Twin_Purple_Mid,C Loose Wave Twin Purple Mid,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1398,{},{},{} +31289,C_Black_Wing_Ears_Lower,C Black Wing Ears Lower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1336,{},{},{} +31290,C_Angels_Feather_Cap,C Angels Feather Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,929,{},{},{} +31291,C_Devils_Feather_Cap,C Devils Feather Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,930,{},{},{} +31293,C_Kings_Crown_Purple,C Crown of Ancient King Purple,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1651,{},{},{} +31294,C_Jirant_Circlet_Red,C Jirant Circlet Red,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1652,{},{},{} +31295,C_Red_Wing_Hat,C Red Wing Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,613,{},{},{} +31296,C_Strawberry_in_Mouth,C Strawberry in Mouth,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,861,{},{},{} +31297,C_Fruit_of_Love,C Fruit of Love,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,140,{},{},{} +31298,C_Sepia_Parade_Hat,C Sepia Parade Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,682,{},{},{} +31299,C_White_Rabbit,C White Rabbit,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1656,{},{},{} +31300,C_Warm_Cat_Muffler,C Warm Cat Muffler,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1657,{},{},{} +31301,C_Blinking_Eyes,C Blinking Eyes,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1658,{},{},{} +31302,C_Black_Magenta_Ribbon,C Black Magenta Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1659,{},{},{} +31303,C_Black_Ramen_Hat_,C Black Ramen Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1338,{},{},{} +31304,C_Summer_Fan,C Summer Fan,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1051,{},{},{} +31306,C_Toucan_Hat,C Toucan Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,528,{},{},{} +31307,C_Violet_Macaw,C Violet Macaw,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,656,{},{},{} +31308,C_Protect_Feathers,C Protect Feathers,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1232,{},{},{} +31309,C_Pure_White_Marching_Hat,C Pure White Marching Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1470,{},{},{} +31310,C_666_Black_Elven_Ears,C 666 Black_ Elven Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,498,{},{},{} +31311,C_Dolor_Thanatos_Mask,C Dolor Thanatos Mask,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,666,{},{},{} +31312,C_Hades_Helm,C Hades Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,523,{},{},{} +31313,C_FallenAngelWingEar,C Fallen Angel Wing Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1662,{},{},{} +31314,C_Ghost_Holiday,C Ghost Holiday,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1663,{},{},{} +31315,C_Stall_Of_Angel,C Stall of Angel,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1664,{},{},{} +31316,C_C_FlutterButterfly_BL,C Black Fluttering Butterfly,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1665,{},{},{} +31317,C_15th_Anniversary_Wing,C 15th Anniversary Wing,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1660,{},{},{} +31318,C_Gerhard_Von_Devi,Costume Gerhard Von Devi,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1092,{},{},{} +31319,C_Summer_Fan_,C Summer Fan,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1051,{},{},{} +31320,C_Pinwheel_Hat,C Pinwheel Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,456,{},{},{} +31321,C_Shining_Sunflower,C Shining Sunflower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,681,{},{},{} +31322,C_Candy_Hat,C Candy Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,853,{},{},{} +31323,C_Yellow_Hunting_Cap,C Yellow Hunting Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,484,{},{},{} +31325,C_Queen_Scarabas_Helmet,C Queen Scarabas Helmet,4,0,,0,,0,,0,0xFFFFFFFF,63,2,5120,,1,0,1231,{},{},{} +31326,C_Rolf_Von_Ziege_666_II,C Rolf Von Ziege 666 II,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,946,{},{},{} +31327,C_Wood_Goblins_Nose,C Wood Goblins Nose,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,737,{},{},{} +31328,C_Faceworm_Eggshell,C Faceworm Eggshell,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1356,{},{},{} +31329,C_Alice_Wig,Costume Alice Wig,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1673,{},{},{} +31330,C_Fallen_Angel_Valletta,Costume Fallen Angel Valletta,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1674,{},{},{} +31331,C_Chung_E_Shinyon_Cap,C Chung e Shinyon Cap,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1675,{},{},{} +31332,C_Khalitzburg_KN_Helm_BL,C Black Khalitzburg Knight Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1676,{},{},{} +31368,C_Harvest_Festa_Hat,C Thanksgiving Memorial Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1677,{},{},{} +31369,C_Straight_Long_WH_,Costume Straight Long White,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1604,{},{},{} +31370,C_Straight_Long_YL_,Costume Straight Long Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1603,{},{},{} +31373,C_Crown_of_Ancient_king,C Crown of Ancient king,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1412,{},{},{} +31374,C_Explosion_gum,C Explosion gum,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1414,{},{},{} +31375,C_Mystic_Eye,C Mystic Eye,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1490,{},{},{} +31376,C_Ancient_Dragon_Coronet_Purple,C Ancient Dragon Coronet Purple,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1680,{},{},{} +31377,C_Glastheim_Obeserver,C Glastheim Obeserver,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1041,{},{},{} +31378,C_Catharina_Von_Brad_60th,C Catharina Von Brad 60th,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1527,{},{},{} +31379,C_Wind-Up_Key,C Wind-Up Key,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1335,{},{},{} +31380,C_Crow,C Crow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1035,{},{},{} +31381,C_Diabolic_Lapel,Costume Diabolic Lapel,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1681,{},{},{} +31382,C_Cat_Ears_Punkish,Costume Cat Ears Punkish,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1682,{},{},{} +31383,C_Volume_Low_Twin,Costume Volume Low Twin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1683,{},{},{} +31384,C_False_Ears,Costume False Ears,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1684,{},{},{} +31385,C_Gothic_Pumpkin_Head,Costume Gothic Pumpkin Head,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1685,{},{},{} +31387,C_Jjakk,C Jjakk,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1687,{},{},{} +31389,C_White_Bird_Rose,C White Bird Rose,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1688,{},{},{} +31390,C_Let_It_Snow,C Let It Snow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1690,{},{},{} +31391,C_Floating_Stone_of_Sage,C Floating Stone of Sage,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1230,{},{},{} +31392,C_Radio_Antenna,C Radio Antenna,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,347,{},{},{} +31393,C_Vajra,C Vajra,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,983,{},{},{} +31394,C_Magician_White_Hat,C Magician White Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,283,{},{},{} +31395,C_Book_Of_Magic,C Book of Magic,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1691,{},{},{} +31396,C_Sorcerer_Hood,C Sorcerer Hood,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1692,{},{},{} +31397,C_Sitting_Pope,C Sitting Pope,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1553,{},{},{} +31398,C_Blinking_Thin_Eyes,C Blinking Thin Eyes,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1693,{},{},{} +31399,C_Darkness_Veil,C Darkness Veil,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1694,{},{},{} +31400,C_Ribbon,C Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,17,{},{},{} +31401,C_Nuns_Veil,C Nuns Veil,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,176,{},{},{} +31402,C_Idun_Green_Apple,C Iduns Green Apple,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1698,{},{},{} +31403,C_Wall,C Wall,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1699,{},{},{} +31404,C_Poring_Traffic_Light,C Poring Traffic Light,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1700,{},{},{} +31405,C_Eleanor_Wig_YL,C Eleanor Wig Yellow,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1701,{},{},{} +31406,C_Nydhog_Wig_WH,C Nydhoggur Wig White,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1702,{},{},{} +31407,C_Alice_Wig_PK,C Alice Wig Peach,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1703,{},{},{} +31408,C_Ragnarok_Rush_Goat,C Ragnarok Rush Goat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,41,{},{},{} +31409,C_Barrel_Helm,C Barrel Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,7168,,1,0,1498,{},{},{} +31410,C_GodsHelm,Costume God's Helm,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1678,{},{},{} +31411,C_Leo_Diadem,C Leo Diadem,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,566,{},{},{} +31412,C_Virgo_Crown,C Virgo Crown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,573,{},{},{} +31413,C_Taurus_Crown,C_ Taurus Crown,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,536,{},{},{} +31414,C_Cancer_Diadem,C Cancer Diadem,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,560,{},{},{} +31415,C_Wanderers_ Sakkat,Costume Wanderer's Sakkat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,3072,,1,0,558,{},{},{} +31417,C_Rice_Ball_Hat,C Rice Ball Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,556,{},{},{} +31418,C_Green_Onion_in_Mouth,C Green Onion in Mouth,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,824,{},{},{} +31420,C_Shining_Santa_Poring,C Shining Santa Poring,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,961,{},{},{} +31432,C_Floating_Ice,C Floating Ice,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1562,{},{},{} +31433,C_Celestial_Circle,C Celestial Circle,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1073,{},{},{} +31434,C_Cloud_Burst,C Cloud Burst,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,705,{},{},{} +31435,C_Ghost_Magicians_Knit_Hat,C Ghost Magicians Knit Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,854,{},{},{} +31436,C_Lazy_Cat,C Lazy Cat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,274,{},{},{} +31437,C_Baby_Penguin,C Baby Penguin,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1705,{},{},{} +31438,C_Fluffy_Angel_Cape,C Fluffy Angel Cape,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1706,{},{},{} +31439,C_Fluffy_Heart_Earmuffs,C Fluffy Heart Earmuffs,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1707,{},{},{} +31440,C_Snow_Bear_Hood,C Snow Bear Hood,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1708,{},{},{} +31441,C_Penguin_Cap_BU,C Penguin Cap Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1709,{},{},{} +31442,C_Smile_Mask_Middle,C Smile Mask Middle,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,65,{},{},{} +31443,C_Munak_Hat_,C Munak Hat Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,51,{},{},{} +31444,C_Bongun_Hat_,C Bongun Hat Upper,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,139,{},{},{} +31446,C_Toy_Syringe,C Toy Syringe,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,842,{},{},{} +31447,C_Light_Moonlight_Hat,C Light Moonlight_Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,913,{},{},{} +31448,C_Stings_Silk_Ribbon,C Stings Silk Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1457,{},{},{} +31449,C_Blue_Rose_Eyepatch,C Blue Rose Eyepatch,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1712,{},{},{} +31450,C_Lolita_Two_Side_Up,C Lolita Two Side Up,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1713,{},{},{} +31451,C_Blue_Frill_Ribbon,C Blue Frill Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1714,{},{},{} +31452,C_White_Cat,C White Cat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1715,{},{},{} +31453,C_L_RibbonMuff_Black,C Large Ribbon Muffler Black,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1716,{},{},{} +31455,C_Enchanted_Dog,C Super Cute Dog,4,0,,0,,0,,0,0xFFFFFFFF,63,2,6144,,1,0,1718,{},{},{} +31457,C_Laughing_Wonderful_Wolf_Hat,C Laughing Wonderful Wolf Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1016,{},{},{} +31464,C_Bloom_Afro,C Bloom Afro,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,837,{},{},{} +31468,C_Stripe_Hat,C Stripe Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1728,{},{},{} +31470,C_Scroll_of_Tengu,C Scroll of Tengu,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1445,{},{},{} +31471,C_Celestial_Flower,C Celestial Flower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,438,{},{},{} +31472,C_Fairy_Feathers,C Fairy Feathers,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,1,0,1723,{},{},{} +31473,C_Tipsy,C Tipsy,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1724,{},{},{} +31474,C_Straight_Long_BL,C Straight Long Black,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1725,{},{},{} +31475,C_Black_Fox_Ear_Ribbon,C Black Fox Ears Ribbon,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1726,{},{},{} +31476,C_Cherry_Blossom_Hat_YL,C Yellow Cherry Blossom Hat,4,0,,0,,0,,0,0xFFFFFFFF,63,2,1024,,1,0,1727,{},{},{} +31478,C_Eleanor_Wig_,C Eleanors Wig Lower,4,0,,0,,0,,0,0xFFFFFFFF,63,2,4096,,1,0,1502,{},{},{} diff --git a/db/re/item_flag.txt b/db/re/item_flag.txt index b68c97c2c0..911a8fddfc 100644 --- a/db/re/item_flag.txt +++ b/db/re/item_flag.txt @@ -423,6 +423,7 @@ 17681,2 //Midgard_Lucky_Scroll 17692,2 //Blessing_Scarlet_Egg 22514,2 //Candy_Holder +22537,2 //PrizeOfHero 22558,2 //Lucky_Bag 22669,2 //HALLOWEEN_G_BOX 22685,2 //Solo_Christmas_Gift diff --git a/db/re/item_group_db.txt b/db/re/item_group_db.txt index e69de29bb2..99f50c9f30 100644 --- a/db/re/item_group_db.txt +++ b/db/re/item_group_db.txt @@ -0,0 +1,4 @@ +// Item Group Database +// +// Structure of Database: +// GroupID,ItemID,Rate{,Amount,Random,isAnnounced,Duration,GUID,isBound,isNamed} diff --git a/db/re/item_misc.txt b/db/re/item_misc.txt index 0e332483ff..823f521c7c 100644 --- a/db/re/item_misc.txt +++ b/db/re/item_misc.txt @@ -1370,3 +1370,33 @@ IG_Mercenary,12179,1 // SpearMercenary_Scroll7 IG_Mercenary,12180,1 // SpearMercenary_Scroll8 IG_Mercenary,12181,1 // SpearMercenary_Scroll9 IG_Mercenary,12182,1 // SpearMercenary_Scroll10 +// PrizeOfHero +IG_PrizeOfHero,522,7 // Fruit_Of_Mastela +IG_PrizeOfHero,547,7 // White_Slim_Potion +IG_PrizeOfHero,607,17 // Yggdrasilberry +IG_PrizeOfHero,608,10 // Seed_Of_Yggdrasil +IG_PrizeOfHero,678,7 // Poison_Bottle +IG_PrizeOfHero,12075,7 // Str_Dish10 +IG_PrizeOfHero,12080,7 // Int_Dish10 +IG_PrizeOfHero,12085,7 // Vit_Dish10 +IG_PrizeOfHero,12090,7 // Agi_Dish10 +IG_PrizeOfHero,12095,7 // Dex_Dish10 +IG_PrizeOfHero,12100,7 // Luk_Dish10 +IG_PrizeOfHero,12530,2 // Mastela_Fruit_Box +IG_PrizeOfHero,12534,2 // Yggdrasil_Seed_Box +IG_PrizeOfHero,12535,1 // Iggdrasilberry_Box +IG_PrizeOfHero,12549,2 // White_Slim_Pot_Box2 +IG_PrizeOfHero,12550,2 // Poison_Bottle_Box2 +IG_PrizeOfHero,12623,1 // High_Weapon_Box +IG_PrizeOfHero,12676,7 // Sg_Violet_Potion_Box +IG_PrizeOfHero,12679,7 // Sg_White_Potion_Box +IG_PrizeOfHero,12680,7 // Sg_Blue_Potion_Box +IG_PrizeOfHero,15093,1 // Hero_Plate +IG_PrizeOfHero,15094,1 // Hero_Magic_Coat +IG_PrizeOfHero,15095,1 // Hero_Judgement_Shawl +IG_PrizeOfHero,15096,1 // Hero_Trade_Mail +IG_PrizeOfHero,15097,1 // Hero_Hidden_Cloth +IG_PrizeOfHero,15098,1 // Hero_Taget_Suits +IG_PrizeOfHero,22035,2 // Vet_Nepen_Heel +IG_PrizeOfHero,22036,2 // Vet_SliverFox_Boots +IG_PrizeOfHero,22037,2 // Vet_Ungo_Boots diff --git a/db/re/item_randomopt_db.txt b/db/re/item_randomopt_db.txt index 48e768a8a7..9ca112619b 100644 --- a/db/re/item_randomopt_db.txt +++ b/db/re/item_randomopt_db.txt @@ -14,7 +14,7 @@ RDMOPT_VAR_MAXHPPERCENT,{ bonus bMaxHPrate,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_MAXSPPERCENT,{ bonus bMaxSPrate,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_HPACCELERATION,{ bonus bHPrecovRate,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_SPACCELERATION,{ bonus bSPrecovRate,getrandomoptinfo(ROA_VALUE); } -RDMOPT_VAR_ATKPERCENT,{ bonus bAtkRate,getrandomoptinfo(ROA_VALUE); } +RDMOPT_VAR_ATKPERCENT,{ bonus2 bAddClass,Class_All,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_MAGICATKPERCENT,{ bonus bMatkRate,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_PLUSASPD,{ bonus bAspd,getrandomoptinfo(ROA_VALUE); } RDMOPT_VAR_PLUSASPDPERCENT,{ bonus bAspdRate,getrandomoptinfo(ROA_VALUE); } diff --git a/db/re/item_trade.txt b/db/re/item_trade.txt index 8b4ee746bc..6144233f6c 100644 --- a/db/re/item_trade.txt +++ b/db/re/item_trade.txt @@ -508,6 +508,14 @@ 5823,467,100 // Love_Arrow 5855,499,100 // Fishing_Rod 5864,475,100 // Shadow_Booster +5900,467,100 // Divine Guard Hat +5901,467,100 // Focus Beret +5902,467,100 // Harvester Hat +5903,467,100 // Deadman Bandana +5904,467,100 // Inconspicuous Hat +5905,467,100 // Lyrica Hat +5906,467,100 // Oni Horns +5907,467,100 // Sea Captain Hat 6000,475,100 // Dark_Ashes 6005,467,100 // New_Year_Rice_Cake 6006,499,100 // Rice_Cake_Delivery_Box diff --git a/db/re/job_db1.txt b/db/re/job_db1.txt index a9abdad6dc..ed4944dc96 100644 --- a/db/re/job_db1.txt +++ b/db/re/job_db1.txt @@ -292,4 +292,16 @@ // Baby Rebellion 4229, 28000,90 ,650 ,469 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,45 ,55 ,50 ,90 ,100 ,200 ,200 ,6 // Baby Star Gladiator (Union) -4238, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 \ No newline at end of file +4238, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 +// Star Emperor +4239, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 +// Soul Reaper +4240, 24000,75 ,500 ,900 ,50 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,53 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,8 +// Baby Star Emperor +4241, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 +// Baby Soul Reaper +4242, 24000,75 ,500 ,900 ,50 ,50 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,53 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,200 ,55 ,8 +// Star Emperor (Union) +4243, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 +// Baby Star Emperor (Union) +4244, 28000,90 ,650 ,470 ,40 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,50 ,6 diff --git a/db/re/job_exp.txt b/db/re/job_exp.txt index 190cb430ad..68b5223e19 100644 --- a/db/re/job_exp.txt +++ b/db/re/job_exp.txt @@ -13,9 +13,9 @@ //Base - Adv Jobs 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999 -//Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, & Summoner +//Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, Summoner, Star Emperor, Soul Reaper //Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.) -175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 +175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229:4239:4240:4241:4242:4243:4244,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Base - Expanded Super Novice & Expanded Super Baby 160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 @@ -38,8 +38,8 @@ //Job - Adv Second Classes 70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999 -//Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, & Rebellion -60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 +//Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, Rebellion, Star Emperor, Soul Reaper +60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229:4239:4240:4241:4242:4243:4244,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 //Job - Expanded Super Novice & Expanded Super Baby 50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999 diff --git a/db/re/map_cache.dat b/db/re/map_cache.dat index 49fe7f2f24..8af147a7c6 100644 Binary files a/db/re/map_cache.dat and b/db/re/map_cache.dat differ diff --git a/db/re/mob_db.txt b/db/re/mob_db.txt index d61510fce5..4b5eb6f662 100644 --- a/db/re/mob_db.txt +++ b/db/re/mob_db.txt @@ -190,6 +190,7 @@ 1184,FABRE_,Fabre,Fabre,1,30,1,1,0,1,4,7,0,0,1,2,1,1,4,5,10,12,0,4,22,0x2003885,400,1672,672,480,0,0,0,0,0,0,0,914,2000,949,250,1502,80,721,2,511,350,705,500,1501,200,0,0,0,0,0,0 1185,WHISPER_,Whisper,Whisper,34,1796,1,483,737,1,198,239,0,45,1,51,14,0,60,0,10,12,0,1,28,0x0,150,1960,960,504,0,0,0,0,0,0,0,1001,10,1059,100,0,0,2333,1,0,0,0,0,0,0,0,0,0,0,0,0 1186,WHISPER_BOSS,Giant Whisper,Giant Whisper,66,2570,0,630,710,1,282,341,94,45,40,79,44,51,67,31,10,12,0,6,48,0x2003695,250,2536,1536,672,0,0,0,0,0,0,0,1001,150,1059,5335,2282,1,2333,10,0,0,0,0,0,0,0,0,0,0,4303,1 +//1187,SWITCH 1188,BON_GUN,Bongun,Bongun,59,2510,1,531,597,1,189,218,88,5,55,24,24,5,34,10,10,12,1,1,29,0x3095,200,1720,500,420,0,0,0,0,0,0,0,1094,5500,7014,40,618,60,5046,1,609,15,508,1000,508,1250,0,0,0,0,4212,1 1189,ORC_ARCHER,Orc Archer,Orc Archer,78,4835,1,922,1161,9,260,303,67,31,55,32,24,30,99,15,10,12,1,7,22,0x3095,300,1960,620,480,0,0,0,0,0,0,0,1063,4656,1753,1000,1756,2500,1755,2500,1734,2,507,1400,509,900,0,0,0,0,4256,1 1190,ORC_LORD,Orc Lord,Orc Lord,55,552000,1,156240,122760,1,780,1428,256,92,95,95,103,96,155,85,10,12,2,7,82,0x6283695,100,1248,500,360,31102,968,5500,617,2000,0,0,1363,400,2621,400,5007,400,1371,400,617,1000,985,4268,16000,100,0,0,0,0,4135,1 @@ -219,6 +220,8 @@ 1214,CHOCO,Choco,Choco,48,1080,1,369,414,1,120,167,70,30,40,45,32,19,42,20,10,12,0,2,23,0x3095,150,1028,528,360,0,0,0,0,0,0,0,7011,5335,942,7000,985,53,513,5000,634,20,532,1000,607,25,0,0,0,0,4285,1 1215,STEM_WORM,Stem Worm,Stem Worm,84,4530,1,1080,1215,1,266,307,73,50,55,37,25,47,70,30,10,12,1,3,24,0x3095,300,1956,756,528,0,0,0,0,0,0,0,7012,5335,509,1800,1968,10,756,115,997,5,0,0,608,45,0,0,0,0,4224,1 1216,PENOMENA,Penomena,Penomena,85,4589,1,1116,1556,7,292,333,85,32,76,38,35,35,89,10,10,12,1,5,25,0x3695,400,832,500,600,0,0,0,0,0,0,0,7013,4850,962,8000,938,7000,525,200,719,15,1258,1,716,550,0,0,0,0,4314,1 +//1217,ORC_WARRIOR +//1218,PECO_EGG 1219,KNIGHT_OF_ABYSS,Knight of Abyss,Abysmal Knight,122,23297,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,0,0,0,0,0,0,0,1064,5335,7023,5,2318,1,1421,25,0,0,985,369,15014,10,0,0,0,0,4140,1 1220,M_DESERT_WOLF,Desert Wolf,Desert Wolf,103,9447,1,349,218,1,254,313,114,47,93,69,63,61,82,42,10,12,1,2,23,0x3695,200,1120,420,288,0,0,0,0,0,0,0,1253,5,7030,5500,2311,1,517,1200,920,2000,756,53,0,0,0,0,0,0,4082,1 1221,M_SAVAGE,Savage,Savage,26,2092,0,321,203,1,146,177,16,5,1,26,54,10,37,10,10,12,2,2,42,0x3695,150,1960,960,384,0,0,0,0,0,0,0,1028,6000,514,150,702,3,2276,2,605,15,757,70,0,0,0,0,0,0,4078,1 @@ -2152,38 +2155,38 @@ 2995,XM_TEDDY_BEAR,Abandoned Teddy Bear,Abandoned Teddy Bear,148,180000,1,6666,7332,1,1347,1924,106,44,44,166,44,44,166,44,10,12,0,6,69,0x2003295,150,512,780,504,0,0,0,0,0,0,0,7317,1900,615,150,12074,100,12734,1000,12738,100,0,0,0,0,0,0,0,0,31022,1 2996,XM_CELINE_KIMI,Celine Kimi,Celine Kimi,160,66666666,1,4444444,4033332,2,5636,8303,479,444,144,166,44,444,166,166,10,12,2,1,28,0x6283695,100,768,1056,480,444444,616,10000,617,10000,22534,10000,22534,4000,18549,4000,7642,4000,19701,100,13442,100,712,10000,0,0,0,0,0,0,0,0 2997,G_XM_CELINE_KIMI,Kimi's Phantom,Kimi's Phantom,160,66666666,1,0,0,2,6666,13332,479,444,144,166,44,444,166,166,10,12,2,1,28,0x6203695,100,768,1056,480,0,0,0,0,0,0,0,6683,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -//2998,EP14_MORS_EVENT -//2999,EP14_MORS_BOSSA -//3000,EP14_MORS_BOSSB -//3001,EP14_MORS_MOB1 -//3002,EP14_MORS_MOB2 -//3003,EP14_MORS_MOB3 -//3004,EP14_MORS_MOB4 -//3005,EP14_MORS_MOB5 -//3006,EP14_MORS_MOB6 -//3007,EP14_MORS_DUMMY -//3008,EP14_MORS_HIDDEN +2998,EP14_MORS_EVENT,Weakened Morroc,Weakened Morroc,158,1771440,1,12390,16104,1,1872,2772,113,45,87,51,45,88,106,50,12,12,2,6,60,0x6200085,200,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2999,EP14_MORS_BOSSA,Morocc Necromancer,Morocc Necromancer,158,4000000,1,2106000,1336500,1,700,700,215,555,165,190,142,146,299,93,12,12,1,7,60,0x6280085,100,300,384,288,0,0,0,0,0,0,0,607,2000,603,200,604,200,0,0,0,0,0,0,522,200,0,0,0,0,0,0 +3000,EP14_MORS_BOSSB,Morocc Necromancer,Morocc Necromancer,101,80000000,1,2310750,1465200,12,700,701,1,1,1,1,1,180,1,1,12,12,1,7,82,0x6280085,2000,2700,384,288,0,0,0,0,0,0,0,607,2000,603,200,604,200,22537,10000,22537,10000,0,0,522,200,0,0,0,0,0,0 +3001,EP14_MORS_MOB1,Morroc's Ghoul,Morroc's Ghoul,158,295240,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,1000,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3002,EP14_MORS_MOB2,Morroc's Osiris,Morroc's Osiris,158,442860,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,200,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3003,EP14_MORS_MOB3,Morroc's Archer Skeleton,Morroc's Archer Skeleton,158,295240,1,1239,1610,7,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,200,300,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3004,EP14_MORS_MOB4,Morroc's Wraith,Morroc's Wraith,158,100000,1,1239,1610,1,90,180,13,45,87,51,45,88,106,50,12,12,2,6,60,0x6200085,600,300,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3005,EP14_MORS_MOB5,Morroc's Verit,Morroc's Verit,158,442860,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,100,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3006,EP14_MORS_MOB6,Morroc's Lude,Morroc's Lude,158,885720,1,1239,1610,3,113,226,113,45,87,51,45,88,299,50,12,12,0,6,60,0x6200085,100,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3007,EP14_MORS_DUMMY,Death Soul,Death Soul,158,99999999,1,0,0,1,1872,2772,113,45,87,51,45,88,106,50,12,12,0,6,60,0x6370000,195,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3008,EP14_MORS_HIDDEN,Morroc Hidden,Morroc Hidden,158,295240,1,0,0,1,1,2,113,45,1,51,45,255,106,50,12,12,0,6,60,0x620008C,2000,2000,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //3009,EP14_3_DEATH_BOSS -//3010,EP14_3_DEATH_A_MOB1 -//3011,EP14_3_DEATH_A_MOB2 -//3012,EP14_3_DEATH_A_MOB3 -//3013,EP14_3_DEATH_B_MOB1 -//3014,EP14_3_DEATH_B_MOB2 -//3015,EP14_3_DEATH_B_MOB3 -//3016,EP14_3_DEATH_C_MOB1 -//3017,EP14_3_DEATH_C_MOB2 -//3018,EP14_3_DEATH_C_MOB3 +3010,EP14_3_DEATH_A_MOB1,Corrupt Orc Baby,Corrupt Orc Baby,158,250000,1,12390,16104,1,1036,1415,240,50,120,85,80,60,88,50,10,12,0,7,42,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3011,EP14_3_DEATH_A_MOB2,Corrupt Baby Desert Wol,Corrupt Baby Desert Wol,158,232890,1,12390,16104,1,1016,1395,240,45,100,85,100,88,120,50,10,12,0,2,43,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3012,EP14_3_DEATH_A_MOB3,Corrupt Familiar,Corrupt Familiar,158,222550,1,12390,16104,1,1002,1381,240,70,86,85,75,53,100,50,10,12,0,5,41,0x0000085,120,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3013,EP14_3_DEATH_B_MOB1,Corrupt Orc Warrior,Corrupt Orc Warrior,158,300000,1,12390,16104,1,1066,1445,240,60,150,85,150,40,122,70,10,12,1,7,42,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3014,EP14_3_DEATH_B_MOB2,Corrupt Desert Wolf,Corrupt Desert Wolf,158,292450,1,12390,16104,1,1036,1415,240,50,120,85,110,55,130,70,10,12,1,2,43,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3015,EP14_3_DEATH_B_MOB3,Corrupt Phen,Corrupt Phen,158,284110,1,12390,16104,1,1026,1405,240,100,110,85,95,70,115,70,10,12,1,5,41,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3016,EP14_3_DEATH_C_MOB1,Corrupt Orc Zombie,Corrupt Orc Zombie,158,375000,1,12390,16104,1,1096,1475,150,150,180,145,202,40,88,30,10,12,1,7,49,0x0000085,170,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3017,EP14_3_DEATH_C_MOB2,Corrupt Verit,Corrupt Verit,158,352715,1,12390,16104,1,1082,1461,200,100,166,87,150,60,150,130,10,12,1,2,49,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 +3018,EP14_3_DEATH_C_MOB3,Corrupt Megalodon,Corrupt Megalodon,158,347413,1,12390,16104,1,1073,1452,240,300,157,80,140,90,209,84,10,12,1,5,49,0x0000085,170,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0 //3019,CELINE_KIMI -//3020,FIRE_CONDOR -//3021,FIRE_SAND_MAN -//3022,FIRE_FRILLDORA -//3023,FIRE_GOLEM +3020,FIRE_CONDOR,Fire Condor,Fire Condor,141,125114,1,7021,7481,1,1364,2565,71,45,104,72,66,10,113,52,10,12,1,2,43,0x0000081,110,1148,648,480,0,0,0,0,0,0,0,6691,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3021,FIRE_SAND_MAN,Fire Sand Man,Fire Sandman,143,130501,1,7207,7734,1,1404,2760,122,73,84,36,25,55,124,35,10,12,1,0,63,0x003885,150,1672,720,288,0,0,0,0,0,0,0,6694,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3022,FIRE_FRILLDORA,Fire Frilldora,Fire Frilldora,147,141301,1,7807,8199,1,1511,2903,134,40,148,38,128,45,121,30,10,12,1,2,63,0x0000081,130,1540,720,432,0,0,0,0,0,0,0,6694,1500,6696,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3023,FIRE_GOLEM,Fire Golem,Fire Golem,148,180213,1,8912,9464,1,1478,2799,292,102,70,78,267,25,84,25,10,12,2,0,83,0x003885,200,1608,816,396,0,0,0,0,0,0,0,6693,2000,6695,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //3024,14_3_MERCENARY_A //3025,14_3_MERCENARY_B -//3026,FIREPIT -//3027,FULBUK -//3028,SONIA -//3029,GRIM_REAPER_ANKOU +3026,FIREPIT,Fire Pit,Fire Pit,17,10,1,58,43,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x170000,400,2612,912,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3027,FULBUK,Fire Bug,Fire Bug,150,234,1,58,47,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x0000001,120,1288,288,768,0,0,0,0,0,0,0,6689,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3028,SONIA,Sonia,Sonia,17,20,1,58,43,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x170000,400,2612,912,288,0,0,0,0,0,0,0,6690,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3029,GRIM_REAPER_ANKOU,Grim Reaper Ankou,Reaper Yanku,159,50000000,1553,300000,330000,1,1500,2500,200,70,200,100,200,200,220,100,10,12,2,1,89,0x6200085,200,900,864,480,0,0,0,0,0,0,0,607,500,603,200,604,200,22537,10000,0,0,522,200,0,0,0,0,0,0,0,0 //3030,STANDING_SOUL //3031,MUTANT_NECROMANCER //3032,MUTANT_GHOUL @@ -2329,13 +2332,13 @@ //3172,EVENT_MONEMUS02 //3173,EVENT_FIREFOX //3174,HELL_FLY -//3175,E1_ROTAR_ZAIRO -//3176,E1_GREMLIN -//3177,E1_BEHOLDER -//3178,E1_ACIDUS -//3179,E1_ACIDUS_ -//3180,E1_G_S_NYDHOG -//3181,E1_FELOCK +3175,E1_ROTAR_ZAIRO,Rotar Zairo,Rotar Zairo,48,1088,0,190,220,10,0,0,0,0,0,0,0,0,0,0,10,12,2,0,44,0x2085,155,2420,2016,432,0,0,0,0,0,0,0,22046,50,7126,250,2312,1,0,0,0,0,601,500,912,200,910,200,0,0,0,0 +3176,E1_GREMLIN,Gremlin,Gremlin,118,20313,1,2008,1390,1,0,0,0,0,0,0,0,0,0,0,10,12,2,6,47,0x2003885,140,432,540,432,0,0,0,0,0,0,0,20743,50,7340,500,938,500,719,50,603,1,0,0,0,0,0,0,0,0,0,0 +3177,E1_BEHOLDER,Beholder,Beholder,118,20313,1,2008,1390,6,0,0,0,0,0,0,0,0,0,0,10,12,0,0,44,0x2000091,140,0,540,432,0,0,0,0,0,0,0,22046,50,576,500,605,50,996,50,985,1,603,1,0,0,0,0,0,0,0,0 +3178,E1_ACIDUS,Acidus,Acidus,130,48430,1,3088,2391,2,0,0,0,0,0,0,0,0,0,0,10,12,2,9,46,0x3095,170,1011,1008,300,0,0,0,0,0,0,0,15116,50,7938,100,1035,500,7448,200,0,0,0,0,0,0,0,0,0,0,0,0 +3179,E1_ACIDUS_,Acidus,Acidus,130,40718,1,2938,2031,2,0,0,0,0,0,0,0,0,0,0,10,12,2,9,44,0x3091,180,168,768,360,0,0,0,0,0,0,0,20743,50,1035,500,1036,500,7446,200,0,0,0,0,0,0,0,0,0,0,0,0 +3180,E1_G_S_NYDHOG,Wywern,Wywern,117,300000,1,0,0,1,0,0,0,0,0,0,0,0,0,0,10,12,2,9,87,0x3091,150,1621,1620,864,0,0,0,0,0,0,0,15116,50,6091,500,7444,1,985,10,0,0,0,0,0,0,0,0,0,0,0,0 +3181,E1_FELOCK,Captain Ferlock,Captain Ferlock,130,3000000,1,3088,333333,10,0,0,0,0,0,0,0,0,0,0,10,12,2,9,26,0x6280081,170,1018,1008,300,0,0,0,0,0,0,0,15117,100,20744,100,22047,100,12082,3000,12072,3000,12087,3000,12077,3000,12092,3000,0,0,27182,1 //3182,E2_ROTAR_ZAIRO //3183,E2_GREMLIN //3184,E2_BEHOLDER @@ -3236,6 +3239,227 @@ //20108,TW_KIEL //20109,TW_TAO_GUNKA //20110,TW_KNIGHT_OF_WINDSTORM - +//20111,MD_TRE_DRAKE +//20112,MD_MANHOLE +//20113,MD_TRE_MIMIC +//20114,MD_TRE_WRAITH +//20115,MD_TRE_PIRATE_SKEL +//20116,MD_TRE_WHISPER +//20117,MD_TRE_HYDRA //20118,GOBLIN_KING //20119,BAD_CATCUMBER +//20120,JP_E_MONSTER_106 +//20121,JP_E_MONSTER_107 +//20122,JP_E_MONSTER_108 +//20123,JP_E_MONSTER_109 +//20124,JP_E_MONSTER_110 +//20125,JP_E_MONSTER_111 +//20126,JP_E_MONSTER_112 +//20127,JP_E_MONSTER_113 +//20128,JP_E_MONSTER_114 +//20129,JP_E_MONSTER_115 +//20130,JP_E_MONSTER_116 +//20131,JP_E_MONSTER_117 +//20132,JP_E_MONSTER_118 +//20133,JP_E_MONSTER_119 +//20134,JP_E_MONSTER_120 +//20135,JP_E_MONSTER_121 +//20136,JP_E_MONSTER_122 +//20137,JP_E_MONSTER_123 +//20138,JP_E_MONSTER_124 +//20139,JP_E_MONSTER_125 +//20140,JP_E_MONSTER_126 +//20141,JP_E_MONSTER_127 +//20142,JP_E_MONSTER_128 +//20143,JP_E_MONSTER_129 +//20144,JP_E_MONSTER_130 +//20145,JP_E_MONSTER_131 +//20146,JP_E_MONSTER_132 +//20147,JP_E_MONSTER_133 +//20148,JP_E_MONSTER_134 +//20149,JP_E_MONSTER_135 +//20150,JP_E_MONSTER_136 +//20151,JP_E_MONSTER_137 +//20152,JP_E_MONSTER_138 +//20153,JP_E_MONSTER_139 +//20154,JP_E_MONSTER_140 +//20155,JP_E_MONSTER_141 +//20156,JP_E_MONSTER_142 +//20157,JP_E_MONSTER_143 +//20158,JP_E_MONSTER_144 +//20159,JP_E_MONSTER_145 +//20160,JP_E_MONSTER_146 +//20161,JP_E_MONSTER_147 +//20162,JP_E_MONSTER_148 +//20163,JP_E_MONSTER_149 +//20164,JP_E_MONSTER_150 +//20165,MD_TOUCAN +//20166,FLAME_GHOST +//20167,ICE_GHOST +//20168,B_FLAME_GHOST +//20169,B_ICE_GHOST +//20170,GARGOYLE_MJ +//20171,STING_MJ +//20172,RAYDRIC_MJ +//20173,RAYDRIC_ARCHER_MJ +//20174,RAGGED_ZOMBIE_MJ +//20175,EXTRA_JOKER +//20176,ERZSEBET +//20177,JENIFFER +//20178,GENERAL_ORC +//20179,SIEGLOUSE +//20180,TACNU_BRZ +//20181,VH_AMON_RA +//20182,VH_BAPHOMET +//20183,VH_DARK_LORD +//20184,VH_DOPPELGANGER +//20185,VH_DRACULA +//20186,VH_DRAKE +//20187,VH_EDDGA +//20188,VH_GARM +//20189,VH_GOLDEN_BUG +//20190,VH_KNIGHT_OF_WS +//20191,VH_MAYA +//20192,VH_MISTRESS +//20193,VH_MOONLIGHT +//20194,VH_ORC_LORD +//20195,VH_ORK_HERO +//20196,VH_OSIRIS +//20197,VH_PHARAOH +//20198,VH_PHREEONI +//20199,VH_TAO_GUNKA +//20200,VH_TURTLE_GENERAL +//20201,VH_B_SEYREN +//20202,VH_B_HARWORD +//20203,VH_B_EREMES +//20204,VH_B_KATRINN +//20205,VH_B_MAGALETA +//20206,VH_LORD_OF_DEATH +//20207,VH_ENTWEIHEN +//20208,VH_NAGHT_SIEGER +//20209,VH_DETALE +//20210,VH_THANATOS +//20211,VH_APOCALIPS_H +//20212,VH_KIEL_ +//20213,VH_RANDGRIS +//20214,VH_RSX_0806 +//20215,VH_B_YGNIZEM +//20216,VH_ATROCE +//20217,VH_BEELZEBUB_ +//20218,VH_FALLINGBISHOP +//20219,VH_GLOOM_U_N +//20220,VH_IFRIT +//20221,VH_KTULLANUX +//20222,VH_H_HUNTER_EV +//20223,VH_MM_CUTIE +//20224,VH_VENOM_KIMERA +//20225,VH_B_SHECIL +//20226,VH_B_RANDEL +//20227,VH_B_FLAMEL +//20228,VH_B_TRENTINI +//20229,VH_CHARLESTON3 +//20230,VH_GRAND_PERE +//20231,VH_S_NYDHOG +//20232,VH_QUEEN_SCARABA +//20233,VH_KRAKEN +//20234,VH_TIMEHOLDER +//20235,VH_INCAN_SAMURAI +//20236,VH_BACSOJIN +//20237,VH_DARK_S_LORD +//20238,VH_LADY_TANEE +//20239,VH_GOPINICH +//20240,VH_LEAK +//20241,VH_MECHASPIDER +//20242,VH_PYURIEL +//20243,VH_KADES +//20244,VH_GIOIA +//20245,VH_DAEHYON +//20246,VH_B_CELIA +//20247,VH_B_CHEN +//20248,VH_B_ALPHOCCIO +//20249,VH_B_GERTIE +//20250,VH_ENTWEIHEN_R +//20251,VH_ENTWEIHEN_H +//20252,VH_ENTWEIHEN_M +//20253,VH_ENTWEIHEN_S +//20254,VH_MIMIC +//20255,ILL_TEDDY_BEAR_R +//20256,ILL_TEDDY_BEAR_Y +//20257,ILL_TEDDY_BEAR_G +//20258,ILL_TEDDY_BEAR_W +//20259,ILL_TEDDY_BEAR_B +//20260,ILL_TEDDY_BEAR_S +//20261,ILL_PITMAN +//20262,ILL_MINERAL +//20263,ILL_OBSIDIAN +//20264,G_ILL_TEDDY_BEAR_R +//20265,G_ILL_TEDDY_BEAR_Y +//20266,G_ILL_TEDDY_BEAR_G +//20267,G_ILL_TEDDY_BEAR_W +//20268,G_ILL_TEDDY_BEAR_B + +//20270,ILL_TRI_JOINT +//20271,ILL_STALACTIC_GOLEM +//20272,ILL_MEGALITH +//20273,ILL_TAO_GUNKA +//20274,ILL_STONE_SHOOTER +//20275,ILL_WOOTAN_SHOOTER +//20276,ILL_WOOTAN_FIGHTER +//20277,ILL_WOOTAN_DEFENDER +//20278,G_ILL_MEGALITH +//20279,G_ILL_WOOTAN_SHOOTER +//20280,G_ILL_WOOTAN_FIGHTER + +//20282,JP_MAZEMOB_51 +//20283,JP_MAZEMOB_52 +//20284,JP_MAZEMOB_53 +//20285,JP_MAZEMOB_54 +//20286,JP_MAZEMOB_55 +//20287,JP_MAZEMOB_56 +//20288,JP_MAZEMOB_57 +//20289,JP_MAZEMOB_58 +//20290,JP_MAZEMOB_59 +//20291,JP_MAZEMOB_60 +//20292,JP_MAZEMOB_61 +//20293,JP_MAZEMOB_62 +//20294,JP_MAZEMOB_63 +//20295,JP_MAZEMOB_64 +//20296,JP_MAZEMOB_65 +//20297,JP_MAZEMOB_66 +//20298,JP_MAZEMOB_67 +//20299,JP_MAZEMOB_68 +//20300,JP_MAZEMOB_69 +//20301,JP_MAZEMOB_70 +//20302,JP_MAZEMOB_71 +//20303,JP_MAZEMOB_72 +//20304,JP_MAZEMOB_73 +//20305,JP_MAZEMOB_74 +//20306,JP_MAZEMOB_75 +//20307,JP_MAZEMOB_76 +//20308,JP_MAZEMOB_77 +//20309,JP_MAZEMOB_78 +//20310,JP_MAZEMOB_79 +//20311,JP_MAZEMOB_80 +//20312,JP_MAZEMOB_81 +//20313,JP_MAZEMOB_82 +//20314,JP_MAZEMOB_83 +//20315,JP_MAZEMOB_84 +//20316,JP_MAZEMOB_85 +//20317,JP_MAZEMOB_86 +//20318,JP_MAZEMOB_87 +//20319,JP_MAZEMOB_88 +//20320,JP_MAZEMOB_89 +//20321,JP_MAZEMOB_90 +//20322,JP_MAZEMOB_91 +//20323,JP_MAZEMOB_92 +//20324,JP_MAZEMOB_93 +//20325,JP_MAZEMOB_94 +//20326,JP_MAZEMOB_95 +//20327,JP_MAZEMOB_96 +//20328,JP_MAZEMOB_97 +//20329,JP_MAZEMOB_98 +//20330,JP_MAZEMOB_99 +//20331,JP_MAZEMOB_100 +//20332,E_PECOPECO + +//20354,E_FINE_DUST diff --git a/db/re/mob_race2_db.txt b/db/re/mob_race2_db.txt index fa538c3561..6934ede50c 100644 --- a/db/re/mob_race2_db.txt +++ b/db/re/mob_race2_db.txt @@ -30,3 +30,7 @@ RC2_MANUK,1986,1987,1988,1989,1990,1997,1998,1999 RC2_SPLENDIDE,1991,1992,1993,1994,1995 // Scaraba RC2_SCARABA,2083,2084,2085,2086,2087,2088,2089,2090,2091,2144,2145,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2304,2693,2799,2896 +// Old Glast Heim - SC_GLASTHEIM_ATK/SC_GLASTHEIM_DEF +RC2_OGH_ATK_DEF,2475,2476 +// Old Glast Heim - SC_GLASTHEIM_HIDDEN +RC2_OGH_HIDDEN,2337,2343//,2495 diff --git a/db/re/mob_skill_db.txt b/db/re/mob_skill_db.txt index eda70d8797..2ed3cdbdf8 100644 --- a/db/re/mob_skill_db.txt +++ b/db/re/mob_skill_db.txt @@ -11076,6 +11076,88 @@ 2997,Kimi's Phantom@NPC_WIDESOULDRAIN,attack,680,3,10000,5000,50000,no,self,myhpltmaxrate,10,,,,,,42, 2997,Kimi's Phantom@NPC_MAXPAIN,attack,716,3,10000,3000,50000,no,self,myhpltmaxrate,10,,,,,,, 2997,Kimi's Phantom@NPC_POWERUP,attack,349,1,10000,0,50000,no,self,myhpltmaxrate,5,,,,,,6, + +// Episode 14.3: Morse cave +2999,Morocc Necromancer@MG_SIGHT,idle,10,1,2000,0,5000,no,self,always,0,,,,,,, +2999,Morocc Necromancer@MG_SIGHT,idle,10,1,10000,0,5000,no,self,skillused,137,,,,,,, +2999,Morocc Necromancer@AL_TELEPORT,idle,26,1,10000,0,0,no,self,rudeattacked,,,,,,,, +2999,Morocc Necromancer@AL_TELEPORT,walk,26,1,5000,0,5000,no,self,rudeattacked,,,,,,,, +2999,Morocc Necromancer@MG_FROSTDIVER,idle,15,40,10000,1000,10000,yes,randomtarget,always,0,,,,,,, +2999,Morocc Necromancer@WZ_JUPITEL,idle,84,28,10000,1000,10000,yes,randomtarget,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREBALL,idle,17,44,10000,500,10000,yes,randomtarget,always,0,,,,,,, +2999,Morocc Necromancer@MG_FROSTDIVER,chase,15,40,10000,1000,10000,yes,target,skillused,18,,,,,,, +2999,Morocc Necromancer@WZ_JUPITEL,chase,84,28,10000,1000,10000,yes,target,skillused,18,,,,,,, +2999,Morocc Necromancer@MG_FIREBALL,chase,17,44,10000,500,10000,yes,target,skillused,18,,,,,,, +2999,Morocc Necromancer@MG_FROSTDIVER,attack,15,40,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FROSTDIVER,chase,15,40,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@HW_GANBANTEIN,attack,483,1,10000,500,7000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@HW_NAPALMVULCAN,chase,400,5,2000,1000,2000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_JUPITEL,attack,84,28,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_JUPITEL,chase,84,28,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_THUNDERSTORM,attack,21,20,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_THUNDERSTORM,chase,21,20,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_COLDBOLT,attack,14,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_COLDBOLT,chase,14,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREBALL,attack,17,44,3000,500,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREBALL,chase,17,44,3000,500,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_SIGHTRASHER,attack,81,10,3000,0,10000,no,self,always,0,,,,,,, +2999,Morocc Necromancer@WZ_QUAGMIRE,chase,92,5,3000,0,10000,no,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_SAFETYWALL,attack,12,10,3000,0,10000,no,self,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREBOLT,chase,19,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREBOLT,attack,19,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREWALL,chase,18,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_FIREWALL,attack,18,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_LIGHTNINGBOLT,chase,20,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@MG_LIGHTNINGBOLT,attack,20,10,3000,1000,10000,yes,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_FROSTNOVA,chase,88,10,3000,1000,10000,yes,self,always,0,,,,,,, +2999,Morocc Necromancer@WZ_FROSTNOVA,attack,88,10,3000,1000,10000,yes,self,always,0,,,,,,, +2999,Morocc Necromancer@WZ_EARTHSPIKE,chase,90,5,3000,0,10000,no,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_EARTHSPIKE,attack,90,5,3000,0,10000,no,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_HEAVENDRIVE,chase,91,5,3000,0,10000,no,target,always,0,,,,,,, +2999,Morocc Necromancer@WZ_HEAVENDRIVE,attack,91,5,3000,0,10000,no,target,always,0,,,,,,, +3000,Morocc Necromancer@NPC_CRITICALWOUND,attack,673,2,500,0,5000,no,target,always,0,,,,,,, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,5000,0,5000,no,randomtarget,always,0,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,3000,0,5000,no,self,always,0,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,attack,83,11,5000,0,5000,no,target,always,0,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,attack,720,5,3000,0,5000,no,self,always,0,,,,,,9, +3000,Morocc Necromancer@WZ_FIREPILLAR,idle,80,7,2000,0,5000,no,around2,always,0,,,,,,, +3000,Morocc Necromancer@WZ_FIREPILLAR,attack,80,7,2000,0,5000,no,around2,always,0,,,,,,, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,18,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,89,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,21,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,28,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,79,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,randomtarget,skillused,83,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,target,longrangeattacked,,,,,,,9, +3000,Morocc Necromancer@WZ_METEOR,idle,83,11,10000,0,10000,no,target,casttargeted,,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,18,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,89,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,21,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,28,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,79,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,skillused,83,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,longrangeattacked,,,,,,,9, +3000,Morocc Necromancer@NPC_JACKFROST,idle,720,5,10000,0,10000,no,self,casttargeted,,,,,,,9, +3004,Morroc's Wraith@NPC_SELFDESTRUCTION,attack,173,1,10000,1700,0,yes,self,always,0,,,,,,, +3006,Morroc's Lude@NPC_POISON,attack,176,5,2000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_BLINDATTACK,attack,177,5,2000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_SILENCEATTACK,attack,178,5,5000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_STUNATTACK,attack,179,5,5000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_PETRIFYATTACK,attack,180,5,2000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_CURSEATTACK,attack,181,5,5000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_SLEEPATTACK,attack,182,5,2000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_HALLUCINATION,attack,207,5,2000,0,0,yes,target,always,0,,,,,,, +3006,Morroc's Lude@NPC_BLEEDING,attack,660,5,2000,0,0,yes,target,always,0,,,,,,, +3008,Morroc Hidden@AL_HEAL,attack,28,9,10000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,, +3008,Morroc Hidden@AL_HEAL,idle,28,9,10000,500,5000,no,friend,friendhpltmaxrate,60,,,,,,, + +3026,Fire Pit@NPC_DEATHSUMMON,dead,718,3,10000,0,10000,no,self,always,0,3027,3027,3027,,,, + +// Episode 14.3: Isle of Bios +3029,Grim Reaper Ankou@NPC_COMET,attack,708,3,1000,10000,75000,no,self,always,0,,,,,,, +3029,Grim Reaper Ankou@NPC_DARKCROSS,attack,338,10,500,2000,12000,no,target,always,0,,,,,,, +3029,Grim Reaper Ankou@NPC_DRAGONFEAR,attack,659,5,1000,3000,30000,no,self,always,0,,,,,,, + 3038,Hidden Mob 7@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,0,,,,,,, // 3038,Hidden Mob 7@NPC_HELLBURNING,idle,719,1,10000,0,3000,yes,self,always,0,,,,,,, @@ -11097,3 +11179,73 @@ 3200,Wicked Chimera@WZ_HEAVENDRIVE,chase,91,5,500,1200,5000,yes,target,always,0,,,,,,6, 3200,Wicked Chimera@CR_AUTOGUARD,attack,249,5,500,0,300000,yes,self,always,0,,,,,,, 3200,Wicked Chimera@CR_AUTOGUARD,chase,249,5,2000,0,300000,yes,self,longrangeattacked,,,,,,,, + +//================================================================= +// Phantasmagorika 15.2 Mob Skills Placeholder (Gathered from jRO) +//================================================================= + +3153,Excavator Robot@NPC_BLOODDRAIN,angry,199,1,1000,0,3000,no,target,always,0,,,,,,, +3153,Excavator Robot@NPC_STONESKIN,attack,675,3,10000,0,30000,yes,self,always,0,,,,,,, +3153,Excavator Robot@NPC_STUNATTACK,attack,179,5,800,1000,5000,no,target,always,0,,,,,,, +3153,Excavator Robot@NPC_ARMORBRAKE,attack,344,10,500,0,5000,no,target,always,0,,,,,,, +3153,Excavator Robot@NPC_STONESKIN,chase,675,3,10000,0,30000,yes,self,always,0,,,,,,, +3153,Excavator Robot@NPC_BLOODDRAIN,attack,199,1,500,0,5000,no,target,always,0,,,,,,, +3153,Excavator Robot@NPC_STONESKIN,idle,675,3,10000,0,30000,yes,self,always,0,,,,,,, +3153,Excavator Robot@AL_TELEPORT,idle,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,, + +3154,Recon Robot@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,, +3154,Recon Robot@NPC_STUNATTACK,attack,179,5,800,1000,5000,no,target,always,0,,,,,,, + +3155,Repair Robot@NPC_STUNATTACK,any,179,5,500,1000,5000,no,target,always,0,,,,,,, +3155,Repair Robot@NPC_GUIDEDATTACK,attack,172,5,1000,0,15000,no,target,always,0,,,,,,, + +3156,Exploration Rover@NPC_SUMMONSLAVE,idle,196,5,10000,700,10000,no,self,casttargeted,1,3157,3158,,,,, +3156,Exploration Rover@NPC_GUIDEDATTACK,attack,172,5,1000,0,10000,no,target,always,0,,,,,,, +3156,Exploration Rover@NPC_SUMMONSLAVE,attack,196,5,10000,700,10000,no,target,attackpcge,10,3157,3158,,,,, + +3247,Cenere G@NPC_PETRIFYATTACK,attack,180,3,500,500,5000,no,target,always,0,,,,,,, +3247,Cenere G@MG_THUNDERSTORM,chase,21,10,3000,1000,10000,no,target,always,0,,,,,,, +3247,Cenere G@NPC_POISONATTACK,any,188,1,5000,0,5000,no,target,always,0,,,,,,, +3247,Cenere G@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,, +3247,Cenere G@MG_THUNDERSTORM,attack,21,10,3000,1000,10000,no,target,always,0,,,,,,, + +3248,Repair Robot T@AL_PNEUMA,attack,25,1,2000,0,5000,yes,self,longrangeattacked,0,,,,,,, +3248,Repair Robot T@AL_TELEPORT,idle,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,, +3248,Repair Robot T@NPC_CRITICALSLASH,attack,170,1,2000,0,2000,no,target,always,0,,,,,,, +3248,Repair Robot T@NPC_GUIDEDATTACK,attack,172,5,1000,0,5000,no,target,always,0,,,,,,, +3248,Repair Robot T@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,yes,target,myhpltmaxrate,40,,,,,,, +3248,Repair Robot T@NPC_STUNATTACK,attack,179,5,500,1000,5000,no,target,always,0,,,,,,, +3248,Repair Robot T@AL_PNEUMA,chase,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,, + +3249,Exploration Rover T@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,yes,self,myhpltmaxrate,40,,,,,,, +3249,Exploration Rover T@AL_PNEUMA,chase,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,, +3249,Exploration Rover T@AL_TELEPORT,walk,26,1,10000,0,0,no,target,rudeattacked,0,,,,,,, +3249,Exploration Rover T@NPC_CRITICALWOUND,attack,673,2,1000,0,5000,no,target,always,0,,,,,,, +3249,Exploration Rover T@NPC_GUIDEDATTACK,attack,172,5,1000,0,5000,no,target,always,0,,,,,,, +3249,Exploration Rover T@AL_PNEUMA,attack,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,, + +3253,Sys Msg@AL_HEAL,walk,28,11,10000,0,5000,no,friend,myhpltmaxrate,99,,,,,,, +3253,Sys Msg@AL_HEAL,idle,28,11,10000,0,5000,yes,friend,myhpltmaxrate,99,,,,,,, + +3254,T_W_O@NPC_STUNATTACK,attack,179,5,500,0,5000,no,target,always,0,,,,,,, +3254,T_W_O@AL_PNEUMA,chase,25,1,2000,0,5000,no,self,longrangeattacked,0,,,,,,, +3254,T_W_O@NPC_CHANGEWIND,attack,165,1,10000,0,1200000,no,self,myhpltmaxrate,80,,,,,,, +3254,T_W_O@NPC_WIDECONFUSE,chase,667,2,10000,0,10000,no,target,myhpltmaxrate,80,,,,,,, +3254,T_W_O@NPC_CRITICALSLASH,any,170,1,1000,0,5000,no,target,always,0,,,,,,, +3254,T_W_O@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,no,target,attackpcgt,1,,,,,,, +3254,T_W_O@NPC_WIDECONFUSE,attack,667,2,10000,0,10000,yes,target,myhpltmaxrate,80,,,,,,, +3254,T_W_O@NPC_WIDESLEEP,attack,668,1,10000,1000,20000,no,target,always,0,,,,,,, +3254,T_W_O@AL_PNEUMA,attack,25,1,2000,0,6000,no,self,longrangeattacked,0,,,,,,, +3254,T_W_O@MG_THUNDERSTORM,attack,21,20,2000,1000,5000,no,target,always,0,,,,,,, +3254,T_W_O@SM_MAGNUM,attack,7,25,1500,0,3000,no,target,always,0,,,,,,, +3254,T_W_O@SM_ENDURE,chase,8,1,5000,0,10000,yes,self,longrangeattacked,0,,,,,,, +3254,T_W_O@NPC_CALLSLAVE,attack,352,1,10000,0,5000,no,self,onspawn,,3253,3253,,,,, +3254,T_W_O@KN_BRANDISHSPEAR,any,57,10,2000,200,5000,no,target,always,0,,,,,,, +3254,T_W_O@NPC_PULSESTRIKE,attack,661,5,10000,0,30000,no,target,myhpltmaxrate,80,,,,,,, +3254,T_W_O@NPC_WIDESLEEP,chase,668,1,10000,1000,20000,no,target,always,0,,,,,,, +3254,T_W_O@NPC_DARKBREATH,attack,202,5,10000,0,30000,no,target,always,0,,,,,,, +3254,T_W_O@NPC_CALLSLAVE,attack,352,1,10000,0,5000,no,self,slavele,1,3253,3253,,,,, +3254,T_W_O@SM_MAGNUM,chase,7,25,1500,0,3000,no,target,always,0,,,,,,, +3254,T_W_O@NPC_SUMMONSLAVE,attack,196,5,10000,0,5000,no,randomtarget,always,,3253,3253,,,,, +3254,T_W_O@NPC_PULSESTRIKE,chase,661,5,10000,0,30000,no,target,myhpltmaxrate,80,,,,,,, +3254,T_W_O@SM_ENDURE,attack,8,1,5000,0,10000,no,target,longrangeattacked,0,,,,,,, diff --git a/db/re/pet_db.txt b/db/re/pet_db.txt index 4bcb5e29f1..1526955d9b 100644 --- a/db/re/pet_db.txt +++ b/db/re/pet_db.txt @@ -49,11 +49,11 @@ 1057,YOYO,Yoyo,634,9016,10018,532,80,60,20,100,250,20,1000,150,1,0,300,800,400,{ petloot 20; },{ bonus bCritical,3; bonus bLuk,-1; } 1023,ORK_WARRIOR,Orc Warrior,635,9017,10009,537,80,60,20,100,250,20,500,150,1,0,600,200,300,{ petskillattack2 "NPC_PIERCINGATT",100,1,0,10; },{ bonus bAtk,10; bonus bDef,-3; } 1026,MUNAK,Munak,636,9018,10008,537,80,60,20,100,250,20,500,150,0,0,300,750,300,{ petskillattack2 "NPC_DARKNESSATTACK",444,1,0,10; },{ bonus bInt,1; bonus bDef,1; } -1110,DOKEBI,Dokebi,637,9019,10005,537,80,60,20,100,250,20,500,150,0,0,300,300,800,{ petskillattack "BS_HAMMERFALL",1,0,10; },{ bonus bMatkRate,1; bonus bAtkRate,-1; } +1110,DOKEBI,Dokebi,637,9019,10005,537,80,60,20,100,250,20,500,150,0,0,300,300,800,{ petskillattack "BS_HAMMERFALL",1,0,10; },{ bonus bMatkRate,1; bonus2 bAddClass,Class_All,-1; } 1170,SOHEE,Sohee,638,9020,10016,537,80,60,10,100,250,20,500,150,0,0,100,1000,200,{ petskillsupport "AL_HEAL",5,60,33,100; },{ bonus bStr,1; bonus bDex,1; } -1029,ISIS,Isis,639,9021,10006,537,80,60,10,100,250,20,500,150,0,0,650,450,150,{ petskillsupport "PR_MAGNIFICAT",2,60,50,50; },{ bonus bMatkRate,-1; bonus bAtkRate,1; } +1029,ISIS,Isis,639,9021,10006,537,80,60,10,100,250,20,500,150,0,0,650,450,150,{ petskillsupport "PR_MAGNIFICAT",2,60,50,50; },{ bonus bMatkRate,-1; bonus2 bAddClass,Class_All,1; } 1155,PETIT,Petite,640,9022,10011,537,80,60,20,100,250,20,500,150,0,0,800,400,100,{ petskillattack2 "WZ_HEAVENDRIVE",500,1,0,10; },{ bonus bDef,-2; bonus bMdef,-2; bonus bAspdRate,1; } -1109,DEVIRUCHI,Deviruchi,641,9023,10004,711,80,60,10,100,250,20,500,150,0,0,800,200,100,{ petskillbonus bAgiDexStr,6,20,40; },{ bonus bMatkRate,1; bonus bAtkRate,1; bonus bMaxHPrate,-3; bonus bMaxSPrate,-3; } +1109,DEVIRUCHI,Deviruchi,641,9023,10004,711,80,60,10,100,250,20,500,150,0,0,800,200,100,{ petskillbonus bAgiDexStr,6,20,40; },{ bonus bMatkRate,1; bonus2 bAddClass,Class_All,1; bonus bMaxHPrate,-3; bonus bMaxSPrate,-3; } 1101,BAPHOMET_,Baphomet Jr.,642,9024,10001,518,80,60,10,100,250,20,200,150,0,0,1000,100,200,{ petskillattack2 "NPC_DARKNESSATTACK",1776,4,0,5; },{ bonus bDef,1; bonus bMdef,1; bonus2 bResEff,Eff_Stun,-100; } 1188,BON_GUN,Bon Gun,659,9025,10020,537,80,60,30,100,250,20,500,150,1,0,600,200,400,{ petskillattack2 "NPC_DARKNESSATTACK",555,1,1,1; },{ bonus bVit,1; bonus2 bResEff,Eff_Stun,100; } 1200,ZHERLTHSH,Zealotus,660,9026,0,929,80,60,10,100,250,20,300,150,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,3; },{ bonus2 bAddRace,RC_Demihuman,2; bonus2 bMagicAddRace,RC_DemiHuman,2; } diff --git a/db/re/quest_db.txt b/db/re/quest_db.txt index 24b23c877e..8b6d669f68 100644 --- a/db/re/quest_db.txt +++ b/db/re/quest_db.txt @@ -1515,7 +1515,7 @@ 7612,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Passage Cleaning - Down" 7613,0,3155,15,3156,15,0,0,0,0,0,0,0,0,0,0,0,"Eliminating Risks" 7614,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Eliminating Risks - Down" -7615,0,0,0,0,0,0,0,3154,6749,2000,3155,6749,2000,3156,6749,2000,"Core Collection" +7615,0,0,0,0,0,0,0,3154,6749,5000,3155,6749,5000,3156,6749,5000,"Core Collection" 7616,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Core Collection - Down" 7617,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Turning In Excavation Report" 7618,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Reporting the Results - Down" @@ -1983,6 +1983,10 @@ 9315,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen" 9316,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen" +// EP14.3 Morse's Cave +9318,0,3000,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Pursuing Hiding Morroc" +9319,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Pursuing Hiding Morroc Continues" + //9327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //9328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //9329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" @@ -2434,6 +2438,22 @@ 11347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_soft bone(LV.18)" 11348,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_Solid bone(LV.23)" +// Dimensional Travel Quest +11349,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dimensional Travel" +11350,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dimensional Travel" +11351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dimensional Travel" +11352,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dimensional Travel" +11353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dimensional Travel" +11354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Specimen Collection" +11355,0,3026,20,0,0,0,0,0,0,0,0,0,0,0,0,0,"Specimen Collection" +11356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Specimen Collection" +11357,0,3028,25,0,0,0,0,0,0,0,0,0,0,0,0,0,"Specimen Collection" +11358,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Specimen Collection" +11359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Antidote" +11360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Antidote" +11361,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Antidote" +11362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Antidote" + // Episode 15.1 To Phantasmagorika! 11363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!" 11364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!" @@ -2451,7 +2471,6 @@ 11376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Let the Specialists Handle It" 11377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Act of Kindness" -//11366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" 11378,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trick or treat" // Halloween Event 2013 // Episode 15.2 The Last Room Instance @@ -3009,13 +3028,13 @@ 13196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan" 13197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan" 13198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Krotzel's Request" -13199,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Krotzel's Request - Complete" +13199,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Krotzel's Request - Complete" 13200,0,3247,30,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Rookie's Request" -13201,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rookie's Request - Complete" +13201,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rookie's Request - Complete" 13202,0,3248,30,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Photo Journalist's Request" -13203,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Photo Journalist's Request - Complete" +13203,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Photo Journalist's Request - Complete" 13204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Grylls' Request" -13205,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grylls' Request - Complete" +13205,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grylls' Request - Complete" 14118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Wuhari's concern" 14119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Test of patience" @@ -3132,9 +3151,9 @@ 14557,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Truth is alway harsh" 14558,0,0,0,0,0,0,0,3503,25049,5000,0,0,0,0,0,0,"Dirty Creatures" 14559,04:00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Charm Effect Duration" -14560,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"New Ingredient" -14561,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Dirty and Filty" -14562,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The basic are the best" +14560,0,0,0,0,0,0,0,3503,25049,5000,0,0,0,0,0,0,"New Ingredient" +14561,0,0,0,0,0,0,0,3503,25049,5000,0,0,0,0,0,0,"Dirty and Filty" +14562,0,0,0,0,0,0,0,3503,25049,5000,0,0,0,0,0,0,"The basic are the best" 14563,04:00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Free time" 14565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Emergency food supplies" 14566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Brilliant idea" @@ -3168,11 +3187,11 @@ 15002,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial dungeon: Sara's Memory" 15003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Adventurer leon" -// Episode 14.3: Bios Island -15005,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Bios Island" -15006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bios Island Exploration" -15007,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Bios Island" -15008,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Bios Island" +// Episode 14.3: Isle of Bios +15005,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Isle of Bios" +15006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Isle of Bios Exploration" +15007,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Isle of Bios" +15008,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Isle of Bios" //15025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" @@ -3192,9 +3211,11 @@ //15041,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15043,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" //15045,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"" -15050,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" -15051,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" -15052,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" + +// Episode 15.1 : Airship Assault instance +15050,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" +15051,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" +// 15052,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memorial Dungeon: Airship Assault" // 2013 Christmas Event 15055,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Christmas : We are the great Single Union Army!" diff --git a/db/re/refine_db.yml b/db/re/refine_db.yml index f96e0d2d9a..0d8e473369 100644 --- a/db/re/refine_db.yml +++ b/db/re/refine_db.yml @@ -38,6 +38,12 @@ Armor: - Type: REFINE_COST_OVER10_HD Price: 100000 Material: 6225 + - Type: REFINE_COST_HOLINK + Price: 15000 + Material: 7619 + - Type: REFINE_COST_WAGJAK + Price: 20000 + Material: 985 Rates: - Level: 1 Bonus: 100 @@ -163,6 +169,12 @@ WeaponLv1: - Type: REFINE_COST_OVER10_HD Price: 100000 Material: 6226 + - Type: REFINE_COST_HOLINK + Price: 500 + Material: 7620 + - Type: REFINE_COST_WAGJAK + Price: 1000 + Material: 1010 Rates: - Level: 8 NormalChance: 60 @@ -254,6 +266,12 @@ WeaponLv2: - Type: REFINE_COST_OVER10_HD Price: 100000 Material: 6226 + - Type: REFINE_COST_HOLINK + Price: 2000 + Material: 7620 + - Type: REFINE_COST_WAGJAK + Price: 2000 + Material: 1011 Rates: - Level: 7 NormalChance: 60 @@ -350,6 +368,12 @@ WeaponLv3: - Type: REFINE_COST_OVER10_HD Price: 100000 Material: 6226 + - Type: REFINE_COST_HOLINK + Price: 20000 + Material: 7620 + - Type: REFINE_COST_WAGJAK + Price: 10000 + Material: 984 Rates: - Level: 6 NormalChance: 60 @@ -451,6 +475,12 @@ WeaponLv4: - Type: REFINE_COST_OVER10_HD Price: 100000 Material: 6226 + - Type: REFINE_COST_HOLINK + Price: 50000 + Material: 7620 + - Type: REFINE_COST_WAGJAK + Price: 20000 + Material: 984 Rates: - Level: 5 NormalChance: 60 diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index 5dd34399b1..ab952979bb 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -570,7 +570,7 @@ //-- CH_PALMSTRIKE 370,0,300,0,0,0,0,0 //-- CH_TIGERFIST -371,0,0,0,0,2000:4000:6000:8000:10000,0,0 +371,0,0,0,4000:8000:12000:16000:24000,0,0,0 //========================================== @@ -1047,6 +1047,8 @@ 706,0,0,0,3000,0,0,-1 //-- NPC_MAXPAIN 716,0,0,0,10000,0,0,0 +//-- NPC_JACKFROST +720,0,0,0,12500:17500:22500:27500:32500,0,0,-1 //===== 2nd Jobs Quest Skills ============== //-- KN_CHARGEATK @@ -1382,7 +1384,7 @@ //-- SC_BLOODYLUST 2303,2000,2000,0,10000:20000:30000,0,180000,-1 //-- SC_FEINTBOMB -2304,1000,0,0,500,1500,5000,-1 +2304,1000,0,0,1500,0,5000,-1 //-- SC_ESCAPE 5010,0,500,0,50000,20000,10000:8000:6000:4000:2000,-1 //========================================== diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 70a7acd1f0..8d62394f49 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -581,7 +581,7 @@ //**** // Clown & Gypsy 394,9,8,1,-1,0,0,10,-9,yes,0,0,0,weapon,0,0x0, CG_ARROWVULCAN,Vulcan Arrow -395,0,0,4,0,0x1,3,1,1,yes,0,0x40,0,misc,2,0x0, CG_MOONLIT,Sheltering Bliss +395,0,0,4,0,0x1,3,5,1,yes,0,0x40,0,misc,2,0x0, CG_MOONLIT,Sheltering Bliss 396,7,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40, CG_MARIONETTE,Marionette Control //**** @@ -710,7 +710,7 @@ 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0, PF_DOUBLECASTING,Double Casting 483,18,6,2,0,0x1,1:2:3:4:5,1,1,no,0,0,0,none,0,0x0, HW_GANBANTEIN,Ganbantein 484,18,6,2,2,0xD1,0,5,1,yes,0,0x18000,0,misc,0,0x11010, HW_GRAVITATION,Gravitation Field -485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0,0x4000, WS_CARTTERMINATION,Cart Termination +485,-2,6,1,-1,0x0,0,10,1,no,0,0,0,weapon,0,0x4000, WS_CARTTERMINATION,Cart Termination 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0,0x4000, WS_OVERTHRUSTMAX,Maximum Power Thrust 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x8, CG_LONGINGFREEDOM,Longing for Freedom 488,0,6,4,0,0x1,1,5,1,no,0,0x20,0,misc,0,0x1, CG_HERMODE,Wand of Hermode @@ -851,7 +851,7 @@ //705,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESIREN,Wide Siren's Voice 706,0,6,4,5,0,0,10,1,no,0,0x2,0,magic,0,0x1, NPC_VENOMFOG,Venom Fog //707,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_MILLENNIUMSHIELD,Millenium Shield 2 -//708,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_COMET,Comet 2 +708,11,8,2,0,0x2,9,5,-20,yes,0,0,0,magic,2,0x400, NPC_COMET,Comet 2 //709,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEMINE,Ice Mine //710,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_ICEEXPLO,Ice Explosion //711,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_FLAMECROSS,Flame Cross @@ -861,9 +861,9 @@ //715,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_DARKPIERCING,Dark Piercing 716,0,6,4,0,0x1,0,10,0,no,0,0x2,0,none,0,0x0, NPC_MAXPAIN,Max Pain 717,0,6,1,0,0xD2,18,10,1,no,0,0x2,0,misc,0,0x0, NPC_MAXPAIN_ATK,Max Pain Attack -//718,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_DEATHSUMMON,Death Summon +718,0,0,4,0,0x1,0,10,1,no,0,0x2,0,magic,0,0x0, NPC_DEATHSUMMON,Death Summon //719,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_HELLBURNING,Hell Burning -//720,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_JACKFROST,Jack Frost 2 +720,0,8,4,1,0x2,5:6:7:8:9,5,-5,no,0,0,0,magic,0,0x0, NPC_JACKFROST,Jack Frost 2 //721,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDEWEB,Wide Web //722,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDESUCK,Wide Suck //723,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_STORMGUST2,Storm Gust 2 @@ -893,6 +893,12 @@ //747,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_LEASH,Leash //748,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDELEASH,Wide Leash //749,0,0,0,0,0,0,??,0,no,0,0,0,none,0,0x0, NPC_WIDECRITICALWOUND,Wide Critical Wound +//750,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_EARTHQUAKE_K,Earthquake K +//751,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_ALL_STAT_DOWN,All Stat Down +//752,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_GRADUAL_GRAVITY,Gradual Gravity +//753,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_DAMAGE_HEAL,Damage Heal +//754,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_IMMUNE_PROPERTY,Immune Property +//755,0,0,0,0,0,0,??,0,no,0,0,0,none,0, NPC_MOVE_COORDINATE,Move Coordinate //**** // 2nd Quest Skills @@ -1235,11 +1241,11 @@ 2482,11,6,2,0,0x8,0,5,1,yes,0,0,1,weapon,2,0x0, GN_WALLOFTHORN,Wall of Thorns 2483,11,6,2,0,0x3,4,10,1,yes,0,0x0,0,weapon,0,0x1, GN_CRAZYWEED,Crazy Weed 2484,0,6,2,2,0x2,2,10,1,no,0,0x40000,0,weapon,0,0x1, GN_CRAZYWEED_ATK,Crazy Weed Attack -2485,9,6,2,3,0,0,5,1,yes,0,0,0,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire +2485,9,6,2,3,0,0,5,1,yes,0,0,1,magic,0,0x0, GN_DEMONIC_FIRE,Demonic Fire 2486,9,6,2,0,0,0,5,1,yes,0,0,0,none,0,0x0, GN_FIRE_EXPANSION,Fire Expansion 2487,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_SMOKE_POWDER,Fire Expansion Smoke Powder 2488,9,6,2,0,0,0,1,1,no,0,0,0,none,0,0x0, GN_FIRE_EXPANSION_TEAR_GAS,Fire Expansion Tear Gas -2489,11,8,1,-1,0x28,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0,0,magic,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid +2489,11,8,1,0,0x60,0,10,1:2:3:4:5:6:7:8:9:10,no,0,0x18000,0,misc,0,0x0, GN_FIRE_EXPANSION_ACID,Fire Expansion Acid 2490,9,6,2,0,0x3,1,5,1,yes,0,0x80,2:3:4:5:6,misc,0,0x0, GN_HELLS_PLANT,Hell's Plant 2491,0,6,1,0,0x90,0,5,1,no,0,0,0,misc,0,0x0, GN_HELLS_PLANT_ATK,Hell's Plant Attack 2492,0,6,4,0,0x3,5:6:6:7:7,5,1,yes,0,0,0,none,0,0x0, GN_MANDRAGORA,Howling of Mandragora @@ -1295,6 +1301,50 @@ //2573,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0, RL_B_FLICKER_ATK,Bind Flicker Attack //2574,0,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0, RL_GLITTERING_GREED_ATK,Flip The Coin Greed Attack +// Star Emperor +2574,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_LIGHTOFMOON,Light of Moon +2575,0,0,4,0,0,0,3,0,yes,0,0,0,none,0,0, SJ_LUNARSTANCE,Lunar Stance +2576,0,0,4,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_FULLMOONKICK,Full Moon Kick +2577,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_LIGHTOFSTAR,Light of Star +2578,0,0,4,0,0,0,3,0,yes,0,0,0,none,0,0, SJ_STARSTANCE,Star Stance +2579,0,0,4,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_NEWMOONKICK,New Moon Kick +2580,1,0,1,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_FLASHKICK,Flash Kick +2581,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_STAREMPEROR,Star Emperor +2582,3,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_NOVAEXPLOSING,Nova Explosing +2583,0,0,4,0,0,0,3,0,yes,0,0,0,none,0,0, SJ_UNIVERSESTANCE,Universe Stance +2584,0,0,4,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_FALLINGSTAR,Falling Star +2585,9,0,1,0,0,0,1,0,yes,0,0,0,none,0,0, SJ_GRAVITYCONTROL,Gravity Control +2586,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_BOOKOFDIMENSION,Book of Dimension +2587,7,0,2,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_BOOKOFCREATINGSTAR,Book of Creating Star +2588,0,0,4,0,0,0,3,0,yes,0,0,0,none,0,0, SJ_DOCUMENT,Document +2589,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0, SJ_PURIFY,Purify +2590,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SJ_LIGHTOFSUN,Light of Sun +2591,0,0,4,0,0,0,3,0,yes,0,0,0,none,0,0, SJ_SUNSTANCE,Sun Stance +2592,0,0,4,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_SOLARBURST,Solar Burst +2593,1,0,1,0,0,0,7,0,yes,0,0,0,none,0,0, SJ_PROMINENCEKICK,Prominence Kick +2594,0,0,1,0,0,0,7,0,yes,0,0x4000,0,none,0,0, SJ_FALLINGSTAR_ATK,Falling Star Attack +2595,0,0,1,0,0,0,7,0,yes,0,0x4000,0,none,0,0, SJ_FALLINGSTAR_ATK2,Falling Star Attack 2 + +// Soul Reaper +2596,9,0,16,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULGOLEM,Soul Golem +2597,9,0,16,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULSHADOW,Soul Shadow +2598,9,0,16,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULFALCON,Soul Falcon +2599,9,0,16,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULFAIRY,Soul Fairy +2600,9,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_CURSEEXPLOSION,Curse Explosion +2601,9,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULCURSE,Soul Curse +2602,9,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SPA,Espa +2603,9,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SHA,Esha +2604,9,0,1,0,0,0,7,0,yes,0,0,0,none,0,0, SP_SWHOO,Eswhoo +// TODO: Why does this have a range? +2605,11,0,4,0,0,0,7,0,yes,0,0,0,none,0,0, SP_SOULUNITY,Soul Unity +2606,9,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULDIVISION,Soul Division +2607,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULREAPER,Soul Reaper +2608,9,0,16,0,0,0,3,0,yes,0,0,0,none,0,0, SP_SOULREVOLVE,Soul Revolve +2609,0,0,4,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULCOLLECT,Soul Collect +2610,7,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, SP_SOULEXPLOSION,Soul Explosion +2611,0,0,0,0,0,0,5,0,no,0,0,0,none,0,0, SP_SOULENERGY,Soul Energy +2612,7,0,16,0,0,0,5,0,yes,0,0,0,none,0,0, SP_KAUTE,Kaute + //**** // Kagerou & Oboro 3001,0,6,4,0,0,0,1,1,no,0,0,0,none,0,0x4, KO_YAMIKUMO,Shadow Hiding @@ -1405,6 +1455,10 @@ 5064,3,6,16,0,0x1,0,1,1,yes,0,0x4,0,none,0,0, WE_ONEFOREVER,One Forever 5065,1,6,4,0,0x3,3,1,1,yes,0,0x4,0,none,0,0, WE_CHEERUP,Cheer Up +// New Arch Bishop Skills +5072,11,0,1,0,0,0,5,0,yes,0,0,0,none,0,0, AB_VITUPERATUM,Vituperatum +5073,0,0,4,0,0,0,1,0,yes,0,0,0,none,0,0, AB_CONVENIO,Convenio + //**** // Homunculus S 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0, HLIF_HEAL,Healing Touch diff --git a/db/re/skill_require_db.txt b/db/re/skill_require_db.txt index eae8e538b7..8e51ed8e73 100644 --- a/db/re/skill_require_db.txt +++ b/db/re/skill_require_db.txt @@ -700,7 +700,7 @@ 2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,12392,1,12392,1,12393,1,12393,1,12394,1,0,0,0,0,0,0,0,0,0,0,2807 //NC_REPAIR 2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXEBOOMERANG -2279,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_POWERSWING +2279,0,0,20:22:24:26:28,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_POWERSWING 2280,20:40:60:80:100,0,18:20:22:24:26,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_AXETORNADO 2281,0,0,25:30:35:40:45,0,0,0,99,0,0,none,0,0,612,0,615,0,998,1,999,2,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SILVERSNIPER 2282,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,612,0,615,0,998,2,7054,1,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_MAGICDECOY @@ -763,7 +763,7 @@ 2332,0,0,150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAMPAGEBLASTER 2333,0,0,80,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CRESCENTELBOW 2334,0,0,40:60:80:100:120,-1:-2:-3:-4:-5,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_CURSEDCIRCLE -2335,0,0,40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,1:2:3:4:5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_LIGHTNINGWALK +2335,0,0,80:70:60:50:40,-5:-4:-3:-2:-1,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_LIGHTNINGWALK 2336,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_KNUCKLEARROW 2337,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_WINDMILL 2338,0,0,120,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SR_RAISINGDRAGON @@ -915,6 +915,47 @@ //2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_FLICKER_ATK //2574,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_GLITTERING_GREED_ATK +// Star Emperor +2574,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_LIGHTOFMOON## +2575,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_LUNARSTANCE## +2576,0,0,30:35:40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_FULLMOONKICK## +2577,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSTAR## +2578,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_STARSTANCE## +2579,0,0,20:25:30:35:40:45:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_NEWMOONKICK## +2580,0,0,45:40:35:30:25:20:15,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_FLASHKICK## +2581,0,0,70:75:80:85:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_STAREMPEROR## +2582,0,0,60:65:70:75:80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_NOVAEXPLOSING## +2583,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_UNIVERSESTANCE## +2584,0,0,40:45:50:55:60:65:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR## +2585,0,0,80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_GRAVITYCONTROL## +2586,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_BOOKOFDIMENSION## +2587,0,0,50:55:60:65:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_BOOKOFCREATINGSTAR## +2588,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_DOCUMENT## +2590,0,0,40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSUN## +2591,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_SUNSTANCE## +2592,0,0,34:37:40:43:46:49:52,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_SOLARBURST## +2593,0,0,20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_PROMINENCEKICK## +2594,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR_ATK## +2595,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR_ATK2## + +// Soul Reaper +2596,0,0,250:200:150:100:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULGOLEM## +2597,0,0,250:200:150:100:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULSHADOW## +2598,0,0,250:200:150:100:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULFALCON## +2599,0,0,250:200:150:100:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULFAIRY## +2600,0,0,50:55:60:65:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_CURSEEXPLOSION## +2601,0,0,70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULCURSE## +2602,0,0,52:56:60:64:68,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SPA## +2603,0,0,18:20:22:24:26,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SHA## +2604,0,0,66:70:74:78:82:86:90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SWHOO## +2605,0,0,44:46:48:50:52:54:56,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULUNITY## +2606,0,0,36:40:44:48:52,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULDIVISION## +2607,0,0,42:44:46:48:50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULREAPER## +2608,0,0,50:100:150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULREVOLVE## +2609,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULCOLLECT## +2610,0,0,30:60:90:120:150,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_SOULEXPLOSION## +2612,0,0,24:30:36:42:48,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SP_KAUTE## + //**** // Kagerou/Oboro 3001,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //KO_YAMIKUMO @@ -1011,6 +1052,10 @@ 5064,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_ONEFOREVER 5065,0,0,50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP +// New Arch Bishop Skills +5072,0,0,144:120:106:92:78,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_VITUPERATUM## +5073,0,0,70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //AB_CONVENIO## + 8001,0,0,13:16:19:22:25,0,0,0,99,0,0,none,0,0,545,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL 8002,0,0,20:25:30:35:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_AVOID 8004,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_CHANGE diff --git a/db/re/skill_tree.txt b/db/re/skill_tree.txt index a2e52c1994..a408e61d00 100644 --- a/db/re/skill_tree.txt +++ b/db/re/skill_tree.txt @@ -832,7 +832,7 @@ 4008,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4008,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4008,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4008,359,1,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has an extra column after "MaxLevel" for Job Level 50 requirement +4008,359,1,0,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has 2 extra columns after "MaxLevel" for Job Level 50 requirement 4008,397,5,55,5,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4008,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4008,399,10,64,3,398,3,0,0,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -1059,7 +1059,7 @@ 4014,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4014,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4014,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4014,359,1,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has an extra column after "MaxLevel" for Job Level 50 requirement +4014,359,1,0,50,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //It has 2 extra columns after "MaxLevel" for Job Level 50 requirement 4014,397,5,55,5,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4014,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4014,399,10,64,3,398,3,0,0,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -1304,7 +1304,7 @@ 4020,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4020,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice# 4020,394,10,47,5,316,1,46,5,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4020,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4020,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4020,396,1,45,10,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4020,487,5,315,10,396,1,317,3,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4020,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -1340,7 +1340,7 @@ 4021,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4021,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm# 4021,394,10,47,5,324,1,46,5,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4021,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4021,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4021,396,1,45,10,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4021,487,5,323,10,396,1,325,3,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4021,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -2756,7 +2756,7 @@ 4060,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4060,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4060,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4060,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra column removed. Rune Knights dont require job level 50 to use Berserk. +4060,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra columns removed. Rune Knights dont require job level 50 to use Berserk. 4060,397,5,55,5,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4060,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4060,399,10,64,3,398,3,0,0,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -3664,7 +3664,7 @@ 4075,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4075,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice# 4075,394,10,47,5,316,1,46,5,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4075,395,1,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4075,395,5,45,5,315,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4075,396,1,45,10,315,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4075,487,5,315,10,396,1,317,3,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4075,488,5,45,10,315,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -3726,7 +3726,7 @@ 4076,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm# 4076,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm# 4076,394,10,47,5,324,1,46,5,0,0,0,0 //CG_ARROWVULCAN#Vulcan Arrow# -4076,395,1,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# +4076,395,5,45,5,323,7,0,0,0,0,0,0 //CG_MOONLIT#Sheltering Bliss# 4076,396,1,45,10,323,5,0,0,0,0,0,0 //CG_MARIONETTE#Marionette Control# 4076,487,5,323,10,396,1,325,3,0,0,0,0 //CG_LONGINGFREEDOM#Longing for Freedom# 4076,488,5,45,10,323,10,0,0,0,0,0,0 //CG_HERMODE#Wand of Hermod# @@ -4012,7 +4012,7 @@ 4081,356,10,3,10,6,5,60,3,0,0,0,0 //LK_PARRYING#Parrying# 4081,357,5,4,5,55,5,63,1,0,0,0,0 //LK_CONCENTRATION#Concentration# 4081,358,1,4,10,6,5,8,3,0,0,0,0 //LK_TENSIONRELAX#Relax# -4081,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra column removed. Rune Knights dont require job level 50 to use Berserk. +4081,359,1,0,0,0,0,0,0,0,0,0,0 //LK_BERSERK#Frenzy# //Extra columns removed. Rune Knights dont require job level 50 to use Berserk. 4081,397,5,55,5,56,5,58,5,63,1,0,0 //LK_SPIRALPIERCE#Spiral Pierce# 4081,398,5,55,9,63,1,0,0,0,0,0,0 //LK_HEADCRUSH#Traumatic Blow# 4081,399,10,64,3,398,3,0,0,0,0,0,0 //LK_JOINTBEAT#Vital Strike# @@ -6142,3 +6142,381 @@ 4238,443,10,0,0,0,0,0,0,0,0,0,0 //SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars# 4238,444,1,443,9,0,0,0,0,0,0,0,0 //SG_FUSION#Union of the Sun, Moon and Stars# 4238,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up# + +//Star Emperor +4239,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4239,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4239,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4239,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4239,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4239,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4239,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4239,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4239,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4239,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4239,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4239,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4239,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4239,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4239,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4239,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4239,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4239,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4239,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4239,427,3,0,0,0,0,0,0,0,0,0,0 //SG_FEEL#Feeling the Sun, Moon and Stars# +4239,428,3,427,1,0,0,0,0,0,0,0,0 //SG_SUN_WARM#Warmth of the Sun# +4239,429,3,427,2,0,0,0,0,0,0,0,0 //SG_MOON_WARM#Warmth of the Moon# +4239,430,3,427,3,0,0,0,0,0,0,0,0 //SG_STAR_WARM#Warmth of the Star# +4239,431,4,427,1,0,0,0,0,0,0,0,0 //SG_SUN_COMFORT#Comfort of the Sun# +4239,432,4,427,2,0,0,0,0,0,0,0,0 //SG_MOON_COMFORT#Comfort of the Moon# +4239,433,4,427,3,0,0,0,0,0,0,0,0 //SG_STAR_COMFORT#Comfort of the Star# +4239,434,3,0,0,0,0,0,0,0,0,0,0 //SG_HATE#Hatred of the Sun, Moon and Stars# +4239,435,3,434,1,0,0,0,0,0,0,0,0 //SG_SUN_ANGER#Sun's Wrath# +4239,436,3,434,2,0,0,0,0,0,0,0,0 //SG_MOON_ANGER#Moon's Wrath# +4239,437,3,434,3,0,0,0,0,0,0,0,0 //SG_STAR_ANGER#Stars's Wrath# +4239,438,5,427,1,434,1,0,0,0,0,0,0 //SG_SUN_BLESS#Blessing of the Sun# +4239,439,5,427,2,434,2,0,0,0,0,0,0 //SG_MOON_BLESS#Blessing of the Moon# +4239,440,5,427,3,434,3,0,0,0,0,0,0 //SG_STAR_BLESS#Blessing of the Star# +4239,441,10,0,0,0,0,0,0,0,0,0,0 //SG_DEVIL#Demon of the Sun, Moon and Stars# +4239,442,3,0,0,0,0,0,0,0,0,0,0 //SG_FRIEND#Friend of the Sun, Moon and Stars# +4239,443,10,0,0,0,0,0,0,0,0,0,0 //SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars# +4239,444,1,443,9,0,0,0,0,0,0,0,0 //SG_FUSION#Union of the Sun, Moon and Stars# +4239,2574,5,2576,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFMOON## +4239,2575,3,2588,1,0,0,0,0,0,0,0,0 //SJ_LUNARSTANCE## +4239,2576,7,2579,7,0,0,0,0,0,0,0,0 //SJ_FULLMOONKICK## +4239,2577,5,2584,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSTAR## +4239,2578,3,2588,1,0,0,0,0,0,0,0,0 //SJ_STARSTANCE## +4239,2579,7,2575,1,0,0,0,0,0,0,0,0 //SJ_NEWMOONKICK## +4239,2580,7,2578,1,0,0,0,0,0,0,0,0 //SJ_FLASHKICK## +4239,2581,5,2582,5,2583,3,0,0,0,0,0,0 //SJ_STAREMPEROR## +4239,2582,5,2583,1,0,0,0,0,0,0,0,0 //SJ_NOVAEXPLOSING## +4239,2583,3,2575,3,2578,3,2591,3,0,0,0,0 //SJ_UNIVERSESTANCE## +4239,2584,7,2580,7,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR## +4239,2585,1,2583,1,0,0,0,0,0,0,0,0 //SJ_GRAVITYCONTROL## +4239,2586,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFDIMENSION## +4239,2587,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFCREATINGSTAR## +4239,2588,3,427,3,434,3,0,0,0,0,0,0 //SJ_DOCUMENT## +4239,2589,1,441,10,0,0,0,0,0,0,0,0 //SJ_PURIFY## +4239,2590,5,2592,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSUN## +4239,2591,3,2588,1,0,0,0,0,0,0,0,0 //SJ_SUNSTANCE## +4239,2592,7,2593,7,0,0,0,0,0,0,0,0 //SJ_SOLARBURST## +4239,2593,7,2591,1,0,0,0,0,0,0,0,0 //SJ_PROMINENCEKICK## +4239,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# + +//Soul Reaper +4240,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4240,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4240,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4240,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4240,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4240,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4240,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4240,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4240,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4240,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4240,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4240,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4240,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4240,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4240,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4240,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4240,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4240,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4240,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4240,445,5,0,0,0,0,0,0,0,0,0,0 //SL_ALCHEMIST#Spirit of the Alchemist# +4240,447,5,0,0,0,0,0,0,0,0,0,0 //SL_MONK#Spirit of the Monk# +4240,448,5,0,0,0,0,0,0,0,0,0,0 //SL_STAR#Spirit of the Star Knight# +4240,449,5,0,0,0,0,0,0,0,0,0,0 //SL_SAGE#Spirit of the Professor# +4240,450,5,0,0,0,0,0,0,0,0,0,0 //SL_CRUSADER#Spirit of the Crusader# +4240,451,5,0,0,0,0,0,0,0,0,0,0 //SL_SUPERNOVICE#Spirit of the Supernovice# +4240,452,5,450,1,0,0,0,0,0,0,0,0 //SL_KNIGHT#Spirit of the Knight# +4240,453,5,449,1,0,0,0,0,0,0,0,0 //SL_WIZARD#Spirit of the Wizard# +4240,454,5,447,1,0,0,0,0,0,0,0,0 //SL_PRIEST#Spirit of the Priest# +4240,455,5,0,0,0,0,0,0,0,0,0,0 //SL_BARDDANCER#Spirit of the Artist# +4240,456,5,457,1,0,0,0,0,0,0,0,0 //SL_ROGUE#Spirit of the Rogue# +4240,457,5,0,0,0,0,0,0,0,0,0,0 //SL_ASSASIN#Spirit of the Assasin# +4240,458,5,445,1,0,0,0,0,0,0,0,0 //SL_BLACKSMITH#Spirit of the Blacksmith# +4240,460,5,455,1,0,0,0,0,0,0,0,0 //SL_HUNTER#Spirit of the Hunter# +4240,461,5,448,1,0,0,0,0,0,0,0,0 //SL_SOULLINKER#Spirit of the Soul Linker# +4240,462,7,454,1,0,0,0,0,0,0,0,0 //SL_KAIZEL#Kaizel# +4240,463,7,454,1,450,1,0,0,0,0,0,0 //SL_KAAHI#Kahai# +4240,464,3,456,1,0,0,0,0,0,0,0,0 //SL_KAUPE#Kauf# +4240,465,7,453,1,0,0,0,0,0,0,0,0 //SL_KAITE#Kaite# +4240,466,7,423,1,0,0,0,0,0,0,0,0 //SL_KAINA#Kaina# +4240,467,7,453,1,0,0,0,0,0,0,0,0 //SL_STIN#Estin# +4240,468,7,453,1,0,0,0,0,0,0,0,0 //SL_STUN#Estern# +4240,469,10,467,7,468,7,0,0,0,0,0,0 //SL_SMA#Esma# +4240,470,7,454,1,0,0,0,0,0,0,0,0 //SL_SWOO#Esu# +4240,471,3,452,1,0,0,0,0,0,0,0,0 //SL_SKE#Esk# +4240,472,3,447,1,0,0,0,0,0,0,0,0 //SL_SKA#Eska# +4240,494,5,451,1,0,0,0,0,0,0,0,0 //SL_HIGH#Spirit of Rebirth# +4240,2596,5,2608,2,0,0,0,0,0,0,0,0 //SP_SOULGOLEM## +4240,2597,5,2605,5,0,0,0,0,0,0,0,0 //SP_SOULSHADOW## +4240,2598,5,2608,2,0,0,0,0,0,0,0,0 //SP_SOULFALCON## +4240,2599,5,2605,5,0,0,0,0,0,0,0,0 //SP_SOULFAIRY## +4240,2600,5,2601,3,0,0,0,0,0,0,0,0 //SP_CURSEEXPLOSION## +4240,2601,5,2607,3,0,0,0,0,0,0,0,0 //SP_SOULCURSE## +4240,2602,5,2603,1,0,0,0,0,0,0,0,0 //SP_SPA## +4240,2603,5,2607,3,0,0,0,0,0,0,0,0 //SP_SHA## +4240,2604,7,2602,3,0,0,0,0,0,0,0,0 //SP_SWHOO## +4240,2605,7,2611,3,0,0,0,0,0,0,0,0 //SP_SOULUNITY## +4240,2606,5,2602,5,2603,5,0,0,0,0,0,0 //SP_SOULDIVISION## +4240,2607,5,2609,1,0,0,0,0,0,0,0,0 //SP_SOULREAPER## +4240,2608,3,2611,3,2612,3,0,0,0,0,0,0 //SP_SOULREVOLVE## +4240,2609,5,0,0,0,0,0,0,0,0,0,0 //SP_SOULCOLLECT## +4240,2610,5,2596,1,2597,1,2598,1,2599,1,2600,2 //SP_SOULEXPLOSION## +4240,2611,5,2609,1,0,0,0,0,0,0,0,0 //SP_SOULENERGY## +4240,2612,5,2611,1,0,0,0,0,0,0,0,0 //SP_KAUTE## +4240,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# + +//Baby Star Emperor +4241,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4241,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4241,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4241,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4241,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4241,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4241,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4241,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4241,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4241,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4241,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4241,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4241,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4241,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4241,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4241,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4241,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4241,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4241,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4241,427,3,0,0,0,0,0,0,0,0,0,0 //SG_FEEL#Feeling the Sun, Moon and Stars# +4241,428,3,427,1,0,0,0,0,0,0,0,0 //SG_SUN_WARM#Warmth of the Sun# +4241,429,3,427,2,0,0,0,0,0,0,0,0 //SG_MOON_WARM#Warmth of the Moon# +4241,430,3,427,3,0,0,0,0,0,0,0,0 //SG_STAR_WARM#Warmth of the Star# +4241,431,4,427,1,0,0,0,0,0,0,0,0 //SG_SUN_COMFORT#Comfort of the Sun# +4241,432,4,427,2,0,0,0,0,0,0,0,0 //SG_MOON_COMFORT#Comfort of the Moon# +4241,433,4,427,3,0,0,0,0,0,0,0,0 //SG_STAR_COMFORT#Comfort of the Star# +4241,434,3,0,0,0,0,0,0,0,0,0,0 //SG_HATE#Hatred of the Sun, Moon and Stars# +4241,435,3,434,1,0,0,0,0,0,0,0,0 //SG_SUN_ANGER#Sun's Wrath# +4241,436,3,434,2,0,0,0,0,0,0,0,0 //SG_MOON_ANGER#Moon's Wrath# +4241,437,3,434,3,0,0,0,0,0,0,0,0 //SG_STAR_ANGER#Stars's Wrath# +4241,438,5,427,1,434,1,0,0,0,0,0,0 //SG_SUN_BLESS#Blessing of the Sun# +4241,439,5,427,2,434,2,0,0,0,0,0,0 //SG_MOON_BLESS#Blessing of the Moon# +4241,440,5,427,3,434,3,0,0,0,0,0,0 //SG_STAR_BLESS#Blessing of the Star# +4241,441,10,0,0,0,0,0,0,0,0,0,0 //SG_DEVIL#Demon of the Sun, Moon and Stars# +4241,442,3,0,0,0,0,0,0,0,0,0,0 //SG_FRIEND#Friend of the Sun, Moon and Stars# +4241,443,10,0,0,0,0,0,0,0,0,0,0 //SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars# +4241,444,1,443,9,0,0,0,0,0,0,0,0 //SG_FUSION#Union of the Sun, Moon and Stars# +4241,2574,5,2576,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFMOON## +4241,2575,3,2588,1,0,0,0,0,0,0,0,0 //SJ_LUNARSTANCE## +4241,2576,7,2579,7,0,0,0,0,0,0,0,0 //SJ_FULLMOONKICK## +4241,2577,5,2584,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSTAR## +4241,2578,3,2588,1,0,0,0,0,0,0,0,0 //SJ_STARSTANCE## +4241,2579,7,2575,1,0,0,0,0,0,0,0,0 //SJ_NEWMOONKICK## +4241,2580,7,2578,1,0,0,0,0,0,0,0,0 //SJ_FLASHKICK## +4241,2581,5,2582,5,2583,3,0,0,0,0,0,0 //SJ_STAREMPEROR## +4241,2582,5,2583,1,0,0,0,0,0,0,0,0 //SJ_NOVAEXPLOSING## +4241,2583,3,2575,3,2578,3,2591,3,0,0,0,0 //SJ_UNIVERSESTANCE## +4241,2584,7,2580,7,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR## +4241,2585,1,2583,1,0,0,0,0,0,0,0,0 //SJ_GRAVITYCONTROL## +4241,2586,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFDIMENSION## +4241,2587,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFCREATINGSTAR## +4241,2588,3,427,3,434,3,0,0,0,0,0,0 //SJ_DOCUMENT## +4241,2589,1,441,10,0,0,0,0,0,0,0,0 //SJ_PURIFY## +4241,2590,5,2592,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSUN## +4241,2591,3,2588,1,0,0,0,0,0,0,0,0 //SJ_SUNSTANCE## +4241,2592,7,2593,7,0,0,0,0,0,0,0,0 //SJ_SOLARBURST## +4241,2593,7,2591,1,0,0,0,0,0,0,0,0 //SJ_PROMINENCEKICK## +4241,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby# +4241,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent# +4241,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up# + +//Baby Soul Reaper +4242,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4242,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4242,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4242,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4242,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4242,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4242,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4242,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4242,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4242,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4242,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4242,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4242,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4242,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4242,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4242,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4242,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4242,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4242,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4242,445,5,0,0,0,0,0,0,0,0,0,0 //SL_ALCHEMIST#Spirit of the Alchemist# +4242,447,5,0,0,0,0,0,0,0,0,0,0 //SL_MONK#Spirit of the Monk# +4242,448,5,0,0,0,0,0,0,0,0,0,0 //SL_STAR#Spirit of the Star Knight# +4242,449,5,0,0,0,0,0,0,0,0,0,0 //SL_SAGE#Spirit of the Professor# +4242,450,5,0,0,0,0,0,0,0,0,0,0 //SL_CRUSADER#Spirit of the Crusader# +4242,451,5,0,0,0,0,0,0,0,0,0,0 //SL_SUPERNOVICE#Spirit of the Supernovice# +4242,452,5,450,1,0,0,0,0,0,0,0,0 //SL_KNIGHT#Spirit of the Knight# +4242,453,5,449,1,0,0,0,0,0,0,0,0 //SL_WIZARD#Spirit of the Wizard# +4242,454,5,447,1,0,0,0,0,0,0,0,0 //SL_PRIEST#Spirit of the Priest# +4242,455,5,0,0,0,0,0,0,0,0,0,0 //SL_BARDDANCER#Spirit of the Artist# +4242,456,5,457,1,0,0,0,0,0,0,0,0 //SL_ROGUE#Spirit of the Rogue# +4242,457,5,0,0,0,0,0,0,0,0,0,0 //SL_ASSASIN#Spirit of the Assasin# +4242,458,5,445,1,0,0,0,0,0,0,0,0 //SL_BLACKSMITH#Spirit of the Blacksmith# +4242,460,5,455,1,0,0,0,0,0,0,0,0 //SL_HUNTER#Spirit of the Hunter# +4242,461,5,448,1,0,0,0,0,0,0,0,0 //SL_SOULLINKER#Spirit of the Soul Linker# +4242,462,7,454,1,0,0,0,0,0,0,0,0 //SL_KAIZEL#Kaizel# +4242,463,7,454,1,450,1,0,0,0,0,0,0 //SL_KAAHI#Kahai# +4242,464,3,456,1,0,0,0,0,0,0,0,0 //SL_KAUPE#Kauf# +4242,465,7,453,1,0,0,0,0,0,0,0,0 //SL_KAITE#Kaite# +4242,466,7,423,1,0,0,0,0,0,0,0,0 //SL_KAINA#Kaina# +4242,467,7,453,1,0,0,0,0,0,0,0,0 //SL_STIN#Estin# +4242,468,7,453,1,0,0,0,0,0,0,0,0 //SL_STUN#Estern# +4242,469,10,467,7,468,7,0,0,0,0,0,0 //SL_SMA#Esma# +4242,470,7,454,1,0,0,0,0,0,0,0,0 //SL_SWOO#Esu# +4242,471,3,452,1,0,0,0,0,0,0,0,0 //SL_SKE#Esk# +4242,472,3,447,1,0,0,0,0,0,0,0,0 //SL_SKA#Eska# +4242,494,5,451,1,0,0,0,0,0,0,0,0 //SL_HIGH#Spirit of Rebirth# +4242,2596,5,2608,2,0,0,0,0,0,0,0,0 //SP_SOULGOLEM## +4242,2597,5,2605,5,0,0,0,0,0,0,0,0 //SP_SOULSHADOW## +4242,2598,5,2608,2,0,0,0,0,0,0,0,0 //SP_SOULFALCON## +4242,2599,5,2605,5,0,0,0,0,0,0,0,0 //SP_SOULFAIRY## +4242,2600,5,2601,3,0,0,0,0,0,0,0,0 //SP_CURSEEXPLOSION## +4242,2601,5,2607,3,0,0,0,0,0,0,0,0 //SP_SOULCURSE## +4242,2602,5,2603,1,0,0,0,0,0,0,0,0 //SP_SPA## +4242,2603,5,2607,3,0,0,0,0,0,0,0,0 //SP_SHA## +4242,2604,7,2602,3,0,0,0,0,0,0,0,0 //SP_SWHOO## +4242,2605,7,2611,3,0,0,0,0,0,0,0,0 //SP_SOULUNITY## +4242,2606,5,2602,5,2603,5,0,0,0,0,0,0 //SP_SOULDIVISION## +4242,2607,5,2609,1,0,0,0,0,0,0,0,0 //SP_SOULREAPER## +4242,2608,3,2611,3,2612,3,0,0,0,0,0,0 //SP_SOULREVOLVE## +4242,2609,5,0,0,0,0,0,0,0,0,0,0 //SP_SOULCOLLECT## +4242,2610,5,2596,1,2597,1,2598,1,2599,1,2600,2 //SP_SOULEXPLOSION## +4242,2611,5,2609,1,0,0,0,0,0,0,0,0 //SP_SOULENERGY## +4242,2612,5,2611,1,0,0,0,0,0,0,0,0 //SP_KAUTE## +4242,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby# +4242,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent# +4242,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up# + +//Star Emperor (Union) +4243,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4243,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4243,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4243,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4243,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4243,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4243,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4243,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4243,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4243,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4243,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4243,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4243,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4243,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4243,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4243,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4243,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4243,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4243,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4243,427,3,0,0,0,0,0,0,0,0,0,0 //SG_FEEL#Feeling the Sun, Moon and Stars# +4243,428,3,427,1,0,0,0,0,0,0,0,0 //SG_SUN_WARM#Warmth of the Sun# +4243,429,3,427,2,0,0,0,0,0,0,0,0 //SG_MOON_WARM#Warmth of the Moon# +4243,430,3,427,3,0,0,0,0,0,0,0,0 //SG_STAR_WARM#Warmth of the Star# +4243,431,4,427,1,0,0,0,0,0,0,0,0 //SG_SUN_COMFORT#Comfort of the Sun# +4243,432,4,427,2,0,0,0,0,0,0,0,0 //SG_MOON_COMFORT#Comfort of the Moon# +4243,433,4,427,3,0,0,0,0,0,0,0,0 //SG_STAR_COMFORT#Comfort of the Star# +4243,434,3,0,0,0,0,0,0,0,0,0,0 //SG_HATE#Hatred of the Sun, Moon and Stars# +4243,435,3,434,1,0,0,0,0,0,0,0,0 //SG_SUN_ANGER#Sun's Wrath# +4243,436,3,434,2,0,0,0,0,0,0,0,0 //SG_MOON_ANGER#Moon's Wrath# +4243,437,3,434,3,0,0,0,0,0,0,0,0 //SG_STAR_ANGER#Stars's Wrath# +4243,438,5,427,1,434,1,0,0,0,0,0,0 //SG_SUN_BLESS#Blessing of the Sun# +4243,439,5,427,2,434,2,0,0,0,0,0,0 //SG_MOON_BLESS#Blessing of the Moon# +4243,440,5,427,3,434,3,0,0,0,0,0,0 //SG_STAR_BLESS#Blessing of the Star# +4243,441,10,0,0,0,0,0,0,0,0,0,0 //SG_DEVIL#Demon of the Sun, Moon and Stars# +4243,442,3,0,0,0,0,0,0,0,0,0,0 //SG_FRIEND#Friend of the Sun, Moon and Stars# +4243,443,10,0,0,0,0,0,0,0,0,0,0 //SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars# +4243,444,1,443,9,0,0,0,0,0,0,0,0 //SG_FUSION#Union of the Sun, Moon and Stars# +4243,2574,5,2576,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFMOON## +4243,2575,3,2588,1,0,0,0,0,0,0,0,0 //SJ_LUNARSTANCE## +4243,2576,7,2579,7,0,0,0,0,0,0,0,0 //SJ_FULLMOONKICK## +4243,2577,5,2584,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSTAR## +4243,2578,3,2588,1,0,0,0,0,0,0,0,0 //SJ_STARSTANCE## +4243,2579,7,2575,1,0,0,0,0,0,0,0,0 //SJ_NEWMOONKICK## +4243,2580,7,2578,1,0,0,0,0,0,0,0,0 //SJ_FLASHKICK## +4243,2581,5,2582,5,2583,3,0,0,0,0,0,0 //SJ_STAREMPEROR## +4243,2582,5,2583,1,0,0,0,0,0,0,0,0 //SJ_NOVAEXPLOSING## +4243,2583,3,2575,3,2578,3,2591,3,0,0,0,0 //SJ_UNIVERSESTANCE## +4243,2584,7,2580,7,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR## +4243,2585,1,2583,1,0,0,0,0,0,0,0,0 //SJ_GRAVITYCONTROL## +4243,2586,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFDIMENSION## +4243,2587,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFCREATINGSTAR## +4243,2588,3,427,3,434,3,0,0,0,0,0,0 //SJ_DOCUMENT## +4243,2589,1,441,10,0,0,0,0,0,0,0,0 //SJ_PURIFY## +4243,2590,5,2592,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSUN## +4243,2591,3,2588,1,0,0,0,0,0,0,0,0 //SJ_SUNSTANCE## +4243,2592,7,2593,7,0,0,0,0,0,0,0,0 //SJ_SOLARBURST## +4243,2593,7,2591,1,0,0,0,0,0,0,0,0 //SJ_PROMINENCEKICK## +4243,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# + +//Baby Star Emperor (Union) +4244,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill# +4244,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# +4244,411,10,0,0,0,0,0,0,0,0,0,0 //TK_RUN#Running# +4244,412,1,413,1,0,0,0,0,0,0,0,0 //TK_READYSTORM#Prepare Whirlwind# +4244,413,7,0,0,0,0,0,0,0,0,0,0 //TK_STORMKICK#Whirlwind Kick# +4244,414,1,415,1,0,0,0,0,0,0,0,0 //TK_READYDOWN#Prepare Axe Kick# +4244,415,7,0,0,0,0,0,0,0,0,0,0 //TK_DOWNKICK#Axe Kick# +4244,416,1,417,1,0,0,0,0,0,0,0,0 //TK_READYTURN#Prepare Round Kick# +4244,417,7,0,0,0,0,0,0,0,0,0,0 //TK_TURNKICK#Round Kick# +4244,418,1,419,1,0,0,0,0,0,0,0,0 //TK_READYCOUNTER#Prepare Counter Kick# +4244,419,7,0,0,0,0,0,0,0,0,0,0 //TK_COUNTER#Counter Kick# +4244,420,1,421,7,0,0,0,0,0,0,0,0 //TK_DODGE#Break Fall# +4244,421,7,0,0,0,0,0,0,0,0,0,0 //TK_JUMPKICK#Flying Side Kick# +4244,422,10,0,0,0,0,0,0,0,0,0,0 //TK_HPTIME#Peaceful Rest# +4244,423,10,0,0,0,0,0,0,0,0,0,0 //TK_SPTIME#Enjoyable Rest# +4244,424,5,0,0,0,0,0,0,0,0,0,0 //TK_POWER#Fighting Chant# +4244,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind# +4244,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump# +4244,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission# +4244,427,3,0,0,0,0,0,0,0,0,0,0 //SG_FEEL#Feeling the Sun, Moon and Stars# +4244,428,3,427,1,0,0,0,0,0,0,0,0 //SG_SUN_WARM#Warmth of the Sun# +4244,429,3,427,2,0,0,0,0,0,0,0,0 //SG_MOON_WARM#Warmth of the Moon# +4244,430,3,427,3,0,0,0,0,0,0,0,0 //SG_STAR_WARM#Warmth of the Star# +4244,431,4,427,1,0,0,0,0,0,0,0,0 //SG_SUN_COMFORT#Comfort of the Sun# +4244,432,4,427,2,0,0,0,0,0,0,0,0 //SG_MOON_COMFORT#Comfort of the Moon# +4244,433,4,427,3,0,0,0,0,0,0,0,0 //SG_STAR_COMFORT#Comfort of the Star# +4244,434,3,0,0,0,0,0,0,0,0,0,0 //SG_HATE#Hatred of the Sun, Moon and Stars# +4244,435,3,434,1,0,0,0,0,0,0,0,0 //SG_SUN_ANGER#Sun's Wrath# +4244,436,3,434,2,0,0,0,0,0,0,0,0 //SG_MOON_ANGER#Moon's Wrath# +4244,437,3,434,3,0,0,0,0,0,0,0,0 //SG_STAR_ANGER#Stars's Wrath# +4244,438,5,427,1,434,1,0,0,0,0,0,0 //SG_SUN_BLESS#Blessing of the Sun# +4244,439,5,427,2,434,2,0,0,0,0,0,0 //SG_MOON_BLESS#Blessing of the Moon# +4244,440,5,427,3,434,3,0,0,0,0,0,0 //SG_STAR_BLESS#Blessing of the Star# +4244,441,10,0,0,0,0,0,0,0,0,0,0 //SG_DEVIL#Demon of the Sun, Moon and Stars# +4244,442,3,0,0,0,0,0,0,0,0,0,0 //SG_FRIEND#Friend of the Sun, Moon and Stars# +4244,443,10,0,0,0,0,0,0,0,0,0,0 //SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars# +4244,444,1,443,9,0,0,0,0,0,0,0,0 //SG_FUSION#Union of the Sun, Moon and Stars# +4244,2574,5,2576,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFMOON## +4244,2575,3,2588,1,0,0,0,0,0,0,0,0 //SJ_LUNARSTANCE## +4244,2576,7,2579,7,0,0,0,0,0,0,0,0 //SJ_FULLMOONKICK## +4244,2577,5,2584,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSTAR## +4244,2578,3,2588,1,0,0,0,0,0,0,0,0 //SJ_STARSTANCE## +4244,2579,7,2575,1,0,0,0,0,0,0,0,0 //SJ_NEWMOONKICK## +4244,2580,7,2578,1,0,0,0,0,0,0,0,0 //SJ_FLASHKICK## +4244,2581,5,2582,5,2583,3,0,0,0,0,0,0 //SJ_STAREMPEROR## +4244,2582,5,2583,1,0,0,0,0,0,0,0,0 //SJ_NOVAEXPLOSING## +4244,2583,3,2575,3,2578,3,2591,3,0,0,0,0 //SJ_UNIVERSESTANCE## +4244,2584,7,2580,7,0,0,0,0,0,0,0,0 //SJ_FALLINGSTAR## +4244,2585,1,2583,1,0,0,0,0,0,0,0,0 //SJ_GRAVITYCONTROL## +4244,2586,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFDIMENSION## +4244,2587,5,2581,3,2588,3,0,0,0,0,0,0 //SJ_BOOKOFCREATINGSTAR## +4244,2588,3,427,3,434,3,0,0,0,0,0,0 //SJ_DOCUMENT## +4244,2589,1,441,10,0,0,0,0,0,0,0,0 //SJ_PURIFY## +4244,2590,5,2592,3,0,0,0,0,0,0,0,0 //SJ_LIGHTOFSUN## +4244,2591,3,2588,1,0,0,0,0,0,0,0,0 //SJ_SUNSTANCE## +4244,2592,7,2593,7,0,0,0,0,0,0,0,0 //SJ_SOLARBURST## +4244,2593,7,2591,1,0,0,0,0,0,0,0,0 //SJ_PROMINENCEKICK## +4244,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby# +4244,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent# +4244,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up# diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index 4b4383a57d..a3453b5242 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -109,6 +109,7 @@ 670,0xc7, , 1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008 //NPC_EVILLAND 706,0xfd, , 2, 0,1000,enemy, 0x018 //NPC_VENOMFOG +708,0x86, , 0, 9,1000,enemy, 0x018 //NPC_COMET 2044,0xca, , 0, 2,1000,all, 0x018 //AB_EPICLESIS diff --git a/doc/atcommands.txt b/doc/atcommands.txt index 2c7f11f597..ee54aefd5f 100644 --- a/doc/atcommands.txt +++ b/doc/atcommands.txt @@ -1310,7 +1310,7 @@ Bans or unbans a player for a limited time. Time elements: y/a, m, d/j, h, mn, s Example: -@ban +2d Char2 +@charban +2d Char2 -> bans Char2's for 2 days. --------------------------------------- diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt index a12719aead..7ffe172b5f 100644 --- a/doc/item_bonus.txt +++ b/doc/item_bonus.txt @@ -108,7 +108,7 @@ Atk/Def bonus bBaseAtk,n; Basic attack power + n bonus bAtk,n; ATK + n (unofficial) bonus bAtk2,n; ATK2 + n -bonus bAtkRate,n; Attack power + n% +bonus bAtkRate,n; Attack power + n% (unofficial) bonus bWeaponAtkRate,n; Weapon ATK + n% bonus bMatk,n; Magical attack power + n bonus bMatkRate,n; Magical attack power + n% @@ -206,10 +206,11 @@ bonus2 bSkillFixedCast,sk,t; Increases fixed cast time of skill sk by t mill bonus bVariableCast,t; Increases variable cast time of all skills by t milliseconds (has effect in RENEWAL_CAST only) bonus2 bSkillVariableCast,sk,t; Increases variable cast time of skill sk by t milliseconds (has effect in RENEWAL_CAST only) -bonus bNoCastCancel,n; Prevents casting from being interrupted when hit (does not work in GvG | n is meaningless) -bonus bNoCastCancel2,n; Prevents casting from being interrupted when hit (works even in GvG | n is meaningless) +bonus bNoCastCancel; Prevents casting from being interrupted when hit (does not work in GvG) +bonus bNoCastCancel2; Prevents casting from being interrupted when hit (works even in GvG) bonus bDelayrate,n; Increases skill delay by n% +bonus2 bSkillDelay,sk,t; Increases delay of skill sk by t milliseconds bonus2 bSkillCooldown,sk,t; Increases cooldown of skill sk by t milliseconds ============================= @@ -236,7 +237,7 @@ bonus2 bSubClass,c,x; +x% damage reduction against class c bonus2 bAddSize,s,x; +x% physical damage against size s bonus2 bMagicAddSize,s,x; +x% magical damage against size s bonus2 bSubSize,s,x; +x% damage reduction against size s -bonus bNoSizeFix,n; Ignores the size modifier when calculating damage (n is meaningless) +bonus bNoSizeFix; Ignores the size modifier when calculating damage bonus2 bAddDamageClass,mid,x; +x% physical damage against monster mid bonus2 bAddMagicDamageClass,mid,x; +x% magical damage against monster mid @@ -383,9 +384,9 @@ bonus3 bStateNoRecoverRace,r,x,t; Set a no recovery state of an enemy of race r HP/SP gain ------------ -bonus bHPGainValue,n; Heals +n HP when killing an enemy with a physical attack -bonus bSPGainValue,n; Heals +n SP when killing an enemy with a physical attack -bonus2 bSPGainRace,r,n; Heals +n SP when killing an enemy of race r with a physical attack +bonus bHPGainValue,n; Heals +n HP when killing an enemy with a melee-physical attack +bonus bSPGainValue,n; Heals +n SP when killing an enemy with a melee-physical attack +bonus2 bSPGainRace,r,n; Heals +n SP when killing an enemy of race r with a melee-physical attack bonus bMagicHPGainValue,n; Heals +n HP when killing an enemy with a magical attack bonus bMagicSPGainValue,n; Heals +n SP when killing an enemy with a magical attack @@ -397,18 +398,18 @@ bonus bMagicDamageReturn,n; Adds a n% chance to reflect targetted magic sp Strip/Break equipment --------------------- -bonus bUnstripableWeapon,n; Weapon cannot be taken off via Strip skills (n is meaningless) -bonus bUnstripableArmor,n; Armor cannot be taken off via Strip skills (n is meaningless) -bonus bUnstripableHelm,n; Helm cannot be taken off via Strip skills (n is meaningless) -bonus bUnstripableShield,n; Shield cannot be taken off via Strip skills (n is meaningless) -bonus bUnstripable,n; All equipment cannot be taken off via strip skills (n is meaningless) +bonus bUnstripableWeapon; Weapon cannot be taken off via Strip skills +bonus bUnstripableArmor; Armor cannot be taken off via Strip skills +bonus bUnstripableHelm; Helm cannot be taken off via Strip skills +bonus bUnstripableShield; Shield cannot be taken off via Strip skills +bonus bUnstripable; All equipment cannot be taken off via strip skills -bonus bUnbreakableGarment,n; Garment cannot be damaged/broken by any means (n is meaningless) -bonus bUnbreakableWeapon,n; Weapon cannot be damaged/broken by any means (n is meaningless) -bonus bUnbreakableArmor,n; Armor cannot be damaged/broken by any means (n is meaningless) -bonus bUnbreakableHelm,n; Helm cannot be damaged/broken by any means (n is meaningless) -bonus bUnbreakableShield,n; Shield cannot be damaged/broken by any means (n is meaningless) -bonus bUnbreakableShoes,n; Shoes cannot be damaged/broken by any means (n is meaningless) +bonus bUnbreakableGarment; Garment cannot be damaged/broken by any means +bonus bUnbreakableWeapon; Weapon cannot be damaged/broken by any means +bonus bUnbreakableArmor; Armor cannot be damaged/broken by any means +bonus bUnbreakableHelm; Helm cannot be damaged/broken by any means +bonus bUnbreakableShield; Shield cannot be damaged/broken by any means +bonus bUnbreakableShoes; Shoes cannot be damaged/broken by any means bonus bUnbreakable,n; Reduces the break chance of all equipped equipment by n% bonus bBreakWeaponRate,n; Adds a n/100% chance to break enemy's weapon while attacking (stacks with other break chances) @@ -443,12 +444,12 @@ bonus bSplashRange,n; Splash attack radius + n (only the highest among all bonus bSplashAddRange,n; Splash attack radius + n NOTE: n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc. bonus2 bAddSkillBlow,sk,n; Knock back the target by n cells when using skill sk -bonus bNoKnockback,n; Character is no longer knocked back by enemy skills with such effect (n is meaningless) -bonus bNoGemStone,n; Skills requiring Gemstones do not require them (n is meaningless) +bonus bNoKnockback; Character is no longer knocked back by enemy skills with such effect +bonus bNoGemStone; Skills requiring Gemstones do not require them NOTE: Hocus Pocus still requires 1 Yellow Gemstone, Ganbantein requirements not reduced -bonus bIntravision,n; Always see Hiding and Cloaking players/mobs (n is meaningless) -bonus bPerfectHide,n; Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless) -bonus bRestartFullRecover,n; When reviving, HP and SP are fully healed (n is meaningless) +bonus bIntravision; Always see Hiding and Cloaking players/mobs +bonus bPerfectHide; Hidden/cloaked character is no longer detected by monsters with 'detector' mode +bonus bRestartFullRecover; When reviving, HP and SP are fully healed bonus bClassChange,n; Gives a n/100% chance to change the attacked monster's class with normal attack bonus bAddStealRate,n; Increases success rate of Steal skill by n/100% -bonus bNoMadoFuel,n; Nullify Magic Gear Fuel requirement for skills. (n is meaningless) +bonus bNoMadoFuel; Nullify Magic Gear Fuel requirement for skills. diff --git a/doc/mapflags.txt b/doc/mapflags.txt index 981c225693..9606c33504 100644 --- a/doc/mapflags.txt +++ b/doc/mapflags.txt @@ -196,6 +196,8 @@ Disables usage of monster-spawning items on a map: - Poring Box (ID 12109) - Red Pouch (ID 12024) +Items listed above can be modified under db/(pre-)re/item_flag.txt + Note that when 'mob_warp' is enabled in '/conf/battle/monster.conf' and flag 4 is set, this will also prevent mobs from being warped onto the map (except slave mobs). @@ -318,7 +320,7 @@ This mapflag can also be used to adjust the damage of one skill by a percentage: 4 = against other (homunculus, mercenary, pet, elemental) Notes: - - You MUST enable ADJUST_SKILL_DAMAGE in 'src/config/core.h' for this mapflag to take effect. + - You MUST enable ADJUST_SKILL_DAMAGE in 'src/config/core.hpp' for this mapflag to take effect. - Each map can contain up to 5 adjustments (MAX_MAP_SKILL_MODIFIER in 'src/map/map.h'). --------------------------------------- diff --git a/doc/packet_interserv.txt b/doc/packet_interserv.txt index 4718eb61e1..5065298a43 100644 --- a/doc/packet_interserv.txt +++ b/doc/packet_interserv.txt @@ -130,24 +130,23 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket. 0x2720: Type: HA - Structure: .W .L .L .L .L .L - index: 0,2,6,10,14,18 - len: 22 + Structure: .W .L .L .L .L + index: 0,2,6,10,14 + len: 18 parameter: - cmd : packet identification (0x2720) - map_fd : - u_fd : - u_aid : - - u_group : - account_id : desc: - 0x2721: Type: AH - Structure: .W .L .L .L .L .B .33B .40B .16B .24B .L .L .L .33B .11B .?B .?B - index: 0,2,6,10,18,19,52,92,108,132,136,140,144,155,155+PINCODE_LENGTH - len: 155 + PINCODE_LENGTH + NAME_LENGTH + Structure: .W .L .L .L .L .B .33B .40B .16B .24B .L .L .L .11B .?B + index: 0,2,6,10,18,19,52,92,108,132,136,140,144,122+NAME_LENGTH + len: 122 + NAME_LENGTH parameter: - cmd : packet identification (0x2721) - map_fd @@ -162,9 +161,7 @@ Currently the max packet size is 0xFFFF (see 'WFIFOSET()' in 'src/common/socket. - group_id - logincount - state - - password - birthdate - - pincode - userid desc: - diff --git a/doc/sample/inarray.txt b/doc/sample/inarray.txt new file mode 100644 index 0000000000..8b1443d3b3 --- /dev/null +++ b/doc/sample/inarray.txt @@ -0,0 +1,115 @@ +//===== rAthena Script ======================================= +//= Sample: inarray +//===== By: ================================================== +//= rAthena Dev Team +//===== Last Updated: ======================================== +//= 20180424 +//===== Description: ========================================= +//= Demonstrates the 'inarray' and 'countinarray' commands. +//============================================================ + +prontera,160,190,3 script inarray sample 847,{ + switch(select("inarray:countinarray")){ + case 1: //inarray command test + mes "[inarray Test]"; + setarray .@array1[0],100,200,300,400,500,600,700; + setarray .@array2$[0],"One Hundred","Two Hundred","Three Hundred","Four Hundred","Five Hundred","Six Hundred","Seven Hundred"; + + mes .@array2$[inarray(.@array1,100)]; //return One Hundred + mes .@array2$[inarray(.@array1,300)]; //return Three Hundred + + //mes .@array2$[inarray(.@array1,800)]; //this will return with an error + //800 is not an element of the array .@array1 + + mes "" + inarray(.@array1,800); //this return -1 + //800 is not an element of the array .@array1 + + close; + case 2: //countinarray command test + switch(select("Basic:Advanced")){ + case 1: + mes "[countinarray Basic Test]"; + setarray .@array$[0],"rathena","ragnarok","poring","script"; + mes "the array elements: "; + for(.@i=0;.@i,; + +This command returns the index of the first matching value found in the array. +It will return -1 if the value is not found. + + setarray .@array[0], 100, 200, 300, 400, 500, 600, 100; + + inarray(.@array[0], 200); + //return 1 because 200 is in index 1 + //another way to say it that .@array[1] == 200 + + .@index = inarray(.@array[0], 600); + //.@index is now 5 because .@array[5] == 600 + + inarray(.@array[0], 100); + //while index 6 is also 100, the command will return the first instance it finds + //return 0 because .@array[0] == 100 + + inarray(.@array[0], 800); + //return -1 because 800 is not an element of the array .@array + +For more details, see the sample in 'doc/sample/inarray.txt'. + +--------------------------------------- + +*countinarray {[]},{[]}; + +This command will check for matches between the array values and return the number of matches. +While being optional, if [] is supplied, the search will begin from the given index value. + + setarray .@array[0], 100, 200, 300, 400, 500, 600; + + .@variable = 100; + if(countinarray(.@array[0], .@variable)) + mes "The number 100 was found in the array @array"; + + countinarray(.@array[0], .@variable); + //return 1 because the number 100 is an element of the array .@array + + setarray .@array2[0],100,500; + countinarray(.@array[0], .@array2[0]); + //return 2 because the numbers 100 and 500 are elements of the array .@array + + setarray .@array3[0],100,700; + countinarray(.@array[0], .@array3[0]); + //return 1 because the number 100 is an element of the array .@array + //but the number 700 is not an element of the array .@array + + //also you can change the position between the arrays in the command + if(countinarray(.@array[0], .@array3[0]) == countinarray(.@array3[0], .@array[0])) + //This is true + +For more details, see the sample in 'doc/sample/inarray.txt'. + +--------------------------------------- + *sortarray(); This command will do an in-place sort on an array specified in . @@ -2780,6 +2852,8 @@ REFINE_COST_OVER10 - For refining over +10 REFINE_COST_HD - For refining with HD ores REFINE_COST_ENRICHED - For refining with enriched ores REFINE_COST_OVER10_HD - For refining over +10 with HD ores +REFINE_COST_HOLINK - For refining at Holink in Malangdo +REFINE_COST_WAGJAK - For refining at Refining Machine Wagjak in the Novice Academy This function will return required cost for refining based on argument. @@ -2821,21 +2895,36 @@ This command sets a bunch of arrays with a complete list of whatever the invoking character has in their inventory, including all the data needed to recreate these items perfectly if they are destroyed. Here's what you get: -@inventorylist_id[] - array of item ids. -@inventorylist_amount[] - their corresponding item amounts. -@inventorylist_equip[] - on which position the item is equipped (see EQP_* constants) - It will contain 0 if the item is not equipped. -@inventorylist_refine[] - for how much it is refined. -@inventorylist_identify[] - whether it is identified. -@inventorylist_attribute[] - whether it is broken. -@inventorylist_card1[] - These four arrays contain card data for the items. -@inventorylist_card2[] These data slots are also used to store names -@inventorylist_card3[] inscribed on the items, so you can explicitly check -@inventorylist_card4[] if the character owns an item made by a specific - craftsman. -@inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires. -@inventorylist_bound[] - the bound type of the items (see BOUND_* constants) -@inventorylist_count - the number of items in these lists. +@inventorylist_id[] - array of item ids. +@inventorylist_amount[] - their corresponding item amounts. +@inventorylist_equip[] - on which position the item is equipped (see EQP_* constants) + It will contain 0 if the item is not equipped. +@inventorylist_refine[] - for how much it is refined. +@inventorylist_identify[] - whether it is identified. +@inventorylist_attribute[] - whether it is broken. +@inventorylist_card1[] - These four arrays contain card data for the items. +@inventorylist_card2[] These data slots are also used to store names +@inventorylist_card3[] inscribed on the items, so you can explicitly check +@inventorylist_card4[] if the character owns an item made by a specific + craftsman. +@inventorylist_expire[] - expire time (Unix time stamp). 0 means never expires. +@inventorylist_bound[] - the bound type of the items (see BOUND_* constants) +@inventorylist_count - the number of items in these lists. +@inventorylist_option_id1[] - first array of random option IDs +@inventorylist_option_value1[] - first array of random option values +@inventorylist_option_parameter1[] - first array of random option parameters +@inventorylist_option_id2[] - second array of random option IDs +@inventorylist_option_value2[] - second array of random option values +@inventorylist_option_parameter2[] - second array of random option parameters +@inventorylist_option_id3[] - third array of random option IDs +@inventorylist_option_value3[] - third array of random option values +@inventorylist_option_parameter3[] - third array of random option parameters +@inventorylist_option_id4[] - fourth array of random option IDs +@inventorylist_option_value4[] - fourth array of random option values +@inventorylist_option_parameter4[] - fourth array of random option parameters +@inventorylist_option_id5[] - fifth array of random option IDs +@inventorylist_option_value5[] - fifth array of random option values +@inventorylist_option_parameter5[] - fifth array of random option parameters This could be handy to save/restore a character's inventory, since no other command returns such a complete set of data, and could also be the only way to @@ -5271,6 +5360,66 @@ invoking character. --------------------------------------- +*mail ,"","","<body>"{,<zeny>{,<item id array>,<item amount array>{,<item card0 array>{,<item card1 array>{,<item card2 array>{,<item card3 array> + {,<random option id0 array>, <random option value0 array>, <random option paramter0 array>{,<random option id1 array>, <random option value1 array>, <random option paramter1 array> + {,<random option id2 array>, <random option value2 array>, <random option paramter2 array>{,<random option id3 array>, <random option value3 array>, <random option paramter3 array> + {,<random option id4 array>, <random option value4 array>, <random option paramter4 array>}}}}}}}; + +This command will send mail to the <destination id> which is a character ID. +A <sender name> can be specified but does not have to be from the direct creator +of the mail and is limited to NAME_LENGTH (24) characters. Mail <title> is limited +to MAIL_TITLE_LENGTH (40) characters. Mail <body> is limited to MAIL_BODY_LENGTH +(200) characters for PACKETVER < 20150513 or 500 characters for later clients. + +Optional <zeny> and item data can be added to the mail as well. PACKETVER < 20150513 +is limited to 1 item while later clients are limited to MAIL_MAX_ITEM (5). + +The <item id array>, <item amount array>, <item card0 array>, <item card1 array>, +<item card2 array>, and <item card3 array> should all be integer arrays. + +For random options there can be 5 arrays in pairs of 3 (ids, values, parameters) right after the cards. +All of these arrays shall be integer arrays as well. + +Example of sending mail with zeny: + .@charid = getcharid(0); + .@sender$ = "Poring"; + .@title$ = "Welcome"; + .@body$ = "Hi! I'm a simple Poring from the Prontera fields! Welcome to Ragnarok!"; + .@zeny = 5000; + mail .@charid, .@sender$, .@title$, .@body$, .@zeny; + +Example of sending mail with items: + .@charid = getcharid(0); + .@sender$ = "Angeling"; + .@title$ = "Welcome"; + .@body$ = "Hi! I'm a simple Angeling from the Prontera fields! Welcome to Ragnarok!"; + .@zeny = 0; + setarray .@mailitem[0], 504, 505, 2220, 1214; // White Potion, Blue Potion, Hat, Dagger + setarray .@mailamount[0], 10, 5, 1, 1; // 10 White Potions, 5 Blue Potions, 1 Hat, 1 Dagger + setarray .@mailcard0[0], 0, 0, 4198, 4092; // Attach Maya Purple Card to the Hat, Attach Skeleton Worker Card to Dagger + setarray .@mailcard1[0], 0, 0, 0, 4092; // Attach Skeleton Worker Card to Dagger + setarray .@mailcard2[0], 0, 0, 0, 4092; // Attach Skeleton Worker Card to Dagger + mail .@charid, .@sender$, .@title$, .@body$, .@zeny, .@mailitem, .@mailamount, .@mailcard0, .@mailcard1, .@mailcard2; + +Example of sending mail with items and random options: + .@charid = getcharid(0); + .@sender$ = "Angeling"; + .@title$ = "Welcome"; + .@body$ = "Hi! I'm a simple Angeling from the Prontera fields! Welcome to Ragnarok!"; + .@zeny = 0; + setarray .@mailitem[0], 504, 505, 2220, 1214; // White Potion, Blue Potion, Hat, Dagger + setarray .@mailamount[0], 10, 5, 1, 1; // 10 White Potions, 5 Blue Potions, 1 Hat, 1 Dagger + setarray .@mailcard0[0], 0, 0, 4198, 4092; // Attach Maya Purple Card to the Hat, Attach Skeleton Worker Card to Dagger + setarray .@mailcard1[0], 0, 0, 0, 4092; // Attach Skeleton Worker Card to Dagger + setarray .@mailcard2[0], 0, 0, 0, 4092; // Attach Skeleton Worker Card to Dagger + setarray .@mailcard3[0], 0, 0, 0, 0; // Empty last slot + setarray .@mailrndopt_id0[0], 0, 0, 0, 0, RDMOPT_VAR_MAXHPAMOUNT; // Enchant the Dagger with increased HP option + setarray .@mailrndopt_val0[0], 0, 0, 0, 0, 1000; // Enchant the Dagger with increased HP option by 1000 points + setarray .@mailrndopt_prm0[0], 0, 0, 0, 0, 0; // Enchant the Dagger with increased HP option - does not need any parameter + mail .@charid, .@sender$, .@title$, .@body$, .@zeny, .@mailitem, .@mailamount, .@mailcard0, .@mailcard1, .@mailcard2, .@mailcard3, .@mailrndopt_id0, .@mailrndopt_val0, .@mailrndopt_prm0; + +--------------------------------------- + *openauction({<char_id>}); This will open the Auction window on the client connected to the invoking character. @@ -7644,6 +7793,7 @@ Parameters (indexes) for monsters are: UMOB_AMOTION UMOB_ADELAY UMOB_DMOTION + UMOB_TARGETID ----- @@ -7687,6 +7837,7 @@ Parameter (indexes) for homunculi are: UHOM_AMOTION UHOM_ADELAY UHOM_DMOTION + UHOM_TARGETID ----- @@ -7768,6 +7919,7 @@ Parameter (indexes) for mercenaries are: UMER_AMOTION UMER_ADELAY UMER_DMOTION + UMER_TARGETID ----- @@ -7810,6 +7962,7 @@ Parameter (indexes) for elementals are: UELE_AMOTION UELE_ADELAY UELE_DMOTION + UELE_TARGETID ----- @@ -9118,6 +9271,8 @@ currently has active. Valid types are: PETINFO_RENAMED - Pet rename flag. 0 means this pet has not been named yet. PETINFO_LEVEL - Pet level PETINFO_BLOCKID - Pet Game ID + PETINFO_EGGID - Pet egg item id + PETINFO_FOODID - Pet food item id --------------------------------------- diff --git a/doc/source_doc.txt b/doc/source_doc.txt index 1dbbda454d..d940041aa6 100644 --- a/doc/source_doc.txt +++ b/doc/source_doc.txt @@ -180,7 +180,6 @@ The following list describes each module and its purpose. Module Description ------ ----------- - atomic adapter to atomic operations for Windows API cbasetypes adapter to OS and arch specification (function name, bit representation) cli console Line Interface handling (get arguments from terminal at beginning and runtime) conf facade of libconfig api @@ -188,26 +187,18 @@ The following list describes each module and its purpose. db database module (create, parse, and destroy databases) des Data Encryption Standard algorithm modified for rAthena ers Entry Reusage System to help memory allocation - evdp handles events grfio handles *.grf files (searches for files in them and decodes them) malloc handles runtime memory allocation (so that memory manager could check for leaks) mapindex handles the processing and reading of the mapcache.dat md5calc offers md5 encryption - mempool handles shared memory pool for thread support mmo.h common structures and defines across serv msg_conf handles msg in src from configuration - mutex handles Mutual exclusion (Mutex) for thread support - netbuffer iobuffer initialisation for thread support - network updated socket module, with ipv6 and thread support nullpo checks and dumps info for debug mode - raconf processes the conf files random generation of random numbers showmsg display messages in console with a certain color socket handling of sockets (listening, close, open, etc.) - spinlock handles synchronization (waiting loop) for thread support sql.c MySQL database proxy strlib.c string handling - thread.c thread creation and destruction timer.c timer-related functions utils.c misc functions winapi.h Windows redefine and include diff --git a/doc/status_change.txt b/doc/status_change.txt index 0b4be64664..80da69881f 100644 --- a/doc/status_change.txt +++ b/doc/status_change.txt @@ -14,7 +14,7 @@ //= some SCs with iteration check maybe will fail to give //= iteration check if flag SCSTART_LOADED is given. //===== Format: ========================================= -//= <SC_Name> (<Default_SI>) +//= <SC_Name> (<Default_EFST>) //= desc: <any description or info related this status> //= val1: <usage for> //= val2: <usage for> @@ -64,7 +64,7 @@ SC_BLIND () desc: HIT -25%; FLEE -25%; Black out the outter part of the screen val1: -SC_BLEEDING (SI_BLEEDING) +SC_BLEEDING (EFST_BLOODING) desc: HP Regeneration is disabled; SP Regeneration is disabled; Lose HP overtime val1: Skill Level val2: Caster's object ID (for mob_log_damage) @@ -78,179 +78,179 @@ SC_DPOISON () val3: val4: Remaining tick -SC_PROVOKE (SI_PROVOKE) +SC_PROVOKE (EFST_PROVOKE) desc: Decrease DEF by (5+(5*Skill Lv))%; Increase ATK by (2+(3*Skill lv))% val1: -SC_ENDURE (SI_ENDURE) +SC_ENDURE (EFST_ENDURE) desc: Increase MDEF by (Skill Lv); Doesn't get flinched when attacked val1: -SC_TWOHANDQUICKEN (SI_TWOHANDQUICKEN) +SC_TWOHANDQUICKEN (EFST_TWOHANDQUICKEN) desc: ASPD +30% val1: -SC_CONCENTRATE (SI_CONCENTRATE) +SC_CONCENTRATE (EFST_CONCENTRATION) desc: Increase AGI by (2+Skill Lv)%; Increase DEX by (2+Skill Lv)%; Reveal hidden enemies in 3x3 area around caster val1: -SC_HIDING (SI_HIDING) +SC_HIDING (EFST_HIDING) desc: Set OPTION_HIDE val1: -SC_CLOAKING (SI_CLOAKING) +SC_CLOAKING (EFST_CLOAKING) desc: Set OPTION_CLOAK val1: -SC_ENCPOISON (SI_ENCPOISON) +SC_ENCPOISON (EFST_ENCHANTPOISON) desc: Change weapon element to ELE_POISON; Poisoning chance is (2.5+0.5%) val1: -SC_POISONREACT (SI_POISONREACT) +SC_POISONREACT (EFST_POISONREACT) desc: Increase ATK by (100+30*Skill Lv))%; Counter physical attack with Envenoms skill val1: -SC_QUAGMIRE (SI_QUAGMIRE) +SC_QUAGMIRE (EFST_QUAGMIRE) desc: Removes Increase AGI, Twhohand Quicken, Wind Walk, Adrenaline Rush, Attention Concentrate, Cart Boost, True Sight, Magnetic Field & Onehand Quicken skill effect; Movement Speed -50; Decrease AGI & DEX by (10*Skill Lv) but can't below 75% for players and 50% for mobs val1: -SC_ANGELUS (SI_ANGELUS) +SC_ANGELUS (EFST_ANGELUS) desc: Increase DEF by (5*Skill Lv)% val1: -SC_BLESSING (SI_BLESSING) +SC_BLESSING (EFST_BLESSING) desc: Increase STR, DEX & INT by (Skill Lv); Removes Stone and Curse status. If used on mobs will reduce their DEX and INT by 50% val1: -SC_SIGNUMCRUCIS (SI_SIGNUMCRUCIS) +SC_SIGNUMCRUCIS (EFST_CRUCIS) desc: Decrease DEF of Undead and Demon mobs by (10+(4*Skill Lv))% on screen val1: -SC_INCREASEAGI (SI_INCREASEAGI) +SC_INCREASEAGI (EFST_INC_AGI) desc: Increase AGI and walkspeed, AL_INCAGI effect val1: (hardcoded) -SC_DECREASEAGI (SI_DECREASEAGI) +SC_DECREASEAGI (EFST_DEC_AGI) desc: Decrease AGI and walkspeed, AL_DECAGI effect val1: (hardcoded) -SC_SLOWPOISON (SI_SLOWPOISON) +SC_SLOWPOISON (EFST_SLOWPOISON) desc: Stop the HP reduction of SC_POISON val1: -SC_IMPOSITIO (SI_IMPOSITIO) +SC_IMPOSITIO (EFST_IMPOSITIO) desc: Increase ATK by (5*Skill Lv) val1: -SC_SUFFRAGIUM (SI_SUFFRAGIUM) +SC_SUFFRAGIUM (EFST_SUFFRAGIUM) desc: Cast time decreased by (15*Skill Lv)% val1: -SC_ASPERSIO (SI_ASPERSIO) +SC_ASPERSIO (EFST_ASPERSIO) desc: Change weapon element to ELE_HOLY val1: -SC_BENEDICTIO (SI_BENEDICTIO) +SC_BENEDICTIO (EFST_BENEDICTIO) desc: Change armor element to ELE_HOLY val1: -SC_KYRIE (SI_KYRIE) +SC_KYRIE (EFST_KYRIE) desc: Remove SC_ASSUMPTIO skill effect; Block damage with a total of (MaxHP*(Skill Lv*2+10)/100) or ((Skill Lv/2)+5) times val1: -SC_MAGNIFICAT (SI_MAGNIFICAT) +SC_MAGNIFICAT (EFST_MAGNIFICAT) desc: SP Regeneration speed x2 val1: -SC_GLORIA (SI_GLORIA) +SC_GLORIA (EFST_GLORIA) desc: LUK +30 val1: -SC_AETERNA (SI_AETERNA) +SC_AETERNA (EFST_LEXAETERNA) desc: Damaged received x2 val1: -SC_ADRENALINE (SI_ADRENALINE) +SC_ADRENALINE (EFST_ADRENALINE) desc: ASPD of Axe & Mace weapons x2 val1: -SC_WEAPONPERFECTION (SI_WEAPONPERFECTION) +SC_WEAPONPERFECTION (EFST_WEAPONPERFECT) desc: Ignore damage reduction to any monster size val1: -SC_OVERTHRUST (SI_OVERTHRUST) +SC_OVERTHRUST (EFST_OVERTHRUST) desc: Increase ATK by (5*Skill Lv)%; Add a 0.1% of breaking the equipped weapon [except Axes, Maces & Unbreakable weapons] val1: -SC_MAXIMIZEPOWER (SI_MAXIMIZEPOWER) +SC_MAXIMIZEPOWER (EFST_MAXIMIZE) desc: SP Regeneration is disabled; Damage dealt is always the max damage val1: -SC_TRICKDEAD (SI_TRICKDEAD) +SC_TRICKDEAD (EFST_TRICKDEAD) desc: HP & SP Regeneration is disabled; Remove SC_DANCING val1: -SC_LOUD (SI_LOUD) +SC_LOUD (EFST_SHOUT) desc: STR +4 val1: -SC_ENERGYCOAT (SI_ENERGYCOAT) +SC_ENERGYCOAT (EFST_ENERGYCOAT) desc: Reduce damage received according to current MaxSP % val1: -SC_BROKENARMOR (SI_BROKENARMOR) - desc: Shows SI_BROKENARMOR status if the armor is broken +SC_BROKENARMOR (EFST_BROKENARMOR) + desc: Shows EFST_BROKENARMOR status icon if the armor is broken val1: -SC_BROKENWEAPON (SC_BROKENWEAPON) - desc: Shows SC_BROKENWEAPON status if the armor is broken +SC_BROKENWEAPON (EFST_BROKENWEAPON) + desc: Shows EFST_BROKENWEAPON status icon if the armor is broken val1: -SC_HALLUCINATION (SI_HALLUCINATION) +SC_HALLUCINATION (EFST_ILLUSION) desc: The screen goes wavy and you see crazy numbers for all damage that is processed around you, but they are all fake. Even other players see those numbers at you. val1: -SC_WEIGHT50 (SI_WEIGHT50) - desc: Shows SI_WEIGHT50 status icon if Weight >= 50% +SC_WEIGHT50 (EFST_WEIGHTOVER50) + desc: Shows EFST_WEIGHTOVER50 status icon if Weight >= 50% val1: -SC_WEIGHT90 (SI_WEIGHT90) - desc: Shows SI_WEIGHT90 status icon if Weight >= 90% +SC_WEIGHT90 (EFST_WEIGHTOVER90) + desc: Shows EFST_WEIGHTOVER90 status icon if Weight >= 90% val1: -SC_ASPDPOTION0 (SI_ASPDPOTION0) +SC_ASPDPOTION0 (EFST_ATTHASTE_POTION1) desc: Increase ASPD, won't be stacked with SC_ASPDPOTION1, SC_ASPDPOTION2, SC_ASPDPOTION3 val1: +ASPD (Renewal) val2: +% ASPD (Pre-Renewal) -SC_ASPDPOTION1 (SI_ASPDPOTION1) +SC_ASPDPOTION1 (EFST_ATTHASTE_POTION2) desc: Increase ASPD, won't be stacked with SC_ASPDPOTION0, SC_ASPDPOTION2, SC_ASPDPOTION3 val1: +ASPD (Renewal) val2: +% ASPD (Pre-Renewal) -SC_ASPDPOTION2 (SI_ASPDPOTION2) +SC_ASPDPOTION2 (EFST_ATTHASTE_POTION3) desc: Increase ASPD, won't be stacked with SC_ASPDPOTION0, SC_ASPDPOTION1, SC_ASPDPOTION3 val1: +ASPD (Renewal) val2: +% ASPD (Pre-Renewal) -SC_ASPDPOTION3 (SI_ASPDPOTION3) +SC_ASPDPOTION3 (EFST_ATTHASTE_INFINITY) desc: Increase ASPD, won't be stacked with SC_ASPDPOTION0, SC_ASPDPOTION1, SC_ASPDPOTION2 val1: + ASPD (Renewal) val2: +% ASPD (Pre-Renewal) -SC_SPEEDUP0 (SI_MOVHASTE_HORSE) +SC_SPEEDUP0 (EFST_MOVHASTE_HORSE) desc: Increase/change walkspeed rate. This effect won't be stacked with bonus bSpeedRate val1: +% Walkspeed -SC_SPEEDUP1 (SI_SPEEDPOTION1) +SC_SPEEDUP1 (EFST_MOVHASTE_POTION) desc: Increase/change walkspeed rate. This effect won't be stacked with bonus bSpeedRate val1: +% Walkspeed -SC_ATKPOTION (SI_PLUSATTACKPOWER) +SC_ATKPOTION (EFST_PLUSATTACKPOWER) desc: Increase Atk val1: +Atk -SC_MATKPOTION (SI_PLUSMAGICPOWER) +SC_MATKPOTION (EFST_PLUSMAGICPOWER) desc: Increase MAtk val1: +MAtk @@ -262,7 +262,7 @@ SC_SLOWDOWN () desc: Reduce walkspeed rate val1: -% Walkspeed -SC_ANKLE (SI_ANKLESNARE) +SC_ANKLE (EFST_ANKLESNARE) desc: Set DEF to (AGI*50); Can't move val1: @@ -270,63 +270,63 @@ SC_KEEPING () desc: Set DEF to 90 val1: -SC_BARRIER (SI_BARRIER) +SC_BARRIER (EFST_BARRIER) desc: Set DEF to 100 val1: -SC_STRIPWEAPON (SI_STRIPWEAPON) +SC_STRIPWEAPON (EFST_NOEQUIPWEAPON) desc: Unequip weapon; On mob ATK -25% val1: -SC_STRIPSHIELD (SI_STRIPSHIELD) +SC_STRIPSHIELD (EFST_NOEQUIPSHIELD) desc: Unequip shield; On mob DEF -15% val1: -SC_STRIPARMOR (SI_STRIPARMOR) +SC_STRIPARMOR (EFST_NOEQUIPARMOR) desc: Unequip armor; On mob VIT -40% val1: -SC_STRIPHELM (SI_STRIPHELM) +SC_STRIPHELM (EFST_NOEQUIPHELM) desc: Unequip helm; On mob INT -40% val1: -SC_CP_WEAPON (SI_CP_WEAPON) +SC_CP_WEAPON (EFST_PROTECTWEAPON) desc: Protects equipped weapon from damage and strip skill val1: -SC_CP_SHIELD (SI_CP_SHIELD) +SC_CP_SHIELD (EFST_PROTECTSHIELD) desc: Protects equipped shield from damage and strip skill val1: -SC_CP_ARMOR (SI_CP_ARMOR) +SC_CP_ARMOR (EFST_PROTECTARMOR) desc: Protects equipped armor from damage and strip skill val1: -SC_CP_HELM (SI_CP_HELM) +SC_CP_HELM (EFST_PROTECTHELM) desc: Protects equipped helm from damage and strip skill val1: -SC_AUTOGUARD (SI_AUTOGUARD) +SC_AUTOGUARD (EFST_AUTOGUARD) desc: Blocks short and long range physical attacks at a certain chance, and stops the caster for 0.3 seconds if it's activated val1: -SC_REFLECTSHIELD (SI_REFLECTSHIELD) +SC_REFLECTSHIELD (EFST_REFLECTSHIELD) desc: Reflects (10+(3*Skill Lv))% of short ranged physical attack back to the attacker val1: -SC_SPLASHER (SI_SPLASHER) +SC_SPLASHER (EFST_SPLASHER) desc: This skill will only work once the target's HP is 1/3 or less of its Max HP. When struck by this skill, the target will explode and damage other enemies in it's vicinity val1: -SC_PROVIDENCE (SI_PROVIDENCE) +SC_PROVIDENCE (EFST_PROVIDENCE) desc: Increase party members' resistance to RC_Demon and Ele_Holy monsters val1: -SC_DEFENDER (SI_DEFENDER) +SC_DEFENDER (EFST_DEFENDER) desc: Decrease (5+(15*Skill Lv))% damage taken from long range attack; Decrease (25+(5*Skill Lv)) ASPD val1: -SC_MAGICROD (SI_MAGICROD) +SC_MAGICROD (EFST_MAGICROD) desc: Gain (Skill Lv*20)% of SP consumed by the skill used from enemy; Damage received becomes 0; Drain 20% of enemy's Max SP val1: @@ -334,7 +334,7 @@ SC_SPELLBREAKER () desc: Gain SP used by enemy to cast the spell, and interrupt the magic cast. At lv 5, gain 1% from enemy max hp. val1: -SC_AUTOSPELL (SI_AUTOSPELL) +SC_AUTOSPELL (EFST_AUTOSPELL) desc: Auto cast several learned magic spells by using 2/3 of SP cost of the skill, but only when attacking with physical attacks. val1: @@ -342,15 +342,15 @@ SC_SIGHTTRASHER () desc: (not exist) val1: -SC_AUTOBERSERK (SI_AUTOBERSERK) +SC_AUTOBERSERK (EFST_AUTOBERSERK) desc: If HP<25%, set SC_PROVOKE lv 10 on self val1: -SC_SPEARQUICKEN (SI_SPEARQUICKEN) +SC_SPEARQUICKEN (EFST_SPEARQUICKEN) desc: When using spear, +ASPD (20+(1*Skill Lv))%, +CRIT (3+(10*Skill Lv)), +FLEE (2*Skill Lv) val1: -SC_AUTOCOUNTER (SI_AUTOCOUNTER) +SC_AUTOCOUNTER (EFST_AUTOCOUNTER) desc: Hitrate +20%; If attacked by close range, automatically retaliate with crit*2 val1: @@ -366,11 +366,11 @@ SC_RUWACH () desc: Reveal hidden target and deal little damages if enemy is under SC_HIDING/SC_CLOAKING/SC_CAMOUFLAGE/SC_CLOAKINGEXCEED; Set OPTION_RUWACH val1: -SC_EXTREMITYFIST (SI_EXTREMITYFIST) +SC_EXTREMITYFIST (EFST_EXTREMITYFIST) desc: Stop SP Regeneration by setting RGN_SP val1: -SC_EXPLOSIONSPIRITS (SI_EXPLOSIONSPIRITS) +SC_EXPLOSIONSPIRITS (EFST_EXPLOSIONSPIRITS) desc: Stop SP Regeneration by setting RGN_SP; +Crit val1: @@ -382,35 +382,35 @@ SC_BLADESTOP_WAIT () desc: val1: -SC_BLADESTOP (SI_BLADESTOP) +SC_BLADESTOP (EFST_BLADESTOP) desc: Stops player and target; Set OPT3_BLADESTOP val1: -SC_FIREWEAPON (SI_FIREWEAPON) +SC_FIREWEAPON (EFST_PROPERTYFIRE) desc: Change weapon element to Fire element val1: -SC_WATERWEAPON (SI_WATERWEAPON) +SC_WATERWEAPON (EFST_PROPERTYWATER) desc: Change weapon element to Water element val1: -SC_WINDWEAPON (SI_WINDWEAPON) +SC_WINDWEAPON (EFST_PROPERTYWIND) desc: Change weapon element to Wind element val1: -SC_EARTHWEAPON (SI_EARTHWEAPON) +SC_EARTHWEAPON (EFST_PROPERTYGROUND) desc: Change weapon element to Earth element val1: -SC_VOLCANO (SI_LANDENDOW) +SC_VOLCANO (EFST_GROUNDMAGIC) desc: +watk of ELE_FIRE user val1: -SC_DELUGE (SI_LANDENDOW) +SC_DELUGE (EFST_GROUNDMAGIC) desc: +Max HP of ELE_WATER user val1: -SC_VIOLENTGALE (SI_LANDENDOW) +SC_VIOLENTGALE (EFST_GROUNDMAGIC) desc: +FLEE of ELE_WIND user val1: @@ -433,33 +433,33 @@ SC_NOCHAT () desc: Can't chat, pick item, drop item val1: -SC_BABY (SI_BABY) +SC_BABY (EFST_PROTECTEXP) desc: val1: -SC_AURABLADE (SI_AURABLADE) +SC_AURABLADE (EFST_AURABLADE) desc: Set OPT3_AURABLADE; Add damage by (20*Skill Lv) which ignore caster's accuracy rate/target's DEF val1: -SC_PARRYING (SI_PARRYING) +SC_PARRYING (EFST_PARRYING) desc: Block using a 2H-Sword with chance (20+(3*Skill Lv))% val1: -SC_CONCENTRATION (SI_CONCENTRATION) +SC_CONCENTRATION (EFST_LKCONCENTRATION) desc: Lv 1 Endurace effect; +WATK; +HIT; -DEF val1: val2: 5*val1; // Batk/Watk Increase val3: 10*val1; // Hit Increase val4: 5*val1; // Def reduction -SC_TENSIONRELAX (SI_TENSIONRELAX) +SC_TENSIONRELAX (EFST_TENSIONRELAX) desc: Increase HP regeneration rate while sitting val1: val2: 12; // SP cost val3: tick/val4; val4: 10000; // Decrease at 10secs intervals. -SC_BERSERK (SI_BERSERK) +SC_BERSERK (EFST_BERSERK) desc: Stop HP+SP Regen; Can't use skill; Can't chat; -FLEE; +Max HP; +Movement Speed; +ATK; Set OPT3_BERSERK; -5%HP per 10 second; Set DEF+MDEF to 0 val1: val2: HP Penalty (5% of Max HP) @@ -470,11 +470,11 @@ SC_FURY () desc: val1: -SC_GOSPEL (SI_GOSPEL) +SC_GOSPEL (EFST_GOSPEL) desc: Can't move; Gives a random status to party member and also enemy. val1: -SC_ASSUMPTIO (RE: SI_ASSUMPTIO2. Pre-RE: SI_ASSUMPTIO) +SC_ASSUMPTIO (RE: EFST_ASSUMPTIO2. Pre-RE: EFST_ASSUMPTIO) desc: HP_ASSUMPTIO's effect val1: Level (unused) @@ -486,50 +486,50 @@ SC_GUILDAURA () desc: val1: -SC_MAGICPOWER (SI_MAGICPOWER) +SC_MAGICPOWER (EFST_MAGICPOWER) desc: +MATK by (Skill Lv*5)% for the next magic skill that is cast val1: -SC_EDP (SI_EDP) +SC_EDP (EFST_EDP) desc: +WATK by (100+(Skill Lv*80)) val1: Skill Lv val2: Chance to Poison enemy (val1+2)% val3: Damage increased by (50*(val1+1)) -SC_TRUESIGHT (SI_TRUESIGHT) +SC_TRUESIGHT (EFST_TRUESIGHT) desc: All stat +5; Damage +(2*Skill Lv)%; Crit +(Skill Lv); Hit +(3*Skill Lv)% val1: Skill Lv val2: Crit val3: Hit -SC_WINDWALK (SI_WINDWALK) +SC_WINDWALK (EFST_WINDWALK) desc: +Flee; +Movement speed val1: Skill Lv val2: Flee -SC_MELTDOWN (SI_MELTDOWN) +SC_MELTDOWN (EFST_MELTDOWN) desc: Breaks target's weapon and armor at a certain chance val1: Skill Lv val2: Chance to break weapon (100*Skill Lv) val3: Change to break armor (70*Skill Lv) -SC_CARTBOOST (SI_CARTBOOST) +SC_CARTBOOST (EFST_CARTBOOST) desc: val1: -SC_CHASEWALK (SI_CHASEWALK) +SC_CHASEWALK (EFST_CHASEWALK) desc: val1: -SC_REJECTSWORD (SI_REJECTSWORD) +SC_REJECTSWORD (EFST_SWORDREJECT) desc: val1: -SC_MARIONETTE (SI_MARIONETTE) +SC_MARIONETTE (EFST_MARIONETTE_MASTER) desc: val1: -SC_MARIONETTE2 (SI_MARIONETTE2) +SC_MARIONETTE2 (EFST_MARIONETTE) desc: val1: @@ -541,23 +541,23 @@ SC_JOINTBEAT () desc: val1: -SC_MINDBREAKER (SI_MINDBREAKER) +SC_MINDBREAKER (EFST_MINDBREAKER) desc: val1: -SC_MEMORIZE (SI_MEMORIZE) +SC_MEMORIZE (EFST_MEMORIZE) desc: val1: -SC_FOGWALL (SI_FOGWALL) +SC_FOGWALL (EFST_FOGWALL) desc: val1: -SC_SPIDERWEB (SI_SPIDERWEB) +SC_SPIDERWEB (EFST_SPIDERWEB) desc: val1: -SC_DEVOTION (SI_DEVOTION) +SC_DEVOTION (EFST_DEVOTION) desc: val1: @@ -681,7 +681,7 @@ SC_DANCING () desc: val1: -SC_ELEMENTALCHANGE (SI_ARMOR_PROPERTY) +SC_ELEMENTALCHANGE (EFST_ARMOR_PROPERTY) desc: Change armor element val1: Element level val2: Element (see doc/item_bonus.txt) @@ -710,7 +710,7 @@ SC_INTOABYSS () desc: val1: -SC_SIEGFRIED (SI_SIEGFRIED) +SC_SIEGFRIED (EFST_SIEGFRIED) desc: Status change for BD_SIEGFRIED val1: BD_SIEGFRIED Skill level val2: Increase val2% damage reduction from non-Nuetral elemental attack @@ -839,47 +839,47 @@ SC_INCDEFRATE () desc: Increase Defense val1: +% Def -SC_STRFOOD (SI_STRFOOD) +SC_STRFOOD (EFST_FOOD_STR) desc: Increase STR (cannot be stacked with SC_FOOD_STR_CASH, ignored if value is lower) val1: +STR -SC_AGIFOOD (SI_AGIFOOD) +SC_AGIFOOD (EFST_FOOD_AGI) desc: Increase AGI (cannot be stacked with SC_FOOD_AGI_CASH, ignored if value is lower) val1: +AGI -SC_VITFOOD (SI_VITFOOD) +SC_VITFOOD (EFST_FOOD_VIT) desc: Increase VIT (cannot be stacked with SC_FOOD_VIT_CASH, ignored if value is lower) val1: +VIT -SC_INTFOOD (SI_FOODINT) +SC_INTFOOD (EFST_FOOD_INT) desc: Increase INT (cannot be stacked with SC_FOOD_INT_CASH, ignored if value is lower) val1: +INT -SC_DEXFOOD (SI_DEXFOOD) +SC_DEXFOOD (EFST_FOOD_DEX) desc: Increase DEX (cannot be stacked with SC_FOOD_DEX_CASH, ignored if value is lower) val1: +DEX -SC_LUKFOOD (SI_LUKFOOD) +SC_LUKFOOD (EFST_FOOD_LUK) desc: Increase LUK (cannot be stacked with SC_FOOD_LUK_CASH, ignored if value is lower) val1: +LUK -SC_HITFOOD (SI_HITFOOD) +SC_HITFOOD (EFST_FOOD_BASICHIT) desc: Increase HIT (food-type effect) val1: +Hit -SC_FLEEFOOD (SI_FLEEFOOD) +SC_FLEEFOOD (EFST_FOOD_BASICAVOIDANCE) desc: Increase FLEE (food-type effect) val1: +Flee -SC_BATKFOOD (SI_BATKFOOD) +SC_BATKFOOD () desc: Increase Base Attack (food-type effect) val1: +BaseAttack -SC_WATKFOOD (SI_WATKFOOD) +SC_WATKFOOD () desc: Increase Weapon Attack (food-type effect) val1: +WeaponAttack -SC_MATKFOOD (SI_MATKFOOD) +SC_MATKFOOD () desc: Increase Magic Attack (food-type effect) val1: +MagicAttack @@ -939,23 +939,23 @@ SC_MIRACLE () desc: val1: -SC_MADNESSCANCEL (SI_MADNESSCANCEL) +SC_MADNESSCANCEL (EFST_GS_MADNESSCANCEL) desc: Increases some statuses (Base ATK, ASPD) val1: -SC_ADJUSTMENT (SI_ADJUSTMENT) +SC_ADJUSTMENT (EFST_GS_ADJUSTMENT) desc: Increases some statuses (Hit, Flee) val1: -SC_INCREASING (SI_ACCURACY) +SC_INCREASING (EFST_GS_ACCURACY) desc: Increase some statuses (Hit, Dex, Agi), GS_INCREASING effect val1: -SC_MAGICALBULLET (SI_GS_MAGICAL_BULLET) +SC_MAGICALBULLET (EFST_GS_MAGICAL_BULLET) desc: Increases damage based on source's MATK and is reduced by target's MDEF val1: -SC_GATLINGFEVER (SI_GATLINGFEVER) +SC_GATLINGFEVER (EFST_GS_GATLINGFEVER) desc: Increases some statuses (Base ATK, Flee, Movement Speed, ASPD) val1: SkillLv val2: ASPD increase (20 * val1) @@ -1027,7 +1027,7 @@ SC_INCASPDRATE () desc: Increase ASPD val1: +% ASPD -SC_INCFLEE2 (SI_PLUSAVOIDVALUE) +SC_INCFLEE2 (EFST_PLUSAVOIDVALUE) desc: Increase perfect flee val1: + Flee2 @@ -1063,26 +1063,26 @@ SC_SUMMER () desc: val1: -SC_EXPBOOST (SI_EXPBOOST) +SC_EXPBOOST (EFST_CASH_PLUSEXP) desc: Increase EXP rate val1: +% EXP -SC_ITEMBOOST (SI_ITEMBOOST) +SC_ITEMBOOST (EFST_CASH_RECEIVEITEM) desc: Increase Drop rate val1: +% Drop -SC_BOSSMAPINFO (SI_BOSSMAPINFO) +SC_BOSSMAPINFO (EFST_CASH_BOSS_ALARM) desc: Used to display Boss location on minimap val1: Boss game ID val2: Used to keep timer message from spamming chat window val3: val4: Remaining tick -SC_LIFEINSURANCE (SI_LIFEINSURANCE) +SC_LIFEINSURANCE (EFST_CASH_DEATHPENALTY) desc: Remove death pleanlties val1: -SC_INCCRI (SI_INCCRI) +SC_INCCRI (EFST_FOOD_CRITICALSUCCESSVALUE) desc: Increase critical value val1: + Critical (100% = 1000) @@ -1098,7 +1098,7 @@ SC_FASTCAST () /* NOT AVAILABLE YET */ desc: val1: -SC_MDEF_RATE (SI_MDEF_RATE) +SC_MDEF_RATE (EFST_PROTECT_MDEF) desc: Increase MDef by % val1: +% Mdef @@ -1106,7 +1106,7 @@ SC_HPREGEN () /* NOT AVAILABLE YET */ desc: val1: -SC_INCHEALRATE (SI_INCHEALRATE) +SC_INCHEALRATE (EFST_HEALPLUS) desc: Increase Heal power val1: +% Heal @@ -1129,11 +1129,11 @@ SC_ARMOR_RESIST () val3: Fire resistance val4: Wind resistance -SC_SPCOST_RATE (SI_ATKER_BLOOD) +SC_SPCOST_RATE (EFST_ATKER_BLOOD) desc: Reduce SP cost val1: +% Rate -SC_COMMONSC_RESIST (SI_TARGET_BLOOD) +SC_COMMONSC_RESIST (EFST_TARGET_BLOOD) desc: Increase resistance of status changes, only againts SC_STONE, SC_FREEZE, SC_STUN, SC_SLEEP, SC_POISON, SC_CURSE, SC_SILENCE, SC_CONFUSION, SC_BLIND, SC_BLEEDING, and SC_DPOISON val1: +% Resistance @@ -1141,7 +1141,7 @@ SC_SEVENWIND () desc: val1: -SC_DEF_RATE (SI_DEF_RATE) +SC_DEF_RATE (EFST_PROTECT_DEF) desc: Increase Def by % val1: +% Def @@ -1202,12 +1202,12 @@ SC_ITEMSCRIPT () val1: Item ID val2: Status Icon -SC_S_LIFEPOTION (SI_S_LIFEPOTION) +SC_S_LIFEPOTION (EFST_S_LIFEPOTION) desc: Increase HP each interval val1: if < 0 will be percentage. If > 0 is fixed HP heal value val2: Interval per seconds -SC_L_LIFEPOTION (SI_L_LIFEPOTION) +SC_L_LIFEPOTION (EFST_L_LIFEPOTION) desc: Increase HP each interval val1: if < 0 will be percentage. If > 0 is fixed HP heal value val2: Interval per seconds @@ -1232,57 +1232,57 @@ SC_INVINCIBLEOFF () desc: val1: -SC_MANU_ATK (SI_MANU_ATK) +SC_MANU_ATK (EFST_MANU_ATK) desc: Increase Weapon Damage rate to Manuk monsters val1: +% Damage val2: (hardcoded to 1 mark as Manuk group bonus) -SC_MANU_DEF (SI_MANU_DEF) +SC_MANU_DEF (EFST_MANU_DEF) desc: Increase Defense rate against Manuk monsters val1: +% Defense val2: (hardcoded to 1 mark as Manuk group bonus) -SC_SPL_ATK (SI_SPL_ATK) +SC_SPL_ATK (EFST_SPL_ATK) desc: Increase Weapon Damage rate to Splendide Monster val1: +% Damage val2: (hardcoded to 1 mark as Splendide group bonus) -SC_SPL_DEF (SI_SPL_DEF) +SC_SPL_DEF (EFST_SPL_DEF) desc: Increase Defense rate against Splendide Monster val1: +% Defense val2: (hardcoded to 1 mark as Splendide group bonus) -SC_MANU_MATK (SI_MANU_MATK) +SC_MANU_MATK (EFST_MANU_MATK) desc: Increase Magic Damage rate to Manuk monsters val1: +% Magic damage val2: (hardcoded to 1 mark as Manuk group bonus) -SC_SPL_MATK (SI_SPL_MATK) +SC_SPL_MATK (EFST_SPL_MATK) desc: Increase Magic Damage to Splendide Monster val1: +% Damage val2: (hardcoded to 1 mark as Splendide group bonus) -SC_FOOD_STR_CASH (SI_FOOD_STR_CASH) +SC_FOOD_STR_CASH (EFST_FOOD_STR_CASH) desc: Increase STR (cannot be stacked with SC_STRFOOD, ignored if value is lower) val1: +STR -SC_FOOD_AGI_CASH (SI_FOOD_AGI_CASH) +SC_FOOD_AGI_CASH (EFST_FOOD_AGI_CASH) desc: Increase AGI (cannot be stacked with SC_AGIFOOD, ignored if value is lower) val1: +AGI -SC_FOOD_VIT_CASH (SI_FOOD_VIT_CASH) +SC_FOOD_VIT_CASH (EFST_FOOD_VIT_CASH) desc: Increase VIT (cannot be stacked with SC_VITFOOD, ignored if value is lower) val1: +VIT -SC_FOOD_DEX_CASH (SI_FOOD_DEX_CASH) +SC_FOOD_DEX_CASH (EFST_FOOD_DEX_CASH) desc: Increase DEX (cannot be stacked with SC_DEXFOOD, ignored if value is lower) val1: +DEX -SC_FOOD_INT_CASH (SI_FOOD_INT_CASH) +SC_FOOD_INT_CASH (EFST_FOOD_INT_CASH) desc: Increase INT (cannot be stacked with SC_INTFOOD, ignored if value is lower) val1: +INT -SC_FOOD_LUK_CASH (SI_FOOD_LUK_CASH) +SC_FOOD_LUK_CASH (EFST_FOOD_LUK_CASH) desc: Increase LUK (cannot be stacked with SC_LUKFOOD, ignored if value is lower) val1: +LUK @@ -1290,7 +1290,7 @@ SC_FEAR () desc: Cause SC_ANKLE for 2 seconds, Hit/Flee -20%, remove blind, immune to blind val1: -SC_BURNING (SI_BURNT) +SC_BURNING (EFST_BURNT) desc: MDEF -25%; Deals fixed (1000 + 3%*MaxHP) damage every 3 seconds; Damage can not be reduced val1: Skill Level val2: 1000 @@ -1501,7 +1501,7 @@ SC_VENOMIMPRESS () desc: val1: -SC_POISONINGWEAPON (SI_POISONINGWEAPON) +SC_POISONINGWEAPON (EFST_POISONINGWEAPON) desc: Coat the user's equipped weapon with a new poison temporarily, which grants a chance of leaving the target infected with the current poison while physically attacking. val1: GC_WEAPONRESEARCH Skill Level val2: Poison Type @@ -1528,56 +1528,56 @@ SC_ROLLINGCUTTER () desc: val1: -SC_TOXIN (SI_TOXIN) +SC_TOXIN (EFST_TOXIN) desc: Inflict damage, which causes the affected entity to flinch every 10 seconds; This will interrupt the skill casting, even if protected against it val1: GC_WEAPONRESEARCH Skill Level val2: Caster's object ID val3: val4: Remaining tick -SC_PARALYSE (SI_PARALYSE) +SC_PARALYSE (EFST_PARALYSE) desc: Decrease both ASPD and Flee Rate by 10% and halve Movement Speed, which does not stack with Decrease AGI, Quagmire, Marsh Of Abyss or Freezing status val1: GC_WEAPONRESEARCH Skill Level val2: val3: val4: Tick -SC_VENOMBLEED (SI_VENOMBLEED) +SC_VENOMBLEED (EFST_VENOMBLEED) desc: Decrease Max HP by 15% val1: GC_WEAPONRESEARCH Skill Level val2: val3: val4: Tick -SC_MAGICMUSHROOM (SI_MAGICMUSHROOM) +SC_MAGICMUSHROOM (EFST_MAGICMUSHROOM) desc: Force the affected entity to use /heh emote, to randomly use skills and drain 3% of Max HP every 4 seconds val1: GC_WEAPONRESEARCH Skill Level val2: Caster's object ID val3: val4: Remaining tick -SC_DEATHHURT (SI_DEATHHURT) +SC_DEATHHURT (EFST_DEATHHURT) desc: Drop the healing effectiveness by 20%; This effect stacks with Critical Wounds val1: GC_WEAPONRESEARCH Skill Level val2: val3: val4: Tick -SC_PYREXIA (SI_PYREXIA) +SC_PYREXIA (EFST_PYREXIA) desc: Cause Blind and Hallucination statuses; If the affected entity takes damage while under the effects of this poison, it will remain in flinching motion, which will interrupt the skill casting val1: GC_WEAPONRESEARCH Skill Level val2: val3: val4: Remaining tick -SC_OBLIVIONCURSE (SI_OBLIVIONCURSE) +SC_OBLIVIONCURSE (EFST_OBLIVIONCURSE) desc: Force the affected entity to use /? emote, block SP Recovery and cause Oblivion status; There is a chance (100% - (Target INT * 0.8)%) of being inflicted, with a minimum of 5% val1: GC_WEAPONRESEARCH Skill Level val2: val3: val4: Tick -SC_LEECHESEND (SI_LEECHESEND) +SC_LEECHESEND (EFST_LEECHESEND) desc: Drain (Target VIT * (SkillLv - 3)) + (Target HP / 100) HP each second val1: GC_WEAPONRESEARCH Skill Level val2: Caster's object ID @@ -1636,7 +1636,7 @@ SC_CRYSTALIZE () desc: val1: -SC_STRIKING (SI_STRIKING) +SC_STRIKING (EFST_STRIKING) desc: val1: SO_STRIKING Skill Level val2: Increased ATK @@ -1663,13 +1663,13 @@ SC_SYMPHONYOFLOVER () desc: val1: -SC_MOONLITSERENADE (SI_MOONLITSERENADE) +SC_MOONLITSERENADE (EFST_MOONLIT_SERENADE) desc: val1: WA_MOONLIT_SERENADE Skill Level val2: WM_LESSON Level val3: Increased MATK -SC_RUSHWINDMILL (SI_RUSHWINDMILL) +SC_RUSHWINDMILL (EFST_RUSH_WINDMILL) desc: val1: MI_RUSH_WINDMILL Skill Level val2: WM_LESSON Level @@ -1759,19 +1759,19 @@ SC_RAISINGDRAGON () desc: val1: -SC_GT_ENERGYGAIN (SI_GENTLETOUCH_ENERGYGAIN) +SC_GT_ENERGYGAIN (EFST_GENTLETOUCH_ENERGYGAIN) desc: val1: SR_GENTLETOUCH_ENERGYGAIN Skill Level val2: Sphere Gain Chance -SC_GT_CHANGE (SI_GENTLETOUCH_CHANGE) +SC_GT_CHANGE (EFST_GENTLETOUCH_CHANGE) desc: ATK increase: ATK [{(Caster DEX / 4) + (Caster STR / 2)} x Skill Level / 5]; ASPD increase: [(Target AGI x Skill Level) / 60] %; MDEF decrease: MDEF [(200 / Caster INT) x Skill Level]; Max HP decrease: [Skill Level x 4] % val1: SR_GENTLETOUCH_CHANGE Skill Level val2: Increased ATK val3: Increased ASPD Rate val4: Decreased MDEF -SC_GT_REVITALIZE (SI_GENTLETOUCH_REVITALIZE) +SC_GT_REVITALIZE (EFST_GENTLETOUCH_REVITALIZE) desc: MaxHP: [(Skill Level * 2)]%; Natural HP recovery increase: [(Skill Level x 30) + 50] %; STAT DEF increase: [(Caster VIT / 4) x Skill Level] (The stat def is not shown in the status window and it is processed differently) val1: SR_GENTLETOUCH_REVITALIZE Skill Level val2: Max HP Rate bonus @@ -1802,80 +1802,80 @@ SC_MANDRAGORA () desc: val1: -SC_STOMACHACHE (SI_STOMACHACHE) +SC_STOMACHACHE (EFST_STOMACHACHE) desc: Reduce all stats val1: -AllStats -SC_MYSTERIOUS_POWDER (SI_MYSTERIOUS_POWDER) +SC_MYSTERIOUS_POWDER (EFST_MYSTERIOUS_POWDER) desc: Reduce Max HP rate val1: ReduceValue (don't use - sign to reduce) -SC_MELON_BOMB (SI_MELON_BOMB) +SC_MELON_BOMB (EFST_MELON_BOMB) desc: Reduce ASPD and move speed val1: ReduceValue (don't use - sign to reduce) -SC_BANANA_BOMB (SI_BANANA_BOMB) +SC_BANANA_BOMB (EFST_BANANA_BOMB) desc: Reduce LUK rate val1: ReduceValue (don't use - sign to reduce) -SC_BANANA_BOMB_SITDOWN (SI_BANANA_BOMB_SITDOWN_POSTDELAY) +SC_BANANA_BOMB_SITDOWN (EFST_BANANA_BOMB_SITDOWN_POSTDELAY) desc: Force player to sit val1: -SC_SAVAGE_STEAK (SI_SAVAGE_STEAK) +SC_SAVAGE_STEAK (EFST_SAVAGE_STEAK) desc: Increase STR val1: +STR -SC_COCKTAIL_WARG_BLOOD (SI_COCKTAIL_WARG_BLOOD) +SC_COCKTAIL_WARG_BLOOD (EFST_COCKTAIL_WARG_BLOOD) desc: Increase INT val1: +INT -SC_MINOR_BBQ (SI_MINOR_BBQ) +SC_MINOR_BBQ (EFST_MINOR_BBQ) desc: Increase VIT val1: +VIT -SC_SIROMA_ICE_TEA (SI_SIROMA_ICE_TEA) +SC_SIROMA_ICE_TEA (EFST_SIROMA_ICE_TEA) desc: Increase DEX val1: +DEX -SC_DROCERA_HERB_STEAMED (SI_DROCERA_HERB_STEAMED) +SC_DROCERA_HERB_STEAMED (EFST_DROCERA_HERB_STEAMED) desc: Increase AGI val1: +AGI -SC_PUTTI_TAILS_NOODLES (SI_PUTTI_TAILS_NOODLES) +SC_PUTTI_TAILS_NOODLES (EFST_PUTTI_TAILS_NOODLES) desc: Increase LUK val1: +LUK -SC_BOOST500 (SI_BOOST500) +SC_BOOST500 (EFST_BOOST500) desc: Increase ASPD rate val1: +% Aspd -SC_FULL_SWING_K (SI_FULL_SWING_K) +SC_FULL_SWING_K (EFST_FULL_SWING_K) desc: Increase Base Atk val1: +BaseAtk -SC_MANA_PLUS (SI_MANA_PLUS) +SC_MANA_PLUS (EFST_MANA_PLUS) desc: Increase MAtk val1: +Matk -SC_MUSTLE_M (SI_MUSTLE_M) +SC_MUSTLE_M (EFST_MUSTLE_M) desc: Increase Max HP rate val1: +% MaxHP -SC_LIFE_FORCE_F (SI_LIFE_FORCE_F) +SC_LIFE_FORCE_F (EFST_LIFE_FORCE_F) desc: Increase Max SP rate val1: +% MaxSP -SC_EXTRACT_WHITE_POTION_Z (SI_EXTRACT_WHITE_POTION_Z) +SC_EXTRACT_WHITE_POTION_Z (EFST_EXTRACT_WHITE_POTION_Z) desc: Increase HP regen rate val1: +% HP regen -SC_VITATA_500 (SI_VITATA_500) +SC_VITATA_500 (EFST_VITATA_500) desc: Increase SP Regen rate & Max SP rate val1: +% SP regen val2: +% MaxSP -SC_EXTRACT_SALAMINE_JUICE (SI_EXTRACT_SALAMINE_JUICE) +SC_EXTRACT_SALAMINE_JUICE (EFST_EXTRACT_SALAMINE_JUICE) desc: Increase ASP rate val1: +% ASPD @@ -2259,82 +2259,82 @@ SC_STYLE_CHANGE () desc: Eleanor's mode val1: -SC_TINDER_BREAKER (SI_TINDER_BREAKER_POSTDELAY) +SC_TINDER_BREAKER (EFST_TINDER_BREAKER_POSTDELAY) desc: val1: -SC_TINDER_BREAKER2 (SI_TINDER_BREAKER) +SC_TINDER_BREAKER2 (EFST_TINDER_BREAKER) desc: Tinder Breaker after-effect, just like Close Confine val1: -SC_CBC (SI_CBC) +SC_CBC (EFST_CBC) desc: Drain HP & SP each iteration (default is each 1 sec) val1: val2: val3: %SP drain -SC_EQC (SI_EQC) +SC_EQC (EFST_EQC) desc: val1: val2: -% Def val3: -%MaxHP val4: -SC_GOLDENE_FERSE (SI_GOLDENE_FERSE) +SC_GOLDENE_FERSE (EFST_GOLDENE_FERSE) desc: val1: val2: +% Flee val3: +% ASPD val4: % Chance to convert attack as Holy element -SC_ANGRIFFS_MODUS (SI_ANGRIFFS_MODUS) +SC_ANGRIFFS_MODUS (EFST_ANGRIFFS_MODUS) desc: Drain 100 HP & 20 SP each iteration (default is each 1 sec) val1: Level. Usage for +MaxHP rate (5 * level) val2: +ATK val3: -Flee -SC_OVERED_BOOST (SI_OVERED_BOOST) +SC_OVERED_BOOST (EFST_OVERED_BOOST) desc: When status ended, reduce 50% HP for player and increase 50 the Homunculus's hunger val1: val2: Fixed Flee value val3: Fixed ASPD value val4: -% Def -SC_LIGHT_OF_REGENE (SI_LIGHT_OF_REGENE) +SC_LIGHT_OF_REGENE (EFST_LIGHT_OF_REGENE) desc: val1: val2: % of HP recovery on death -SC_ASH (SI_VOLCANIC_ASH) +SC_ASH (EFST_VOLCANIC_ASH) desc: Increase damage to Fire element enemy (ratio +150%), reduce Hit, Def, Atk & Flee. val1: -% Hit val2: -% Def val4: -Atk & Flee -SC_GRANITIC_ARMOR (SI_GRANITIC_ARMOR) +SC_GRANITIC_ARMOR (EFST_GRANITIC_ARMOR) desc: Reduce the inflicted damage, when status ended deals another damage to self val1: val2: -%Damage val3: Damage taken on status end -SC_MAGMA_FLOW (SI_MAGMA_FLOW) +SC_MAGMA_FLOW (EFST_MAGMA_FLOW) desc: val1: val2: Rate to cast Magma Flow (deals damage) to target while attacking -SC_PYROCLASTIC (SI_PYROCLASTIC) +SC_PYROCLASTIC (EFST_PYROCLASTIC) desc: val1: val2: +ATK val3: % Rate to cast Hammer Fall -SC_PARALYSIS (SI_NEEDLE_OF_PARALYZE) +SC_PARALYSIS (EFST_NEEDLE_OF_PARALYZE) desc: val1: val2: -Def val3: +% CastTime -SC_PAIN_KILLER (SI_PAIN_KILLER) +SC_PAIN_KILLER (EFST_PAIN_KILLER) desc: Reduce damage for certain value, reduce ASPD rate, inflict Endure if has active SC_PARALYSIS val1: val2: -% ASPD @@ -2352,27 +2352,27 @@ SC_MDEFSET () desc: Vellum Weapon bonus. Set MDef value val1: MDef fixed value -SC_DARKCROW (SI_DARKCROW) +SC_DARKCROW (EFST_DARKCROW) desc: Increase short/melee damage rate val1: val2: +% Damage -SC_FULL_THROTTLE (SI_FULL_THROTTLE) +SC_FULL_THROTTLE (EFST_FULL_THROTTLE) desc: Increase walk speed, increase allstats, full HP once activated val1: Level, also used as Rebound level when this sc ended val2: -SP each iteration val3: +% Allstats -SC_REBOUND (SI_REBOUND) +SC_REBOUND (EFST_REBOUND) desc: Full Throttle after-effect. Reduce walk speed val1: -SC_UNLIMIT (SI_UNLIMIT) +SC_UNLIMIT (EFST_UNLIMIT) desc: Increase attak rate & set Def/MDef to 1, val1: val2: +% Attack -SC_KINGS_GRACE (SI_KINGS_GRACE) +SC_KINGS_GRACE (EFST_KINGS_GRACE) desc: Add Max HP & heal each iteration (default 1 seconds) val1: val2: +HP heal @@ -2384,13 +2384,13 @@ SC_TELEKINESIS_INTENSE () val3: +Damage ratio val4: -CastTime -SC_OFFERTORIUM (SI_OFFERTORIUM) +SC_OFFERTORIUM (EFST_OFFERTORIUM) desc: val1: val2: +Heal Power val3: +SP Cost -SC_FRIGG_SONG (SI_FRIGG_SONG) +SC_FRIGG_SONG (EFST_FRIGG_SONG) desc: Add Max HP & heal each iteration (default 1 seconds) val1: Skill Level val2: +% MaxHP @@ -2404,7 +2404,7 @@ SC_ANGEL_PROTECT () desc: val1: -SC_ILLUSIONDOPING (SI_ILLUSIONDOPING) +SC_ILLUSIONDOPING (EFST_ILLUSIONDOPING) desc: val1: val2: -Hit @@ -2414,90 +2414,90 @@ SC_FLASHCOMBO () val1: val2: +ATK (isn't shown in status window) -SC_MOONSTAR (SI_MOONSTAR) +SC_MOONSTAR (EFST_MOONSTAR) desc: Visual effect val1: -SC_SUPER_STAR (SI_SUPER_STAR) +SC_SUPER_STAR (EFST_SUPER_STAR) desc: Visual effect val1: -SC_HEAT_BARREL (SI_HEAT_BARREL) +SC_HEAT_BARREL (EFST_HEAT_BARREL) desc: (Rebellion) Reduce fixed cast time, add ASPD rate, and reduce FLEE val1: SkillLv val2: -Fixed Casttime (5 * val1) val3: +% ASPD (6 + val1 * 2) val4: -FLEE (25 + val1 * 5) -SC_P_ALTER (SI_P_ALTER) +SC_P_ALTER (EFST_P_ALTER) desc: Increase attack ratio and creates a barrier like Kyrie val1: SkillLv val2: +ATK ratio (10 * Coin Count) val3: Barrier HP (Max HP * (val1 * 5) / 100) -SC_E_CHAIN (SI_E_CHAIN) +SC_E_CHAIN (EFST_E_CHAIN) desc: (Rebellion) Has chance to trigger Chain Action for any weapon val1: SkillLv val2: Coins used for success rate. (5 * val) -SC_C_MARKER (SI_C_MARKER) +SC_C_MARKER (EFST_C_MARKER) desc: (Rebellion) Crimson Marker effect, also sends the target location to the caster val1: SkillLv val2: val3: -FLEE (10) -SC_ANTI_M_BLAST (SI_ANTI_M_BLAST) +SC_ANTI_M_BLAST (EFST_ANTI_M_BLAST) desc: (Rebellion) Anti-Material effect, reduce resistance of Neutral attack val1: SkillLv val2: Reduction ratio (10 * val1) -SC_B_TRAP (SI_B_TRAP) +SC_B_TRAP (EFST_B_TRAP) desc: (Rebellion) Bind Trap effect, waiting for Flicker to be used val1: SkillLv val2: val3: -Walk Speed (Unstackable penalty) (25 * val1) -SC_H_MINE (SI_H_MINE) +SC_H_MINE (EFST_H_MINE) desc: (Rebellion) Howling Mine effect, waiting for Flicker to be used val1: -SC_QD_SHOT_READY (SI_E_QD_SHOT_READY) +SC_QD_SHOT_READY (EFST_E_QD_SHOT_READY) desc: (Rebellion) Combo stance to cast Quick Draw Shot val1: -SC_MTF_ASPD (SI_MTF_ASPD) +SC_MTF_ASPD (EFST_MTF_ASPD) desc: Increase ASP and Hit val1: +ASPD val2: +Hit -SC_MTF_ASPD2 (SI_MTF_ASPD2) +SC_MTF_ASPD2 (EFST_MTF_ASPD2) desc: Increase ASP and Hit val1: +ASPD val2: +Hit -SC_MTF_RANGEATK (SI_MTF_RANGEATK) +SC_MTF_RANGEATK (EFST_MTF_RANGEATK) desc: Increase Long-ranged damage while attacking val1: +% Damage (not be shown in status window) -SC_MTF_RANGEATK2 (SI_MTF_RANGEATK2) +SC_MTF_RANGEATK2 (EFST_MTF_RANGEATK2) desc: Increase Long-ranged damage while attacking val1: +% Damage (not be shown in status window) -SC_MTF_MATK (SI_MTF_MATK) +SC_MTF_MATK (EFST_MTF_MATK) desc: Increase MATK damage while attacking val1: +% MATK -SC_MTF_MATK2 (SI_MTF_MATK2) +SC_MTF_MATK2 (EFST_MTF_MATK2) desc: Increase MATK damage while attacking val1: + MATK -SC_MTF_MLEATKED (SI_MTF_MLEATKED) +SC_MTF_MLEATKED (EFST_MTF_MLEATKED) desc: Has chance to cast Endure to self while attacked val1: Endure Level val2: Rate to cast val3: Neutral element resistance -SC_MTF_CRIDAMAGE (SI_MTF_CRIDAMAGE) +SC_MTF_CRIDAMAGE (EFST_MTF_CRIDAMAGE) desc: Bonus critical rate of monster transformation val1: +% Critical @@ -2505,27 +2505,27 @@ SC_OKTOBERFEST () desc: Costume val1: -SC_STRANGELIGHTS (SI_STRANGELIGHTS) +SC_STRANGELIGHTS (EFST_STRANGELIGHTS) desc: val1: -SC_DECORATION_OF_MUSIC (SI_DECORATION_OF_MUSIC) +SC_DECORATION_OF_MUSIC (EFST_DECORATION_OF_MUSIC) desc: val1: -SC_QUEST_BUFF1 (SI_QUEST_BUFF1) +SC_QUEST_BUFF1 (EFST_QUEST_BUFF1) desc: val1: +ATK & +MATK -SC_QUEST_BUFF2 (SI_QUEST_BUFF2) +SC_QUEST_BUFF2 (EFST_QUEST_BUFF2) desc: val1: +ATK & +MATK -SC_QUEST_BUFF3 (SI_QUEST_BUFF3) +SC_QUEST_BUFF3 (EFST_QUEST_BUFF3) desc: val1: +ATK & +MATK -SC_ALL_RIDING (SI_ALL_RIDING) +SC_ALL_RIDING (EFST_ALL_RIDING) desc: val1: @@ -2546,78 +2546,78 @@ SC_ELEMENTAL_SHIELD () desc: Block magic attack val1: -SC_CHASEWALK2 (SI_CHASEWALK2) +SC_CHASEWALK2 (EFST_CHASEWALK2) desc: 2nd effect of Chasewalk val1: +STR -SC_SUHIDE (SI_SUHIDE) +SC_SUHIDE (EFST_SUHIDE) desc: Hide caster. Can be seen by insect, demon, and boss. Cannot move or pickup items. val1: Skill Lv -SC_SU_STOOP (SI_SU_STOOP) +SC_SU_STOOP (EFST_SU_STOOP) desc: Places a temporary buff on the user that decreases all damage taken by 90%. val1: Skill Lv -SC_SPRITEMABLE (SI_SPRITEMABLE) +SC_SPRITEMABLE (EFST_SPRITEMABLE) desc: Increase 1000 HP and 100 SP. val1: -SC_CATNIPPOWDER (SI_CATNIPPOWDER) +SC_CATNIPPOWDER (EFST_CATNIPPOWDER) desc: Reduces ATK and MATK by 50% to targets in a 3x3~7x7 area. HP and SP recovery rate increase. val1: Skill Lv val2: WATK% / MATK% val3: Movement speed reduction -SC_SV_ROOTTWIST (SI_SV_ROOTTWIST) +SC_SV_ROOTTWIST (EFST_SV_ROOTTWIST) desc: Prevents the target from moving and receives 100 Poison damage every second. Cannot be used on Boss monsters. val1: Skill Lv -SC_BITESCAR (SI_BITESCAR) +SC_BITESCAR (EFST_BITESCAR) desc: Drains a portion of the target's Max HP each second. val1: Skill Lv val2: Max HP% damage val4: Tick -SC_ARCLOUSEDASH (SI_ARCLOUSEDASH) +SC_ARCLOUSEDASH (EFST_ARCLOUSEDASH) desc: Increases Agi and movement speed. val1: AGI val2: Movement speed increase val4: Ranged ATK increase for Doram -SC_TUNAPARTY (SI_TUNAPARTY) +SC_TUNAPARTY (EFST_TUNAPARTY) desc: Protects from damage, the amount is based on Max HP. val1: Max HP% to absorb val2: Double the shield life with Spirit of Sea -SC_SHRIMP (SI_SHRIMP) +SC_SHRIMP (EFST_SHRIMP) desc: Gives all party members on screen +10% ATK and MATK. val1: BATK% / MATK% -SC_FRESHSHRIMP (SI_FRESHSHRIMP) +SC_FRESHSHRIMP (EFST_FRESHSHRIMP) desc: Recovers a small amount of HP. Each level reduces the time between each HP recovery tick. val1: Skill Lv val2: Heal amount val4: Tick -SC_HISS (SI_HISS) +SC_HISS (EFST_HISS) desc: Increases movement speed and perfect dodge of the user and his party. val1: Skill Lv val2: Perfect Dodge -SC_NYANGGRASS (SI_NYANGGRASS) +SC_NYANGGRASS (EFST_NYANGGRASS) desc: Reduces monster's DEF and MDEF by 50%. Reduces other player's equipment DEF and MDEF to 0. val1: Skill Lv -SC_GROOMING (SI_GROOMING) +SC_GROOMING (EFST_GROOMING) desc: FLEE + 100. Cures Poison, Frozen, Stun, Sleep, Bleeding, Silence, Crystallization, Deep Sleep, Fear, and Mandragora Howling. val1: Skill Lv val2: FLEE -SC_SHRIMPBLESSING (SI_PROTECTIONOFSHRIMP) +SC_SHRIMPBLESSING (EFST_PROTECTIONOFSHRIMP) desc: Increases caster's SP recovery by 150%. val1: Skill Lv -SC_CHATTERING (SI_CHATTERING) +SC_CHATTERING (EFST_CHATTERING) desc: Increases the player's ATK and MATK by 100. Increases the player's movespeed. val1: Skill Lv val2: ATK / MATK @@ -2638,51 +2638,51 @@ SC_DORAM_SVSP () desc: Casts Silvervine Stem Spear when receiving Magic or Ranged damage after using Catnip Meteor for Spirit of Land. val1: Value to know it's active -SC_GVG_GIANT (SI_GVG_GIANT) +SC_GVG_GIANT (EFST_GVG_GIANT) desc: Instantly consumes HP/SP, increases Physical/Magic damage on player enemies by n%. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed val3: Increases % Physical damage val4: Increases % Magical damage -SC_GVG_GOLEM (SI_GVG_GOLEM) +SC_GVG_GOLEM (EFST_GVG_GOLEM) desc: Instantly consumes HP/SP, decreases n% damage received from other adventurers. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed val3: Decreases % damage received of physical attack val4: Decreases % damage received of magical attack -SC_GVG_STUN (SI_GVG_STUN) +SC_GVG_STUN (EFST_GVG_STUN) desc: Instantly consumes HP/SP, immunizes you against Stun. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_STONE (SI_GVG_STONE) +SC_GVG_STONE (EFST_GVG_STONE) desc: Instantly consumes HP/SP, immunizes you against Petrification. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_FREEZ (SI_GVG_FREEZ) +SC_GVG_FREEZ (EFST_GVG_FREEZ) desc: Instantly consumes HP/SP, immunizes you against Frost. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_SLEEP (SI_GVG_SLEEP) +SC_GVG_SLEEP (EFST_GVG_SLEEP) desc: Instantly consumes HP/SP, immunizes you against Sleep. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_CURSE (SI_GVG_CURSE) +SC_GVG_CURSE (EFST_GVG_CURSE) desc: Instantly consumes HP/SP, immunizes you against Curse. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_SILENCE (SI_GVG_SILENCE) +SC_GVG_SILENCE (EFST_GVG_SILENCE) desc: Instantly consumes HP/SP, immunizes you against Silence. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed -SC_GVG_BLIND (SI_GVG_BLIND) +SC_GVG_BLIND (EFST_GVG_BLIND) desc: Instantly consumes HP/SP, immunizes you against Blind. val1: Amount of HP that are instantly consumed val2: Amount of SP that are instantly consumed diff --git a/npc/airports/airships.txt b/npc/airports/airships.txt index 71bd52609f..a3d7122631 100644 --- a/npc/airports/airships.txt +++ b/npc/airports/airships.txt @@ -413,7 +413,7 @@ airplane,221,158,2 script Pilot#airplane 852,{ mes "last time I had a real vacation"; mes "or even a day off. Yeap, some"; mes "booze, some chips, some TV"; - mes "and serius R&R is in order."; + mes "and serious R&R is in order."; emotion ET_CRY; close; case 2: @@ -451,8 +451,8 @@ airplane,221,158,2 script Pilot#airplane 852,{ next; emotion ET_HUK; mes "[Pilot]"; - mes "Still, they where real"; - mes "serius, really thought"; + mes "Still, they were real"; + mes "serious, really thought"; mes "ahead. I mean, they had us"; mes "training while the Airships"; mes "were still being invented."; @@ -502,7 +502,7 @@ airplane,50,66,5 script Apple Merchant#airplane 86,{ else { mes "[Fruitz]"; mes "A total of ^FF0000" + .@input + "^000000 Apples"; - mes "will cost you ^FF0000" + .@pay + " Zeny^000000 zeny."; + mes "will cost you ^FF0000" + .@pay + "^000000 zeny."; mes "Would you like to continue?"; next; if (select("Yes:No") == 2) { diff --git a/npc/airports/izlude.txt b/npc/airports/izlude.txt index d06e6a34ec..f160bdd77a 100644 --- a/npc/airports/izlude.txt +++ b/npc/airports/izlude.txt @@ -16,7 +16,7 @@ mes "[Airship Staff]"; mes "Welcome! Would you like"; mes "to board the Airship that"; - mes "departs on the flight wich stops"; + mes "departs on the flight which stops"; mes "in Juno and Rachel?"; next; if (select("Board the Airship to Juno/Rachel.:Cancel.") == 1) { diff --git a/npc/cities/aldebaran.txt b/npc/cities/aldebaran.txt index 40da24d1ef..85230d1fc8 100644 --- a/npc/cities/aldebaran.txt +++ b/npc/cities/aldebaran.txt @@ -542,7 +542,7 @@ aldebaran,143,136,4 script Bell Keeper#A 89,{ //============================================================ aldeba_in,232,241,4 script RS125#alde 48,{ mes "[RS125]"; - mes "I may sound unhuman rather robotic"; + mes "I may sound inhuman rather robotic"; mes "however, I hope you will not be afraid of me. I am as humane as you are."; next; mes "[RS125]"; @@ -558,7 +558,7 @@ aldeba_in,232,241,4 script RS125#alde 48,{ next; mes "[RS125]"; mes "He became so popular for his exciting play,"; - mes "so everytime when the 'Al De Baran Turbo Track' was held once every 4 years,"; + mes "so every time when the 'Al De Baran Turbo Track' was held once every 4 years,"; mes "many people from all over the continent came to this city only to see my brother."; mes "I was his manager at the time and I was so stressed out because of his fans."; next; @@ -577,7 +577,7 @@ aldeba_in,232,241,4 script RS125#alde 48,{ close; } mes "[RS125]"; - mes "I want to travel around the world one of thesedays."; + mes "I want to travel around the world one of these days."; mes "If I can see the ocean from the port of Alberta, it must be so wonderful."; mes "After the next year's athletic competition, I will go on a round-the-world tour with my brother."; close; @@ -624,7 +624,7 @@ aldeba_in,223,121,4 script Threatening-Looking Man 63,{ } mes "[Threatening-Looking Man]"; mes "Get out, now!"; - mes "If you a cop, show me a warrent,"; + mes "If you a cop, show me a warrant,"; mes "if you are a member of my family, prove it with your birth mark!"; close; } @@ -1303,7 +1303,7 @@ aldeba_in,88,161,3 script Kafra Employee#reserve2 4_F_KAFRA3,{ mes "[Kafra Employee]"; mes "I'm sorry~ but~"; mes "Please, visit Kafra warehouse and store your items until you have free space of ^0000FF1100^000000 and come back."; - mes "I appolize for inconvinence~"; + mes "I apologize for inconvenience~"; close; } mes "Your special reserve points are ^FF0000"+ RESRVPTS +"^000000~"; @@ -1548,11 +1548,11 @@ function script F_ClockTowerGate { mes "The Key is the Intensiveness of Ancient Alchemy,"; mes "By hearsay When used once,"; mes "It will be released from being spelled"; - mes "And be disapeared."; + mes "And be disappeared."; next; mes "[Gatekeeper Boy]"; mes "If that key"; - mes "Comes into your porssession,"; + mes "Comes into your possession,"; mes "Please show me."; mes "The one who possesses the Key"; mes "Will have access to go through"; diff --git a/npc/cities/amatsu.txt b/npc/cities/amatsu.txt index bbf1230fe3..cfd71bef5c 100644 --- a/npc/cities/amatsu.txt +++ b/npc/cities/amatsu.txt @@ -181,7 +181,7 @@ amatsu,179,107,4 script John#ama 86,{ mes "business here..."; next; mes "[John]"; - mes "Af first, I thought, 'What"; + mes "At first, I thought, 'What"; mes "a great chance!' when the"; mes "trade between the Rune-Midgard"; mes "Kingdom and Amatsu started."; @@ -545,9 +545,9 @@ amatsu,262,197,1 script Legendary Tree 111,{ } else if (jap_tree == 3) { mes "^3355FFUnlike other cherry trees,"; - mes "this tree has a strong fragnance."; + mes "this tree has a strong fragrance."; mes "I just fell into a relaxed"; - mes "mood. The fragnance eased"; + mes "mood. The fragrance eased"; mes "my burdens and I felt"; mes "very comfortable.^000000"; next; @@ -559,7 +559,7 @@ amatsu,262,197,1 script Legendary Tree 111,{ close; } else if (jap_tree == 4) { - mes "^3355FFThis strong fragnance"; + mes "^3355FFThis strong fragrance"; mes "is making me dizzy. Not like"; mes "other cherry trees, this tree's"; mes "shimmering white petals"; @@ -569,7 +569,7 @@ amatsu,262,197,1 script Legendary Tree 111,{ mes "being drained if I stay here"; mes "longer. After a glimpse of"; mes "the cherry tree, I thought to"; - mes "mayself, 'I must get out of here quickly.'^000000"; + mes "myself, 'I must get out of here quickly.'^000000"; close; } mes "^3355FFThere was a cherry tree"; diff --git a/npc/cities/ayothaya.txt b/npc/cities/ayothaya.txt index e96e3bfba7..71e0da38d7 100644 --- a/npc/cities/ayothaya.txt +++ b/npc/cities/ayothaya.txt @@ -32,7 +32,7 @@ mes "We Ayotayans are a pious people who value peace and sincerity. We endeavor to lead simple, yet noble, lives in harmony with nature."; next; mes "[Aibakthing]"; - mes "Our traditional cuisine is world famous. It's no surprise when we serve dishes like Tom Yum Goong, made of Shrimp, Lemon and Chillis, which has a tantalizing aroma and flavor beyond imagining."; + mes "Our traditional cuisine is world famous. It's no surprise when we serve dishes like Tom Yum Goong, made of Shrimp, Lemon and Chillies, which has a tantalizing aroma and flavor beyond imagining."; next; mes "[Aibakthing]"; mes "For those who crave adventure, there is an age old story about the Sa-mhing Tiger, an evil creature that haunts our temple ruins."; diff --git a/npc/cities/comodo.txt b/npc/cities/comodo.txt index 4b5721ffc9..b39e64a812 100644 --- a/npc/cities/comodo.txt +++ b/npc/cities/comodo.txt @@ -436,7 +436,7 @@ moc_fild12,35,303,4 script Serutero#cmd 59,{ mes "[Serutero]"; mes "Comodo grew in power and"; mes "influence and eventually annexed Sandaruman. More and more people"; - mes "moved from the fortress to Comodo until Sandaruman Fotress was"; + mes "moved from the fortress to Comodo until Sandaruman fortress was"; mes "essentially abandoned."; next; mes "[Serutero]"; diff --git a/npc/cities/einbech.txt b/npc/cities/einbech.txt index 1f77989700..38e8385f5a 100644 --- a/npc/cities/einbech.txt +++ b/npc/cities/einbech.txt @@ -427,7 +427,7 @@ ein_in01,279,92,3 script Tavern Lady#ein 854,{ mes "that women want gentle,"; mes "sensitive men with whom"; mes "they can share their feelings"; - mes "and drink chamoille tea over"; + mes "and drink chamomile tea over"; mes "freshly knit doilies?"; close; } @@ -750,7 +750,7 @@ einbech,148,242,5 script Jung#ein 855,{ mes "I'm one of the few"; mes "people who's lived"; mes "in both Einbech and"; - mes "Einbrock for a long time."; + mes "Einbroch for a long time."; mes "So I guess I'm one of the"; mes "best guides of this area."; next; @@ -954,7 +954,7 @@ einbech,148,246,5 script Franz#ein 851,{ mes "a short lived teddy bear"; mes "fad. However, a series of"; mes "mysterious accidents and"; - mes "murders where entire familes"; + mes "murders where entire families"; mes "were killed also occurred."; next; mes "[Franz]"; diff --git a/npc/cities/einbroch.txt b/npc/cities/einbroch.txt index 4650a8b3f1..992b58d8cd 100644 --- a/npc/cities/einbroch.txt +++ b/npc/cities/einbroch.txt @@ -482,7 +482,7 @@ airport,176,41,4 script Old Man#air 88,{ mes "These ores are a great"; mes "material to use in making"; mes "flower vases. My friend, who"; - mes "happens to be a dollmaker,"; + mes "happens to be a doll maker,"; mes "told me that. He makes these dolls using all sorts of materials."; next; mes "[Zhen Lan]"; @@ -787,7 +787,7 @@ ein_in01,206,224,3 script Hotel Employee#ein 855,{ mes "[Hotel Employee]"; mes "Good day, welcome to the"; mes "Einbroch Hotel. The staff is"; - mes "always striving to accomodate"; + mes "always striving to accommodate"; mes "our guests with the highest"; mes "standards in cleanliness,"; mes "service and convenience~"; @@ -834,7 +834,7 @@ ein_in01,206,224,3 script Hotel Employee#ein 855,{ else { mes "[Hotel Employee]"; mes "I'm sorry, but the"; - mes "acommodation fee is"; + mes "accommodation fee is"; mes "5,000 zeny. Next time,"; mes "please make sure that you"; mes "bring enough zeny, okay?"; diff --git a/npc/cities/geffen.txt b/npc/cities/geffen.txt index 19babfd802..87b0aaf135 100644 --- a/npc/cities/geffen.txt +++ b/npc/cities/geffen.txt @@ -154,7 +154,7 @@ geffen,111,48,0 script Stacey 101,{ mes "[Stacey]"; if (Sex == SEX_MALE) { mes "It's..."; - mes "It's like you're surrounded by this incredibly masculine aura! Oooh~! You must be irresistable to all the girls!"; + mes "It's like you're surrounded by this incredibly masculine aura! Oooh~! You must be irresistible to all the girls!"; next; emotion ET_THROB; mes "[Stacey]"; @@ -1129,7 +1129,7 @@ geffen_in,39,127,2 script Psychic Advisor 704,{ mes "So you want to know about money, eh? Let me commune with the spirits of the supernatural realm..."; next; mes "[Psychic Advisor]"; - mes "Ah yes. They are telling me that it's best to be moderate in all things. Certainly, you must make sure that your expeditures don't exceed your budget."; + mes "Ah yes. They are telling me that it's best to be moderate in all things. Certainly, you must make sure that your expenditures don't exceed your budget."; next; mes "[Psychic Advisor]"; mes "However, you should also avoid gambling with your money. By that, I mean you should save and invest carefully. Don't be tempted into risky get-rich-quick schemes!"; @@ -1359,7 +1359,7 @@ geffen_in,109,72,2 script Monster Scholar 90,{ case 2: mes "[Estheres]"; mes "Recent news?"; - mes "Well, the Juno Monster Musuem is now open to the public. They have a fascinating exhibit and various monsters are now on display!"; + mes "Well, the Juno Monster Museum is now open to the public. They have a fascinating exhibit and various monsters are now on display!"; next; mes "[Estheres]"; mes "I mean, I've read about all sorts of monsters in the Prontera and Juno Libraries, and encountered a few in the wild, but now I get a chance to see some strong monsters in real life!"; @@ -1408,7 +1408,7 @@ geffen_in,109,72,2 script Monster Scholar 90,{ geffen,203,146,5 script Citizen 97,{ mes "[Citizen]"; - mes "There was a skillful weaponsmith"; + mes "There was a skillful weapon smith"; mes "in Al De Baran who had 4 sons."; mes "Unfortunately he lost all of his sons"; mes "while developing a powerful weapon."; @@ -1416,7 +1416,7 @@ geffen,203,146,5 script Citizen 97,{ next; mes "[Citizen]"; mes "How sad it will be for the father..."; - mes "Because of the incident, the weaponsmith"; + mes "Because of the incident, the weapon smith"; mes "retired from his work and hid himself somewhere."; mes "After that, no one could ever see"; mes "the powerful weapon that he and his sons were developing."; diff --git a/npc/cities/gonryun.txt b/npc/cities/gonryun.txt index 0a6eaa058b..eddf64a442 100644 --- a/npc/cities/gonryun.txt +++ b/npc/cities/gonryun.txt @@ -211,7 +211,7 @@ gonryun,268,88,3 script Liang Zhun Bu#gon 776,{ mes "off every invasion! As long"; mes "as we believe in ourselves,"; mes "we shall never forget the"; - mes "Trumphal Song that has helped us in our struggles."; + mes "Triumphal Song that has helped us in our struggles."; close; } diff --git a/npc/cities/hugel.txt b/npc/cities/hugel.txt index 4d7ee754f1..f8efa54999 100644 --- a/npc/cities/hugel.txt +++ b/npc/cities/hugel.txt @@ -52,7 +52,7 @@ hugel,126,151,3 script Emily 90,{ mes "For some reason, my older"; mes "sister wants to move out of"; mes "Hugel as soon as she can. She"; - mes "Says that she's getting creeped"; + mes "Says that she's getting crept"; mes "out by the people that live here."; mes "Don't you think that sounds weird?"; close; diff --git a/npc/cities/izlude.txt b/npc/cities/izlude.txt index aae3f3d12d..a9d6b7cfe8 100644 --- a/npc/cities/izlude.txt +++ b/npc/cities/izlude.txt @@ -99,7 +99,7 @@ mes "Some people may think Izlude is just a satellite city of Prontera, and not really that important..."; next; mes "[Charfri]"; - mes "But Izlude is a beautiful town right next to the ocean, as well as beautiful Bylan Island."; + mes "But Izlude is a beautiful town right next to the ocean, as well as beautiful Byalan Island."; next; mes "[Charfri]"; mes "You'll have to board on a ship at the port to get to Byalan Island. There are dangerous dungeons on that island, so don't go snooping around just anywhere."; @@ -130,7 +130,7 @@ mes "The Arena here is THE place for capable young people from all over the Rune-Midgarts Kingdom to challenge themselves and test their skills."; next; mes "[Cuskoal]"; - mes "You can battle with monsters of differing levels. So, the number of stages you survive will be a testiment to your battle prowess."; + mes "You can battle with monsters of differing levels. So, the number of stages you survive will be a testament to your battle prowess."; next; mes "[Cuskoal]"; mes "So, whaddya say?"; @@ -243,7 +243,7 @@ mes "Here in Izlude, we are responsible for maintaining peace not only on land but also at sea. That's why this city has a huge telescope."; next; mes "[Kylick]"; - mes "This telecope constantly watches over the sea, so that we can prevent any serious trouble from happening. You know..."; + mes "This telescope constantly watches over the sea, so that we can prevent any serious trouble from happening. You know..."; next; mes "[Kylick]"; mes "An ounce of"; diff --git a/npc/cities/jawaii.txt b/npc/cities/jawaii.txt index d5048dddd4..9ec5cee61b 100644 --- a/npc/cities/jawaii.txt +++ b/npc/cities/jawaii.txt @@ -180,7 +180,7 @@ jawaii,240,146,5 script Jawaii Resident#desc1 724,{ jawaii,168,247,5 script Jawaii Resident#desc2 724,{ mes "[Waja Waja]"; mes "Ah, you must be a tourist."; - mes "If you're lost, just head West. Accomodations for newlyweds"; + mes "If you're lost, just head West. Accommodations for newlyweds"; mes "are located in the western part of Jawaii. The lodging here is"; mes "pretty amazing."; next; @@ -276,7 +276,7 @@ jawaii,108,199,5 script Employee#antroom 74,{ mes "young couples in this room."; next; mes "[Pine Oran]"; - mes "All the rooms may have the same basic structure, but each of them has their own unqiue interior to suit the tastes of different people."; + mes "All the rooms may have the same basic structure, but each of them has their own unique interior to suit the tastes of different people."; next; mes "[Pine Oran]"; mes "If you would like to lodge here, it is required to pay a 1,000 zeny fee for each person before entering. Since you're here to make fond memories of your honeymoon,"; @@ -1073,7 +1073,7 @@ jawaii_in,28,124,0 script Bartender#jaw 46,{ mes "of this."; next; mes "^3355FFYou receive a crooked glass"; - mes "filled with purple fluid. Although it smells pleasnt, you have a strange feeling of disgust as you draw it closer to your face."; + mes "filled with purple fluid. Although it smells pleasant, you have a strange feeling of disgust as you draw it closer to your face."; next; mes "[Bartender]"; mes "If you don't want to drink it, tell me now. But it might be good to try it once, just to experience it."; @@ -1250,7 +1250,7 @@ prt_in,173,13,4 script Customer#SoloHan 86,{ mes "or not, right buddy? Right?!"; mes "Come on! Drink with me!!"; next; - mes "^3355FFSuddenly he treated me as a close friend. It's a little embarassing, but it's not a bad idea to accept"; + mes "^3355FFSuddenly he treated me as a close friend. It's a little embarrassing, but it's not a bad idea to accept"; mes "a free drink...^000000"; next; mes "^3355FF* Gulp Gulp Gulp *^000000"; diff --git a/npc/cities/lighthalzen.txt b/npc/cities/lighthalzen.txt index 8af190d807..220fdf1ca3 100644 --- a/npc/cities/lighthalzen.txt +++ b/npc/cities/lighthalzen.txt @@ -202,7 +202,7 @@ lighthalzen,89,73,3 script Sameer#zen15 854,{ mes "of morality. In fact, I have"; mes "no need for a woman. All"; mes "I need are my ship models,"; - mes "teen novels and dominos."; + mes "teen novels and dominoes."; next; mes "[Sameer]"; mes "I'm a completely well"; @@ -450,7 +450,7 @@ lighthalzen,138,50,7 script Mauro#zen3 847,{ mes "[Mauro]"; mes "Bah! If it weren't for"; mes "us, Lighthalzen wouldn't"; - mes "be as properous as it is"; + mes "be as prosperous as it is"; mes "today! Those kids don't"; mes "know that they owe their"; mes "lives of luxury to us..."; @@ -462,7 +462,7 @@ lighthalzen,132,103,5 script Sefith#li_01 734,{ mes "Good looks. Intelligence."; mes "Excellent manners. A strong,"; mes "manly chin and overpowering,"; - mes "piercing eyes. Perfectly balanced passion and charimsma. All the"; + mes "piercing eyes. Perfectly balanced passion and charisma. All the"; mes "good things that ladies want."; next; mes "[Sefith]"; @@ -525,7 +525,7 @@ lhz_in02,34,212,4 script Maggie#05 91,{ mes "amount for the lease and the"; mes "laws here won't let me raise"; mes "the price of my flowers. Why"; - mes "are the city officals so greedy?"; + mes "are the city officials so greedy?"; close; } @@ -633,7 +633,7 @@ lighthalzen,182,102,3 script Lucius#zen5 866,{ mes "You seem to be fairly"; mes "well-off. Money is good"; mes "to have, but be careful not"; - mes "to become obssessed with it."; + mes "to become obsessed with it."; next; mes "[Lucius]"; mes "When you have the chance,"; @@ -877,7 +877,7 @@ lhz_in02,287,273,3 script Customer#amano11 50,{ mes "[Terry]"; mes "Yeah, this is a real cozy"; mes "joint. I recommend it to"; - mes "all you tourists, acutally."; + mes "all you tourists, actually."; mes "Now why don't you kick"; mes "back and chill with me?"; close; @@ -1499,7 +1499,7 @@ lhz_in01,116,45,7 script Joshua#aya 704,{ mes "complexion and smooth"; mes "skin. That's right. Come"; mes "right to Joshua, babes."; - mes "I got my pheremone spray"; + mes "I got my pheromone spray"; mes "on and I'm ready to cruise~"; close; } @@ -1949,7 +1949,7 @@ OnTouch_: lhz_in01,24,140,3 script Regenschirm Guard#40 4_M_LGTGUARD,{ mes "[Regenschirm Guard]"; - if (lhz_sincube > 10 && countitem(2657) > 0) {// Lab_Passport + if ((MISC_QUEST&512) && countitem(2657) > 0) {// Lab_Passport mes "Do you wish to"; mes "go underground?"; next; @@ -2612,7 +2612,7 @@ lighthalzen,176,65,5 script Kimmy#zen3 862,{ mes "beautiful clothing and"; mes "accessory shops. This"; mes "place is heaven to a"; - mes "trendsetter like me~!"; + mes "trend-setter like me~!"; next; mes "[Kimmy]"; mes "I don't know if you"; @@ -2812,7 +2812,7 @@ lighthalzen,77,203,3 script Victor Perfecto#zen9 869,{ mes "Still, it's pretty"; mes "depressing to think"; mes "that the beauty of nature"; - mes "can be manmade and"; + mes "can be man-made and"; mes "equated to zeny, you know?"; close; } diff --git a/npc/cities/lutie.txt b/npc/cities/lutie.txt index b74c2c9d00..8501e5a505 100644 --- a/npc/cities/lutie.txt +++ b/npc/cities/lutie.txt @@ -291,7 +291,7 @@ xmas,117,304,4 script Poze 713,{ mes "Oh, there is someone who knows how Snowysnow came to be able to speak. That person would be ^3355FFUncle Hairy Cantata^000000..."; next; mes "[Poze]"; - mes "One day when apprentice of the great alchemist visted Lutie, I came to listen in on a conversation between him and Uncle Hairy."; + mes "One day when apprentice of the great alchemist visited Lutie, I came to listen in on a conversation between him and Uncle Hairy."; next; mes "[Poze]"; mes "Long ago, a great alchemist came by Snowysnow's hometown and happened to meet Snowysnow dying, melting down into water. However, Snowysnow was miraculously revived by that Alchemist."; diff --git a/npc/cities/manuk.txt b/npc/cities/manuk.txt index bc09c66ac5..065be20199 100644 --- a/npc/cities/manuk.txt +++ b/npc/cities/manuk.txt @@ -20,7 +20,7 @@ manuk,304,195,5 script Soldier#ep13pa829 454,{ if (isequipped(2782) == 1) { mes "[Food Provider]"; - mes "The Manuk family subsists mostly on refining Gray Hollows that were burried a long time ago deep down under the ground."; + mes "The Manuk family subsists mostly on refining Gray Hollows that were buried a long time ago deep down under the ground."; close; } else { @@ -324,7 +324,7 @@ man_in01,393,134,3 script Worker#ep13bsg2 454,{ man_in01,377,143,5 script Worker#ep13bsg3 454,{ if (isequipped(2782) == 1) { mes "[Worker]"; - mes "Hmm... It's working just fine... No probems at all..."; + mes "Hmm... It's working just fine... No problems at all..."; close; } else { diff --git a/npc/cities/morocc.txt b/npc/cities/morocc.txt index 57ce579573..fecf8ea792 100644 --- a/npc/cities/morocc.txt +++ b/npc/cities/morocc.txt @@ -48,7 +48,7 @@ OnTouch_: morocc,202,244,0 script Volunteer - Morroc#01 745,{ mes "[Morroc Volunteer]"; - mes "After that terrible incident wiped out the entire Morroc, Rune-Midgard Kingdom has gathered us valunteers to help restorations."; + mes "After that terrible incident wiped out the entire Morroc, Rune-Midgard Kingdom has gathered us volunteers to help restorations."; next; mes "[Morroc Volunteer]"; mes "As important as it seems, everyone's being careful but there are always some that really don't realize the situation, don't you think?"; @@ -303,7 +303,7 @@ moc_ruins,121,116,4 script Picky Lady#moc 66,{ mes "Or, how little Picky wears that tiny egg shell sometimes?.."; next; mes "[Syvia]"; - mes "I can't believe what just has happened.. Our town used to be the one with those cute little monsters, not that kinda of visious dreadful Evil sleeping in! Whew..."; + mes "I can't believe what just has happened.. Our town used to be the one with those cute little monsters, not that kinda of vicious dreadful Evil sleeping in! Whew..."; next; mes "[Syvia]"; mes "I'm so scared... I just wanna ease my mind watching over those cute little Porings..."; @@ -375,7 +375,7 @@ moc_ruins,155,107,4 script Ant Man#moc 47,{ next; mes "[Akira]"; mes "Andre is colored in Ivory, Yellowish Green is Piere, and the Red one is Deniro."; - mes "It's really easy to distinguish those from Bitata, the commen ants because they look very different."; + mes "It's really easy to distinguish those from Bitata, the common ants because they look very different."; next; mes "[Akira]"; mes "Oh, and those ants are greedy as Porings and will try to steal your items, so keep that in mind."; @@ -388,7 +388,7 @@ moc_ruins,155,107,4 script Ant Man#moc 47,{ mes "There's also an old man called Guias, the spirit of the earth. He's pretty hard to deal with."; next; mes "[Akira]"; - mes "Sharp teeth and strong jaws of the ants would be something that you should be careful of, but the shovelling skills of that old granpa is very strong that you should watch out."; + mes "Sharp teeth and strong jaws of the ants would be something that you should be careful of, but the shovelling skills of that old grandpa is very strong that you should watch out."; next; mes "[Akira]"; mes "...Well, what am I talking about? What is left to be afraid when the Satan of Morroc is revived? Huh..huhhuh..."; @@ -414,7 +414,7 @@ moc_ruins,143,43,4 script Assassin Boy#moc 118,{ next; mes "[Slayer Kid]"; mes "Well.. Maybe it'd too late now.."; - mes "Now that the whole town's destroyed... I don't even care what happenes next..."; + mes "Now that the whole town's destroyed... I don't even care what happens next..."; close; case 2: mes "[Slayer Kid]"; @@ -566,9 +566,9 @@ moc_ruins,173,70,4 script Uncle Morroc#moc 48,{ moc_fild16,199,212,4 script Uncle Assassin#moc 55,{ mes "[Hashisid]"; mes "...Assassins are trained"; - mes "to approach their enemies steathily,"; + mes "to approach their enemies stealthily,"; mes " as well as"; - mes "to shroad their intent."; + mes "to shroud their intent."; mes "For this purpose,"; mes "we never"; mes "look our targets in the eye."; @@ -612,7 +612,7 @@ moc_fild16,199,212,4 script Uncle Assassin#moc 55,{ mes "strong smell..."; mes "If you ever,"; mes "try eating those"; - mes "smelly garlic bread with spicies,"; + mes "smelly garlic bread with spices,"; next; mes "[Hashisid]"; mes "and try hiding against"; @@ -666,7 +666,7 @@ moc_fild16,211,254,4 script Assassin#07rhea_30 118,{ next; mes "[La Conte]"; mes "Sonic Blow is the skill"; - mes "that inflicts 8 contineous hits of"; + mes "that inflicts 8 continuous hits of"; mes "Neutral damage."; close; case 2: @@ -721,7 +721,7 @@ morocc_in,166,76,3 script Bartender#02 46,{ mes "[Bartender]"; mes "What are you going to order?"; next; - switch(select("Tropical Sograt:Vemillion the Beach:Nothing.")) { + switch(select("Tropical Sograt:Vermilion on the Beach:Nothing.")) { case 1: if (Zeny >= 1000 ) { set Zeny, Zeny-1000; diff --git a/npc/cities/payon.txt b/npc/cities/payon.txt index f7b4f4acbb..d05e71f71a 100644 --- a/npc/cities/payon.txt +++ b/npc/cities/payon.txt @@ -157,11 +157,11 @@ payon,249,156,1 script Woman#payon 66,{ case 1: mes "[Woman]"; mes "Oh come on, don't be a coward."; - mes "It's just a simple cave filled with normal monsters. It's quite safe. We've even established an Archer Village near that cave to prevent misfortunate incidents. Hohoohoho~ "; + mes "It's just a simple cave filled with normal monsters. It's quite safe. We've even established an Archer Village near that cave to prevent misfortune incidents. Hohoohoho~ "; break; case 2: mes "[Woman]"; - mes "Oh don't worry about any preparations. There's a Tool Dealer right in front of the cave, so you can purchase anything you need from my husban, er, that guy~"; + mes "Oh don't worry about any preparations. There's a Tool Dealer right in front of the cave, so you can purchase anything you need from my husband, er, that guy~"; break; case 3: mes "[Woman]"; @@ -947,7 +947,7 @@ OnTouch_: next; mes "[Chief]"; mes "However, we welcome people"; - mes "who have proven to be capable to take the challange of the Hunter class."; + mes "who have proven to be capable to take the challenge of the Hunter class."; break; } next; diff --git a/npc/cities/prontera.txt b/npc/cities/prontera.txt index b077129732..ab5518346c 100644 --- a/npc/cities/prontera.txt +++ b/npc/cities/prontera.txt @@ -219,7 +219,7 @@ prontera,78,150,3 script Dairenne#pront 90,{ next; if (select("Talk:Cancel") == 1) { mes "[Towngirl Dairenne]"; - mes "I wonder if you are interested in parties or dresses. Hehehe. These days, the hot topic is definitely the colorful, extravagent, magnificent dresses you can wear."; + mes "I wonder if you are interested in parties or dresses. Hehehe. These days, the hot topic is definitely the colorful, extravagant, magnificent dresses you can wear."; next; mes "[Towngirl Dairenne]"; mes "To get such dazzling colors, I heard you have to use a dye that you can only get in Morroc. But I also heard that the price is beyond imagination."; @@ -308,10 +308,10 @@ prt_in,180,20,2 script Bartender#pront 61,{ mes "I can't keep my business busy without my special menu 'Crunch Crunch Sour' and 'Savory Yum Yum'...*Sigh*"; while(1) { next; - switch(select("'Cunch Crunch Sour'?:'Savory Yum Yum'?:Cancel.")) { + switch(select("'Crunch Crunch Sour'?:'Savory Yum Yum'?:Cancel.")) { case 1: mes "[Bartender]"; - mes "The basic ingredients of my Crunch Crunch Sour are the ants roadming inside the Ant Hell in the desert."; + mes "The basic ingredients of my Crunch Crunch Sour are the ants roaming inside the Ant Hell in the desert."; mes "Rumor has it that the numbers of the ants have been greatly increased and they have become more violent, so that no one wants to get in the place."; next; mes "[Bartender]"; @@ -361,7 +361,7 @@ prt_in,173,24,2 script Shevild#pront 85,{ mes "Yes. Few days ago, I have entered a mysterious maze following a group of hunters at the north of Prontera."; next; mes "[Shevild]"; - mes "They said that they could get lots and lots of rare items from the maze even if the maze was filled with awfully strong mosters."; + mes "They said that they could get lots and lots of rare items from the maze even if the maze was filled with awfully strong monsters."; mes "So we went there but as soon as we entered, we were just stuck inside the maze, you know."; next; mes "[Shevild]"; @@ -380,7 +380,7 @@ prt_in,173,24,2 script Shevild#pront 85,{ case 2: mes "[Shevild]"; - mes "When you go outside of Prontrea heading to north east, you will arrive at the peaceful ruins. I have been there a while ago, to deliver something to a priest."; + mes "When you go outside of Prontera heading to north east, you will arrive at the peaceful ruins. I have been there a while ago, to deliver something to a priest."; mes "I had to pass a forest on the way to the ruins, and the forest was filled with monkeys and raccoons."; next; mes "[Shevild]"; diff --git a/npc/cities/rachel.txt b/npc/cities/rachel.txt index 90f1492388..500cf37abe 100644 --- a/npc/cities/rachel.txt +++ b/npc/cities/rachel.txt @@ -53,7 +53,7 @@ ra_san04,137,48,3 script Loomin-1st Class Secret 111,{ mes "^333333The pope was born together"; mes "with a twin brother, a fair"; mes "skinned boy with pale skin"; - mes "and silver blonde hair. This"; + mes "and silver blond hair. This"; mes "had never happened before"; mes "and presented a unique problem"; mes " "; @@ -112,7 +112,7 @@ rachel,74,150,7 script Girl#1 914,{ mes "[Girl]"; mes "I've never seen our pope"; mes "before, I hear that she has"; - mes "silver blonde hair and really"; + mes "silver blond hair and really"; mes "white skin. Daddy says that"; mes "only one girl is like that"; mes "in every generation."; @@ -329,7 +329,7 @@ rachel,197,137,3 script Bard#aru 51,{ mes "[Bard]"; mes "Can I fulfill this hope~?"; mes "Meeting the girl with"; - mes "skin as white as lillies,"; + mes "skin as white as lilies,"; mes "eyes sparkling like stars~"; mes "Yes, I'm talking about the pope~"; mes "Pope, yeah~ Pope, yeah~"; diff --git a/npc/cities/splendide.txt b/npc/cities/splendide.txt index 572c03f180..fd2b93d1fd 100644 --- a/npc/cities/splendide.txt +++ b/npc/cities/splendide.txt @@ -399,7 +399,7 @@ spl_in01,190,314,5 script Security Officer#tre 461,{ mes "Those who are guilty and prisoners are detained here."; next; mes "[Security Officer]"; - mes "If you do something supicious, you must be detained here too, so you'd better to be careful!"; + mes "If you do something suspicious, you must be detained here too, so you'd better to be careful!"; close; } else { @@ -461,7 +461,7 @@ OnTouch: spl_in01,172,225,3 script Wandering Poet#ep13 51,{ cutin "god_nelluad02",2; mes "[Poet Nell]"; - mes "Hi~~ do you hear the beautiful music comeing from afar~?"; + mes "Hi~~ do you hear the beautiful music coming from afar~?"; next; select("Who are you?"); cutin "god_nelluad01",2; @@ -473,7 +473,7 @@ spl_in01,172,225,3 script Wandering Poet#ep13 51,{ mes "I cam here the other day, requesting to take notes of this new world and they allow me to follow the adventurers here."; next; mes "[Poet Nell]"; - mes "I became familliar with the Lapine."; + mes "I became familiar with the Lapine."; mes "It was quite awkward at first... Since I didn't knew their language."; mes "But, one I started to play my instruments... they loved it."; next; @@ -502,7 +502,7 @@ spl_in01,172,225,3 script Wandering Poet#ep13 51,{ cutin "god_nelluad02",2; mes "[Poet Nell]"; mes "Chaos in Eternity..."; - mes "This is a great piece but I wouldn't reccomend it while dining..."; + mes "This is a great piece but I wouldn't recommend it while dining..."; soundeffect "chaos_of_eternity.wav",0; break; case 3: @@ -520,7 +520,7 @@ spl_in01,172,225,3 script Wandering Poet#ep13 51,{ mes "This song has quite an interesting story~"; next; soundeffect "ring_of_nibelungen.wav",0; - mes "^4d4dff There was a niver named Rhein that"; + mes "^4d4dff There was a river named Rhein that"; mes "that would shine as if made of gold."; mes "It's secret hidden from all since"; mes "before this story was told...^000000"; @@ -573,7 +573,7 @@ spl_in01,172,225,3 script Wandering Poet#ep13 51,{ spl_in01,182,213,1 script Resting Laphine#ep13_1 438,{ if ((isequipped(2782) > 0) && (ep13_2_rhea > 99)) { mes "[Resting Laphine]"; - mes "The poet on the stagie is mysterious."; + mes "The poet on the stage is mysterious."; mes "The moment you came here..."; mes "He arrived and started playing music."; next; @@ -636,7 +636,7 @@ spl_in01,162,202,5 script Laphine taking notes#1 436,{ if ((isequipped(2782) > 0) && (ep13_2_rhea > 99)) { mes "[Laphine taking notes]"; mes "We are quite impressed by the poet."; - mes "We Laphine love music aswell."; + mes "We Laphine love music as well."; mes "I never imagined that I would ever hear such exotic music."; next; mes "[Laphine taking notes]"; @@ -739,7 +739,7 @@ spl_in01,154,207,5 script Laphine Staff#ep13_2 440,{ spl_in01,122,314,5 script High-Ranked Soldier#ep13 461,{ if ((isequipped(2782) > 0) && (ep13_2_rhea > 99)) { mes "[High-Ranked Soldier]"; - mes "Are ther any new supplies?"; + mes "Are there any new supplies?"; next; mes "[Laphine Soldier]"; mes "This sword just arrived..."; diff --git a/npc/cities/umbala.txt b/npc/cities/umbala.txt index 7a734894e7..57d240458d 100644 --- a/npc/cities/umbala.txt +++ b/npc/cities/umbala.txt @@ -266,7 +266,7 @@ umbala,70,106,3 script Utan Kid#um 781,{ mes "Can donate some money for"; mes "re-constructing my parents' house?"; mes "You Rune-Midgardians are all"; - mes "richier than Utans! I beg you!"; + mes "richer than Utans! I beg you!"; emotion ET_SMILE; next; if (select("(Nod head):(Shake head)") == 1) { diff --git a/npc/cities/veins.txt b/npc/cities/veins.txt index 5a4ebb12a2..6a1ae52eff 100644 --- a/npc/cities/veins.txt +++ b/npc/cities/veins.txt @@ -707,7 +707,7 @@ ve_in,318,121,3 script Towner#ve23 943,{ mes "[Towner]"; mes "Veins is famous for its"; mes "wide variety of delicious,"; - mes "irresistable liquor. Just one"; + mes "irresistible liquor. Just one"; mes "sip's enough to hook you."; next; mes "[Towner]"; diff --git a/npc/cities/yuno.txt b/npc/cities/yuno.txt index c5ecfbe34c..ca2067a872 100644 --- a/npc/cities/yuno.txt +++ b/npc/cities/yuno.txt @@ -236,7 +236,7 @@ yuno,157,205,4 script Juno Artisan#juno 54,{ close; case 4: mes "[Artisan]"; - mes "Although Juno is known as a city of Sages, I hope you understand that ordinary people live and propser here as well. Please enjoy the unique atmosphere that Juno has to offer."; + mes "Although Juno is known as a city of Sages, I hope you understand that ordinary people live and prosper here as well. Please enjoy the unique atmosphere that Juno has to offer."; close; } } diff --git a/npc/custom/battleground/bg_emp.txt b/npc/custom/battleground/bg_emp.txt index 2cb9f332dd..5cd0c912c1 100644 --- a/npc/custom/battleground/bg_emp.txt +++ b/npc/custom/battleground/bg_emp.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -11,6 +11,7 @@ //= Destroy the opponent's Emperium to win the match. //===== Additional Comments: ================================= //= 1.0 First version, edited. [Euphy] +//= 1.1 Use up to date battleground script commands [AnnieRuru] //============================================================ - script bg_emp#control -1,{ @@ -19,9 +20,6 @@ OnInit: .eventlasting = 20*60; // event duration before auto-reset (20 minutes * seconds) setarray .rewarditem[0], // rewards for the winning team: <item>,<amount>,... 501, 10; - - .team1name$ = "Red"; - .team2name$ = "Blue"; end; OnStart: if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start ) @@ -29,26 +27,19 @@ OnStart: // create Battleground and teams .red = waitingroom2bg( "bat_a01", 157,347, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ ); - copyarray .team1aid, $@arenamembers, $@arenamembersnum; - .team1count = .minplayer2start; .blue = waitingroom2bg( "bat_a01", 142,51, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ ); - copyarray .team2aid, $@arenamembers, $@arenamembersnum; - .team2count = .minplayer2start; delwaitingroom .rednpcname$; delwaitingroom .bluenpcname$; - disablenpc .rednpcname$; - disablenpc .bluenpcname$; setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red"; setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue"; bg_warp .red, "bat_a01", 171,346; bg_warp .blue, "bat_a01", 162,50; - bg_updatescore "bat_a01", 0, 0; // delay before match begins sleep 6000; mapannounce "bat_a01", "The rules are simple. The first team to break the opponent's Emperium wins!", bc_map; sleep 3000; - for ( .@i = 5; .@i > 0; .@i-- ) { + for ( .@i = 5; .@i > 0; --.@i ) { mapannounce "bat_a01", "["+ .@i +"]", bc_map; sleep 1000; } @@ -67,9 +58,10 @@ OnStart: killmonster "bat_a01", strnpcinfo(3)+"::OnRedDown"; killmonster "bat_a01", strnpcinfo(3)+"::OnBlueDown"; if ( .winside ) { - mapannounce "bat_a01", "- "+ getd( ".team"+ .winside +"name$" ) +" Team is victorious! -", bc_map; - for ( .@i = 0; .@i < getd(".team"+ .winside +"count"); .@i++ ) - getitem .rewarditem[0], .rewarditem[1], getd(".team"+ .winside +"aid["+ .@i +"]" ); + mapannounce "bat_a01", "- "+( (.winside == .red)? "Red" : "Blue" )+" Team is victorious! -", bc_map; + bg_get_data .winside, 1; + for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) + getitem .rewarditem[0], .rewarditem[1], $@arenamembers[.@i]; } else mapannounce "bat_a01", "- The match has ended in a draw! -", bc_map; sleep 5000; @@ -77,22 +69,16 @@ OnStart: bg_warp .blue, "prontera", 158,182; bg_destroy .red; bg_destroy .blue; - delwall "bg_emp_town_red"; - delwall "bg_emp_town_blue"; - deletearray .team1aid; - deletearray .team2aid; - .winside = .team1count = .team2count = 0; - enablenpc .rednpcname$; - enablenpc .bluenpcname$; + .winside = 0; donpcevent .rednpcname$ +"::OnStart"; donpcevent .bluenpcname$ +"::OnStart"; end; // Emperium destroyed -OnRedDown: callsub L_EmpDown, 1, 2; -OnBlueDown: callsub L_EmpDown, 2, 1; +OnRedDown: callsub L_EmpDown, "Red", .blue; +OnBlueDown: callsub L_EmpDown, "Blue", .red; L_EmpDown: - mapannounce "bat_a01", strcharinfo(0) +" has destroyed "+ getd( ".team"+ getarg(0) +"name$" ) +" Team's Emperium.", bc_map; + mapannounce "bat_a01", strcharinfo(0) +" has destroyed "+ getarg(0) +" Team's Emperium.", bc_map; .winside = getarg(1); awake strnpcinfo(0); end; @@ -105,15 +91,12 @@ OnBlueDead: end; // "OnQuit" event -OnRedQuit: callsub L_Quit, 1, 2; -OnBlueQuit: callsub L_Quit, 2, 1; +OnRedQuit: callsub L_Quit, .red, "Red"; +OnBlueQuit: callsub L_Quit, .blue, "Blue"; L_Quit: percentheal 100, 100; - while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; - deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; - setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; - if ( getd(".team"+ getarg(0) +"count") ) end; - mapannounce "bat_a01", "All "+ getd( ".team"+ getarg(0) +"name$" ) +" team members have quit!", bc_map, 0xff3333; + if ( !bg_get_data( getarg(0), 0 ) ) + mapannounce "bat_a01", "All "+ getarg(1) +" team members have quit!", bc_map, 0xff3333; end; } diff --git a/npc/custom/battleground/bg_pvp.txt b/npc/custom/battleground/bg_pvp.txt index 8f68b362bc..1986dfd02c 100644 --- a/npc/custom/battleground/bg_pvp.txt +++ b/npc/custom/battleground/bg_pvp.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -11,6 +11,7 @@ //= Kill players from the other team. //===== Additional Comments: ================================= //= 1.0 First version, edited. [Euphy] +//= 1.1 Use up to date battleground script commands [AnnieRuru] //============================================================ - script bg_pvp#control -1,{ @@ -26,29 +27,25 @@ OnStart: // create Battleground and teams .red = waitingroom2bg( "guild_vs3", 13,50, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ ); - copyarray .team1aid, $@arenamembers, $@arenamembersnum; - .team1count = .minplayer2start; .blue = waitingroom2bg( "guild_vs3", 86,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ ); - copyarray .team2aid, $@arenamembers, $@arenamembersnum; - .team2count = .minplayer2start; delwaitingroom .rednpcname$; delwaitingroom .bluenpcname$; bg_warp .red, "guild_vs3", 13,50; bg_warp .blue, "guild_vs3", 86,50; - .score[1] = .score[2] = .minplayer2start; - bg_updatescore "guild_vs3", .score[1], .score[2]; + .red_score = .blue_score = .minplayer2start; + bg_updatescore "guild_vs3", .red_score, .blue_score; // match duration sleep .eventlasting * 1000; // end match, destroy Battleground, reset NPCs - if ( .score[1] > .score[2] ) { + if ( .red_score > .blue_score ) { mapannounce "guild_vs3", "- Red Team is victorious! -", bc_map; - callsub L_Reward, 1; + callsub L_Reward, .red; } - else if ( .score[1] < .score[2] ) { + else if ( .blue_score > .red_score ) { mapannounce "guild_vs3", "- Blue Team is victorious! -", bc_map; - callsub L_Reward, 2; + callsub L_Reward, .blue; } else mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map; @@ -61,37 +58,32 @@ OnStart: end; L_Reward: - for ( .@i = 0; .@i < getd(".team"+ getarg(0) +"count"); .@i++ ) - getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(0) +"aid["+ .@i +"]" ); + bg_get_data getarg(0), 1; + for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) + getitem .rewarditem[0], .rewarditem[1], $@arenamembers[.@i]; return; // "OnDeath" event -OnRedDead: callsub L_Dead, 1; -OnBlueDead: callsub L_Dead, 2; +OnRedDead: callsub L_Dead, .red_score; +OnBlueDead: callsub L_Dead, .blue_score; L_Dead: - .score[ getarg(0) ]--; - bg_updatescore "guild_vs3", .score[1], .score[2]; - while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; - deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; - setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; + set getarg(0), getarg(0) -1; + bg_updatescore "guild_vs3", .red_score, .blue_score; bg_leave; - if ( !.score[ getarg(0) ] ) + if ( !getarg(0) ) awake strnpcinfo(0); sleep2 1250; percentheal 100,100; end; // "OnQuit" event -OnRedQuit: callsub L_Quit, 1; -OnBlueQuit: callsub L_Quit, 2; +OnRedQuit: callsub L_Quit, .red_score; +OnBlueQuit: callsub L_Quit, .blue_score; L_Quit: - .score[ getarg(0) ]--; - bg_updatescore "guild_vs3", .score[1], .score[2]; + set getarg(0), getarg(0) -1; + bg_updatescore "guild_vs3", .red_score, .blue_score; percentheal 100, 100; - while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; - deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; - setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; - if ( !.score[ getarg(0) ] ) + if ( !getarg(0) ) awake strnpcinfo(0); end; } @@ -116,6 +108,7 @@ OnStart: end; } +guild_vs3 mapflag gvg off guild_vs3 mapflag battleground 2 guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag nowarp diff --git a/npc/custom/card_remover.txt b/npc/custom/card_remover.txt index 29bbbff1b4..00c52b1e98 100644 --- a/npc/custom/card_remover.txt +++ b/npc/custom/card_remover.txt @@ -61,7 +61,7 @@ prt_in,28,73,4 script Wise Old Woman#eAcustom 78,{ mes "[Wise Old Woman]"; mes "This item has " + .@cardcount + " cards compounded on it. To perform my magic, I will need " + (.zenycost+(.@cardcount * .percardcost)) + " zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000."; next; - if(select("Very well. Do it.:Nevermind.") == 2) { + if(select("Very well. Do it.:Never mind.") == 2) { mes "[Wise Old Woman]"; mes "Very well. Return at once if you seek my services."; close; diff --git a/npc/custom/card_seller.txt b/npc/custom/card_seller.txt index 5226b9d35a..2dfa0ea415 100644 --- a/npc/custom/card_seller.txt +++ b/npc/custom/card_seller.txt @@ -1,28 +1,36 @@ //===== rAthena Script ======================================= //= Card Seller A-Z -//===== By: ================================================== -//= AnnieRuru -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project //===== Description: ========================================= //= Sells all cards dropped by mobs, grouped alphabetically. //= MVP cards are excluded from the list. //= //= NOTE: Requires SQL item and mob databases. -//===== Additional Comments: ================================= -//= 1.0 First version, edited. [Euphy] +//===== Changelogs: ========================================== +//= 1.0 First version [AnnieRuru] +//= 1.1 Minor edits [Euphy] +//= 1.2 Update for monster mode and enchants [Lemongrass] //============================================================ prontera,155,177,5 script Card Seller 100,{ + .@menu$ = getvariableofnpc( .alphabet_menu$, "card_seller_creation" ); + if (.@menu$ == "") { + mes "[Card Seller]"; + mes "I am sorry, it seems like something went wrong."; + mes "I cannot find any cards in our database at the moment."; + mes "Please contact a game master."; + close; + } mes "[Card Seller]"; mes "Welcome!"; mes "I can sell you any normal monster card in the game. Would you like to have a look?"; next; - .@s = select( .alphabet_menu$ ) -1; + .@s = select(.@menu$) -1; close2; - callshop "card_mob#"+ .alphabet$[.@s], 1; + callshop "card_mob#"+ getvariableofnpc( .alphabet$[.@s], "card_seller_creation" ), 1; + end; +} + +- script card_seller_creation -1,{ end; OnInit: if (checkre(0)) { @@ -32,14 +40,20 @@ OnInit: .@mob_db$ = "mob_db"; .@item_db$ = "item_db"; } - freeloop 1; - .@total = query_sql( "SELECT DISTINCT LEFT( `name_japanese`, 1 ) AS alphabets FROM `"+ .@item_db$ +"` RIGHT JOIN `"+ .@mob_db$ +"` ON `"+ .@item_db$ +"`.`id` = `"+ .@mob_db$ +"`.`dropcardid` WHERE ~(`MODE`) & 32 AND `type` = 6 GROUP BY `name_japanese` ORDER BY alphabets;", .alphabet$ ); + freeloop 1; + .@total = query_sql( "SELECT DISTINCT LEFT( `name_japanese`, 1 ) AS alphabets FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY alphabets;", .@alphabet$ ); for ( .@i = 0; .@i < .@total; .@i++ ) { - .alphabet_menu$ = .alphabet_menu$ + .alphabet$[.@i] +" Cards:"; - .@nb = query_sql( "SELECT `"+ .@item_db$ +"`.`id` FROM `"+ .@item_db$ +"` RIGHT JOIN `"+ .@mob_db$ +"` ON `"+ .@item_db$ +"`.`id` = `"+ .@mob_db$ +"`.`dropcardid` WHERE ~(`MODE`) & 32 AND `type` = 6 AND LEFT( `name_japanese`, 1 ) = '"+ .alphabet$[.@i] +"' GROUP BY `name_japanese` ORDER BY `name_japanese` LIMIT 128;", .@id ); - npcshopdelitem "card_mob#"+ .alphabet$[.@i], 501; - for ( .@j = 0; .@j < .@nb; .@j++ ) - npcshopadditem "card_mob#"+ .alphabet$[.@i], .@id[.@j], 1000000; + .@nb = query_sql( "SELECT `"+ .@item_db$ +"`.`id` FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND LEFT( `name_japanese`, 1 ) = '"+ .@alphabet$[.@i] +"' AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY `name_japanese` LIMIT 128;", .@id ); + if (.@nb > 0) { + .alphabet$[.@size_alphabet++] = .@alphabet$[.@i]; + .alphabet_menu$ = .alphabet_menu$ + .@alphabet$[.@i] +" Cards:"; + npcshopdelitem "card_mob#"+ .@alphabet$[.@i], 501; + for ( .@j = 0; .@j < .@nb; .@j++ ) { + if (callfunc( "F_IsCharm", .@id[.@j] ) == true)// Skip enchants in case someone added them as card drop + continue; + npcshopadditem "card_mob#"+ .@alphabet$[.@i], .@id[.@j], 1000000; + } + } } freeloop 0; end; diff --git a/npc/custom/etc/autopot.txt b/npc/custom/etc/autopot.txt index 2a48d73b84..eeaf73e05f 100644 --- a/npc/custom/etc/autopot.txt +++ b/npc/custom/etc/autopot.txt @@ -80,7 +80,7 @@ L_Start: @autopot_delay = .@delay; @autopot_eff = .@effect; @autopot_none = 0; - bonus_script "{ callfunc \"start_autopot\"; }",86400,8,0,SI_INCHEALRATE; + bonus_script "{ callfunc \"start_autopot\"; }",86400,8,0,EFST_HEALPLUS; message strcharinfo(0), "Auto-Potion started."; callsub L_Info; diff --git a/npc/custom/etc/bank.txt b/npc/custom/etc/bank.txt index dbbd1a6378..d5f0133eb7 100644 --- a/npc/custom/etc/bank.txt +++ b/npc/custom/etc/bank.txt @@ -20,7 +20,7 @@ prontera,132,217,5 script Banker 109,{ mes "[Banker]"; mes "Welcome to the First Bank of Prontera. How can I help you today?"; next; - switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) { + switch(select("I'd like to make a deposit.:I'd like to make a withdrawal.:What's my current balance?:Cancel")) { case 1: mes "[Banker]"; mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny."; @@ -71,12 +71,12 @@ prontera,132,217,5 script Banker 109,{ } else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) { mes "[Banker]"; - mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawl?"; + mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawal?"; next; switch(select("Yes please.:No, Thanks")){ case 1: mes "[Banker]"; - mes "Removing " + @cost + " from your withdrawl to cover the deposit fee..."; + mes "Removing " + @cost + " from your withdrawal to cover the deposit fee..."; set @withdrawl,@withdrawl - @cost; set #bankstorage,#bankstorage - @cost; set @cost,0; diff --git a/npc/custom/etc/blackjack.txt b/npc/custom/etc/blackjack.txt index 7690d7cf68..f81f0e070e 100644 --- a/npc/custom/etc/blackjack.txt +++ b/npc/custom/etc/blackjack.txt @@ -90,7 +90,7 @@ sM_0c: mes "[Dealer]"; mes "The 'Double Down' option allows you to double your current bet,"; mes "but with the drawback that you will only be able to pull one"; - mes "additional card. This option is only available at the beggining of"; + mes "additional card. This option is only available at the beginning of"; mes "each round."; next; mes "[Dealer]"; @@ -117,8 +117,8 @@ sM_0d: mes "point total over 21 and would have lost."; next; mes "[Dealer]"; - mes "It is because of the flexibilty you have with the 'Ace' that makes"; - mes "it the most powerfull card in the game."; + mes "It is because of the flexibility you have with the 'Ace' that makes"; + mes "it the most powerful card in the game."; goto sM_Menu0; M_End: mes "[Dealer]"; diff --git a/npc/custom/etc/marriage.txt b/npc/custom/etc/marriage.txt index 595056e882..092b8e4ad5 100644 --- a/npc/custom/etc/marriage.txt +++ b/npc/custom/etc/marriage.txt @@ -658,7 +658,7 @@ OnTimer60000: else set $@msg$, $wed_groom$; - npctalk @name$ +" : Registration timed out. Is it that noone wants to marry "+$@msg$+"..?"; + npctalk @name$ +" : Registration timed out. Is there no one who wants to marry "+$@msg$+"..?"; emotion ET_SCRATCH; set $wed_groom$,""; @@ -748,7 +748,7 @@ function SF_Principles { next; mes "["+@name$+"]"; if ($@wed_allow == 1) - mes "Altough normally only males can wed females (and viceversa), our local Priest is more open-minded than that and he permits all pairings regardless of gender."; + mes "Although normally only males can wed females (and vice versa), our local Priest is more open-minded than that and he permits all pairings regardless of gender."; else mes "Males may only wed with females, and females only with males, the church will not consent any other kind of partnerships."; next; diff --git a/npc/custom/etc/monster_arena.txt b/npc/custom/etc/monster_arena.txt index 4eba951520..42bcd4c06d 100644 --- a/npc/custom/etc/monster_arena.txt +++ b/npc/custom/etc/monster_arena.txt @@ -59,7 +59,7 @@ L_Info: mes "Talk to the Monster Trainer, he will ask you to heal your pet."; next; mes "[Monster Arena]"; - mes "To do this, click the Nurse repearedly until it says your pet is healed."; + mes "To do this, click the Nurse repeatedly until it says your pet is healed."; next; mes "[Monster Arena]"; mes "The more monsters you kill, the more exp you get and the quicker you can upgrade."; diff --git a/npc/custom/etc/penal_servitude.txt b/npc/custom/etc/penal_servitude.txt index 4ae137200a..26efa270aa 100644 --- a/npc/custom/etc/penal_servitude.txt +++ b/npc/custom/etc/penal_servitude.txt @@ -138,7 +138,7 @@ sec_in02,137,57,1 script Overseer 708,{ mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000."; if ( countitem(1069)<PRISON_Q ) close;//Items: Orange_Net_Mushroom, mes "OK... hand me all the shrooms..."; - mes "Let me see... "+countitem(1069)+" of almost eadible ones...";//Items: Orange_Net_Mushroom, + mes "Let me see... "+countitem(1069)+" of almost edible ones...";//Items: Orange_Net_Mushroom, mes "And "+countitem(1070)+" useless deadly ones.";//Items: Orange_Gooey_Mushroom_, next; mes "[Oliver]"; diff --git a/npc/custom/etc/quest_warper.txt b/npc/custom/etc/quest_warper.txt index dfb7c4f995..5b0d24ff62 100644 --- a/npc/custom/etc/quest_warper.txt +++ b/npc/custom/etc/quest_warper.txt @@ -271,7 +271,7 @@ SpecialWarpMenu: case 2: next; mes "Set the map in the ^0000FFmapname^000000 format."; - mes "When this warpmap is set the option for players will show once they meet the requirments."; + mes "When this warpmap is set the option for players will show once they meet the requirements."; mes "To disable Special Warp Menu option, clear this!"; input $QW_SP_WarpMap$; goto SpecialWarpMenu; @@ -541,7 +541,7 @@ L_Short_on_zeny: //===========================Stamp=Card============================ stampcard: -// Counting of the ammount of places you have unlocked +// Counting of the amount of places you have unlocked next; mes "Let me check what Towns you have."; callfunc "QWS_TownStamps"; diff --git a/npc/custom/events/disguise.txt b/npc/custom/events/disguise.txt index 5c858bd815..c05f5a7c80 100644 --- a/npc/custom/events/disguise.txt +++ b/npc/custom/events/disguise.txt @@ -93,7 +93,7 @@ prontera,160,155,4 script Disguise Event 795,{ input .@amount; mes .@n$; if (.@amount<=0 || .@amount>=10000) { - mes "That amount is invalid. Using default ammount of 1."; + mes "That amount is invalid. Using default amount of 1."; set .@amount,1; next; mes .@n$; @@ -116,7 +116,7 @@ prontera,160,155,4 script Disguise Event 795,{ mes "At the start of the event, I will"; mes "disguise myself as a random"; mes "monster. You have to shout"; - mes "that monter's name out loud."; + mes "that monster's name out loud."; next; mes "If you are correct, you will receive"; mes "a prize. If not, keep trying!"; diff --git a/npc/custom/events/holiday/hallow06.txt b/npc/custom/events/holiday/hallow06.txt index 5262030f30..c6a7a3e358 100644 --- a/npc/custom/events/holiday/hallow06.txt +++ b/npc/custom/events/holiday/hallow06.txt @@ -103,7 +103,7 @@ L_Treat: emotion ET_CONGRATULATION; next; mes "[Hallows' Eve Event]"; - mes "Enjoy the rest of your halloween."; + mes "Enjoy the rest of your Halloween."; emotion ET_SCISSOR, playerattached(); close; diff --git a/npc/custom/events/holiday/uneasy_cemetery.txt b/npc/custom/events/holiday/uneasy_cemetery.txt index 640cb97137..a815789438 100644 --- a/npc/custom/events/holiday/uneasy_cemetery.txt +++ b/npc/custom/events/holiday/uneasy_cemetery.txt @@ -63,7 +63,7 @@ L_Start_Undead: monster "prontera",268,349,"Zombie",1015,30,"Uneasy_Check::OnZombieDead"; monster "prontera",269,350,"Ghoul",1036,5,"Uneasy_Check::OnZombieDead"; //announce - mapannounce "prontera","[Mother Mathana]: The cememtery has become restless! In the name of Odin, hurry to the Sanctuary! Save the city of Prontera!",0; + mapannounce "prontera","[Mother Mathana]: The cemetery has become restless! In the name of Odin, hurry to the Sanctuary! Save the city of Prontera!",0; } prontera,257,313,5 script Mother Mathana 79,{ @@ -79,7 +79,7 @@ L_Undead_Walk: if ($UNEASY_DL == 0) mes "THEY could return tomorrow's night again!"; if ($UNEASY_DL == 0 && $UNEASY_H$==strcharinfo(0)) mes "Thank you, "+$UNEASY_H$+"! Now we'll manage to rest till the next midnight!"; if ($UNEASY_DL == 0 && $UNEASY_H$!=strcharinfo(0)) mes "But due to "+$UNEASY_H$+"'s help we'll manage to rest till the next midnight!"; - mes "To calm down the restless cemetery, we should pour all these graves with the Holy Water. But our sisters and broters have run out of it."; + mes "To calm down the restless cemetery, we should pour all these graves with the Holy Water. But our sisters and brothers have run out of it."; mes "Could you supply us with Holy Water?"; next; menu "Yes, have all my Holy Water!",-, "Nope, I need it.",M_NO, "I don't have any.",M_DONT_HAVE; @@ -105,7 +105,7 @@ L_Undead_Walk: mes "[Mother Mathana]"; mes "Our Church is going to thank you personally..."; next; - if (Sex==SEX_MALE) mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare handsom "+$UNEASY_H$+" as a Prontera savior!",0; + if (Sex==SEX_MALE) mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare handsome "+$UNEASY_H$+" as a Prontera savior!",0; else mapannounce "prontera","[Mother Mathana]: In the name of Odin we declare beautiful "+$UNEASY_H$+" as a Prontera savior!",0; mes "[Mother Mathana]"; mes "In the name of Odin we bless you and decently present a modest gift just from Mareusis' wine-cellar."; diff --git a/npc/custom/events/holiday/valentinesdayexp.txt b/npc/custom/events/holiday/valentinesdayexp.txt index 63489bd007..8e4f021d11 100644 --- a/npc/custom/events/holiday/valentinesdayexp.txt +++ b/npc/custom/events/holiday/valentinesdayexp.txt @@ -44,20 +44,20 @@ prontera,156,172,4 script Tine 58,{ M_INFO: mes "[Tine]"; - mes "The magic effect posesses only handmade chocolate from grand-grand-grand-whoever recipes!"; + mes "The magic effect possesses only handmade chocolate from grand-grand-grand-whoever recipes!"; next; mes "[Tine]"; mes "It being known that Black Handmade Chocolate works on married guys... And the White one on the married girls!"; mes "If you lose your wedding ring... then alas, it won't work on you."; next; mes "[Tine]"; - mes "On having a Chocolate, you should put off your ring then... put it back... And if your partner is online, then magc would last till the next hour!"; + mes "On having a Chocolate, you should put off your ring then... put it back... And if your partner is online, then magic would last till the next hour!"; next; mes "[Tine]"; - mes "Rumors bark that guys and gals have +50% EXP bonuses on FIVE different races of the monsters... Exluding bloody bosses, of course."; + mes "Rumors bark that guys and gals have +50% EXP bonuses on FIVE different races of the monsters... Excluding bloody bosses, of course."; next; mes "[Tine]"; - mes "There's a fameous confectioner in the Castle of Prontera! He's the one you need."; + mes "There's a famous confectioner in the Castle of Prontera! He's the one you need."; close; OnInit: @@ -135,7 +135,7 @@ alberta,29,243,4 script Jainie#val1 53,{ mes "I made them by myself. Now I need some Milk for my special White Chocolate."; next; mes "[Jainie]"; - mes "You know ... In cetain countries, there's a tradition of presenting chocolates to a person that you love..."; + mes "You know ... In certain countries, there's a tradition of presenting chocolates to a person that you love..."; mes "They call it ^3355FFValentine's Day^000000."; next; mes "[Jainie]"; diff --git a/npc/custom/events/mvp_ladder.txt b/npc/custom/events/mvp_ladder.txt index 132add0292..1fffa6bcd2 100644 --- a/npc/custom/events/mvp_ladder.txt +++ b/npc/custom/events/mvp_ladder.txt @@ -160,6 +160,8 @@ prontera,164,171,3 script MvP Ladder Warper 56,{ end; OnMvpDead: + getpartymember .party_id, 1; + getpartymember .party_id, 2; .round++; if ( .round >= 2 && .round != .totalround +1 && .round_item_amount ) { for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt index d7499753df..b306f5e02b 100644 --- a/npc/custom/jobmaster.txt +++ b/npc/custom/jobmaster.txt @@ -282,8 +282,8 @@ function Job_Menu { if ((.@class == Job_Super_Novice || .@class == Job_Super_Baby) && BaseLevel < .SNovice) { // Special Level Requirement because Super Novice and - // Supber Baby can both be selected in one of the first class - // changes. That's why the Levelrequirement is after and not before + // Super Baby can both be selected in one of the first class + // changes. That's why the Level Requirement is after and not before // the selection. mes "A base level of " + .SNovice + " is required to turn into a " + jobname(.@class) + "."; @@ -328,7 +328,7 @@ function Confirm_Change { .@class = getarg(0, -1); .@back = getarg(1, false); if( .@class < 0 ) { - mes "Unknow Class Error."; + mes "Unknown Class Error."; close; } mes "Do you want to change into ^0055FF"+jobname(.@class)+"^000000 class?"; diff --git a/npc/custom/official/GeffenMagicTournament.txt b/npc/custom/official/GeffenMagicTournament.txt index bd8f276059..27688b60c2 100644 --- a/npc/custom/official/GeffenMagicTournament.txt +++ b/npc/custom/official/GeffenMagicTournament.txt @@ -289,7 +289,7 @@ L_Shield: mes "There are two types of Rings are available for exchange."; next; L_Ring: - switch(select("Phyisical Enhancer Ring ^3355FF<1350 Coins>^000000:Magic Intensifier Ring ^3355FF<1350 Coins>^000000:Go back to previous menu")){ + switch(select("Physical Enhancer Ring ^3355FF<1350 Coins>^000000:Magic Intensifier Ring ^3355FF<1350 Coins>^000000:Go back to previous menu")){ case 1: .@item = 2963; .@cost = 1350; @@ -2525,7 +2525,7 @@ OnVictory: sleep 3000; npctalk "I'm so relieved!"; sleep 3000; - npctalk "I was able to beat a weak competitior."; + npctalk "I was able to beat a weak competitor."; sleep 3000; npctalk "Yahoo!"; sleep 5000; @@ -2685,7 +2685,7 @@ OnDefeat: OnVictory: hideoffnpc instance_npcname("Geffen Bully#n1"); sleep 1000; - npctalk "You! Hou much zeny do you have left?"; + npctalk "You! How much zeny do you have left?"; sleep 3000; npctalk "You messed with me once before!"; sleep 3000; diff --git a/npc/custom/quests/bandit_beard.txt b/npc/custom/quests/bandit_beard.txt index f02467cbab..b30fda867b 100644 --- a/npc/custom/quests/bandit_beard.txt +++ b/npc/custom/quests/bandit_beard.txt @@ -112,15 +112,15 @@ izlude_in,123,175,4 script Master Tailor#bandit 50,{ mes "What? A Bearded Man sent you..."; mes "Well I'm sorry to say that I am out of ^8080FFThread^000000."; mes "But I have the address to where I get the shipments."; - mes "It is in Al de Baran Karfa Inc. warehouse area."; + mes "It is in Al de Baran Kafra Inc. warehouse area."; mes "The address is: Al de Baran 59, 221"; mes "See you later."; set BEARD_QUEST, 2; close; } -// Karfa Thread Clerk--- -aldeba_in,70,179,5 script Karfa Clerk#bandit 113,{ - mes "[Karfa Clerk]"; +// Kafra Thread Clerk--- +aldeba_in,70,179,5 script Kafra Clerk#bandit 113,{ + mes "[Kafra Clerk]"; if(BEARD_QUEST == 3 ) goto L_REPEAT; if(BEARD_QUEST > 3 ) goto L_DONE; @@ -130,25 +130,25 @@ aldeba_in,70,179,5 script Karfa Clerk#bandit 113,{ menu "What's in the boxes?",-,"Nothing.",M_NOPE; - mes "[Karfa Clerk]"; + mes "[Kafra Clerk]"; mes "They're empty."; M_NOPE: close; L_DELIVERY: - mes "[Karfa Clerk]"; + mes "[Kafra Clerk]"; mes "Sorry but we have not received any ^8080FFThread^000000."; mes "Our shipments have been put off until its safe."; mes "You see we get our ^8080FFThread^000000 from Alberta and a monsters keeps attacking our merchants."; next; - mes "[Karfa Clerk]"; + mes "[Kafra Clerk]"; mes "Now this monsters has not been doing this before."; mes "It may have to do with the warmer months."; mes "Please help us out!"; set BEARD_QUEST,3; next; - mes "[Karfa Clerk]"; + mes "[Kafra Clerk]"; L_REPEAT: mes "Oh by the way, that Thread Merchant is somewhere around Alberta 60 and 100..."; L_DONE: @@ -213,16 +213,16 @@ alberta,1,1,1 script BRDQ_MOBS -1,{ OnStart: set $@beardMob,10; set $@beardMobD,0; - monster "alberta",65,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",66,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",67,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; - monster "alberta",68,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",65,120,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,120,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,120,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,120,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,121,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,121,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,121,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,122,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,122,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,122,"Thief Bug Male",1054,1,"BRDQ_MOBS::OnDie"; end; OnDie: set $@beardmob, $@beardmob - 1; diff --git a/npc/custom/quests/elvenear.txt b/npc/custom/quests/elvenear.txt index e1c9a9a55e..7723530599 100644 --- a/npc/custom/quests/elvenear.txt +++ b/npc/custom/quests/elvenear.txt @@ -63,6 +63,6 @@ L_Cancel: mes "[Elven Ears quest]"; mes "Aw, what a shame"; mes "Giving up already?"; - mes "Oh well maybe you will participate in tommorow's quest."; + mes "Oh well maybe you will participate in tomorrow's quest."; close; } diff --git a/npc/custom/quests/event_6_new_hats.txt b/npc/custom/quests/event_6_new_hats.txt index f01fe60639..ee51ec15ee 100644 --- a/npc/custom/quests/event_6_new_hats.txt +++ b/npc/custom/quests/event_6_new_hats.txt @@ -259,7 +259,7 @@ L_ITEM_1a: close; L_ITEM_2a: mes "[Pac]"; - mes "Oh, dear. You need 300 Jellopys..."; + mes "Oh, dear. You need 300 Jellopies..."; close; L1_29: mes "[Pac]"; @@ -312,7 +312,7 @@ L2: menu "Poring Hat",L2_26,"Sphinx Hat",L2_29; L2_26: mes "[Pac]"; - mes "You need 1 Poring Doll and 300 Jellopys for Poring Hat."; + mes "You need 1 Poring Doll and 300 Jellopies for Poring Hat."; close; L2_29: mes "[Pac]"; diff --git a/npc/custom/quests/jewel_case.txt b/npc/custom/quests/jewel_case.txt index 8c3b9b101b..cdd3ffc73a 100644 --- a/npc/custom/quests/jewel_case.txt +++ b/npc/custom/quests/jewel_case.txt @@ -17,7 +17,7 @@ lighthalzen,108,229,2 script La Fenn 766,{ mes "[La Fenn]"; if(BaseLevel<99) { if(Q_99LVL) { - mes "You... You got younger!!! But you are defenitely YOU!"; + mes "You... You got younger!!! But you are definitely YOU!"; mes "I couldn't think you were able to meet my condition..."; emotion ET_SCRATCH; next; diff --git a/npc/custom/quests/may_hats.txt b/npc/custom/quests/may_hats.txt index b72c321b07..a94baef8ec 100644 --- a/npc/custom/quests/may_hats.txt +++ b/npc/custom/quests/may_hats.txt @@ -18,7 +18,7 @@ gonryun,187,140,4 script Yakima 850,{ mes "[Yakima]"; mes callfunc("F_Hi"); mes "I can make some items for you."; - mes "They are quite rare novadays..."; + mes "They are quite rare nowadays..."; specialeffect EF_HITBODY; next; menu "Bird Nest",-,"Lion Mask",M_2,"Skeleton Manteau",M_3,"Fashion Hip Sack",M_4,"Sales Banner",M_5,"Leave",M_EXIT; @@ -107,8 +107,8 @@ M_3: M_4: mes "[Yakima]"; - mes "It's a fresh style! Ancessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!"; - mes "It fits to Merchant classonly."; + mes "It's a fresh style! Accessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!"; + mes "It fits to Merchant class only."; emotion ET_SMILE; next; mes "[Yakima]"; diff --git a/npc/custom/quests/tha_statues.txt b/npc/custom/quests/tha_statues.txt index dcd5c8cb3e..5e169b6b63 100644 --- a/npc/custom/quests/tha_statues.txt +++ b/npc/custom/quests/tha_statues.txt @@ -149,7 +149,7 @@ tha_t11,16,16,4 script Mihane 111,{ close; nook: mes "[Mihane]"; - mes "Sorry, You must start over from the begining."; + mes "Sorry, You must start over from the beginning."; next; set TSQ_CHK,0; close; @@ -166,7 +166,7 @@ tha_t11,85,85,4 script Seranes 111,{ close; nook: mes "[Seranes]"; - mes "You did not follow the good order, starts again from the begining."; + mes "You did not follow the good order, starts again from the beginning."; next; set TSQ_CHK,0; close; diff --git a/npc/custom/quests/thq/THQS_ChattingNPC.txt b/npc/custom/quests/thq/THQS_ChattingNPC.txt index 159119d7c8..1dff2f3b31 100644 --- a/npc/custom/quests/thq/THQS_ChattingNPC.txt +++ b/npc/custom/quests/thq/THQS_ChattingNPC.txt @@ -19,7 +19,7 @@ yuno,48,101,6 script Notice 722,{ mes " "; mes "Welcome to the Treasure Hunter's Guild House."; mes "Feel free to drop in and look around"; - mes "and feel free to become a memeber if you wish."; + mes "and feel free to become a member if you wish."; mes " "; mes "For membership applications please talk to Keegan"; mes "up the stairs and down the hall."; @@ -58,7 +58,7 @@ yuno_in01,33,162,3 script Smile Helper 92,{ yuno_in01,22,162,6 script Female Assasin 725,{ mes "[Sharlet]"; if (Event_THQS > 0) goto N_Member; - mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; + mes "Umm sorry I'm not gonna waste my time talking to you if you aren't even a member!"; close; N_Member: set @TEMP,rand(1,2); @@ -75,11 +75,11 @@ N_Chat2: mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest."; close; } -//another usless member +//another useless member yuno_in01,25,162,6 script Female Wizard 123,{ mes "[Sasha]"; if (Event_THQS > 0) goto N_Member; - mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; + mes "Umm sorry I'm not gonna waste my time talking to you if you aren't even a member!"; close; N_Member: set @TEMP,rand(2); @@ -87,7 +87,7 @@ N_Member: mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(0)+"."; mes "Did you hear about that goat man running around in the trees?"; mes " "; - mes "Aperently his name is Baphomet and he has been runing around the Forest Maze out side of prontera for quite some time now."; + mes "Apparently his name is Baphomet and he has been running around the Forest Maze out side of Prontera for quite some time now."; close; N_Chat: mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest."; diff --git a/npc/custom/quests/thq/THQS_GuildNPC.txt b/npc/custom/quests/thq/THQS_GuildNPC.txt index 6b03f62c4a..bd0c6e7ed2 100644 --- a/npc/custom/quests/thq/THQS_GuildNPC.txt +++ b/npc/custom/quests/thq/THQS_GuildNPC.txt @@ -17,7 +17,7 @@ yuno_in01,124,164,6 script Guild Leader 108,{ mes "[Keegan]"; mes "What brings you here? Have something to say?"; next; - menu "I want to be a Treasure Hunter",-,"Take a New Quest.",N_NQuest,"Take me to the Official Shop.",N_OShop,"Nevermind.",N_NVM; + menu "I want to be a Treasure Hunter",-,"Take a New Quest.",N_NQuest,"Take me to the Official Shop.",N_OShop,"Never mind.",N_NVM; if(Event_THQS==1) goto N_AlreadyReg; mes "[Keegan]"; mes "Well "+strcharinfo(0)+" if you want to be a Treasure Hunter first you must."; @@ -46,7 +46,7 @@ N_NoZeny: close; N_HighPrice: mes "[Keegan]"; - mes "Well if you can't afford a small ^FF000025,000z^000000 you shouldent be a Treasure Hunter yet."; + mes "Well if you can't afford a small ^FF000025,000z^000000 you shouldn't be a Treasure Hunter yet."; close; N_AlreadyReg: mes "[Keegan]"; @@ -77,7 +77,7 @@ N_OShop: end; N_NeedMem: mes "[Keegan]"; - mes "Im sorry only members may visit our private shop."; + mes "I'm sorry only members may visit our private shop."; close; N_NVM: mes "[Keegan]"; diff --git a/npc/custom/quests/thq/THQS_QuestNPC.txt b/npc/custom/quests/thq/THQS_QuestNPC.txt index 325534c4ae..7ad2aa750b 100644 --- a/npc/custom/quests/thq/THQS_QuestNPC.txt +++ b/npc/custom/quests/thq/THQS_QuestNPC.txt @@ -65,13 +65,13 @@ N_NewQuest: mes "[Guy]"; mes "Ahh welcome fellow Treasure Hunter."; mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; - mes "Would you like me to asign you a Quest?"; + mes "Would you like me to assign you a Quest?"; next; menu "Yes I would like a Quest Please.",-,"Sorry Guy no time today.",N_NoTime; mes "[Guy]"; mes "Ok lets see what quest we can give you today."; - mes "The quest names in ^FF0000This Colour^000000 mean that they are more challanging then the rest, but have better rewards."; + mes "The quest names in ^FF0000This Colour^000000 mean that they are more challenging then the rest, but have better rewards."; next; set #THQ_DELAY,(GetTime(DT_YEAR)*12*31*24+GetTime(DT_MONTH)*31*24+GetTime(DT_DAYOFMONTH)*24+GetTime(DT_HOUR) + 1); //you can get another quest after 1 hour [Lupus] emotion ET_BEST; @@ -122,10 +122,10 @@ N_JobList1: mes "^FF0000------------^000000"; mes "This is an easy and low payed quest."; mes " "; - mes "A wife came in asking us to find his husband, she seems to come in alot asking us to find him over and over again."; + mes "A wife came in asking us to find his husband, she seems to come in a lot asking us to find him over and over again."; next; mes "[Guy]"; - mes "But he always seems to be around the same place so there isn't much looking involved,check the mountains 1 west and 1 north of prontera."; + mes "But he always seems to be around the same place so there isn't much looking involved,check the mountains 1 west and 1 north of Prontera."; set one_qset,1; goto L_QuestGiven; @@ -146,19 +146,19 @@ N_HitList: mes "^FF0000------------^000000"; mes "In this quest you get to see some action."; mes " "; - mes "There has been a farmer that keeps having all his crops eaten by ^FF0000Thief Bugs, Porings, and Lunitics^000000 here is a lost of what I need you to do. He is waiting East of Prontera."; + mes "There has been a farmer that keeps having all his crops eaten by ^FF0000Thief Bugs, Porings, and Lunatics^000000 here is a lost of what I need you to do. He is waiting East of Prontera."; next; mes "[Guy]"; - mes "Ok go to the east and bash those little bastards like there is no tommorow. When you are done with that list you have just discard it, but you will NOT get another one!."; + mes "Ok go to the east and bash those little bastards like there is no tomorrow. When you are done with that list you have just discard it, but you will NOT get another one!."; set one_qset,3; goto L_QuestGiven; N_SadWidow: mes "^FF0000The Sad Widow^000000"; mes "^FF0000*************^000000"; - mes "This is just another quest with possable well pay."; + mes "This is just another quest with possible well pay."; mes " "; - mes "There is an old Widow in pontera, she recently lost her husband due to a monster attack.She has requested a Guild member to come talk to her at the Pontera Graveyard."; + mes "There is an old Widow in Prontera, she recently lost her husband due to a monster attack.She has requested a Guild member to come talk to her at the Prontera Graveyard."; set one_qset,4; goto L_QuestGiven; @@ -203,7 +203,7 @@ N_WanderMan: mes "^FF0000**************^000000"; mes "There is a woman in Payon that is in desperate for aid."; mes " "; - mes "There is a woman in Payon named Molly please get to her as soon as possable the letter she sent here sounded like someone was killing her."; + mes "There is a woman in Payon named Molly please get to her as soon as possible the letter she sent here sounded like someone was killing her."; set two_qset,4; goto L_QuestGiven; @@ -217,7 +217,7 @@ N_JobList3: mes "^FF0000------------^000000"; mes "Have you ever been to Hell?"; mes " "; - mes "A man outside of ^FF0000Ant Hell^000000 has requested your audiance, I suggest you hurry."; + mes "A man outside of ^FF0000Ant Hell^000000 has requested your audience, I suggest you hurry."; set three_qset,1; goto L_QuestGiven; @@ -234,20 +234,20 @@ N_Delivery1: N_ProntCulvert: mes "^FF0000Prontera Culvert^000000"; mes "^FF0000----------------^000000"; - mes "The bugs,They are everywere!."; + mes "The bugs,They are everywhere!."; mes " "; - mes "The ^FF0000Prontera Culvert^000000 is out of control!Sign up as a volenteer to clean out some of the culvert."; + mes "The ^FF0000Prontera Culvert^000000 is out of control!Sign up as a volunteer to clean out some of the culvert."; next; - mes "I know it seems like there is no stoping them but however many you kill does makes a differance. After you have signed up, inside the Culvert there will be a Knight that will give you a quest."; + mes "I know it seems like there is no stopping them but however many you kill does makes a difference. After you have signed up, inside the Culvert there will be a Knight that will give you a quest."; set three_qset,3; goto L_QuestGiven; N_CoalMine: mes "^FF0000Trouble at the Coal Mine^000000"; mes "^FF0000************************^000000"; - mes "The fun...err...trouble never stops in Rune Midgar."; + mes "The fun...err...trouble never stops in Rune Midgard."; mes " "; - mes "Recently there was an acident at the coal mines. There was a huge chasm that released some undead Evil Druids."; + mes "Recently there was an accident at the coal mines. There was a huge chasm that released some undead Evil Druids."; next; mes "The Evil Druids started to turn all the workers into the undead. We do not know why, but we do not want to find out, contact a man named Rudolfo outside the Coal Mines."; set three_qset,4; @@ -282,7 +282,7 @@ N_Shoot: mes "^FF0000----------^000000"; mes "A little girl is in trouble."; mes " "; - mes "There is a little girl in trouble, her name is Dassy and she is ^FF0000east of the prontera fountan^000000."; + mes "There is a little girl in trouble, her name is Dassy and she is ^FF0000east of the Prontera fountain^000000."; set four_qset,3; goto L_QuestGiven; @@ -305,7 +305,7 @@ N_JobList5: mes "^FF0000-----------^000000"; mes "Easy for some very hard for others."; mes " "; - mes "A man named Lithin wish's to give you a quest, you can find him north of prontera inside of ^FF0000The Hidden Temple^000000"; + mes "A man named Lithin wishes to give you a quest, you can find him north of Prontera inside of ^FF0000The Hidden Temple^000000"; set five_qset,1; goto L_QuestGiven; @@ -314,7 +314,7 @@ N_PyrPRT1: mes "^FF0000---------^000000"; mes "Its funny cause no one knows how these were really made."; mes " "; - mes "Aperently the Pyramids have are beganing to be infested with undead activity,outside the pyramids a man will be waiting for you. He did no give us his name but he asked for you to hurry."; + mes "Apparently the Pyramids have are beginning to be infested with undead activity,outside the pyramids a man will be waiting for you. He did no give us his name but he asked for you to hurry."; set five_qset,2; goto L_QuestGiven; @@ -331,9 +331,9 @@ N_Thinkfirst: N_Ghost: mes "^FF0000The not so friendly ghost^000000"; mes "^FF0000*************************^000000"; - mes "Well no one ever said Casper was nice behind the sceens."; + mes "Well no one ever said Casper was nice behind the scenes."; mes " "; - mes "A wizard on the 3rd floor of geffen tower want's to talk to you about the anchient ruins underneath the city."; + mes "A wizard on the 3rd floor of Geffen tower wants to talk to you about the ancient ruins underneath the city."; set five_qset,4; goto L_QuestGiven; @@ -342,12 +342,12 @@ N_JobList6: mes "[Guy]"; mes "Ok you have a couple quests that can be done here."; next; - menu "Package for thiefs",-,"Pyramid's part 2",N_PyrPRT2,"Special delivery",N_Delivery2,"^FF0000Geffenia^000000",N_Gef; - mes "^FF0000Package for thiefs^000000"; + menu "Package for thieves",-,"Pyramid's part 2",N_PyrPRT2,"Special delivery",N_Delivery2,"^FF0000Geffenia^000000",N_Gef; + mes "^FF0000Package for thieves^000000"; mes "^FF0000------------------^000000"; mes "How ironic."; mes " "; - mes "Deliver this Box to the Thiefs guild."; + mes "Deliver this Box to the Thieves guild."; getitem 1083,1; //Delivery_Box__ set six_qset,1; goto L_QuestGiven; @@ -366,7 +366,7 @@ N_Delivery2: mes "^FF0000----------------^000000"; mes "Well most of what we do is run packages, this is no different from other's."; mes " "; - mes "Take this box, DO NOT OPEN IT! To a little girl in Lutie named Chirach she should be around santa."; + mes "Take this box, DO NOT OPEN IT! To a little girl in Lutie named Chirach she should be around Santa."; getitem 1083,1; //Delivery_Box__ set six_qset,3; goto L_QuestGiven; @@ -374,9 +374,9 @@ N_Delivery2: N_Gef: mes "^FF0000Geffenia^000000"; mes "^FF0000********^000000"; - mes "The little children of Geffen have been haveing strange nightmares."; + mes "The little children of Geffen have been having strange nightmares."; mes " "; - mes "We belive that the ruins underneath geffen are causeing this problem, talk to a Wizard named Zuuzuu inside Geffen Tower for your mission."; + mes "We believe that the ruins underneath Geffen are causing this problem, talk to a Wizard named Zuuzuu inside Geffen Tower for your mission."; set six_qset,4; goto L_QuestGiven; @@ -390,7 +390,7 @@ N_JobList7: mes "^FF0000-----------^000000"; mes "Can't say no to some good apple juice."; mes " "; - mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her."; + mes "There is a little girl up in Prontera Square a bit north from the fountain, go talk to her."; set seven_qset,1; goto L_QuestGiven; @@ -407,9 +407,9 @@ N_Delivery3: N_GTB: mes "^FF0000Golden Thief Bug^000000"; mes "^FF0000****************^000000"; - mes "The prontera Culvert has never been the same..."; + mes "The Prontera Culvert has never been the same..."; mes " "; - mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert. Talk to a Knight inside the Culvert."; + mes "Well there have been reports of a Golden Thief Bug running around the bottom of the Culvert. Talk to a Knight inside the Culvert."; set seven_qset,3; goto L_QuestGiven; @@ -418,7 +418,7 @@ N_EvilPirates: mes "^FF0000************^000000"; mes "A ghost ship has washed up on shore on an island outside of Izlude."; mes " "; - mes "A female assasin has a quest for you, she is waiting outside the Ghost Ship.There have been reports of evil undead pirates lurking around inside the ship."; + mes "A female assassin has a quest for you, she is waiting outside the Ghost Ship. There have been reports of evil undead pirates lurking around inside the ship."; set seven_qset,4; goto L_QuestGiven; @@ -432,7 +432,7 @@ N_JobList8: mes "^FF0000------------^000000"; mes "Sound gross to some good to others."; mes " "; - mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her."; + mes "There is a little girl up in Prontera Square a bit north from the fountain, go talk to her."; set eight_qset,1; goto L_QuestGiven; @@ -469,7 +469,7 @@ N_JobList9: mes "[Guy]"; mes "Ok you have a couple quests that can be done here."; next; - menu "Smelly Box",-,"Payon Cave",N_PayonC,"^FF0000Sohee's Everywere!^000000",N_Sohee,"^FF0000Moonlight Flower^000000",N_Moonlight; + menu "Smelly Box",-,"Payon Cave",N_PayonC,"^FF0000Sohee's Everywhere!^000000",N_Sohee,"^FF0000Moonlight Flower^000000",N_Moonlight; mes "^FF0000Smelly Box^000000"; mes "^FF0000----------^000000"; mes "Oh god please get this out of here fast."; @@ -480,30 +480,30 @@ N_JobList9: goto L_QuestGiven; N_Sohee: - mes "^FF0000Sohee's Everywere!^000000"; + mes "^FF0000Sohee's Everywhere!^000000"; mes "^FF0000******************^000000" ; - mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes "Hmmm seems a man named Jack wants to speak to you in the Archer Guild House."; mes " "; mes "Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school."; next; mes "The strange thing about what happened was that the children inside did not seem to die from the flames."; - mes "Speak to the little school girl somewere in Payon."; + mes "Speak to the little school girl somewhere in Payon."; set nine_qset,2; goto L_QuestGiven; N_Moonlight: mes "^FF0000Moonlight Flower^000000"; mes "^FF0000****************^000000" ; - mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes "Hmmm seems a man named Jack wants to speak to you in the Archer Guild House."; mes " "; - mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave, We don't know much because no one ever seems to make it back alive."; + mes "Well I don't know much about this, it has to do with the deepest regions of Payon Cave, We don't know much because no one ever seems to make it back alive."; set nine_qset,3; goto L_QuestGiven; N_PayonC: mes "^FF0000Payon Cave^000000"; mes "^FF0000----------^000000" ; - mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes "Hmmm seems a man named Jack wants to speak to you in the Archer Guild House."; mes " "; mes "The farther we go into the cave the stranger it gets."; set nine_qset,4; @@ -520,7 +520,7 @@ N_JobList10: mes "^FF0000-------------^000000"; mes "Package to Morroc"; mes " "; - mes "There is nothing writen on this box but a notice to deliver it to a man Kreg."; + mes "There is nothing written on this box but a notice to deliver it to a man Kreg."; getitem 1082,1; //Delivery_Box_ set ten_qset,1; goto L_QuestGiven; @@ -539,7 +539,7 @@ N_Phreeoni: mes "^FF0000********^000000"; mes "He is big and Pink and you run and hide!"; mes " "; - mes "This guy just poped into some hole one day, He dosent look that tough but you would be supprised. Talk to a man named Caral outside of Ant Hell."; + mes "This guy just poped into some hole one day, He doesn't look that tough but you would be surprised. Talk to a man named Caral outside of Ant Hell."; set ten_qset,3; goto L_QuestGiven; diff --git a/npc/custom/quests/thq/THQS_Quests.txt b/npc/custom/quests/thq/THQS_Quests.txt index 980dbc9c21..752ae7b081 100644 --- a/npc/custom/quests/thq/THQS_Quests.txt +++ b/npc/custom/quests/thq/THQS_Quests.txt @@ -50,7 +50,7 @@ N_QuestStart: mes "Weren't you supposed to deliver me a box? Where is it?"; close; } - mes "Ahh, you must be from the Treasure Hunter Agensy. Do you have my bow??"; + mes "Ahh, you must be from the Treasure Hunter Agency. Do you have my bow??"; mes " "; mes "Ahh, good,thank you for your time. Take this Treasure Token."; delitem 1072,1; @@ -64,7 +64,7 @@ prt_fild06,37,192,6 script Farmer 125,{ if (one_qset == 3 && countitem(909) > 19 && countitem(955) > 19 && countitem(914) > 19 && countitem(705) > 19) goto N_QuestComp; if (one_qset==3) goto N_QuestStart; mes "[Billy-Bob]"; - mes "Arrrg!... Those Bastard Bugs have eaten everything, this place donest even look like my farm anymore!!"; + mes "Arrrg!... Those Bastard Bugs have eaten everything, this place doesn't even look like my farm anymore!!"; close; N_QuestComp: mes "[Billy-Bob]"; @@ -82,8 +82,8 @@ N_QuestComp: close; N_QuestStart: mes "[Billy-Bob]"; - mes "Those Bastard Bugs are Everywere!!!"; - mes "You must be from the guild! OK, bring me 20 Worm Peelings, 20 Jellopys, 20 fluff and 20 Clovers."; + mes "Those Bastard Bugs are Everywhere!!!"; + mes "You must be from the guild! OK, bring me 20 Worm Peelings, 20 Jellopies, 20 fluff and 20 Clovers."; close; } //1-4 @@ -108,7 +108,7 @@ N_QuestStart: mes "[Old Lady]"; mes "So your the one that has come to help me?"; mes " "; - mes "Ok well this is what I wanted you to do,this greave beside me is my husbands grave and I promised him that I would bury some Mementos with him, The problem is that I have no Mementos..."; + mes "Ok well this is what I wanted you to do, this greave beside me is my husbands grave and I promised him that I would bury some Mementos with him, The problem is that I have no Mementos..."; next; mes "[Old Lady]"; mes "Bring me 15 Mementos, please."; @@ -132,7 +132,7 @@ N_QuestComp: mes " "; mes "Sorry to inform you but you have been evicted, please move out within 3-5 days."; mes " "; - mes "-Managment"; + mes "-Management"; next; mes "[Erika]"; mes "Oh... um... Well fuck, that bastard thinks he can kick me out!!!!! He's got another thing coming!"; @@ -193,7 +193,7 @@ N_QuestComp: N_QuestStart: mes "[Lenith]"; mes "Hello, my name is Lenith and I have a quest for you."; - mes "Well resently a bunch of stupid bears stole the supers off all my bee's nests...Stupid bears."; + mes "Well recently a bunch of stupid bears stole the supers off all my bee's nests...Stupid bears."; mes " "; mes "What I need you to do is find me some more honey so these bee's can get through the winter. I will need about 20 Honey."; close; @@ -219,7 +219,7 @@ N_QuestComp: N_QuestStart: mes "[Molly]"; mes "Wow you must be the brave man from the treasure hunter guild!"; - mes "Ok here is whats happening, I don't know what started it but there is a strange Ronan Skeleton running aroung the woods 2 East from here."; + mes "Ok here is whats happening, I don't know what started it but there is a strange Ronan Skeleton running around the woods 2 East from here."; next; mes "[Molly]"; mes "We have try to kill him in the past but it was not...ummm...It was a bad idea. What I want you to do is go there and bring me back his Skull as proof of you killing him."; @@ -266,7 +266,7 @@ yuno_fild01,186,162,6 script Flank 73,{ close; N_QuestComp: mes "[Flank]"; - mes "Perfect right on time, now I must be going to plant this bomb.... Err I meen give this package to my mother for her birthday."; + mes "Perfect right on time, now I must be going to plant this bomb.... Err I mean give this package to my mother for her birthday."; next; mes "[Flank]"; mes "Thanks"; @@ -283,24 +283,24 @@ N_QuestStart: close; } //3-3 Goes to 7-3 using callfunc -prt_sewb1,120,245,6 script Sewer Managment Knight 705,{ +prt_sewb1,120,245,6 script Sewer Management Knight 705,{ if (three_qset == 3 && countitem(955) > 149) goto N_QuestComp; if (three_qset == 3) goto N_QuestStart; if (seven_qset == 3) goto N_QuestStart2; - mes "[Sewer Managmant]"; + mes "[Sewer Management]"; mes "Live dosent get any worse for me,working in the bug filled Culvert every day..."; close; N_QuestComp: - mes "[Sewer Managment]"; + mes "[Sewer Management]"; mes "Well that looked like it was no trouble for you."; - mes "Thanks have these 4 Treause Tokens."; + mes "Thanks have these 4 Treasure Tokens."; delitem 955,150; set #Treasure_Token,#Treasure_Token+4; set three_qset,0; set On_Quest,0; close; N_QuestStart: - mes "[Sewer Managmant]"; + mes "[Sewer Management]"; mes "For a while now we have had monster, mostly bugs infesting the culvert..."; mes " "; mes "What I want you to do is kinda clean some of it out, every little bit counts."; @@ -320,7 +320,7 @@ mjolnir_02,87,357,6 script Man#01 51,{ N_QuestComp: mes "[Rudolfo]"; mes "Well its good to see that you have come back alive."; - mes "I had my doughts but thank you for your help."; + mes "I had my doubts but thank you for your help."; mes " "; mes "Here have these 4 Treasure Tokens."; delitem 1041,50; @@ -332,7 +332,7 @@ N_QuestStart: mes "[Rudolfo]"; mes "Hello, you must be from the Treasure Hunter Guild."; mes " "; - mes "They must have filled you in on what is happening on the lower levels of this Coal Mine, I know its desturbing and we are still trying to figure out why and how 2 Evil Druids got down there."; + mes "They must have filled you in on what is happening on the lower levels of this Coal Mine, I know its disturbing and we are still trying to figure out why and how 2 Evil Druids got down there."; mes " "; mes "Well what I want you to do is bring me 50 Lantern's as proof that you have cleaned some of them out, any loot you find down there you may keep other then what I have asked you to get for me."; close; @@ -343,7 +343,7 @@ pay_arche,45,138,6 script Flora 724,{ if (four_qset == 1 && countitem(957) > 49) goto N_QuestComp; if (four_qset == 1) goto N_QuestStart; mes "[Flora]"; - mes "Well hello be carfull in the cave, we have heard reports of Undead monster funning around."; + mes "Well hello be careful in the cave, we have heard reports of Undead monster funning around."; close; N_QuestComp: mes "[Flora]"; @@ -359,9 +359,9 @@ N_QuestStart: mes "[Flora]"; mes "Well hello there."; mes " "; - mes "Well this is what I need you to do, bring me 50 Decayed Nails - awile back Payon Cave used to be a safe place to go...But now things have gone out of controll and Zombies have invaded the first floor..."; + mes "Well this is what I need you to do, bring me 50 Decayed Nails - a while back Payon Cave used to be a safe place to go...But now things have gone out of control and Zombies have invaded the first floor..."; mes " "; - mes "There is also these new monsters that have just poped out of no were, we call them Flaming Bastards...Be carfull if you arn't powerfull yet because they are very strong."; + mes "There is also these new monsters that have just popped out of no were, we call them Flaming Bastards...Be careful if you aren't powerful yet because they are very strong."; next; mes "[Flora]"; mes "Good Luck"; @@ -383,10 +383,10 @@ N_QuestComp: mes "[Zed]"; mes "Dear god took you long enough you bastard!"; mes "You know how much my time is worth!!!!"; - mes "Your slow and I'm never gona recomend a job for you, Gimmie my staff and get out of me face!"; + mes "Your slow and I'm never gonna recommend a job for you, Gimmie my staff and get out of me face!"; next; mes "[Zed]"; - mes "Well you can take this crapy Treausre Token."; + mes "Well you can take this crappy Treasure Token."; delitem 1999,1; set On_Quest,0; set four_qset,0; @@ -479,7 +479,7 @@ N_QuestStart: mes "Well hello."; mes "Welcome to the Forest Maze, I have a task for you."; mes " "; - mes "Ever heard of a moster called a Savage? It looks like a boar but it makes very annoying noices."; + mes "Ever heard of a monster called a Savage? It looks like a boar but it makes very annoying noises."; mes "What I want you to do is bring me 15 Manes from the savages."; close; } @@ -512,26 +512,26 @@ N_QuestStart2: callfunc "six_qset2"; } //5-3; -geffen,57,130,6 script Blonde Girl 724,{ +geffen,57,130,6 script Blond Girl 724,{ if (five_qset == 3 && countitem(744) > 0) goto N_QuestComp; if (five_qset == 3) goto N_QuestStart; - mes "[Blonde Girl]"; + mes "[Blond Girl]"; mes "I wonder what happened to my flowers"; close; N_QuestComp: - mes "[Blonde Girl]"; + mes "[Blond Girl]"; mes "Oh are these my flower! To bad I don't want them anymore..."; mes " "; mes "You can keep them is you want."; next; - mes "[Blonde Girl]"; + mes "[Blond Girl]"; mes "Here take this Treasure Token as a reward."; set five_qset,0; set On_Quest,0; set #Treasure_Token,#Treasure_Token+1; close; N_QuestStart: - mes "[Blonde Girl]"; + mes "[Blond Girl]"; mes "Hello, did you bring me flowers!?!"; close; } @@ -555,9 +555,9 @@ N_QuestComp: close; N_QuestStart: mes "[Wizard]"; - mes "Hello, the reason why I brought you here was because of a long time ago I made a friend, which happened to be a Whipser."; + mes "Hello, the reason why I brought you here was because of a long time ago I made a friend, which happened to be a Whisper."; mes "He told me that he was always bullied by the other ghosts down there and I haven't seen him in a while."; - mes "Thinking of the worse case here, I want vengance!"; + mes "Thinking of the worse case here, I want vengeance!"; mes " "; mes "Bring me 50 Fabrics!"; close; @@ -568,7 +568,7 @@ moc_prydb1,47,132,6 script Thief 48,{ if (six_qset == 1 && countitem(1083) > 0) goto N_QuestComp; if (six_qset == 1) goto N_QuestStart; mes "[Thief]"; - mes "Welcome to the Thiefs Guild."; + mes "Welcome to the Thieves Guild."; close; N_QuestComp: mes "[Thief]"; @@ -591,8 +591,8 @@ function script six_qset2 { if (six_qset == 2 && countitem(930) > 29) goto N_QuestComp2; mes "[Strange Man]"; mes "Another quest for you I have."; - mes "Futher into the pyramid you must go."; - mes "Fighting Mummys is future for you."; + mes "Further into the pyramid you must go."; + mes "Fighting Mummies is future for you."; mes " "; mes "Bring back for me their wrappings you must."; mes "It is 30 Rotten bandages I desire."; @@ -637,7 +637,7 @@ gef_tower,52,87,6 script Wizard#02 735,{ if (six_qset == 4 && countitem(944) > 19) goto N_QuestComp; if (six_qset == 4) goto N_QuestStart; mes "[Zuuzuu]"; - mes "Hello, welcome to geffen tower."; + mes "Hello, welcome to Geffen tower."; close; N_QuestComp: mes "[Wizard]"; @@ -651,14 +651,14 @@ N_QuestComp: next; mes "[Zuuzuu]"; mes "Oh dear god!!!"; - mes "One of those evil mosters has followed you up here, Kill it, Kill it!!!"; + mes "One of those evil monsters has followed you up here, Kill it, Kill it!!!"; next; monster "gef_tower",42,89,"Evil Nightmare",1061,1; close; N_QuestStart: mes "[Zuuzuu]"; mes "Hello, the reason I sent for a young adventurer was because of the problems we are having under the tower."; - mes "There seem to be more ghosts day after day down there. What I need you to do is go down there and find these mosters we call Nightmares."; + mes "There seem to be more ghosts day after day down there. What I need you to do is go down there and find these monsters we call Nightmares."; mes " "; mes "You must slay them and bring me 20 of there horse shoes."; close; @@ -717,16 +717,16 @@ N_QuestStart: //7-3 function script seven_qset-3 { if (seven_qset == 3 && countitem(969) > 0) goto N_QuestComp2; - mes "[Sewer Managment]"; - mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert"; + mes "[Sewer Management]"; + mes "Well there have been reports of a Golden Thief Bug running around the bottom on the Culvert"; mes " "; mes "Bring me 1 Gold Bar from him."; close; N_QuestComp2: - mes "[Sewer Managment]"; + mes "[Sewer Management]"; mes "Thank you for helping me."; next; - mes "[Sewer Managment]"; + mes "[Sewer Management]"; mes "Here take these 4 Treasure Tokens."; delitem 969,1; set seven_qset,0; @@ -754,7 +754,7 @@ N_QuestComp: close; N_QuestStart: mes "[Scarlet]"; - mes "Good your here. Ok there are reports of an old captain named Drake abored this ship. Kill Him!"; + mes "Good your here. Ok there are reports of an old captain named Drake aborted this ship. Kill Him!"; mes " "; mes "Bring me his Saber as proof!"; close; @@ -824,7 +824,7 @@ N_QuestComp: N_QuestStart: mes "[Zack]"; mes "Hello,the reason why I brought you here was because of a very strange monster known as Baphomet."; - mes "People say that Baphomet guilds the gate to the under-world but I don't belive them, Kill Baphomet!"; + mes "People say that Baphomet guilds the gate to the under-world but I don't believe them, Kill Baphomet!"; mes " "; mes "Bring me his Evil Horn!"; close; @@ -864,7 +864,7 @@ geffen_in,168,124,6 script Mage 48,{ close; N_QuestComp: mes "[Mage]"; - mes "Thank you for this delivery. Sorry about the smell, Its a box of Toad Tounges"; + mes "Thank you for this delivery. Sorry about the smell, Its a box of Toad Tongues"; next; mes "[Mage]"; mes "Here take this Treasure Token as a reward."; @@ -875,7 +875,7 @@ N_QuestComp: close; N_QuestStart: mes "[Mage]"; - mes "Hello "+strcharinfo(0)+", Where is my box of Toad Tounges?."; + mes "Hello "+strcharinfo(0)+", Where is my box of Toad Tongues?."; close; } //9-2; @@ -927,7 +927,7 @@ N_QuestComp: close; N_QuestStart: mes "[Jack]"; - mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave. We don't know much because no one ever seems to make it back alive. We suspect a monster we call the Moonlight Flower"; + mes "Well I don't know much about this, it has to do with the deepest regions of Payon Cave. We don't know much because no one ever seems to make it back alive. We suspect a monster we call the Moonlight Flower"; mes " "; mes "Bring me back 1 Nine Tales!"; close; @@ -935,7 +935,7 @@ N_QuestStart2: //9-4 if (nine_qset == 4 && countitem(901) > 39) goto N_QuestComp2; mes "[Jack]"; - mes "Hello, we need you to investigate some crap in the 3rd level of payon."; + mes "Hello, we need you to investigate some crap in the 3rd level of Payon."; mes " "; mes "Bring me back 40 Daenggie's."; close; @@ -995,7 +995,7 @@ N_QuestComp: close; N_QuestStart: mes "[Man]"; - mes "Tony the Tiger is on Crack! He must be stoped, KILL HIM!"; + mes "Tony the Tiger is on Crack! He must be stopped, KILL HIM!"; mes " "; mes "Bring me back 1 Tiger's_Skin!"; close; @@ -1020,9 +1020,9 @@ N_QuestComp: close; N_QuestStart: mes "[Caral]"; - mes "Phreeoni the Pink Fluff is terrorizing little novices! He must be stoped, KILL HIM!"; + mes "Phreeoni the Pink Fluff is terrorizing little novices! He must be stopped, KILL HIM!"; mes " "; - mes "Bring me back 1 Tounge!"; + mes "Bring me back 1 Tongue!"; close; } //10-4 diff --git a/npc/custom/quests/thq/THQS_TTShop.txt b/npc/custom/quests/thq/THQS_TTShop.txt index 98dcafd22e..832afa114c 100644 --- a/npc/custom/quests/thq/THQS_TTShop.txt +++ b/npc/custom/quests/thq/THQS_TTShop.txt @@ -20,10 +20,10 @@ prt_in,159,172,0 warp thqwrp 3,3,yuno_in01,123,155 prt_in,164,174,1 script Treasure Hunter's Shop 65,{ mes "[Ash]"; - mes "Ahh, "+strcharinfo(0)+"! Welcome to the Offical Treasure Hunter's Guild Shop."; + mes "Ahh, "+strcharinfo(0)+"! Welcome to the Official Treasure Hunter's Guild Shop."; mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; next; - menu "How does this place work?",-,"What do you have in stock?",N_Shop,"Nevermind",N_NVM; + menu "How does this place work?",-,"What do you have in stock?",N_Shop,"Never mind",N_NVM; mes "[Ash]"; mes "Well you see here you can exchange your treasure hunter tokens for zeny or rare weapons forged by our blacksmiths."; mes " "; @@ -43,11 +43,11 @@ N_Shop: mes " "; mes "(Note T stands for a Treasure Token.)"; next; - menu "Trade for Zeny",-,"Trade for Weapons",N_BuyWeps,"Trade for Cards",N_BuyCards,"Nevermind",N_NVM; + menu "Trade for Zeny",-,"Trade for Weapons",N_BuyWeps,"Trade for Cards",N_BuyCards,"Never mind",N_NVM; mes "[Ash]"; mes "This is what we have to offer."; next; - menu "1000z - 1T",-,"10000z - 10T",N_10T,"100000z - 100T",N_100T,"Nevermind",N_NVM; + menu "1000z - 1T",-,"10000z - 10T",N_10T,"100000z - 100T",N_100T,"Never mind",N_NVM; if (#Treasure_Token > 0) goto N_GetZeny1k; mes "You don't have enough tokens!"; close; @@ -76,12 +76,12 @@ N_BuyWeps: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Axe's",-,"1 Handed Swords",N_1HandSword,"2 Handed Swords",N_2HandSword,"Book's",N_Book,"Bow's",N_Bow,"Katar's",N_Katar,"Knuckle's",N_Knuckle,"Mace's",N_Mace,"Whips",N_Whip,"Wands",N_Wand,"Nevermind",N_NVM; + menu "Axe's",-,"1 Handed Swords",N_1HandSword,"2 Handed Swords",N_2HandSword,"Book's",N_Book,"Bow's",N_Bow,"Katar's",N_Katar,"Knuckle's",N_Knuckle,"Mace's",N_Mace,"Whips",N_Whip,"Wands",N_Wand,"Never mind",N_NVM; mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Sabbath - 160T",-,"Slaughter - 160T",N_Slau,"Tomahawk - 180T",N_Toma,"Great Axe - 200T",N_GreatA,"Guillotine - 200T",N_Guill,"Nevermind",N_NVM; + menu "Sabbath - 160T",-,"Slaughter - 160T",N_Slau,"Tomahawk - 180T",N_Toma,"Great Axe - 200T",N_GreatA,"Guillotine - 200T",N_Guill,"Never mind",N_NVM; if (#Treasure_Token < 160) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-160; @@ -122,7 +122,7 @@ N_1HandSword: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Edge - 130T",-,"Solar Sword - 150T",N_SolarS,"Caesar's Sword - 170T",N_CaesarS,"Nagan - 180T",N_Nagan,"Immaterial Sword - 200T",N_ImmatS,"Excalibur - 200T",N_Excal,"Byeollungum - 240T",N_Byeoll,"Talefing - 320T",N_Talef,"Nevermind",N_NVM; + menu "Edge - 130T",-,"Solar Sword - 150T",N_SolarS,"Caesar's Sword - 170T",N_CaesarS,"Nagan - 180T",N_Nagan,"Immaterial Sword - 200T",N_ImmatS,"Excalibur - 200T",N_Excal,"Byeollungum - 240T",N_Byeoll,"Talefing - 320T",N_Talef,"Never mind",N_NVM; if (#Treasure_Token < 130) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-130; @@ -177,7 +177,7 @@ N_2HandSword: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Dragon Slayer - 140T",-,"Schweizersabel - 200T",N_Schwe,"Katzbalger - 300T",N_Katzb,"Muramasa - 300T",N_Murama,"Masamune - 400T",N_Masamu,"Balmung - 2000T",N_Balmu,"Nevermind",N_NVM; + menu "Dragon Slayer - 140T",-,"Schweizersabel - 200T",N_Schwe,"Katzbalger - 300T",N_Katzb,"Muramasa - 300T",N_Murama,"Masamune - 400T",N_Masamu,"Balmung - 2000T",N_Balmu,"Never mind",N_NVM; if (#Treasure_Token < 140) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-140; @@ -220,7 +220,7 @@ N_Book: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Book of the Burning Sun - 80T",-,"Book of the Rough Seas - 80T",N_RoughSea,"Book of the Dry Winds - 80T",N_DryWinds,"Book of the Ripe Earth - 80T",N_RipeEarth,"Book of the Revelations - 80T",N_Revela,"Bible - 90T",N_Bible,"Tablet - 120T",N_Tablet,"Nevermind",N_NVM; + menu "Book of the Burning Sun - 80T",-,"Book of the Rough Seas - 80T",N_RoughSea,"Book of the Dry Winds - 80T",N_DryWinds,"Book of the Ripe Earth - 80T",N_RipeEarth,"Book of the Revelations - 80T",N_Revela,"Bible - 90T",N_Bible,"Tablet - 120T",N_Tablet,"Never mind",N_NVM; if (#Treasure_Token < 80) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-80; @@ -268,7 +268,7 @@ N_Bow: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Rudra's Bow - 150T",-,"Roguemaster's Bow - 150T",N_Rogue,"Nevermind",N_NVM; + menu "Rudra's Bow - 150T",-,"Roguemaster's Bow - 150T",N_Rogue,"Never mind",N_NVM; if (#Treasure_Token < 150) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-150; @@ -286,7 +286,7 @@ N_Katar: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Katar of the Blazing Rage - 70T",-,"Katar of the Cold Icicle - 70T",N_ColdIce,"Katar of the Piercing Wind - 70T",N_PiercWind,"Katar of the Dusty Thornbush - 70T",N_DustyT,"Sharpened Legbone of Ghoul - 125T",N_Legbone,"Infiltrator - 150T",N_Infiltra,"Nevermind",N_NVM; + menu "Katar of the Blazing Rage - 70T",-,"Katar of the Cold Icicle - 70T",N_ColdIce,"Katar of the Piercing Wind - 70T",N_PiercWind,"Katar of the Dusty Thornbush - 70T",N_DustyT,"Sharpened Legbone of Ghoul - 125T",N_Legbone,"Infiltrator - 150T",N_Infiltra,"Never mind",N_NVM; if (#Treasure_Token < 70) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-70; @@ -328,7 +328,7 @@ N_Knuckle: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Kaiser Knuckle - 75T",-,"Berserk - 75T",N_Berserk,"Nevermind",N_NVM; + menu "Kaiser Knuckle - 75T",-,"Berserk - 75T",N_Berserk,"Never mind",N_NVM; if (#Treasure_Token < 75) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-75; @@ -346,7 +346,7 @@ N_Mace: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Spike - 65T",-,"Slash - 90T",N_Slash,"Grand Cross - 100T",N_GrandC,"Quadrille - 110T",N_Quadr,"Mjolnir - 1000T",N_MJ,"Nevermind",N_NVM; + menu "Spike - 65T",-,"Slash - 90T",N_Slash,"Grand Cross - 100T",N_GrandC,"Quadrille - 110T",N_Quadr,"Mjolnir - 1000T",N_MJ,"Never mind",N_NVM; if (#Treasure_Token < 65) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-65; @@ -382,7 +382,7 @@ N_Whip: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Rapture Rose - 50T",-,"Chemeti - 65T",N_Chemeti,"Nevermind",N_NVM; + menu "Rapture Rose - 50T",-,"Chemeti - 65T",N_Chemeti,"Never mind",N_NVM; if (#Treasure_Token < 50) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-50; @@ -400,7 +400,7 @@ N_Wand: mes "[Ash]"; mes "This is what we have to offer."; next; - menu "Mighty Staff - 90T",-,"Wizardry Staff - 150T",N_Wizardry,"Bone Wand - 110T",N_BoneW,"Staff of Soul - 120T",N_SOSoul,"Nevermind",N_NVM; + menu "Mighty Staff - 90T",-,"Wizardry Staff - 150T",N_Wizardry,"Bone Wand - 110T",N_BoneW,"Staff of Soul - 120T",N_SOSoul,"Never mind",N_NVM; if (#Treasure_Token < 90) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-90; @@ -433,7 +433,7 @@ N_BuyCards: menu "Poring Card - 2T",-,"Pasana Card - 420T",N_CPasana,"Dokebi Card - 420T",N_CDok,"Swordfish Card - 420T",N_CSFish, "Sandman Card - 420T",N_CSMan,"Drainliar Card - 360T",N_CDrain,"Kaho Card - 360T",N_CKaho,"Mandragora Card - 360T",N_CMand, "Vadon Card - 360T",N_CVadon,"Mummy Card - 540T",N_CMummy,"Zenorc Card - 240T",N_CZeno,"Condor Card - 240T",N_CCond, - "Zombie Card - 210T",N_CZomb,"Nevermind",N_NVM; + "Zombie Card - 210T",N_CZomb,"Never mind",N_NVM; if (#Treasure_Token < 2) goto N_NeedToken; set #Treasure_Token,#Treasure_Token-2; diff --git a/npc/custom/quests/umbalian_language.txt b/npc/custom/quests/umbalian_language.txt index 5e89895137..96fc4102a0 100644 --- a/npc/custom/quests/umbalian_language.txt +++ b/npc/custom/quests/umbalian_language.txt @@ -156,7 +156,7 @@ L_AGAIN: yuno,157,366,2 script Wise Man Fabius 743,{ mes "[Fabius]"; - if(event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled + if(event_umbala >= 3) set umb_lang,2; //You already learned Umbalian language from Umbalian Chief. So this Quest is disabled if(umb_lang<2) goto L_QUEST; mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!"; close; @@ -166,13 +166,13 @@ L_QUEST: delitem 7118,1; //Items: Torn Scroll, delitem 7117,1;//Items: Torn Spell Book, emotion ET_THANKS; - mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril."; + mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggdrasil."; next; mes "[Fabius]"; mes "But enough talk, you're just eager to get your reward aren't you? Well it may not sound much, but my reward for you is knowledge..."; next; mes "[Fabius]"; - mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggsadril."; + mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggdrasil."; next; mes "[Fabius]"; mes "And I, a great wise man of Yuno, will teach you their language!"; @@ -192,7 +192,7 @@ L_DONE: mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you."; next; mes "[Fabius]"; - mes "From what I know, they're in different seperate towns making something out of themselves."; + mes "From what I know, they're in different separate towns making something out of themselves."; if(umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET; if(umb_marie==1) mes "Oh... You found Marie in Amatsu."; if(umb_mojo==1) mes "You saw Mojo in Aldebaran?"; diff --git a/npc/custom/woe_controller.txt b/npc/custom/woe_controller.txt index d8ee92b606..65d1966c5a 100644 --- a/npc/custom/woe_controller.txt +++ b/npc/custom/woe_controller.txt @@ -359,7 +359,7 @@ while(1) { set .Size, getarraysize($WOE_CONTROL); case 3: mes "[New Session]"; - mes ((.@d)?"Session added.":"Cancelled."); + mes ((.@d)?"Session added.":"cancelled."); next; set .@d,1; case 2: @@ -391,7 +391,7 @@ while(1) { set .@j, select(" ~ ^FF0000Delete session...^000000: ~ ^777777Cancel^000000"); mes "[Remove Session]"; if (.@j == 2) - mes "Cancelled."; + mes "cancelled."; else { deletearray $WOE_CONTROL[.@i*4],4; set .Size, getarraysize($WOE_CONTROL); @@ -409,7 +409,7 @@ while(1) { next; set .@i, select(" ~ ^0055FFReload settings...^000000: ~ ^777777Cancel^000000"); mes "[Reload Settings]"; - if (.@i == 2) mes "Cancelled."; + if (.@i == 2) mes "cancelled."; else { set .Init,1; donpcevent "WOE_CONTROL::OnMinute00"; @@ -431,7 +431,7 @@ while(1) { set .@i, select(" ~ ^FF0000End session...^000000:"+((.Options&1)?" ~ ^FF0000End session without rewards...^000000":"")+": ~ ^777777Cancel^000000"); mes "[Force Agit End]"; if (.@i == 3) - mes "Cancelled."; + mes "cancelled."; else { set .ForceEnd, .@i; donpcevent "WOE_CONTROL::OnWOEEnd"; diff --git a/npc/events/RWC_2012.txt b/npc/events/RWC_2012.txt index d27e84dec3..f9be96dc05 100644 --- a/npc/events/RWC_2012.txt +++ b/npc/events/RWC_2012.txt @@ -315,7 +315,7 @@ prontera,147,59,3 script Goldberg#pron 878,{ mes "I'm sorry. But you don't have the RWC Initialization coupon. Can you check your inventory?"; close; } - if (.@equip_card[3] == 0) { + if (callfunc("F_IsCharm",.@equip_card[3]) == false) { mes "[Goldberg]"; mes "Hm... this equipment is clean. I cannot initialize it if there's nothing! Check it again."; close; @@ -327,9 +327,9 @@ prontera,147,59,3 script Goldberg#pron 878,{ delequip .@part; // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3] - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i] >= 4700) // Armor Enchant System - set .@equip_card[.@i],0; + for ( .@i = getiteminfo(.@equip_id,10); .@i < MAX_SLOTS; .@i++ ) { + if (callfunc("F_IsCharm",.@equip_card[.@i]) == true) + .@equip_card[.@i] = 0;// Armor Enchant System } getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3]; diff --git a/npc/jobs/2-1/hunter.txt b/npc/jobs/2-1/hunter.txt index e6e05b6767..3934ac74f3 100644 --- a/npc/jobs/2-1/hunter.txt +++ b/npc/jobs/2-1/hunter.txt @@ -1,17 +1,17 @@ -//===== rAthena Script ======================================= +//===== rAthena Script ======================================= //= Hunter Job Quest -//===== By: ================================================== +//===== By: ================================================== //= EREMES THE CANIVALIZER (Aegis)Translated by yoshiki (Aegis) //= Converted by kobra_k88 //= Further bugfixed and tested by Lupus -//===== Current Version: ===================================== +//===== Current Version: ===================================== //= 3.7 -//===== Compatible With: ===================================== +//===== Compatible With: ===================================== //= rAthena Project -//===== Description: ========================================= +//===== Description: ========================================= //= [Official Conversion] //= Job Change quest for Hunter class. -//===== Additional Comments: ================================= +//===== Additional Comments: ================================= //= 0.5 Fully working. //= 0.6 Changed global variable names to unique ones. //= 0.7 - 0.8 Updates for rAthena +Knight2,Crusader2 fix @@ -53,10 +53,10 @@ //= 3.5 Added Quest Log commands. [Kisuka] //= 3.6 Removed the need for use of 'goto.' [L0ne_W0lf] //= 3.7 Modified the quest to renewal. [Vali] (Thanks to Muad_Dib for the necessary info). -//============================================================ +//============================================================ // Notices in the old Hunter Guild. -//============================================================ +//============================================================ in_hunter,99,99,4 script Hunter Info#hnt::HntNotice 727,{ mes "============ Notice ============"; mes "We would like to inform that the Hunter Job Change Location"; @@ -77,7 +77,7 @@ in_hunter,99,99,4 script Hunter Info#hnt::HntNotice 727,{ pay_fild10,148,252,3 duplicate(HntNotice) Job Change Location#hu 857 // Actual Job quest start -//============================================================ +//============================================================ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ if (Upper == 1) { mes "[Hunter Sherin]"; @@ -153,12 +153,7 @@ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ close; } else if (BaseJob == Job_Archer) { - if (SkillPoint) { - mes "[Hunter Sherin]"; - mes "You can't apply to change jobs if you still have unused skill points. Use your remaining skill points first."; - close; - } - else if (HNTR_Q == 17 && countitem(1007) == 0) { + if (HNTR_Q == 17 && countitem(1007) == 0) { mes "[Hunter Sherin]"; mes "Hmm... I've been informed that you passed the test. But you don't have the necessary 'Necklace of Wisdom (Penetration)' that proves your accomplishment."; next; @@ -166,7 +161,7 @@ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ mes "I'll let you change your job, but you must bring back a 'Necklace of Wisdom (Penetration),' no matter what it takes."; close; } - else if (HNTR_Q == 17 && countitem(1007) > 0 && JobLevel > 39) { + else if (HNTR_Q == 17 && countitem(1007) > 0) { mes "[Hunter Sherin]"; mes "Oh...?"; mes "You passed"; @@ -178,11 +173,11 @@ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ mes "I will now change"; mes "your job to a Hunter~"; next; - delitem 1007,1; //Penetration + delitem 1007,1; // Penetration mes "[Hunter Sherin]"; mes "Tada~ Congratulations!"; mes "You look great as a Hunter!!"; - set .@joblvl, JobLevel; + .@joblvl = JobLevel; completequest 4013; callfunc "Job_Change",Job_Hunter; callfunc "F_ClearJobVar"; // clears all job variables for the current player @@ -198,12 +193,12 @@ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ getitem 1710,1; //CrossBow close; } - else if ((JobLevel > 39) && ((HNTR_Q == 0) || (HNTR_Q == 1))) { + else if (HNTR_Q == 0 || HNTR_Q == 1) { if (HNTR_Q == 0) { mes "[Hunter Guildsman]"; mes "Oh, you're an Archer! It seems as if you've trained enough as an Archer... You came here to become a Hunter, right?"; next; - switch(select("Yes. That's what I'm here for.:What are the requirements to change jobs?:....I don't want to change yet.")) { + switch( select( "Yes. That's what I'm here for.", "What are the requirements to change jobs?", "....I don't want to change yet." ) ) { case 1: mes "[Hunter Guildsman]"; mes "Hehe~"; @@ -224,214 +219,201 @@ hu_in01,386,373,4 script Hunter Guildsman#hnt 727,{ mes "Well then,"; mes "shall we begin?"; next; - if (select("Yes~ Let's start now.:No, I'll be back later.") == 1) { - if(checkquest(4000) == -1) { - setquest 4000; - } - mes "[Hunter Sherin]"; - mes "Listen carefully to the scenarios I describe. When I ask a question, you choose an answer. Pretty simple, don't you think?"; - next; - mes "[Hunter Sherin]"; - mes "I just want to know how you think about life, and why you want to become a Hunter, so there's no need to be nervous."; - next; - } - else { + if (select( "Yes~ Let's start now.", "No, I'll be back later.") == 2) { mes "[Hunter Sherin]"; mes "Okay..."; mes "Come back"; mes "when you're ready~"; close; } + if (isbegin_quest(4000) == 0) + setquest 4000; + mes "[Hunter Sherin]"; + mes "Listen carefully to the scenarios I describe. When I ask a question, you choose an answer. Pretty simple, don't you think?"; + next; + mes "[Hunter Sherin]"; + mes "I just want to know how you think about life, and why you want to become a Hunter, so there's no need to be nervous."; break; case 2: - set .@selection,2; - break; + mes "[Hunter Guildsman]"; + mes "Job change"; + mes "requirements?"; + mes "First..."; + mes "You must be an Archer."; + next; + mes "[Hunter Guildsman]"; + mes "Second..."; + mes "You must be"; + mes "at least Job Level 40."; + next; + mes "[Hunter Guildsman]"; + mes "Third..."; + mes "You must bring all of the items that will be requested by the guild. You can worry about that later."; + next; + mes "[Hunter Guildsman]"; + mes "Fourth..."; + mes "You've gotta pass the test administered by the guild. If you have had enough training as an Archer, you should be able to pass the test~"; + close; case 3: - set .@selection,3; - break; + mes "[Hunter Guildsman]"; + mes "Okay then,"; + mes "see you next time~"; + close; } } else if (HNTR_Q == 1) { mes "[Hunter Sherin]"; mes "Welcome back...!"; mes "Well, let's start with the interview. This time, carefully think about the answers to each question."; - next; } - switch(.@selection) { - default: - mes "[Hunter Sherin]"; - mes "Well then,"; - mes "let's begin."; - next; - mes "[Hunter Sherin]"; - mes "You are an Archer, and you don't know where you should go to hunt. What do you do?"; - next; - switch(select("Scream out loud asking where you should go.:Quietly ask a person passing by.:Wander around alone and search for a place.")) { - case 2: - case 3: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "So you've decided on a place to hunt. You're going to hunt the monsters known as Hodes in the Sograt Desert."; - next; - mes "[Hunter Sherin]"; - mes "But you are in Payon!!"; - mes "How do you go to the desert?"; - next; - switch(select("Ask a Priest to open a free warp portal.:Use the Kafra service.:Walk with a friend.")) { - case 2: - case 3: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "There is no Priest to ask for a warp, and no friend is around to walk with you. You must use the Kafra service, but you have no Zeny!"; - next; - mes "[Hunter Sherin]"; - mes "How would you go"; - mes "about to make the"; - mes "Zeny that you need?"; - next; - switch(select("Beg here and there.:Sell items I do not need.:Hunt at a nearby field.")) { - case 2: - case 3: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "So you finally arrive at the Sograt Desert. But you realize that Hodes are a bit too strong for you to hunt alone."; - next; - mes "[Hunter Sherin]"; - mes "What is your"; - mes "solution to this"; - mes "situation?"; - next; - if (select("Attack a Hode from the top of a hill.:Go back to town.:Attack someone else's Hode.") == 2) - set .@hunter_t,.@hunter_t+10; - mes "[Hunter Sherin]"; - mes "Let's say you were having too much trouble hunting Hodes and returned to town. Now you are out of HP and a Priest happens to be around. How would you ask for a Heal?"; - next; - if (select("Would it be possible to get a Heal, please?:Heal, please.:Heal me.") == 1) - set .@hunter_t,.@hunter_t+10; - mes "[Hunter Sherin]"; - mes "This time, you found a rare item while you were going through your inventory. You go out to sell the item, and there are many people with stores and chatrooms open."; - next; - mes "[Hunter Sherin]"; - mes "What is the"; - mes "best way to"; - mes "sell your item?"; - next; - switch(select("Scream out loud to everyone in sight.:Open a chatroom and wait.:Look to see if anyone already wants it.")) { - case 2: - case 3: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "While you are waiting, someone is begging for items and Zeny. What should you do?"; - next; - if (select("Give some of my items and Zeny.:Ignore and walk away.:Tell the person about a good place to hunt.") == 1) - set .@hunter_t,.@hunter_t+10; - mes "[Hunter Sherin]"; - mes "By now, you decide to go to the Maze by yourself."; - next; - mes "[Hunter Sherin]"; - mes "But on your way, you run"; - mes "into someone that is lost."; - mes "What should you do?"; - next; - switch(select("Tell them which way to go.:Guide them to their destination.:Ignore.")) { - case 1: - case 2: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "After meeting this lost person, you decide to get back to hunting. Just then, you find that someone is attacking a boss!"; - next; - mes "[Hunter Sherin]"; - mes "What should you do?"; - next; - if (select("Watch, then attack when asked for help.:Attack and see what happens.:Just go back to town.") == 1) - set .@hunter_t,.@hunter_t+10; - mes "[Hunter Sherin]"; - mes "You are now very exhausted after your day of hunting. It's time to go back to town."; - next; - mes "[Hunter Sherin]"; - mes "But what's this!? You find an expensive item lying on the floor! What should you do with it?"; - next; - switch(select("Pick it up and keep it.:Try to find the owner.:Just walk by.")) { - case 2: - case 3: - set .@hunter_t,.@hunter_t+10; - default: - break; - } - mes "[Hunter Sherin]"; - mes "Okay, this is the end of the test!"; - next; - if (.@hunter_t == 100) { - set HNTR_Q,2; - changequest 4000,4001; - mes "[Hunter Sherin]"; - mes "Well done! Your answers show you've got the right outlook on life. You definitely have the right qualities to become a Hunter~"; - next; - mes "[Hunter Sherin]"; - mes "I'm glad to say you've passed the interview~ Now, go to that person in the corner and confirm which item is necessary for your job change test~"; - close; - } - else if (.@hunter_t == 90) { - set HNTR_Q,2; - changequest 4000,4001; - mes "[Hunter Sherin]"; - mes "Well, I'm looking at your answers and your score isn't perfect. But I'll let you pass anyway. I don't know what our Guildmaster will think, though."; - next; - mes "[Hunter Sherin]"; - mes "Just remember to always keep basic etiquette in mind. Try harder in the following tests and make me happy, okay?"; - close; - } - set HNTR_Q,1; - mes "[Hunter Sherin]"; - mes "Hmm... I don't think this'll work out. You can't become a Hunter without knowing basic etiquette."; - next; - mes "[Hunter Sherin]"; - mes "Think about how you answered the questions one more time. In order to value nature, you must first value your relationship with others."; - next; - mes "[Hunter Sherin]"; - mes "Then, you'll be more in tune with nature and with other people. It's this kind of harmony that makes the best Hunters."; - close; + next; + mes "[Hunter Sherin]"; + mes "Well then,"; + mes "let's begin."; + next; + mes "[Hunter Sherin]"; + mes "You are an Archer, and you don't know where you should go to hunt. What do you do?"; + next; + switch( select( "Scream out loud asking where you should go.", "Quietly ask a person passing by.", "Wander around alone and search for a place." ) ) { case 2: - mes "[Hunter Guildsman]"; - mes "Job change"; - mes "requirements?"; - mes "First..."; - mes "You must be an Archer."; - next; - mes "[Hunter Guildsman]"; - mes "Second..."; - mes "You must be"; - mes "at least Job Level 40."; - next; - mes "[Hunter Guildsman]"; - mes "Third..."; - mes "You must bring all of the items that will be requested by the guild. You can worry about that later."; - next; - mes "[Hunter Guildsman]"; - mes "Fourth..."; - mes "You've gotta pass the test administered by the guild. If you have had enough training as an Archer, you should be able to pass the test~"; - break; case 3: - mes "[Hunter Guildsman]"; - mes "Okay then,"; - mes "see you next time~"; + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "So you've decided on a place to hunt. You're going to hunt the monsters known as Hodes in the Sograt Desert."; + next; + mes "[Hunter Sherin]"; + mes "But you are in Payon!!"; + mes "How do you go to the desert?"; + next; + switch( select( "Ask a Priest to open a free warp portal.", "Use the Kafra service.", "Walk with a friend." ) ) { + case 2: + case 3: + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "There is no Priest to ask for a warp, and no friend is around to walk with you. You must use the Kafra service, but you have no Zeny!"; + next; + mes "[Hunter Sherin]"; + mes "How would you go"; + mes "about to make the"; + mes "Zeny that you need?"; + next; + switch( select( "Beg here and there.", "Sell items I do not need.", "Hunt at a nearby field." ) ) { + case 2: + case 3: + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "So you finally arrive at the Sograt Desert. But you realize that Hodes are a bit too strong for you to hunt alone."; + next; + mes "[Hunter Sherin]"; + mes "What is your"; + mes "solution to this"; + mes "situation?"; + next; + if (select( "Attack a Hode from the top of a hill.", "Go back to town.", "Attack someone else's Hode." ) == 2) + .@hunter_t += 10; + mes "[Hunter Sherin]"; + mes "Let's say you were having too much trouble hunting Hodes and returned to town. Now you are out of HP and a Priest happens to be around. How would you ask for a Heal?"; + next; + if (select( "Would it be possible to get a Heal, please?", "Heal, please.", "Heal me." ) == 1) + .@hunter_t += 10; + mes "[Hunter Sherin]"; + mes "This time, you found a rare item while you were going through your inventory. You go out to sell the item, and there are many people with stores and chatrooms open."; + next; + mes "[Hunter Sherin]"; + mes "What is the"; + mes "best way to"; + mes "sell your item?"; + next; + switch( select( "Scream out loud to everyone in sight.", "Open a chatroom and wait.", "Look to see if anyone already wants it." ) ) { + case 2: + case 3: + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "While you are waiting, someone is begging for items and Zeny. What should you do?"; + next; + if (select("Give some of my items and Zeny.", "Ignore and walk away.", "Tell the person about a good place to hunt.") == 1) + .@hunter_t += 10; + mes "[Hunter Sherin]"; + mes "By now, you decide to go to the Maze by yourself."; + next; + mes "[Hunter Sherin]"; + mes "But on your way, you run"; + mes "into someone that is lost."; + mes "What should you do?"; + next; + switch( select( "Tell them which way to go.", "Guide them to their destination.", "Ignore." ) ) { + case 1: + case 2: + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "After meeting this lost person, you decide to get back to hunting. Just then, you find that someone is attacking a boss!"; + next; + mes "[Hunter Sherin]"; + mes "What should you do?"; + next; + if (select( "Watch, then attack when asked for help.", "Attack and see what happens.", "Just go back to town." ) == 1) + .@hunter_t += 10; + mes "[Hunter Sherin]"; + mes "You are now very exhausted after your day of hunting. It's time to go back to town."; + next; + mes "[Hunter Sherin]"; + mes "But what's this!? You find an expensive item lying on the floor! What should you do with it?"; + next; + switch( select( "Pick it up and keep it.", "Try to find the owner.", "Just walk by." ) ) { + case 2: + case 3: + .@hunter_t += 10; + default: + break; + } + mes "[Hunter Sherin]"; + mes "Okay, this is the end of the test!"; + next; + if (.@hunter_t == 100) { + HNTR_Q = 2; + changequest 4000,4001; + mes "[Hunter Sherin]"; + mes "Well done! Your answers show you've got the right outlook on life. You definitely have the right qualities to become a Hunter~"; + next; + mes "[Hunter Sherin]"; + mes "I'm glad to say you've passed the interview~ Now, go to that person in the corner and confirm which item is necessary for your job change test~"; close; } + else if (.@hunter_t == 90) { + HNTR_Q = 2; + changequest 4000,4001; + mes "[Hunter Sherin]"; + mes "Well, I'm looking at your answers and your score isn't perfect. But I'll let you pass anyway. I don't know what our Guildmaster will think, though."; + next; + mes "[Hunter Sherin]"; + mes "Just remember to always keep basic etiquette in mind. Try harder in the following tests and make me happy, okay?"; + close; + } + HNTR_Q = 1; + mes "[Hunter Sherin]"; + mes "Hmm... I don't think this'll work out. You can't become a Hunter without knowing basic etiquette."; + next; + mes "[Hunter Sherin]"; + mes "Think about how you answered the questions one more time. In order to value nature, you must first value your relationship with others."; + next; + mes "[Hunter Sherin]"; + mes "Then, you'll be more in tune with nature and with other people. It's this kind of harmony that makes the best Hunters."; + close; } else if (HNTR_Q > 2 && HNTR_Q < 10) { mes "[Hunter Sherin]"; @@ -475,21 +457,12 @@ hu_in01,382,382,4 script Guild Receptionist#hnt 732,{ mes "[Guild Receptionist]"; mes "Greetings. They call me... ^660000The Demon Hunter^000000. I am the one in charge of processing applications. Your name is ... " + strcharinfo(0) + ", correct?"; next; - set .@selection,select("Yes, that is correct.:Nope~~(heeheehee)"); - if (.@selection == 2) { + if (select( "Yes, that is correct.", "Nope~~(heeheehee)" ) == 2) { mes "[Demon Hunter]"; mes "Hey, stop messing around."; mes "Your name is " + strcharinfo(0) + ", right?"; next; - if (select("Yes...:Hehehe. I keep telling you, it's not~~") == 1) { - mes "[Demon Hunter]"; - mes "Okay, then. These are the items you need for the test. Since we provide all of the necessary arrows you'll use for the test, we need you to get the materials to make them."; - next; - mes "[Demon Hunter]"; - mes "You see, right now we're having some financial problems. Let's see, we're short on these items..."; - next; - } - else { + if (select("Yes...", "Hehehe. I keep telling you, it's not~~") == 2) { mes "[Demon Hunter]"; mes "Leave if you plan to trifle me your petty tricks. Do you not realize that you are toying with ^660000The Demon Hunter^000000?!'"; close2; @@ -503,85 +476,121 @@ hu_in01,382,382,4 script Guild Receptionist#hnt 732,{ mes "[Demon Hunter]"; mes "You see, we're having some financial problems. Let's see, we're short on these items..."; next; - if(checkre(0)) set .@i,1; - switch(rand(1,7)) { - //Insect_Feeler/Claw_Of_Desert_Wolf, Wooden_Block, White_Herb - case 1: setarray .@items[0], (.@i?928:7030),5, 1019,5, 509,3, 3; changequest 4001,4002; break; - //Bill_Of_Birds, Skel_Bone, Green_Herb - case 2: setarray .@items[0], 925,3, 932,5, 511,3, 4; changequest 4001,4003; break; - //Colorful_Shell/Posionous_Canine, Animal's_Skin, Red_Herb - case 3: setarray .@items[0], (.@i?1013:937),3, 919,3, 507,5, 5; changequest 4001,4004; break; - //Horn/Dokkaebi_Horn, Poison_Spore/Piece_Of_Egg_Shell, Fluff - case 4: setarray .@items[0], (.@i?947:1021),3, (.@i?7033:7032),3, 914,10, 6; changequest 4001,4005; break; - //Shell, Worm_Peelings, Yellow_Herb - case 5: setarray .@items[0], 935,9, 955,9, 508,9, 7; changequest 4001,4006; break; - //Tooth_Of_Bat, Sticky_Mucus, Bear's_Foot - case 6: setarray .@items[0], 913,3, 938,1, 948,1, 8; changequest 4001,4007; break; - //Porcupine_Spike, Yoyo_Tail, Acorn - case 7: setarray .@items[0], 1027,2, 942,1, 1026,1, 9; changequest 4001,4008; break; + if (checkre(RENEWAL) == true) + .@i = 1; + switch( rand(1,7) ) { + case 1: + // Insect_Feeler/Claw_Of_Desert_Wolf, Wooden_Block, White_Herb + setarray .@items[0], (.@i?928:7030),5, 1019,5, 509,3, 3; + changequest 4001,4002; + break; + case 2: + // Bill_Of_Birds, Skel_Bone, Green_Herb + setarray .@items[0], 925,3, 932,5, 511,3, 4; + changequest 4001,4003; + break; + case 3: + // Colorful_Shell/Posionous_Canine, Animal's_Skin, Red_Herb + setarray .@items[0], (.@i?1013:937),3, 919,3, 507,5, 5; + changequest 4001,4004; + break; + case 4: + // Horn/Dokkaebi_Horn, Poison_Spore/Piece_Of_Egg_Shell, Fluff + setarray .@items[0], (.@i?947:1021),3, (.@i?7033:7032),3, 914,10, 6; + changequest 4001,4005; + break; + case 5: + // Shell, Worm_Peelings, Yellow_Herb + setarray .@items[0], 935,9, 955,9, 508,9, 7; + changequest 4001,4006; + break; + case 6: + // Tooth_Of_Bat, Sticky_Mucus, Bear's_Foot + setarray .@items[0], 913,3, 938,1, 948,1, 8; + changequest 4001,4007; + break; + case 7: + // Porcupine_Spike, Yoyo_Tail, Acorn + setarray .@items[0], 1027,2, 942,1, 1026,1, 9; + changequest 4001,4008; + break; } - if (.@selection == 1) { - mes "[Demon Hunter]"; - mes "Hmm. ^660000"+.@items[1]+" "+getitemname(.@items[0])+"^000000 to use for arrow tips. ^660000"+.@items[3]+" "+getitemname(.@items[2])+"^000000 to use here and there. And ^660000"+.@items[5]+" "+getitemname(.@items[4])+"^000000 please."; - set HNTR_Q,.@items[6]; - next; - mes "[Demon Hunter]"; + mes "[Demon Hunter]"; + mes "Hmm. ^660000" + .@items[1] + " " + getitemname(.@items[0]) + "^000000 to use for arrow tips. ^660000" + .@items[3] + " " + getitemname(.@items[2]) + "^000000 to use here and there. And ^660000" + .@items[5] + " " + getitemname(.@items[4]) + "^000000 please."; + HNTR_Q = .@items[6]; + next; + mes "[Demon Hunter]"; + if (HNTR_Q >= 5) + mes "By the way, a member of our Hunter Guild is at the Archer Guild on official business. I believe you have to go visit this person since he is in charge of the testing."; + else { mes "Oh right. Our Guildmaster has gone on an official trip to the Payon Central Palace. You have to go visit him because the one that administers the test."; - next; - mes "[Demon Hunter]"; - mes "Alright then, come back to me when you have everything ready~"; + mes "You can find him in a building east of the Payon Central Palace."; } + next; + mes "[Demon Hunter]"; + mes "Alright then, come back to me when you have everything ready~"; close; } else if (HNTR_Q >= 3 && HNTR_Q <= 9) { - if(checkre(0)) set .@i,1; + if (checkre(RENEWAL) == true) + .@i = 1; switch(HNTR_Q) { - //Insect_Feeler/Claw_Of_Desert_Wolf, Wooden_Block, White_Herb - case 3: setarray .@items[0], (.@i?928:7030),5, 1019,5, 509,3, 10; break; - //Bill_Of_Birds, Skel_Bone, Green_Herb - case 4: setarray .@items[0], 925,3, 932,5, 511,3, 10; break; - //Colorful_Shell/Posionous_Canine, Animal's_Skin, Red_Herb - case 5: setarray .@items[0], (.@i?1013:937),3, 919,3, 507,5, 10; break; - //Horn/Dokkaebi_Horn, Poison_Spore/Piece_Of_Egg_Shell, Fluff - case 6: setarray .@items[0], (.@i?947:1021),3, (.@i?7033:7032),3, 914,10, 10; break; - //Shell, Worm_Peelings, Yellow_Herb - case 7: setarray .@items[0], 935,9, 955,9, 508,9, 11; break; - //Tooth_Of_Bat, Sticky_Mucus, Bear's_Foot - case 8: setarray .@items[0], 913,3, 938,1, 948,1, 11; break; - //Porcupine_Spike, Yoyo_Tail, Acorn - case 9: setarray .@items[0], 1027,2, 942,1, 1026,1, 11; break; + case 3: + // Insect_Feeler/Claw_Of_Desert_Wolf, Wooden_Block, White_Herb + setarray .@items[0], (.@i?928:7030),5, 1019,5, 509,3, 10; + break; + case 4: + // Bill_Of_Birds, Skel_Bone, Green_Herb + setarray .@items[0], 925,3, 932,5, 511,3, 10; + break; + case 5: + // Colorful_Shell/Posionous_Canine, Animal's_Skin, Red_Herb + setarray .@items[0], (.@i?1013:937),3, 919,3, 507,5, 10; + break; + case 6: + // Horn/Dokkaebi_Horn, Poison_Spore/Piece_Of_Egg_Shell, Fluff + setarray .@items[0], (.@i?947:1021),3, (.@i?7033:7032),3, 914,10, 10; + break; + case 7: + // Shell, Worm_Peelings, Yellow_Herb + setarray .@items[0], 935,9, 955,9, 508,9, 11; + break; + case 8: + // Tooth_Of_Bat, Sticky_Mucus, Bear's_Foot + setarray .@items[0], 913,3, 938,1, 948,1, 11; + break; + case 9: + // Porcupine_Spike, Yoyo_Tail, Acorn + setarray .@items[0], 1027,2, 942,1, 1026,1, 11; + break; } mes "[Demon Hunter]"; mes "Hmm?"; next; if (countitem(.@items[0]) >= .@items[1] && countitem(.@items[2]) >= .@items[3] && countitem(.@items[4]) >= .@items[5]) { - mes "[Demon Hunter]"; - mes "You brought all of the necessary materials... You can get directions to the testing area from our Guildmaster who is currently in the Payon Central Palace."; - set HNTR_Q,.@items[6]; - if(checkquest(4002) != -1) { + HNTR_Q = .@items[6]; + if (isbegin_quest(4002) == 1) changequest 4002,4009; - } - else if(checkquest(4003) != -1) { + else if (isbegin_quest(4003) == 1) changequest 4003,4009; - } - else if(checkquest(4004) != -1) { + else if (isbegin_quest(4004) == 1) changequest 4004,4009; - } - else if(checkquest(4005) != -1) { + else if (isbegin_quest(4005) == 1) changequest 4005,4009; - } - else if(checkquest(4006) != -1) { + else if (isbegin_quest(4006) == 1) changequest 4006,4010; - } - else if(checkquest(4007) != -1) { + else if (isbegin_quest(4007) == 1) changequest 4007,4010; - } - else { + else changequest 4008,4010; - } delitem .@items[0],.@items[1]; delitem .@items[2],.@items[3]; delitem .@items[4],.@items[5]; + mes "[Demon Hunter]"; + if (HNTR_Q == 10) + mes "You brought all of the necessary materials... You can get directions to the testing area from our Guildmaster who is currently in the Payon Central Palace."; + else + mes "You brought all of the necessary materials... To get directions to the testing area, go talk to our Guildmaster who is at the Archer Guild."; close; } mes "[Demon Hunter]"; @@ -590,9 +599,9 @@ hu_in01,382,382,4 script Guild Receptionist#hnt 732,{ next; mes "[Demon Hunter]"; mes "The items you need are"; - mes "^660000"+.@items[1]+" "+getitemname(.@items[0])+"^000000,"; - mes "^660000"+.@items[3]+" "+getitemname(.@items[2])+"^000000 and"; - mes "^660000"+.@items[5]+" "+getitemname(.@items[4])+"^000000."; + mes "^660000" + .@items[1] + " " + getitemname(.@items[0]) + "^000000,"; + mes "^660000" + .@items[3] + " " + getitemname(.@items[2]) + "^000000 and"; + mes "^660000" + .@items[5] + " " + getitemname(.@items[4]) + "^000000."; mes "Come back once you have"; mes "gathered all the items."; close; @@ -619,7 +628,7 @@ payon_in03,131,7,3 script Hunter#htnGM 59,{ mes "[Hunter Guildmaster]"; mes "Hmpf. You must be here for the Hunter job test. Let me tell you about the testing process. What would you like to know?"; next; - switch(select("What is the test?:What are the passing requirements?:Any warnings?:Begin test.")) { + switch( select( "What is the test?", "What are the passing requirements?", "Any warnings?", "Begin test." ) ) { case 1: mes "[Hunter Guildmaster]"; mes "You have to hunt down certain monsters with a particular name. But you must avoid all the traps while you're at it."; @@ -645,21 +654,25 @@ payon_in03,131,7,3 script Hunter#htnGM 59,{ mes "If the person in front succeeds, resigns or fails, the next person waiting in the chatroom is sent to the testing area. If nobody is waiting, the test will begin as soon as you enter the chatroom."; close; case 4: - if (.@a0) { - mes "[Hunter Guildmaster]"; - mes "Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to my explanation."; - next; - } + // Note: aegis typo + // if (.@a0) { + // mes "[Hunter Guildmaster]"; + // mes "Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to my explanation."; + // } + // else { + // mes "[Hunter Guildmaster]"; + // mes "Okay. Best of luck."; + // mes "I'll send you right now."; + // } mes "[Hunter Guildmaster]"; - mes "Okay. Best of luck."; - mes "I'll send you right now."; + mes "Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to my explanation."; next; } mes "[Hunter Guildmaster]"; mes "Well, then. Your arrows are probably still being made, so you can use mine to take the test."; - set HNTR_Q,12; + HNTR_Q = 12; changequest 4009,4011; - getitem 1751,200; //Silver_Arrow + getitem 1751,200; // Silver_Arrow close2; warp "job_hunte",176,22; end; @@ -690,7 +703,7 @@ payon_in03,131,7,3 script Hunter#htnGM 59,{ mes "If you have any"; mes "questions, ask now."; next; - switch(select("What is the test?:What are the passing requirements?:Any warnings?:Begin test.")) { + switch( select( "What is the test?", "What are the passing requirements?", "Any warnings?", "Begin test." ) ) { case 1: mes "[Hunter Guildmaster]"; mes "You have to hunt down certain monsters with a particular name, but you also avoid all the traps at the same time. This is to test your ability to move swiftly and locate targets in various situations."; @@ -724,12 +737,12 @@ payon_in03,131,7,3 script Hunter#htnGM 59,{ mes "[Hunter Guildmaster]"; mes "Anyway, I believe you've prepared it yourself. Let's begin now."; next; - if (select("Okay. Let's start...:Ah, wait a sec.") == 1) { + if (select( "Okay. Let's start...", "Ah, wait a sec." ) == 1) { mes "[Hunter Guildmaster]"; mes "Okay!! I hope"; mes "you will pass this time!"; close2; - set HNTR_Q,12; + HNTR_Q = 12; warp "job_hunte",176,22; end; } @@ -742,9 +755,9 @@ payon_in03,131,7,3 script Hunter#htnGM 59,{ mes "[Hunter Guildmaster]"; mes "Wow, you came back in one piece!"; mes "I mean, good job. I'll give you the item which proves that you have passed the test."; - set HNTR_Q,17; + HNTR_Q = 17; savepoint "payon",104,99,1,1; - getitem 1007,1; //Penetration + getitem 1007,1; // Penetration changequest 4012,4013; next; mes "[Hunter Guildmaster]"; @@ -773,25 +786,21 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ mes "[Hunter Guildmaster]"; mes "Mmm. I see you're here for the Hunter job test. Let me explain the testing process. What would you like to know?"; next; - switch(select("What is the test?:What are the passing requirements?:Any warnings?:Begin test.")) { + switch( select( "What is the test?", "What are the passing requirements?", "Any warnings?", "Begin test." ) ) { case 1: mes "[Hunter Guildmaster]"; mes "You have to hunt down certain monsters with a particular name, but you must avoid all of the traps here at the same time."; next; mes "[Hunter Guildmaster]"; mes "This is to test your ability to move swiftly and locate targets in various situations."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 2: mes "[Hunter Guildmaster]"; mes "Within the given time, you will start in the 6 o'clock direction of the map, hunt the target monsters, and hit the escape switch that will appear in the center of the map."; next; mes "[Hunter Guildmaster]"; mes "You will pass if you are able to escape in the 12 o'clock direction of the map when the switch is activated."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 3: mes "[Hunter Guildmaster]"; mes "Mmm. Warnings... Well, if you fall into a trap, you have to start the test over from the beginning. And only one person can take the test at a time."; @@ -801,30 +810,33 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ next; mes "[Hunter Guildmaster]"; mes "If the person currently taking the test passes or fails, the next person waiting in the chatroom is sent to the testing area. If nobody is waiting, the test will begin as soon as you enter the chatroom."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 4: - if (.@a0) { - mes "[Hunter Guildmaster]"; - mes "...Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to the explanation."; - next; - } + // Note: aegis typo + // if (.@a0) { + // mes "[Hunter Guildmaster]"; + // mes "...Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to the explanation."; + // next; + // } + // else { + // mes "[Hunter Guildmaster]"; + // mes "Okay, best of luck."; + // mes "I'll send you right now."; + // } + // next; mes "[Hunter Guildmaster]"; - mes "Okay, best of luck."; - mes "I'll send you right now."; + mes "...Okay. I'll send you to the testing area right now. Don't blame me if you get lost or confused because you didn't listen to the explanation."; next; } mes "[Hunter Guildmaster]"; mes "Well, your arrows are probably still being made, so you can use mine to take the test."; - getitem 1751,200; //Silver_Arrow + getitem 1751,200; // Silver_Arrow next; mes "[Hunter Guildmaster]"; mes "Good luck."; - set HNTR_Q,12; + HNTR_Q = 12; changequest 4010,4011; warp "job_hunte",176,22; - cutin "job_huntermaster",255; end; } else if (HNTR_Q > 1 && HNTR_Q < 10) { @@ -838,9 +850,7 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ next; mes "[Hunter Guildmaster]"; mes "Stop by once you have gathered all the items needed for the test."; - close2; - cutin "job_huntermaster",255; - end; + close3; } else if (HNTR_Q == 10) { mes "[Hunter]"; @@ -852,9 +862,7 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ next; mes "[Hunter]"; mes "If you wish to change jobs, I think you need to go visit the person at Payon Central Palace."; - close2; - cutin "job_huntermaster",255; - end; + close3; } else if (HNTR_Q > 11 && HNTR_Q < 16) { mes "[Hunter Guildmaster]"; @@ -865,25 +873,21 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ mes "have questions,"; mes "feel free to ask."; next; - switch(select("What is the test?:What are the requirements to pass the test?:Any warnings?:Begin test.")) { + switch( select( "What is the test?", "What are the requirements to pass the test?", "Any warnings?", "Begin test." ) ) { case 1: mes "[Hunter Guildmaster]"; mes "You have to hunt down certain monsters with a particular name, but you must avoid all of the traps here at the same time."; next; mes "[Hunter Guildmaster]"; mes "This is to test your ability to move swiftly and locate targets in various situations."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 2: mes "[Hunter Guildmaster]"; mes "Within the given time, you will start in the 6 o'clock direction of the map, hunt the target monsters, and hit the escape switch that will appear in the center of the map."; next; mes "[Hunter Guildmaster]"; mes "You will pass if you are able to escape in the 12 o'clock direction of the map when the switch is activated."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 3: mes "[Hunter Guildmaster]"; mes "Mmm. Warnings... Well, if you fall into a trap, you have to start the test over from the beginning. And only one person can take the test at a time."; @@ -893,9 +897,7 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ next; mes "[Hunter Guildmaster]"; mes "If the person currently taking the test passes or fails, the next person waiting in the chatroom is sent to the testing area. If nobody is waiting, the test will begin as soon as you enter the chatroom."; - close2; - cutin "job_huntermaster",255; - end; + close3; case 4: mes "[Hunter Guildmaster]"; mes "Okay, good luck."; @@ -911,13 +913,13 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ mes "you're ready."; mes "Let's begin."; next; - if (select("Yes, let's start.:Ah, wait a moment.") == 1) { + if (select( "Yes, let's start.", "Ah, wait a moment." ) == 1) { mes "[Hunter Guildmaster]"; mes "Okay!! Now..."; mes "Pass this time!"; close2; - cutin "job_huntermaster",255; - set HNTR_Q,12; + cutin "",255; + HNTR_Q = 12; warp "job_hunte",176,22; end; } @@ -926,25 +928,22 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ mes "Come back when"; mes "you're done with"; mes "your preparations."; - close2; - cutin "job_huntermaster",255; - end; + close3; } else if (HNTR_Q == 16) { mes "[Hunter Guildmaster]"; mes "Wow. You're back in one piece!"; mes "I mean, good job. Well then, I'll give you the item which serves as proof that you passed the test."; - set HNTR_Q,17; + HNTR_Q = 17; savepoint "payon",104,99,1,1; getitem 1007,1; //Penetration + changequest 4012,4013; next; mes "[Hunter Guildmaster]"; mes "Well..."; mes "There you go."; mes "Now hurry back to the Hunter Guild, and join us~"; - close2; - cutin "job_huntermaster",255; - end; + close3; } else if (HNTR_Q == 17) { mes "[Hunter Guildmaster]"; @@ -955,16 +954,12 @@ payon_in02,21,31,1 script Hunter#htnGM2 59,{ mes "They're waiting"; mes "for you back"; mes "at the Hunter Guild."; - close2; - cutin "job_huntermaster",255; - end; + close3; } else { mes "[Hunter]"; mes "What do you want? I'm on an official trip and am busy at the moment. Now if you'll excuse me."; - close2; - cutin "job_huntermaster",255; - end; + close3; } } @@ -999,21 +994,19 @@ OnTouch_: mes "[Guide]"; mes "If it's too hard, it wouldn't hurt to try again next time. Would you like to resign for now?"; next; - switch(select("Keep trying.:Resign.")) { - case 1: + if (select( "Keep trying.", "Resign." ) == 1) { mes "[Guide]"; mes "Okay. Do your best and become a great Hunter. Please enter the waiting room. If someone is already taking the test, you must wait until that person is done."; close; - case 2: - mapannounce "job_hunte",strcharinfo(0)+ " has resigned. Next person, please enter.",bc_map; - mes "[Guide]"; - mes "Very well. I'll send you to Payon. Hope to see you next time. Don't forget to save when you leave."; - // donpcevent "Waiting Room#hnt::OnStart"; - close2; - set HNTR_Q,13; - savepoint "payon",104,99,1,1; - warp "payon_in02",21,27; } + mapannounce "job_hunte",strcharinfo(0)+ " has resigned. Next person, please enter.",bc_map; + mes "[Guide]"; + mes "Very well. I'll send you to Payon. Hope to see you next time. Don't forget to save when you leave."; + // donpcevent "Waiting Room#hnt::OnStart"; + close2; + HNTR_Q = 13; + savepoint "payon",104,99,1,1; + warp "payon_in02",21,27; } else if (HNTR_Q > 15) { mes "[Guide]"; @@ -1052,7 +1045,7 @@ OnInit: OnEnable: donpcevent "Switch#hnt::OnDisable"; enablenpc "Manager#hnt"; - set .MyMobs,6; + .MyMobs = 6; initnpctimer; // Target Mosnters monster "job_hunte",67,80,"Job Change Monster",1015,1,"Manager#hnt::OnMyMobDead"; @@ -1095,10 +1088,10 @@ OnEnable: end; OnMyMobDead: - set .MyMobs,.MyMobs-1; + .MyMobs--; if (.MyMobs < 3) { mapannounce "job_hunte","Okay, good job... Now, find the switch in the center of the map!! Be careful of the traps!!",bc_map; - set HNTR_Q,14; + HNTR_Q = 14; donpcevent "switch#hnt::OnEnable"; donpcevent "Manager#hnt::OnDisable"; } @@ -1109,7 +1102,7 @@ OnMyMobDead: OnMyMobDead2: mapannounce "job_hunte",strcharinfo(0)+ "!! You made a mistake...Please try again.",bc_map; - set HNTR_Q,13; + HNTR_Q = 13; warp "job_hunte",176,22; donpcevent "Manager#hnt::OnReset"; donpcevent "Waiting Room#hnt::OnStart"; @@ -1209,9 +1202,9 @@ job_hunte,93,101,1 script Switch#hnt 723,1,1,{ OnTouch_: mes "^3355FFThere are 3 buttons"; mes "on the escape switch.^000000"; - set HNTR_Q,15; + HNTR_Q = 15; next; - switch(select("Escape:Cancel:Re-test")) { + switch( select( "Escape", "Cancel", "Re-test" ) ) { case 1: mes "^3355FFThe Escape Warp Portal"; mes "has now been activated.^000000"; @@ -1231,7 +1224,7 @@ OnTouch_: mes "returned to the"; mes "waiting room.^000000"; close2; - set HNTR_Q,13; + HNTR_Q = 13; warp "job_hunte",176,22; donpcevent "Manager#hnt::OnReset"; donpcevent "Waiting Room#hnt::OnStart"; @@ -1249,6 +1242,7 @@ OnEnable: } job_hunte,89,139,0 script exit#hnttest 45,2,2,{ + end; OnInit: disablenpc "exit#hnttest"; end; @@ -1256,7 +1250,7 @@ OnInit: OnTouch_: donpcevent "Manager#hnt::OnReset"; donpcevent "Waiting Room#hnt::OnStart"; - set HNTR_Q,16; + HNTR_Q = 16; changequest 4011,4012; savepoint "payon",104,99,1,1; if (rand(2)) @@ -1267,10 +1261,10 @@ OnTouch_: } // Hunter Job test traps. -//============================================================ +//============================================================ job_hunte,52,140,0 script 1-1::HntTrap -1,0,1,{ OnTouch_: - switch(rand(200)) { + switch( rand(200) ) { default: case 1: mapannounce "job_hunte",strcharinfo(0) + ", you have fallen into a trap. You will be returned to the starting point.",bc_map; break; case 2: mapannounce "job_hunte",strcharinfo(0) + ", yes you! Go back and start over!",bc_map; break; @@ -1404,7 +1398,7 @@ OnTouch_: case 130: mapannounce "job_hunte",strcharinfo(0) + ", it's okay to cry. Just not too loudly.",bc_map; break; case 131: mapannounce "job_hunte",strcharinfo(0) + "...oh man. It's tiring setting up all these traps. You guys have got to stop falling into them!",bc_map; break; } - set HNTR_Q,13; + HNTR_Q = 13; warp "job_hunte",176,22; donpcevent "Manager#hnt::OnReset"; donpcevent "Waiting Room#hnt::OnStart"; @@ -1640,7 +1634,7 @@ job_hunte,65,92,0 duplicate(HntTrap) 57-3 -1,0,0 job_hunte,65,93,0 script 57-4::HntTrap2 -1,{ OnTouch_: mapannounce "job_hunte",strcharinfo(0) + ", has failed me! Go back to where you started!",bc_map; - set HNTR_Q,13; + HNTR_Q = 13; warp "job_hunte",176,22; donpcevent "Manager#hnt::OnReset"; donpcevent "Waiting Room#hnt::OnStart"; diff --git a/npc/kafras/functions_kafras.txt b/npc/kafras/functions_kafras.txt index 6bf9e8d853..d5b165919c 100644 --- a/npc/kafras/functions_kafras.txt +++ b/npc/kafras/functions_kafras.txt @@ -1,12 +1,12 @@ -//===== rAthena Script ======================================= +//===== rAthena Script ======================================= //= Kafra Functions -//===== By: ================================================== +//===== By: ================================================== //= rAthena Dev Team //= Darlskies, Darkchild, Syrus22, Lupus, kobra_k88 (2.0) //= L0ne_W0lf -//===== Current Version: ===================================== +//===== Current Version: ===================================== //= 6.8 -//===== Compatible With: ===================================== +//===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= These functions handle save, storage, cart rental, teleport, @@ -15,7 +15,7 @@ //= Kafra's will need a lot of work. The Welcome Message argument //= may become obsolete, as most kafras have a slightly differing //= Welcome message. -//===== Additional Comments: ================================= +//===== Additional Comments: ================================= //= 1.1 Now using functions v2.1 Added Cart Rent for Classes: Whitesmith, Professor. //= Replaced checkoption(x) into checkcart(0) [Lupus] v2.1b Added Fix Kafra Pass Func [Kobra_k88] //= 2.2 Final fix of the Kafra Pass Exploit! [Lupus] a -Izlude[4] fix @@ -39,7 +39,7 @@ //= 5.1a Temporary? Added F_ClearGarbage to clear unused/outdated variables [Lupus] //= 5.2 By default commented out custom Guilds Kafra's "Guild Storage". [Lupus] //= 5.3 uncommented Guild Storage. Confirmed kRO feature. [Lupus] -//= 5.4 added -Guide option (Kafra shows you nearest Guide) Work in progress. +//= 5.4 added -Guide option (Kafra shows you nearest Guide) Work in progress. //= Need all coords for all guides.. and somehow pass their coords to kafra. //= Removed universal Kafra Pass, added 3 new Kafra Tickets [Lupus] //= 5.4b temporary moved "-Guide" from the 1st menu punct [Lupus] @@ -47,7 +47,7 @@ //= Cleaned up the menus a bit. Got rid of the proceeding "-" prefix. //= 5.5b Missed a preceeding hyphen, which was screwing up teleporting. [L0ne_W0lf] //= 5.6 Further dialog updates, added dynamic costs for cart and storage use. [L0ne_W0lf] -//= Updated some functions to handle Guild Kafras the way they should. +//= Updated some functions to handle Guild Kafras the way they should. //= 5.6a Corrected a few wrong names in the teleport function. [L0ne_W0lf] //= 5.7 Correced end message no longer displaying, and the duplicate names [L0ne_W0lf] //= Thanks to Barron-Monster for pointing out the issues. @@ -63,7 +63,7 @@ //= 6.6 Added Warp Points / View Points Function. [Joseph] //= 6.7 Added Rune Knight Kafra. [Euphy] //= 6.8 Updated some functions and added VIP features. [Euphy] -//============================================================ +//============================================================ //=== Main Function ======================================================== //= arg(0): Used to determine which welcome message to show. @@ -78,97 +78,85 @@ function script F_Kafra { .@menu_num = getarg(1); // Display Kafra Welcome Message - switch(.@welcome){ - default: - case 0: - // Default message (obsolete) - mes "[Kafra Employee]"; - mes "Welcome to the"; - mes "Kafra Corporation."; - mes "The Kafra services"; - mes "are always on your side."; - mes "How may I assist you?"; - break; - case 1: - // Niflheim specific message - mes "[Kafra Employee]"; - mes "^666666W-weeeelc-c-come"; - mes "to th-the K-kaaafrrrra"; - mes "C-coorpoor-r-ratioooonn...^000000"; - break; - case 2: - // Guild Castle Kafra message - set @GID,getcharid(2); - mes "[Kafra Employee]"; - mes "Welcome. ^ff0000" + GetGuildName(@GID) + "^000000 Member."; - mes "The Kafra Coporation will stay with you wherever you go."; - break; - case 3: - // Amatsu specific message (obsolete) - mes "[Kafra Employee]"; - mes "So, have you come from a faraway land to study our culture, or are you just sightseeing?"; - mes "In either case, why not stay awhile?"; - mes "The air is eternally heavy with the"; - mes "scent of pleasant wildflowers."; - break; - case 4: - // Louyang and Ayothaya specific message (obsolete) - mes "[Kafra Employee]"; - mes "With our many Kafra"; - mes "service locations, you're never"; - mes "far from home."; - break; - case 5: - // NPC has it's own welcome message. (Display nothing) - break; + switch(.@welcome) { + default:// Default message (obsolete) + mes "[Kafra Employee]"; + mes "Welcome to the"; + mes "Kafra Corporation."; + mes "The Kafra services"; + mes "are always on your side."; + mes "How may I assist you?"; + break; + case 1:// Niflheim specific message + mes "[Kafra Employee]"; + mes "^666666W-weeeelc-c-come"; + mes "to th-the K-kaaafrrrra"; + mes "C-coorpoor-r-ratioooonn...^000000"; + break; + case 2:// Guild Castle Kafra message + mes "[Kafra Employee]"; + mes "Welcome. ^ff0000" + getguildname( getcharid(2) ) + "^000000 Member."; + mes "The Kafra Coporation will stay with you wherever you go."; + break; + case 3:// Amatsu specific message (obsolete) + mes "[Kafra Employee]"; + mes "So, have you come from a faraway land to study our culture, or are you just sightseeing?"; + mes "In either case, why not stay awhile?"; + mes "The air is eternally heavy with the"; + mes "scent of pleasant wildflowers."; + break; + case 4:// Louyang and Ayothaya specific message (obsolete) + mes "[Kafra Employee]"; + mes "With our many Kafra"; + mes "service locations, you're never"; + mes "far from home."; + break; + case 5:// NPC has it's own welcome message. (Display nothing) + break; } next; - while (1) { - deletearray @K_Menu0$[0],getarraysize(@K_Menu0$); - if (.@welcome == 2) { - // Guild Kafra Menu override (free Teleport, free Storage, Free Cart) - setarray @K_Menu0$[0],"Use Storage","Use Guild Storage","Rent a Pushcart","Use Teleport Service","Cancel"; - } else { - switch(.@menu_num){ - // Save and Storage only - case 1: setarray @K_Menu0$[0],"Save","Use Storage","Cancel"; break; - // Storage only - case 2: setarray @K_Menu0$[0],"Use Storage","Cancel"; break; - // No Teleport (Common) - case 3: setarray @K_Menu0$[0],"Save","Use Storage","Rent a Pushcart","Check Other Information","Cancel"; break; - // Case 4 is Einbroch no tele message. - // No save, or teleport. (Common) - case 5: setarray @K_Menu0$[0],"Use Storage","Rent a Pushcart","Check Other Information","Cancel"; break; - // Storage and Check Other Information only. - case 6: setarray @K_Menu0$[0],"Use Storage","Check Other Information","Cancel"; break; - // Save, Storage, and Pushcart only (Kafra Warehouse) - case 7: setarray @K_Menu0$[0],"Save","Use Storage","Rent a Pushcart","Cancel"; break; - // Save, Storage, Other Check information. (Turbo track) - case 8: setarray @K_Menu0$[0],"Save","Use Storage","Check Other Information","Cancel"; break; - // No Save (Rune Knight) - case 9: setarray @K_Menu0$[0],"Use Storage","Rent a Pushcart","Use Teleport Service","Check Other Information","Cancel"; break; - // Storage, Save, and Pushcart (Dewata, reorder of case 7) - case 10: setarray @K_Menu0$[0],"Use Storage","Save","Rent a Pushcart","Cancel"; break; - // Default message (obsolete) - default: setarray @K_Menu0$[0],"Save","Use Storage","Use Teleport Service","Rent a Pushcart","Check Other Information","Cancel"; break; - } + if (.@welcome == 2)// Guild Kafra Menu override (free Teleport, free Storage, Free Cart) + setarray .@K_Menu0$[0], "Use Storage", "Use Guild Storage", "Rent a Pushcart", "Use Teleport Service", "Cancel"; + else { + switch(.@menu_num) { + // Save and Storage only + case 1: setarray .@K_Menu0$[0],"Save","Use Storage","Cancel"; break; + // Storage only + case 2: setarray .@K_Menu0$[0],"Use Storage","Cancel"; break; + // No Teleport (Common) + case 3: setarray .@K_Menu0$[0],"Save","Use Storage","Rent a Pushcart","Check Other Information","Cancel"; break; + // Case 4 is Einbroch no tele message. + // No save, or teleport. (Common) + case 5: setarray .@K_Menu0$[0],"Use Storage","Rent a Pushcart","Check Other Information","Cancel"; break; + // Storage and Check Other Information only. + case 6: setarray .@K_Menu0$[0],"Use Storage","Check Other Information","Cancel"; break; + // Save, Storage, and Pushcart only (Kafra Warehouse) + case 7: setarray .@K_Menu0$[0],"Save","Use Storage","Rent a Pushcart","Cancel"; break; + // Save, Storage, Other Check information. (Turbo track) + case 8: setarray .@K_Menu0$[0],"Save","Use Storage","Check Other Information","Cancel"; break; + // No Save (Rune Knight) + case 9: setarray .@K_Menu0$[0],"Use Storage","Rent a Pushcart","Use Teleport Service","Check Other Information","Cancel"; break; + // Storage, Save, and Pushcart (Dewata, reorder of case 7) + case 10: setarray .@K_Menu0$[0],"Use Storage","Save","Rent a Pushcart","Cancel"; break; + // Default message (obsolete) + default: setarray .@K_Menu0$[0],"Save","Use Storage","Use Teleport Service","Rent a Pushcart","Check Other Information","Cancel"; break; } - set .@menu$,""; - for (set .@i, 0; .@i < getarraysize(@K_Menu0$); set .@i, .@i + 1) - set .@menu$, .@menu$ + @K_Menu0$[.@i] + ":"; - set .@j, select (.@menu$) - 1; - if (@K_Menu0$[.@j] == "Save") { + } + .@menu$ = implode(.@K_Menu0$,":"); + while (true) { + .@j = select(.@menu$) - 1; + if (.@K_Menu0$[.@j] == "Save") return; - } else if (@K_Menu0$[.@j] == "Use Storage") { - // Do not charge for Guild Storage - if(.@welcome == 2) + else if (.@K_Menu0$[.@j] == "Use Storage") { + if (.@welcome == 2)// Do not charge for Guild Storage callfunc "F_KafStor",2,0,0; - else + else callfunc "F_KafStor",0,getarg(3),.@welcome; next; - } else if (@K_Menu0$[.@j] == "Use Teleport Service") { - // Display Einbroch "No Teleport Service" notice. - if(.@menu_num != 4) callfunc "F_KafTele",.@welcome; + } + else if (.@K_Menu0$[.@j] == "Use Teleport Service") { + if (.@menu_num != 4)// Display Einbroch "No Teleport Service" notice. + callfunc "F_KafTele",.@welcome; else { mes "[Kafra Employee]"; mes "Because of the ^FF0000Limited"; @@ -184,16 +172,20 @@ function script F_Kafra { mes "understanding and cooperation."; } next; - } else if (@K_Menu0$[.@j] == "Rent a Pushcart") { - if(callfunc("F_KafCart",.@welcome,getarg(4)) == 1) + } + else if (.@K_Menu0$[.@j] == "Rent a Pushcart") { + if (callfunc("F_KafCart",.@welcome,getarg(4)) == 1) next; - } else if (@K_Menu0$[.@j] == "Check Other Information") { + } + else if (.@K_Menu0$[.@j] == "Check Other Information") { callfunc "F_KafInfo",getarg(2); next; - } else if (@K_Menu0$[.@j] == "Cancel"){ + } + else if (.@K_Menu0$[.@j] == "Cancel") { callfunc "F_KafEnd",.@welcome,0; end; - } else if (@K_Menu0$[.@j] == "Use Guild Storage") { + } + else if (.@K_Menu0$[.@j] == "Use Guild Storage") { callfunc "F_KafStor",1,0; next; } @@ -208,20 +200,18 @@ function script F_KafStor { .@fee = getarg(1); // Unable to access Guild Storage (Busy) - if(.@type == 1){ - if(guildopenstorage()){ + if (.@type == 1) { + if (guildopenstorage()) { mes "[Kafra Employee]"; mes "I'm sorry but another guild member is using the guild storage"; mes "right now. Please wait until that person is finished."; - close2; - cutin "", 255; - end; + close3; } cutin "", 255; close; } // Unable to access Normal Storage (Insufficient Basic Skills) - if(!callfunc("F_CanOpenStorage")){ + if (!callfunc("F_CanOpenStorage")) { mes "[Kafra Employee]"; // Niflheim Specific Message if (getarg(2) == 1) { @@ -238,11 +228,12 @@ function script F_KafStor { return; } // Accessing Normal Storage (Skipped if accessing Storage from Guild castle) - if(.@type != 2){ + if (.@type != 2) { // Consume "Free Ticket for Kafra Storage" if available. - if(countitem(7059)) delitem 7059,1; + if (countitem(7059)) + delitem 7059,1; else { - if(Zeny<.@fee){ + if (Zeny < .@fee) { mes "[Kafra Employee]"; // Niflheim Specific Message if (getarg(2) == 1) { @@ -257,11 +248,11 @@ function script F_KafStor { mes "I'm sorry, but you don't"; mes "have enough zeny to use"; mes "the Storage Service. Our"; - mes "Storage access fee is "+.@fee+" zeny."; + mes "Storage access fee is " + .@fee + " zeny."; return; } - set Zeny, Zeny-.@fee; - set RESRVPTS, RESRVPTS + (.@fee/5); + Zeny -= .@fee; + RESRVPTS += (.@fee/5); } } @@ -271,7 +262,7 @@ function script F_KafStor { if (getarg(2) == 1) { percentheal 0,-10; mes "[Kafra Employee]"; - for (set .@i, 0; .@i < 5; set .@i, .@i + 1) + for ( .@i = 0; .@i < 5; .@i++ ) mes "^666666Thank you.. for... using...^000000"; } // Normal message @@ -298,27 +289,24 @@ function script F_KafTele { mes "Please choose"; mes "your destination."; next; - set .@menu$, ""; - for (set .@i, 0; .@i <= 6; set .@i, .@i + 1) - set .@menu$, .@menu$ + @wrpC$[.@i] + ":"; - set .@j, select (.@menu$) - 1; - if (@wrpC$[.@j] == "Cancel") return; + .@j = select( implode(@wrpC$,":") ) - 1; + if (@wrpC$[.@j] == "Cancel") + return; // Consume "Free Ticket for Kafra Transportation" if available. // Do not consume if in Guild castle - if(countitem(7060) > 0 && getarg(0) != 2) delitem 7060,1; + if (countitem(7060) > 0 && getarg(0) != 2) + delitem 7060,1; else { - if (Zeny<@wrpP[.@j]){ + if (Zeny < @wrpP[.@j]) { mes "[Kafra Employee]"; mes "I'm sorry, but you don't have"; mes "enough zeny for the Teleport"; mes "Service. The fee to teleport"; - mes "to "+@wrpD$[.@j]+" is "+@wrpP[.@j]+" zeny."; - close2; - cutin "", 255; - end; + mes "to " + @wrpD$[.@j] + " is " + @wrpP[.@j] + " zeny."; + close3; } - set Zeny, Zeny - @wrpP[.@j]; - set RESRVPTS, RESRVPTS + (@wrpP[.@j]/16); + Zeny -= @wrpP[.@j]; + RESRVPTS += (@wrpP[.@j]/16); } cutin "", 255; if (@wrpD$[.@j] == "Al De Baran") warp "aldebaran",168,112; @@ -326,7 +314,12 @@ function script F_KafTele { else if (@wrpD$[.@j] == "Comodo") warp "comodo", 209, 143; else if (@wrpD$[.@j] == "Comodo Pharos Beacon") warp "cmd_fild07", 127, 134; else if (@wrpD$[.@j] == "Geffen") warp "geffen", 120, 39; - else if (@wrpD$[.@j] == "Izlude") { if (checkre(0)) warp "izlude", 128, 98; else warp "izlude", 91, 105; } + else if (@wrpD$[.@j] == "Izlude") { + if (checkre(RENEWAL) == true) + warp "izlude", 128, 98; + else + warp "izlude", 91, 105; + } else if (@wrpD$[.@j] == "Juno") warp "yuno", 158, 125; else if (@wrpD$[.@j] == "Mjolnir Dead Pit") warp "mjolnir_02", 99, 351; else if (@wrpD$[.@j] == "Morroc") warp "morocc", 156, 46; @@ -343,11 +336,11 @@ function script F_KafTele { //=================================================== function script F_KafCart { // Ensure that the class wanting to rent a pushcart is a merchant - if(BaseClass != Job_Merchant){ + if (BaseClass != Job_Merchant) { mes "[Kafra Employee]"; mes "I'm sorry, but the"; mes "Pushcart rental service"; - if (checkre(0)) + if (checkre(RENEWAL) == true) mes "is only available to Merchant classes."; else { mes "is only available to Merchants,"; @@ -357,7 +350,7 @@ function script F_KafCart { return 1; } // Make sure the invoking character does not have a cart already - else if(checkcart() == 1){ + else if (checkcart() == true) { mes "[Kafra Employee]"; mes "You already have"; mes "a Pushcart equipped."; @@ -367,31 +360,34 @@ function script F_KafCart { return 1; } // Check if the player has the Pushcart skill - else if(getskilllv("MC_PUSHCART") == 0) { + else if (getskilllv("MC_PUSHCART") == 0) { mes "[Kafra Employee]"; mes "You can only rent a cart after learning the \"Push Cart\" skill."; return 1; } // Consume "Free Ticket for the Cart Service" if available. // Do not consume if in Guild castle. - if(countitem(7061) > 0 && getarg(0) != 2) delitem 7061,1; + if (countitem(7061) > 0 && getarg(0) != 2) + delitem 7061,1; else { + .@rental_fee = getarg(1); mes "[Kafra Employee]"; mes "The Pushcart rental"; - mes "fee is "+getarg(1)+" zeny. Would"; + mes "fee is " + .@rental_fee + " zeny. Would"; mes "you like to rent a Pushcart?"; next; - if (select("Rent a Pushcart.:Cancel") == 2) return 0; - if(Zeny<getarg(1)){ - mes "[Kafra Employee]"; - mes "I'm sorry, but you"; - mes "don't have enough"; - mes "zeny to pay the Pushcart"; - mes "rental fee of "+getarg(1)+" zeny."; - return 1; - } - set Zeny,Zeny-getarg(1); - set RESRVPTS, RESRVPTS + 48; + if (select("Rent a Pushcart.:Cancel") == 2) + return 0; + if (Zeny < .@rental_fee) { + mes "[Kafra Employee]"; + mes "I'm sorry, but you"; + mes "don't have enough"; + mes "zeny to pay the Pushcart"; + mes "rental fee of " + .@rental_fee + " zeny."; + return 1; + } + Zeny -= .@rental_fee; + RESRVPTS += 48; } setcart; return 1; @@ -401,36 +397,44 @@ function script F_KafCart { // Special Reserve Points Function //=================================================== function script F_KafInfo { - // Uncomment next line to block Kafra Storage Protection - // set .@block, 1; - setarray .@m$, "Check Special Reserve Points.","Storage Password Service","Kafra Employee Locations","Cancel"; - if (getarg(0) == 2) deletearray .@m$[1],2; // Port Malaya, Rune Knight - else if (.@block) deletearray .@m$[1],1; - while (1) { - set .@j, select(implode(.@m$,":")) - 1; - if (.@m$[.@j] == "Check Special Reserve Points.") { +// Uncomment next line to block Kafra Storage Protection +// .@block = 1; + if (getarg(0) == 2)// Port Malaya, Rune Knight + setarray .@menu$[0], "Check Special Reserve Points.", "", "", "Cancel"; + else if (.@block) + setarray .@menu$[0], "Check Special Reserve Points.", "", "Kafra Employee Locations", "Cancel"; + else + setarray .@menu$[0], "Check Special Reserve Points.", "Storage Password Service", "Kafra Employee Locations", "Cancel"; + .@menu_list$ = implode(.@menu$,":"); + while (true) { + .@j = select(.@menu_list$) - 1; + switch(.@j) { + case 0:// Check Special Reserve Points. mes "[Kafra Employee]"; mes "Let's see..."; - mes strcharinfo(0) + "..."; + mes "" + strcharinfo(0) + "..."; mes "Ah, you have a total of"; - mes RESRVPTS+ " Special Reserve Points."; + mes "" + RESRVPTS + " Special Reserve Points."; next; mes "[Kafra Employee]"; mes "You can exchange your"; mes "Special Reserve Points for"; mes "rewards at the Kafra Main Office in Al De Baran. Please use our"; mes "convenient services to see the benefits of our rewards program."; + if (getarg(0) == 1) + return; next; - if(getarg(0) == 1) return; - } else if (.@m$[.@j] == "Kafra Employee Locations") { - for (set .@i, 0; .@i <= 3; set .@i, .@i + 1) + break; + case 1:// Storage Password Service + callfunc("F_SetKafCode","[Kafra Employee]","Kafra Services"); + case 2:// Kafra Employee Locations + for ( .@i = 0; .@i <= 3; .@i++ ) viewpoint 1,@viewpX[.@i],@viewpY[.@i],(.@i+1),0xFF00FF; next; - for (set .@i, 0; .@i <= 3; set .@i, .@i + 1) + for ( .@i = 0; .@i <= 3; .@i++ ) viewpoint 2,@viewpX[.@i],@viewpY[.@i],(.@i+1),0xFF00FF; - } else if (.@m$[.@j] == "Storage Password Service") { - callfunc("F_SetKafCode","[Kafra Employee]","Kafra Services"); - } else { + break; + default: return; } } @@ -442,46 +446,39 @@ function script F_KafInfo { // arg(2): used to display the name of the area you're saving in. //=================================================================== function script F_KafEnd { + .@type = getarg(0); mes "[Kafra Employee]"; - if(getarg(1)==1) { - // Save + if (getarg(1) == true) {// Save mes "Your Respawn Point"; mes "has been saved here"; - mes getarg(2)+"."; + mes "" + getarg(2) + "."; mes "Thank you for using"; mes "the Kafra Services."; - } else if(getarg(0)==0 || getarg(0)==5) { - // Generic End + } else if (.@type == 0 || .@type == 5) {// Generic End mes "We, here at Kafra Corporation,"; mes "are always endeavoring to provide you with the best services. We hope that we meet your adventuring needs and standards of excellence."; - } else if(getarg(0)==1) { - // Niflheim End - percentheal 0,- 25; + } else if (.@type == 1) {// Niflheim End + percentheal 0,-25; mes "^666666Kaffffra n-never"; mes "diiiiiiiiiiiiiies. On..."; mes "On y-yooour siiiiide~^000000"; } - close2; - cutin "", 255; - end; + close3; } //=================================================== // Check Storage Password Function //=================================================== function script F_CheckKafCode { - if(!#kafra_code) return; + if (!#kafra_code) + return; mes "Enter your storage password:"; - set @code_,0; - input @code_; - if(@code_ != #kafra_code) { + input .@code_; + if (.@code_ != #kafra_code) { dispbottom "Wrong storage password."; - close2; - cutin "",255; - end; + close3; } - set @kafcode_try,0; - set @code_,0; + @kafcode_try = 0; return; } @@ -494,86 +491,85 @@ function script F_SetKafCode { .@comp_name$ = getarg(1); mes .@npc_name$; - if(#kafra_code) { - mes "Your storage is protected with a password. What would you do now?"; - next; - switch (select("Change old password -> 5000z:Remove storage password -> 1000z:Cancel")) { - case 1: - mes .@npc_name$; - mes "At first, please enter your ^0000FFold password^000000."; - set @code,callfunc("F_EntKafCode"); - if(!@code || @code != #kafra_code) { - mes "Wrong password. You can't set a new password."; - emotion ET_SCRATCH; - break; - } - next; - callsub S_SET,.@npc_name$,.@comp_name$; - break; - case 2: - mes .@npc_name$; - mes "Please, enter your password before its removal."; - set @code,callfunc("F_EntKafCode"); - if(!@code) { - mes "The password hasn't been removed."; - emotion ET_SCRATCH; - break; - } - next; - mes .@npc_name$; - if(Zeny < 1000) { - mes "You don't have enough zeny."; - emotion ET_MONEY; - break; - } - set Zeny,Zeny-1000; - if(@code == #kafra_code) { - set #kafra_code,0; - mes "You've successfully cleared your storage password."; - mes "Thank you for using "+.@comp_name$+"."; - emotion ET_THANKS; - } else { - mes "Wrong password. We won't return your 1000z."; - mes "Please, next time enter correct password."; - emotion ET_SORRY; - } - break; - case 3: - break; - } - } else { - mes .@comp_name$+" proudly presents you a new service:"; + if (#kafra_code == 0) { + mes "" + .@comp_name$ + " proudly presents you a new service:"; mes "Additional storage protection with a password."; next; - switch (select("Set new password -> 5000z:Cancel")) { - case 1: callsub S_SET,.@npc_name$,.@comp_name$; break; - case 2: break; - } + if (select( "Set new password -> 5000z", "Cancel" ) == 1) + callsub( S_SET, .@npc_name$, .@comp_name$ ); + close3; } - close2; - cutin "",255; - end; + mes "Your storage is protected with a password. What would you do now?"; + next; + switch( select( "Change old password -> 5000z", "Remove storage password -> 1000z", "Cancel" ) ) { + case 1: + mes .@npc_name$; + mes "At first, please enter your ^0000FFold password^000000."; + .@code = callfunc("F_EntKafCode"); + if (!.@code || .@code != #kafra_code) { + mes "Wrong password. You can't set a new password."; + emotion ET_SCRATCH; + break; + } + next; + callsub( S_SET, .@npc_name$, .@comp_name$ ); + break; + case 2: + mes .@npc_name$; + mes "Please, enter your password before its removal."; + .@code = callfunc("F_EntKafCode"); + if (!.@code) { + mes "The password hasn't been removed."; + emotion ET_SCRATCH; + break; + } + next; + mes .@npc_name$; + if (Zeny < 1000) { + mes "You don't have enough zeny."; + emotion ET_MONEY; + break; + } + Zeny -= 1000; + if (.@code == #kafra_code) { + #kafra_code = 0; + mes "You've successfully cleared your storage password."; + mes "Thank you for using " + .@comp_name$ + "."; + emotion ET_THANKS; + } else { + mes "Wrong password. We won't return your 1000z."; + mes "Please, next time enter correct password."; + emotion ET_SORRY; + } + break; + case 3: + break; + } + close3; S_SET: + .@npc_name$ = getarg(0); + .@comp_name$ = getarg(1); + mes .@npc_name$; mes "Now enter your ^FF0000new password^000000 to protect your storage from thieves."; - set @code,callfunc("F_EntKafCode"); - if(!@code) { + .@code = callfunc("F_EntKafCode"); + if (!.@code) { mes "The password hasn't been changed."; emotion ET_SCRATCH; return; } next; mes .@npc_name$; - if(Zeny < 5000) { + if (Zeny < 5000) { mes "You don't have enough zeny."; emotion ET_MONEY; return; } - set Zeny,Zeny-5000; - set #kafra_code,@code; + Zeny -= 5000; + #kafra_code = .@code; mes "You've protected your storage with a secret password."; - mes "Thank you for using "+.@comp_name$+"."; + mes "Thank you for using " + .@comp_name$ + "."; emotion ET_THANKS; return; } @@ -583,88 +579,92 @@ S_SET: //=================================================== function script F_EntKafCode { mes "Enter a number 1000~10000000:"; - set @code_,0; - set @kafcode_try,@kafcode_try+1; - if(@kafcode_try>10) { - set @kafcode_try,0; + @kafcode_try += 1; + if (@kafcode_try > 10) { + @kafcode_try = 0; logmes "Tried to fit storage password."; + return 0; } - if(input(@code_) == 1) { + if (input(.@code_) == 1) { mes "You can't use such big password."; return 0; } - if(@code_<1000) { + if (.@code_ < 1000) { mes "You shouldn't use such short password."; return 0; } - return @code_; + return .@code_; } //=================================================== // Warp Points / View Points Function //=================================================== function script F_KafSet { - cleararray @wrpC$[0],"",getarraysize(@wrpC$); - cleararray @wrpD$[0],"",getarraysize(@wrpD$); - cleararray @wrpP$[0],"",getarraysize(@wrpP$); - cleararray @viewpX[0],"",getarraysize(@viewpX); - cleararray @viewpY[0],"",getarraysize(@viewpY); - if (strnpcinfo(4) == "prontera") { + deletearray @wrpC$[0], getarraysize(@wrpC$); + deletearray @wrpD$[0], getarraysize(@wrpD$); + deletearray @wrpP$[0], getarraysize(@wrpP$); + deletearray @viewpX[0], getarraysize(@viewpX); + deletearray @viewpY[0], getarraysize(@viewpY); + + .@map$ = strnpcinfo(4); + if (.@map$ == "prontera") { setarray @wrpD$[0], "Izlude", "Geffen", "Payon", "Morroc", "Orc Dungeon", "Alberta"; setarray @wrpP[0], 600, 1200, 1200, 1200, 1700, 1800; setarray @viewpX[0], 151, 29, 282, 152; setarray @viewpY[0], 29, 207, 200, 326; - } else if (strnpcinfo(4) == "alberta") { + } else if (.@map$ == "alberta") { setarray @wrpP[0], 1200, 1800, 1800; setarray @wrpD$[0], "Payon", "Morroc", "Prontera"; setarray @viewpX[0], 28, 113, 0, 0; setarray @viewpY[0], 229, 60, 0, 0; - } else if (strnpcinfo(4) == "aldebaran") { + } else if (.@map$ == "aldebaran") { setarray @wrpP[0], 1200, 1200, 1800, 1700; setarray @wrpD$[0], "Geffen", "Juno" , "Izlude", "Mjolnir Dead Pit"; - } else if (strnpcinfo(4) == "comodo" ) { + } else if (.@map$ == "comodo" ) { setarray @wrpD$[0], "Morroc", "Comodo Pharos Beacon", "Umbala"; setarray @wrpP[0], 1800, 1200, 1800; - } else if (strnpcinfo(4) == "cmd_fild07") { + } else if (.@map$ == "cmd_fild07") { setarray @wrpD$[0], "Comodo", "Morroc"; setarray @wrpP[0], 1200, 1200; - } else if (strnpcinfo(4) == "geffen") { + } else if (.@map$ == "geffen") { setarray @wrpD$[0], "Prontera", "Al De Baran", "Orc Dungeon", "Mjolnir Dead Pit"; setarray @wrpP[0], 1200, 1200, 1700, 1700; setarray @viewpX[0], 120, 203; setarray @viewpY[0], 62, 123; - } else if (strnpcinfo(4) == "izlude") { + } else if (.@map$ == "izlude") { setarray @wrpD$[0], "Geffen", "Payon", "Morroc", "Al De Baran"; setarray @wrpP[0], 1200, 1200, 1200, 1800; - } else if (strnpcinfo(4) == "morocc") { + } else if (.@map$ == "morocc") { setarray @wrpD$[0], "Prontera", "Payon", "Alberta", "Comodo", "Comodo Pharos Beacon"; setarray @wrpP[0], 1200, 1200, 1800, 1800, 1200; setarray @viewpX[0], 156, 163, 28, 292; setarray @viewpY[0], 97, 260, 167, 211; - } else if (strnpcinfo(4) == "umbala") { + } else if (.@map$ == "umbala") { setarray @wrpD$[0], "Comodo"; setarray @wrpP[0], 1800; - } else if (strnpcinfo(4) == "payon") { + } else if (.@map$ == "payon") { setarray @wrpD$[0], "Prontera", "Alberta", "Morroc"; setarray @wrpP[0], 1200, 1200, 1200; - } else if (strnpcinfo(4) == "yuno") { + } else if (.@map$ == "yuno") { setarray @wrpD$[0], "Al De Baran"; setarray @wrpP[0], 1200; setarray @viewpX[0], 328, 278, 153, 0; setarray @viewpY[0], 108, 221, 187, 0; - } else if (strnpcinfo(4) == "job3_rune01") { + } else if (.@map$ == "job3_rune01") { setarray @wrpD$[0], "Izlude", "Geffen", "Payon", "Morroc", "Alberta"; setarray @wrpP[0], 600, 1200, 1200, 1200, 1800; } + .@warp_size = getarraysize(@wrpD$); + // VIP pricing varies across the regional servers; this is most practical. if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) { - for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1) - setd "@wrpP["+.@i+"]",getd("@wrpP["+.@i+"]") * 2; + for ( .@i = 0; .@i < .@warp_size; .@i++ ) + @wrpP[.@i] *= 2; } - for (set .@i, 0; .@i < getarraysize(@wrpD$); set .@i, .@i + 1) - setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z"; - setd "@wrpC$["+getarraysize(@wrpC$)+"]","Cancel"; + for ( .@i = 0; .@i < .@warp_size; .@i++ ) + @wrpC$[.@i] = @wrpD$[.@i] + " -> " + @wrpP[.@i] + " z"; + @wrpC$[ .@warp_size ] = "Cancel"; return; } diff --git a/npc/kafras/kafras.txt b/npc/kafras/kafras.txt index b433e2cbbf..8326a62050 100644 --- a/npc/kafras/kafras.txt +++ b/npc/kafras/kafras.txt @@ -427,7 +427,7 @@ moscovia,223,191,3 script Kafra Employee::kaf_mosk 114,{ cutin "kafra_04",2; callfunc "F_Kafra",0,3,0,80,700; savepoint "moscovia",221,194,1,1; - callfunc "F_KafEnd",0,3,"in the city of Moscovia"; + callfunc "F_KafEnd",0,1,"in the city of Moscovia"; } // Amatsu @@ -628,7 +628,7 @@ prt_fild05,290,224,3 script Kafra Employee::prt_fild05 114,{ mes "what can I do for you today?"; callfunc "F_Kafra",5,1,1,40,0; savepoint "prt_fild05",274,243,1,1; - callfunc "F_KafEnd",0,1, "at the Prontera Culverts"; + callfunc "F_KafEnd",0,1,"at the Prontera Culverts"; } // - Coal Mine (Dead Pitt) @@ -657,7 +657,7 @@ moc_ruins,59,157,5 script Kafra Employee::moc_ruins 114,{ mes "what can I do for you today?"; callfunc "F_Kafra",5,2,1,90,1200; savepoint "moc_ruins",41,141,1,1; - callfunc "F_KafEnd",0,1," at the Pyramids"; + callfunc "F_KafEnd",0,1,"at the Pyramids"; } // - Orc Dungeon @@ -685,5 +685,5 @@ alb2trea,59,69,5 script Kafra Employee::kaf_alb2trea 117,{ mes "How may I assist you?"; callfunc "F_Kafra",5,2,1,50,0; savepoint "alb2trea",92,64,1,1; - callfunc "F_KafEnd",0,1,0,"at Sunken Ship"; + callfunc "F_KafEnd",0,1,"at Sunken Ship"; } diff --git a/npc/mapflag/gvg.txt b/npc/mapflag/gvg.txt index fec185a3a4..797e1a5b04 100644 --- a/npc/mapflag/gvg.txt +++ b/npc/mapflag/gvg.txt @@ -106,3 +106,22 @@ nguild_prt mapflag gvg_castle // Guild Dungeons ========= arug_dun01 mapflag gvg_dungeon schg_dun01 mapflag gvg_dungeon + +// RWC Maps =============== +2009rwc_01 mapflag gvg +2009rwc_02 mapflag gvg +2009rwc_03 mapflag gvg +2009rwc_04 mapflag gvg +2009rwc_05 mapflag gvg +2009rwc_06 mapflag gvg +2009rwc_07 mapflag gvg +2009rwc_08 mapflag gvg +2009rwc_f01 mapflag gvg +2012rwc_01 mapflag gvg +2012rwc_02 mapflag gvg +2012rwc_03 mapflag gvg +2012rwc_04 mapflag gvg +2012rwc_05 mapflag gvg +2012rwc_06 mapflag gvg +2012rwc_07 mapflag gvg +2012rwc_08 mapflag gvg diff --git a/npc/mapflag/gvg_noparty.txt b/npc/mapflag/gvg_noparty.txt new file mode 100644 index 0000000000..aeb2826eab --- /dev/null +++ b/npc/mapflag/gvg_noparty.txt @@ -0,0 +1,33 @@ +//===== rAthena Script ======================================= +//= Mapflag: gvg_noparty. +//===== Description: ========================================= +//= Ignores party alliances on GvG-enabled maps. +//===== Changelogs: ========================================== +//= 1.0 First Version. [Capuche] +//============================================================ + +// GvG Arenas ================= +guild_vs1 mapflag gvg_noparty +guild_vs2 mapflag gvg_noparty +guild_vs3 mapflag gvg_noparty +guild_vs4 mapflag gvg_noparty +guild_vs5 mapflag gvg_noparty + +// RWC Maps =============== +2009rwc_01 mapflag gvg_noparty +2009rwc_02 mapflag gvg_noparty +2009rwc_03 mapflag gvg_noparty +2009rwc_04 mapflag gvg_noparty +2009rwc_05 mapflag gvg_noparty +2009rwc_06 mapflag gvg_noparty +2009rwc_07 mapflag gvg_noparty +2009rwc_08 mapflag gvg_noparty +2009rwc_f01 mapflag gvg_noparty +2012rwc_01 mapflag gvg_noparty +2012rwc_02 mapflag gvg_noparty +2012rwc_03 mapflag gvg_noparty +2012rwc_04 mapflag gvg_noparty +2012rwc_05 mapflag gvg_noparty +2012rwc_06 mapflag gvg_noparty +2012rwc_07 mapflag gvg_noparty +2012rwc_08 mapflag gvg_noparty diff --git a/npc/mapflag/hidemobhpbar.txt b/npc/mapflag/hidemobhpbar.txt index 941802250c..5c2fd38460 100644 --- a/npc/mapflag/hidemobhpbar.txt +++ b/npc/mapflag/hidemobhpbar.txt @@ -152,3 +152,22 @@ bat_b01 mapflag hidemobhpbar bat_b02 mapflag hidemobhpbar bat_a01 mapflag hidemobhpbar bat_a02 mapflag hidemobhpbar + +// RWC Maps =============== +2009rwc_01 mapflag hidemobhpbar +2009rwc_02 mapflag hidemobhpbar +2009rwc_03 mapflag hidemobhpbar +2009rwc_04 mapflag hidemobhpbar +2009rwc_05 mapflag hidemobhpbar +2009rwc_06 mapflag hidemobhpbar +2009rwc_07 mapflag hidemobhpbar +2009rwc_08 mapflag hidemobhpbar +2009rwc_f01 mapflag hidemobhpbar +2012rwc_01 mapflag hidemobhpbar +2012rwc_02 mapflag hidemobhpbar +2012rwc_03 mapflag hidemobhpbar +2012rwc_04 mapflag hidemobhpbar +2012rwc_05 mapflag hidemobhpbar +2012rwc_06 mapflag hidemobhpbar +2012rwc_07 mapflag hidemobhpbar +2012rwc_08 mapflag hidemobhpbar diff --git a/npc/mapflag/night.txt b/npc/mapflag/night.txt index 689d47d712..8186a99fa5 100644 --- a/npc/mapflag/night.txt +++ b/npc/mapflag/night.txt @@ -259,9 +259,6 @@ mosk_dun02 mapflag nightenabled mosk_dun03 mapflag nightenabled que_temsky mapflag nightenabled sch_gld mapflag nightenabled -moc_fild20 mapflag nightenabled -moc_fild21 mapflag nightenabled -moc_fild22 mapflag nightenabled aru_gld mapflag nightenabled que_qsch01 mapflag nightenabled que_qsch02 mapflag nightenabled diff --git a/npc/mapflag/nobranch.txt b/npc/mapflag/nobranch.txt index 644f572944..965f864cfa 100644 --- a/npc/mapflag/nobranch.txt +++ b/npc/mapflag/nobranch.txt @@ -334,4 +334,23 @@ splendide mapflag nobranch spl_in01 mapflag nobranch spl_in02 mapflag nobranch +// RWC Maps =============== +2009rwc_01 mapflag nobranch +2009rwc_02 mapflag nobranch +2009rwc_03 mapflag nobranch +2009rwc_04 mapflag nobranch +2009rwc_05 mapflag nobranch +2009rwc_06 mapflag nobranch +2009rwc_07 mapflag nobranch +2009rwc_08 mapflag nobranch +2009rwc_f01 mapflag nobranch +2012rwc_01 mapflag nobranch +2012rwc_02 mapflag nobranch +2012rwc_03 mapflag nobranch +2012rwc_04 mapflag nobranch +2012rwc_05 mapflag nobranch +2012rwc_06 mapflag nobranch +2012rwc_07 mapflag nobranch +2012rwc_08 mapflag nobranch + //evt_zombie mapflag nobranch diff --git a/npc/mapflag/nomemo.txt b/npc/mapflag/nomemo.txt index 4e0a54c035..a200910389 100644 --- a/npc/mapflag/nomemo.txt +++ b/npc/mapflag/nomemo.txt @@ -694,3 +694,22 @@ bossnia_01 mapflag nomemo bossnia_02 mapflag nomemo bossnia_03 mapflag nomemo bossnia_04 mapflag nomemo + +// RWC Maps =============== +2009rwc_01 mapflag nomemo +2009rwc_02 mapflag nomemo +2009rwc_03 mapflag nomemo +2009rwc_04 mapflag nomemo +2009rwc_05 mapflag nomemo +2009rwc_06 mapflag nomemo +2009rwc_07 mapflag nomemo +2009rwc_08 mapflag nomemo +2009rwc_f01 mapflag nomemo +2012rwc_01 mapflag nomemo +2012rwc_02 mapflag nomemo +2012rwc_03 mapflag nomemo +2012rwc_04 mapflag nomemo +2012rwc_05 mapflag nomemo +2012rwc_06 mapflag nomemo +2012rwc_07 mapflag nomemo +2012rwc_08 mapflag nomemo diff --git a/npc/mapflag/nopenalty.txt b/npc/mapflag/nopenalty.txt index a72145624a..189eea3676 100644 --- a/npc/mapflag/nopenalty.txt +++ b/npc/mapflag/nopenalty.txt @@ -270,4 +270,23 @@ bat_b02 mapflag nopenalty bat_a01 mapflag nopenalty bat_a02 mapflag nopenalty +// RWC Maps =============== +2009rwc_01 mapflag nopenalty +2009rwc_02 mapflag nopenalty +2009rwc_03 mapflag nopenalty +2009rwc_04 mapflag nopenalty +2009rwc_05 mapflag nopenalty +2009rwc_06 mapflag nopenalty +2009rwc_07 mapflag nopenalty +2009rwc_08 mapflag nopenalty +2009rwc_f01 mapflag nopenalty +2012rwc_01 mapflag nopenalty +2012rwc_02 mapflag nopenalty +2012rwc_03 mapflag nopenalty +2012rwc_04 mapflag nopenalty +2012rwc_05 mapflag nopenalty +2012rwc_06 mapflag nopenalty +2012rwc_07 mapflag nopenalty +2012rwc_08 mapflag nopenalty + //evt_zombie mapflag nopenalty diff --git a/npc/mapflag/nosave.txt b/npc/mapflag/nosave.txt index dfdf35b35b..6cbdd36a71 100644 --- a/npc/mapflag/nosave.txt +++ b/npc/mapflag/nosave.txt @@ -279,5 +279,24 @@ arug_dun01 mapflag nosave SavePoint 1@nyd mapflag nosave SavePoint 2@nyd mapflag nosave SavePoint +// RWC Maps =============== +2009rwc_01 mapflag nosave SavePoint +2009rwc_02 mapflag nosave SavePoint +2009rwc_03 mapflag nosave SavePoint +2009rwc_04 mapflag nosave SavePoint +2009rwc_05 mapflag nosave SavePoint +2009rwc_06 mapflag nosave SavePoint +2009rwc_07 mapflag nosave SavePoint +2009rwc_08 mapflag nosave SavePoint +2009rwc_f01 mapflag nosave SavePoint +2012rwc_01 mapflag nosave SavePoint +2012rwc_02 mapflag nosave SavePoint +2012rwc_03 mapflag nosave SavePoint +2012rwc_04 mapflag nosave SavePoint +2012rwc_05 mapflag nosave SavePoint +2012rwc_06 mapflag nosave SavePoint +2012rwc_07 mapflag nosave SavePoint +2012rwc_08 mapflag nosave SavePoint + evt_bomb mapflag nosave SavePoint //evt_zombie mapflag nosave SavePoint diff --git a/npc/mapflag/noteleport.txt b/npc/mapflag/noteleport.txt index ed1b61708b..b0ba4ac3f3 100644 --- a/npc/mapflag/noteleport.txt +++ b/npc/mapflag/noteleport.txt @@ -409,4 +409,23 @@ nyd_dun02 mapflag noteleport 2@nyd mapflag noteleport 2@nyd mapflag monster_noteleport +// RWC Maps =============== +2009rwc_01 mapflag noteleport +2009rwc_02 mapflag noteleport +2009rwc_03 mapflag noteleport +2009rwc_04 mapflag noteleport +2009rwc_05 mapflag noteleport +2009rwc_06 mapflag noteleport +2009rwc_07 mapflag noteleport +2009rwc_08 mapflag noteleport +2009rwc_f01 mapflag noteleport +2012rwc_01 mapflag noteleport +2012rwc_02 mapflag noteleport +2012rwc_03 mapflag noteleport +2012rwc_04 mapflag noteleport +2012rwc_05 mapflag noteleport +2012rwc_06 mapflag noteleport +2012rwc_07 mapflag noteleport +2012rwc_08 mapflag noteleport + //evt_zombie mapflag noteleport diff --git a/npc/mapflag/nowarp.txt b/npc/mapflag/nowarp.txt index 1908c13a67..29666ed842 100644 --- a/npc/mapflag/nowarp.txt +++ b/npc/mapflag/nowarp.txt @@ -81,3 +81,22 @@ bat_a02 mapflag nowarp // Poring War ================== poring_w01 mapflag nowarp poring_w02 mapflag nowarp + +// RWC Maps =============== +2009rwc_01 mapflag nowarp +2009rwc_02 mapflag nowarp +2009rwc_03 mapflag nowarp +2009rwc_04 mapflag nowarp +2009rwc_05 mapflag nowarp +2009rwc_06 mapflag nowarp +2009rwc_07 mapflag nowarp +2009rwc_08 mapflag nowarp +2009rwc_f01 mapflag nowarp +2012rwc_01 mapflag nowarp +2012rwc_02 mapflag nowarp +2012rwc_03 mapflag nowarp +2012rwc_04 mapflag nowarp +2012rwc_05 mapflag nowarp +2012rwc_06 mapflag nowarp +2012rwc_07 mapflag nowarp +2012rwc_08 mapflag nowarp diff --git a/npc/mapflag/nowarpto.txt b/npc/mapflag/nowarpto.txt index 5afada2550..ce6f40e285 100644 --- a/npc/mapflag/nowarpto.txt +++ b/npc/mapflag/nowarpto.txt @@ -161,3 +161,22 @@ bossnia_01 mapflag nowarpto bossnia_02 mapflag nowarpto bossnia_03 mapflag nowarpto bossnia_04 mapflag nowarpto + +// RWC Maps =============== +2009rwc_01 mapflag nowarpto +2009rwc_02 mapflag nowarpto +2009rwc_03 mapflag nowarpto +2009rwc_04 mapflag nowarpto +2009rwc_05 mapflag nowarpto +2009rwc_06 mapflag nowarpto +2009rwc_07 mapflag nowarpto +2009rwc_08 mapflag nowarpto +2009rwc_f01 mapflag nowarpto +2012rwc_01 mapflag nowarpto +2012rwc_02 mapflag nowarpto +2012rwc_03 mapflag nowarpto +2012rwc_04 mapflag nowarpto +2012rwc_05 mapflag nowarpto +2012rwc_06 mapflag nowarpto +2012rwc_07 mapflag nowarpto +2012rwc_08 mapflag nowarpto diff --git a/npc/mapflag/pvp_noparty.txt b/npc/mapflag/pvp_noparty.txt index a36064eae6..b67de5cef9 100644 --- a/npc/mapflag/pvp_noparty.txt +++ b/npc/mapflag/pvp_noparty.txt @@ -11,10 +11,3 @@ //===== Additional Comments: ================================= //= 1.0 Initial script. //============================================================ - -// GvG Arenas ================= -guild_vs1 mapflag pvp_noparty -guild_vs2 mapflag pvp_noparty -guild_vs3 mapflag pvp_noparty -guild_vs4 mapflag pvp_noparty -guild_vs5 mapflag pvp_noparty diff --git a/npc/mapflag/skill_damage.txt b/npc/mapflag/skill_damage.txt index 143d713a77..d27f3fa00a 100644 --- a/npc/mapflag/skill_damage.txt +++ b/npc/mapflag/skill_damage.txt @@ -12,7 +12,7 @@ //= See the mapflag documentation for details about extra //= parameters. //= -//= You MUST enable ADJUST_SKILL_DAMAGE in 'src/config/core.h' +//= You MUST enable ADJUST_SKILL_DAMAGE in 'src/config/core.hpp' //= for this mapflag to take effect. //===== Additional Comments: ================================= //= 1.0 Initial script. [Cydh] diff --git a/npc/merchants/advanced_refiner.txt b/npc/merchants/advanced_refiner.txt index de09883df1..ebe40b7d18 100644 --- a/npc/merchants/advanced_refiner.txt +++ b/npc/merchants/advanced_refiner.txt @@ -55,12 +55,14 @@ payon,157,146,6 script Suhnbi#cash 85,{ close; } + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count .@price = getequiprefinecost(.@part, REFINE_COST_ENRICHED, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_ENRICHED, REFINE_MATERIAL_ID); - // Make sure you have the neccessary items and Zeny to refine your items + // Make sure you have the necessary items and Zeny to refine your items // Determines chance of failure and verifies that you want to continue. - callsub S_RefineValidate,getequipweaponlv(.@part),.@material,.@price,.@part; + callsub S_RefineValidate,getequipweaponlv(.@part),.@material,.@price,.@part,.@refineitemid,.@refinerycnt; mes "[Suhnbi]"; mes "Clang! Clang! Clang!"; @@ -89,7 +91,8 @@ payon,157,146,6 script Suhnbi#cash 85,{ S_RefineValidate: .@weapon_lvl = getarg(0); .@item_req = getarg(1); - set .@price, getarg(2); + .@price = getarg(2); + .@part = getarg(3); // If the VIP system is enabled, the prices for non-VIP players are considerably higher. if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) { @@ -109,7 +112,7 @@ S_RefineValidate: mes "Would you like to continue?"; next; if(select("Yes:No") == 1) { - if (getequippercentrefinery(getarg(3)) < 100) { + if (getequippercentrefinery(.@part) < 100) { if (.@weapon_lvl) { mes "[Suhnbi]"; mes "Wow!!"; @@ -152,6 +155,18 @@ S_RefineValidate: if (countitem(.@item_req) > 0 && Zeny > .@price) { delitem .@item_req,1; set Zeny, Zeny - .@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, getarg(4)) || + callfunc("F_IsEquipRefineHack", .@part, getarg(5))) { + mes "[Holink]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + return; } mes "[Suhnbi]"; diff --git a/npc/mobs/citycleaners.txt b/npc/mobs/citycleaners.txt deleted file mode 100644 index 96531577f5..0000000000 --- a/npc/mobs/citycleaners.txt +++ /dev/null @@ -1,40 +0,0 @@ -//===== rAthena Script ======================================= -//= City Cleaners Monster Spawn Script -//===== By: ================================================== -//= massdriller -//===== Current Version: ===================================== -//= 1.2 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= Spawns monsters to clean up cities. -//===== Additional Comments: ================================= -//= 0.1a Added a few more towns to spawn Wild rose [MasterOfMuppets] -//= 0.1b And even more from Poki#3 [Komurka] -//= 1.0 Removed unofficial city cleaners [Playtester] -//= 1.1 Added other city spawns [Playtester] -//= 1.2 Split spawns into Pre-RE/RE and Town files. [Euphy] -//============================================================ - -//================================================== -// Wild Rose City Spawns -//================================================== -prontera,0,0 monster Wild Rose 1261,1,7200000,3600000 -morocc,0,0 monster Wild Rose 1261,1,7200000,3600000 -alberta,0,0 monster Wild Rose 1261,1,7200000,3600000 -aldebaran,0,0 monster Wild Rose 1261,1,7200000,3600000 -geffen,0,0 monster Wild Rose 1261,1,7200000,3600000 -payon,0,0 monster Wild Rose 1261,1,7200000,3600000 -comodo,0,0 monster Wild Rose 1261,1,7200000,3600000 -izlude,0,0 monster Wild Rose 1261,1,7200000,3600000 -yuno,0,0 monster Wild Rose 1261,1,7200000,3600000 -einbroch,0,0 monster Wild Rose 1261,1,7200000,3600000 -lighthalzen,0,0 monster Wild Rose 1261,1,7200000,3600000 -hugel,0,0 monster Wild Rose 1261,1,7200000,3600000 -umbala,0,0 monster Wild Rose 1261,1,7200000,3600000 -amatsu,0,0 monster Wild Rose 1261,1,7200000,3600000 -gonryun,0,0 monster Wild Rose 1261,1,7200000,3600000 -louyang,0,0 monster Wild Rose 1261,1,7200000,3600000 -ayothaya,0,0 monster Wild Rose 1261,1,7200000,3600000 -moscovia,0,0 monster Wild Rose 1261,1,7200000,3600000 -einbech,0,0 monster Wild Rose 1261,1,3600000,3000000 diff --git a/npc/other/Global_Functions.txt b/npc/other/Global_Functions.txt index 179ebdd1e5..5c12d34311 100644 --- a/npc/other/Global_Functions.txt +++ b/npc/other/Global_Functions.txt @@ -759,3 +759,11 @@ function script close3 { cutin "",255; end; } + +////////////////////////////////////////////////////////////////////////////////// +// Return true if the card is a charm (enchant card), false otherwise. +////////////////////////////////////////////////////////////////////////////////// +function script F_IsCharm { + .@id = getarg(0); + return ((.@id >= 4700 && .@id < 5000) || (.@id >= 29000 && .@id <= 29162)); +} diff --git a/npc/other/turbo_track.txt b/npc/other/turbo_track.txt index 247a2ccd98..3bbea4bd91 100644 --- a/npc/other/turbo_track.txt +++ b/npc/other/turbo_track.txt @@ -51,12 +51,12 @@ OnStartArena: OnInit: if (compare(strnpcinfo(0),"main")) end; if (compare(strnpcinfo(2),"n1")) { - waitingroom "Solo Mode",60,"Solo Mode#n1::OnStartArena",1; + waitingroom "Solo Mode",60,"Solo Mode#n1::OnStartArena",1,1000,10; } else { if (compare(strnpcinfo(1),"4")) set .@in, 4; if (compare(strnpcinfo(1),"8")) set .@in, 8; if (compare(strnpcinfo(1),"16")) set .@in, 16; - waitingroom strnpcinfo(1),60,strnpcinfo(0)+"::OnStartArena",.@in,1000,10,99; + waitingroom strnpcinfo(1),60,strnpcinfo(0)+"::OnStartArena",.@in,1000,10; } enablewaitingroomevent strnpcinfo(0); end; diff --git a/npc/pre-re/mobs/citycleaners.txt b/npc/pre-re/mobs/citycleaners.txt index 55d900a787..c4a8ea7a4b 100644 --- a/npc/pre-re/mobs/citycleaners.txt +++ b/npc/pre-re/mobs/citycleaners.txt @@ -18,3 +18,26 @@ payon_in02,23,68,5,5 monster Thief Bug 1051,7,1200000,600000 jawaii_in,73,117,4,4 monster Thief Bug 1051,1,5400000,3000000 jawaii_in,83,117,5,5 monster Thief Bug 1051,1,4800000,2400000 + +//================================================== +// Wild Rose City Spawns +//================================================== +prontera,0,0 monster Wild Rose 1261,1,7200000,3600000 +morocc,0,0 monster Wild Rose 1261,1,7200000,3600000 +alberta,0,0 monster Wild Rose 1261,1,7200000,3600000 +aldebaran,0,0 monster Wild Rose 1261,1,7200000,3600000 +geffen,0,0 monster Wild Rose 1261,1,7200000,3600000 +payon,0,0 monster Wild Rose 1261,1,7200000,3600000 +comodo,0,0 monster Wild Rose 1261,1,7200000,3600000 +izlude,0,0 monster Wild Rose 1261,1,7200000,3600000 +yuno,0,0 monster Wild Rose 1261,1,7200000,3600000 +einbroch,0,0 monster Wild Rose 1261,1,7200000,3600000 +lighthalzen,0,0 monster Wild Rose 1261,1,7200000,3600000 +hugel,0,0 monster Wild Rose 1261,1,7200000,3600000 +umbala,0,0 monster Wild Rose 1261,1,7200000,3600000 +amatsu,0,0 monster Wild Rose 1261,1,7200000,3600000 +gonryun,0,0 monster Wild Rose 1261,1,7200000,3600000 +louyang,0,0 monster Wild Rose 1261,1,7200000,3600000 +ayothaya,0,0 monster Wild Rose 1261,1,7200000,3600000 +moscovia,0,0 monster Wild Rose 1261,1,7200000,3600000 +einbech,0,0 monster Wild Rose 1261,1,3600000,3000000 diff --git a/npc/quests/quests_lighthalzen.txt b/npc/quests/quests_lighthalzen.txt index 4233949fa4..331574d275 100644 --- a/npc/quests/quests_lighthalzen.txt +++ b/npc/quests/quests_lighthalzen.txt @@ -185,31 +185,26 @@ lighthalzen,294,223,7 script Guard#lhz02 868,{ // Cube Room Quest //============================================================ lighthalzen,341,224,3 script Fishbone 868,{ - // Retain prior position in quest. - if (piciburn) { - set lhz_sincube,piciburn; - set piciburn,0; - } // Quest is finished. if (MISC_QUEST&512) { - mes "[Fishbone]"; - mes "Oh hey, it's you!"; - mes "Now, listen. If you wanna"; - mes "get into Regenschirm again,"; - mes "you gotta enter that Sewer Pipe"; - mes "that's like, northeast from me."; - mes "It's gross, but you gotta..."; - next; - mes "[Fishbone]"; - mes "Anyway, good luck in"; - mes "whatever it is you're doing"; - mes "here in Lighthazlen. Oh, and"; - mes "be real careful! Something"; - mes "shadier than me is going"; - mes "on in this big city~"; - close; + mes "[Fishbone]"; + mes "Oh hey, it's you!"; + mes "Now, listen. If you wanna"; + mes "get into Regenschirm again,"; + mes "you gotta enter that Sewer Pipe"; + mes "that's like, northeast from me."; + mes "It's gross, but you gotta..."; + next; + mes "[Fishbone]"; + mes "Anyway, good luck in"; + mes "whatever it is you're doing"; + mes "here in Lighthazlen. Oh, and"; + mes "be real careful! Something"; + mes "shadier than me is going"; + mes "on in this big city~"; + close; } - // Apparantly if the boss quest progress is at 6, you skip the level requirement. + // Apparently if the boss quest progress is at 6, you skip the level requirement. if (lhz_boss == 6 || BaseLevel >= 60) { if (lhz_sincube == 0) { mes "[Fishbone]"; @@ -217,26 +212,26 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "Is there something"; mes "on my face? Quit looking"; mes "at me and let me do my work."; - set lhz_sincube,1; + lhz_sincube = 1; close; } - else if (lhz_sincube == 1) { + if (lhz_sincube == 1) { mes "[Fishbone]"; mes "Hey. Hey you."; mes "You're still looking"; mes "at me. Quit it. I'm busy"; mes "here and you're bothering me."; - set lhz_sincube,2; + lhz_sincube = 2; close; } - else if (lhz_sincube == 2) { + if (lhz_sincube == 2) { mes "[Fishbone]"; mes "Seriously, you are"; mes "starting to really get"; mes "on my nerves! What could"; mes "you possibly want from me?!"; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "Nothing really."; mes "I just feel like"; mes "watching you work."; @@ -249,7 +244,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "be so uptight about you looking"; mes "at what I'm doing, now would I?"; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "Nah..."; mes "I just think"; mes "you're uptight"; @@ -270,7 +265,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "ticking me off! Why"; mes "don't you go away?!"; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "Well, I was also"; mes "wondering why you're"; mes "working in a place that's"; @@ -292,7 +287,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "Hell, I could even get you"; mes "into that Laboratory..."; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "W-wait!"; mes "Laboratory?!"; mes "Are you serious?"; @@ -307,7 +302,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "stubborn, kid. But I don't trust"; mes "or serve strangers, period."; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "But isn't there"; mes "anything I can do"; mes "so you can help me"; @@ -320,11 +315,11 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "and just trust anyone who"; mes "wants to know a secret"; mes "route. Now get outta here!"; - set lhz_sincube,3; + lhz_sincube = 3; close; } - else if (lhz_sincube == 3) { - mes "["+strcharinfo(0)+"]"; + if (lhz_sincube == 3) { + mes "[" + strcharinfo(0) + "]"; mes "Please..."; mes "Please tell me"; mes "how I can get inside"; @@ -336,11 +331,12 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "and stop begging, okay?"; mes "You're only embarassing"; mes "yourself! Good grief..."; - set lhz_sincube,4; + lhz_sincube = 4; close; } - else if (lhz_sincube == 4) { - mes "["+strcharinfo(0)+"]"; + if (lhz_sincube == 4) { + .@player_name$ = strcharinfo(0); + mes "[" + .@player_name$ + "]"; mes "Why won't you"; mes "heeeeelp meee?"; mes "Pleeeeeeeease~"; @@ -354,7 +350,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "final. How many times do"; mes "you gotta make me spell it out?"; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "But there's gotta"; mes "be something I can"; mes "do so you'll help me?"; @@ -377,7 +373,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "you need. Alright, good luck"; mes "to you, brave adventurer."; next; - mes "["+strcharinfo(0)+"]"; + mes "[" + .@player_name$ + "]"; mes "You're joking right?!"; mes "There's no way I can ever"; mes "get that much zeny! I'd..."; @@ -402,7 +398,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "It's like I'm"; mes "doing this for free..."; next; - if (select("Okay.:No! It's impossible!") == 1) { + if (select( "Okay.", "No! It's impossible!" ) == 1) { mes "[Fishbone]"; mes "Alright, then"; mes "bring me back a"; @@ -410,8 +406,8 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "But you gotta have"; mes "exactly 20 Jellopy on"; mes "you, okay? Seeya pal~"; - set lhz_sincube,5; - setquest 12014; + lhz_sincube = 5; + setquest 12014;// More missions close; } mes "[Fishbone]"; @@ -423,13 +419,13 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "whatever number I said-- zeny!"; close; } - else if (lhz_sincube == 5) { + if (lhz_sincube == 5) { mes "[Fishbone]"; mes "So..."; mes "Did you bring"; mes "the stuff?"; next; - switch(select("I'm still working on it.:Here you go!:Um... Stuff?")) { + switch( select( "I'm still working on it.", "Here you go!", "Um... Stuff?" ) ) { case 1: mes "[Fishbone]"; mes "Still working on it?"; @@ -440,40 +436,40 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "It's 20 friggin' Jellopies!"; close; case 2: - if (countitem(909) > 19) { + if (countitem(909) < 20) { mes "[Fishbone]"; - mes "Ooh. Hey, good work."; - mes "Okay, I can see you're"; - mes "the reliable type. A deal"; - mes "is a deal, so I'll tell you"; - mes "how you can get inside"; - mes "that Laboratory."; - next; - mes "[Fishbone]"; - mes "Now, if you're wondering"; - mes "why I don't got much qualm"; - mes "against helping you, it's"; - mes "because I used to work in"; - mes "the Laboratory... But then"; - mes "they laid me off unfairly."; - next; - mes "[Fishbone]"; - mes "Anyway, anything I can"; - mes "do to cause them trouble"; - mes "is good in my book. Let me"; - mes "get some stuff ready and"; - mes "then I'll tell you what you"; - mes "really need to know."; - delitem 909,20; //Jellopy - set lhz_sincube,6; + mes "Uh..."; + mes "I said 20 Jellopies,"; + mes "didn't I? This ain't"; + mes "enough pal, so go out"; + mes "and get some more!"; close; } mes "[Fishbone]"; - mes "Uh..."; - mes "I said 20 Jellopies,"; - mes "didn't I? This ain't"; - mes "enough pal, so go out"; - mes "and get some more!"; + mes "Ooh. Hey, good work."; + mes "Okay, I can see you're"; + mes "the reliable type. A deal"; + mes "is a deal, so I'll tell you"; + mes "how you can get inside"; + mes "that Laboratory."; + next; + mes "[Fishbone]"; + mes "Now, if you're wondering"; + mes "why I don't got much qualm"; + mes "against helping you, it's"; + mes "because I used to work in"; + mes "the Laboratory... But then"; + mes "they laid me off unfairly."; + next; + mes "[Fishbone]"; + mes "Anyway, anything I can"; + mes "do to cause them trouble"; + mes "is good in my book. Let me"; + mes "get some stuff ready and"; + mes "then I'll tell you what you"; + mes "really need to know."; + delitem 909,20;// Jellopy + lhz_sincube = 6; close; case 3: mes "[Fishbone]"; @@ -485,7 +481,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ close; } } - else if (lhz_sincube == 6) { + if (lhz_sincube == 6) { mes "[Fishbone]"; if (lhz_boss == 6) { mes "way to get into Regenschrim"; @@ -502,8 +498,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "can find the Lab entrance."; } next; - switch(select("Not yet.:Yes.")) { - case 1: + if (select( "Not yet.", "Yes.") == 1) { mes "[Fishbone]"; mes "Eh...?"; mes "Alright, it's"; @@ -516,7 +511,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "Okay then,"; mes "here we go!"; close2; - set lhz_sincube,7; + lhz_sincube = 7; switch(rand(1,3)) { case 1: warp "lhz_cube",67,193; break; case 2: warp "lhz_cube",66,136; break; @@ -524,7 +519,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ } end; } - else if (lhz_sincube < 10) { + if (lhz_sincube < 10) { mes "[Fishbone]"; mes "Hm, you must not have"; mes "accomplished whatever"; @@ -539,7 +534,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "you want me to send"; mes "you there again?"; next; - if (select("No.:Yes.") == 1) { + if (select( "No.", "Yes." ) == 1) { mes "[Fishbone]"; mes "Geez, you must have"; mes "really had a hard time"; @@ -556,7 +551,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "Get ready, 'cuz"; mes "here we go...!"; close2; - set lhz_sincube,7; + lhz_sincube = 7; switch(rand(1,3)) { case 1: warp "lhz_cube",67,193; break; case 2: warp "lhz_cube",66,136; break; @@ -564,7 +559,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ } end; } - else if (lhz_sincube == 10) { + if (lhz_sincube == 10) { mes "[Fishbone]"; mes "Hey, you came back!"; mes "Good, I was starting"; @@ -572,9 +567,10 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "about what happened to"; mes "you. So did you get what"; mes "you wanted over there?"; - completequest 12014; + if (isbegin_quest(12014) == 1) + completequest 12014;// More missions next; - mes "["+strcharinfo(0)+"]"; + mes "[" + strcharinfo(0) + "]"; mes "Yeah..."; mes "I hope so,"; mes "anyway."; @@ -602,7 +598,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "send you back there. So"; mes "what do you say?"; next; - if (select("Sure:No thanks~") == 1) { + if (select( "Sure", "No thanks~" ) == 1) { mes "[Fishbone]"; mes "Okay then, here"; mes "we go! Good luck"; @@ -630,7 +626,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "just peachy, thanks~"; close; } - else if (BaseLevel < 60) { + if (BaseLevel < 60) { mes "Hey kid, get"; mes "outta here! Can't"; mes "you tell I'm dealin'"; @@ -639,7 +635,7 @@ lighthalzen,341,224,3 script Fishbone 868,{ mes "for baby faced guys like you!"; close; } - else if (lhz_boss > 6) { + if (lhz_boss > 6) { mes "[Fishbone]"; mes "Heya pal!"; mes "It's been a while."; @@ -656,7 +652,7 @@ lhz_cube,237,198,0 script Bundle of Files#cube 111,{ mes "on the ground.^000000"; close; } - else if (lhz_sincube < 10) { + if (lhz_sincube < 10) { if (lhz_secret01 < 1) { mes "^3355FFThere are a bunch"; mes "of files scattered"; @@ -665,14 +661,14 @@ lhz_cube,237,198,0 script Bundle of Files#cube 111,{ mes "sorts of information,"; mes "but they're all mixed up.^000000"; next; - if (select("Rummage through the files.:Cancel") == 1) { + if (select( "Rummage through the files.", "Cancel" ) == 1) { mes "^3355FFWhile you are"; mes "rummaging through"; mes "the files, a Red Key"; mes "drops to the ground"; mes "with a clink. You decide"; mes "to keep this ^000000Red Key^3355FF.^000000"; - set lhz_secret01,1; + lhz_secret01 = 1; } close; } @@ -698,7 +694,7 @@ lhz_cube,234,202,0 script Picture#cube 111,{ mes "your attention for some"; mes "inexplicably strange reason.^000000"; next; - if (select("Look behind picture.:Cancel") == 1) { + if ( select("Look behind picture.", "Cancel" ) == 1) { mes "^3355FFYou push and pull"; mes "with all your strength,"; mes "but the picture won't"; @@ -708,13 +704,13 @@ lhz_cube,234,202,0 script Picture#cube 111,{ } close; } - else if (lhz_secret01 == 2) { + if (lhz_secret01 == 2) { mes "^3355FFThis picture hanging"; mes "on the wall catches"; mes "your attention for some"; mes "inexplicably strange reason.^000000"; next; - if (select("Look behind picture.:Cancel") == 1) { + if (select( "Look behind picture.", "Cancel" ) == 1) { mes "^3355FFYou push and pull"; mes "with all your strength,"; mes "but this picture is too"; @@ -733,18 +729,18 @@ lhz_cube,234,202,0 script Picture#cube 111,{ mes "find that the following"; mes "numbers are written:^000000"; mes " "; - set .@number_rand,rand(1,3); + .@number_rand = rand(1,3); if (.@number_rand == 1) { mes "4 3 2 9 1 6 8 2 7"; - set lhz_secret01,3; + lhz_secret01 = 3; } else if (.@number_rand == 2) { mes "3 6 4 1 2 8 7 1 5"; - set lhz_secret01,4; + lhz_secret01 = 4; } else { mes "4 9 3 7 6 2 8 6 6"; - set lhz_secret01,5; + lhz_secret01 = 5; } close; } @@ -757,28 +753,25 @@ lhz_cube,234,202,0 script Picture#cube 111,{ } close; } - else if (lhz_secret01 < 6) { + if (lhz_secret01 < 6) { mes "^3355FFThe following numbers"; mes "were written behind the"; mes "picture. If they were hidden,"; mes "these numbers must have"; mes "some kind of importance.^000000"; mes " "; - if (lhz_secret01 == 3) { + if (lhz_secret01 == 3) mes "4 3 2 9 1 6 8 2 7"; - } - else if (lhz_secret01 == 4) { + else if (lhz_secret01 == 4) mes "3 6 4 1 2 8 7 1 5"; - } - else if (lhz_secret01 == 5) { + else if (lhz_secret01 == 5) mes "4 9 3 7 6 2 8 6 6"; - } close; } mes "^3355FFThere is a picture"; mes "hanging on the wall.^000000"; next; - if (select("Look beneath picture.:Cancel") == 1) { + if (select( "Look beneath picture.", "Cancel" ) == 1) { mes "^3355FFThere are some"; mes "numbers behind the"; mes "picture, but now there is"; @@ -795,7 +788,7 @@ lhz_cube,242,201,0 script Drawer#cube 111,{ mes "you can't open it.^000000"; close; } - else if (lhz_secret01 == 1) { + if (lhz_secret01 == 1) { mes "^3355FF The drawer here"; mes "looks interesting, but"; mes "it's locked. Hopefully, you"; @@ -809,7 +802,7 @@ lhz_cube,242,201,0 script Drawer#cube 111,{ mes "^000000Jackknife^3355FF that you decide"; mes "to take. After all, it might"; mes "be handy sometime.^000000"; - set lhz_secret01,2; + lhz_secret01 = 2; } else { mes "^3355FFUnfortunately, you"; @@ -836,18 +829,18 @@ lhz_cube,248,179,0 script Chest#cube 111,{ mes "and isn't suited for battle.^000000"; close; } - else if (lhz_sincube == 7) { + if (lhz_sincube == 7) { mes "^3355FFYou've found a chest,"; mes "but more importantly,"; mes "there is a utility Axe"; mes "laid on top of it.^000000"; next; - if (select("Take the utility Axe.:Cancel") == 1) { + if (select( "Take the utility Axe.", "Cancel" ) == 1) { mes "^3355FFWithout shame or"; mes "an ounce of guilt, you"; mes "pick up the utility ^000000Axe^3355FF"; mes "and claim it as your own.^000000"; - set lhz_sincube,8; + lhz_sincube = 8; } close; } @@ -859,14 +852,13 @@ lhz_cube,248,179,0 script Chest#cube 111,{ } lhz_cube,237,183,0 script Barrel#cube 111,{ - set number_line,0; if (lhz_sincube < 8) { mes "^3355FFYou have"; mes "found a shabbily"; mes "constructed barrel.^000000"; close; } - else if (lhz_sincube == 8) { + if (lhz_sincube == 8) { mes "^3355FFYou have"; mes "found a shabbily"; mes "constructed barrel."; @@ -890,7 +882,7 @@ lhz_cube,237,183,0 script Barrel#cube 111,{ mes "of the metal plate on"; mes "top of the box you found,"; mes "like some kind of keypad...^000000"; - set lhz_sincube,9; + lhz_sincube = 9; } else { mes "^3355FFDoing that probably won't"; @@ -899,7 +891,7 @@ lhz_cube,237,183,0 script Barrel#cube 111,{ } close; } - else if (lhz_sincube == 9) { + if (lhz_sincube == 9) { if (lhz_secret01 < 3) { mes "^3355FFYou decide to enter"; mes "some numbers into the"; @@ -907,12 +899,12 @@ lhz_cube,237,183,0 script Barrel#cube 111,{ mes "you can only enter single"; mes "digit numbers at one time...^000000"; next; - for( set .@i, 0; .@i < 9; set .@i, .@i + 1 ) + for( .@i = 0; .@i < 9; .@i++ ) input .@input; mes "^3355FFNothing happened...^000000"; close; } - else if (lhz_secret01 >= 3 && lhz_secret01 <= 5) { + if (lhz_secret01 <= 5) { switch(lhz_secret01) { case 3: setarray .@numbers[0],4,3,2,9,1,6,8,2,7; break; case 4: setarray .@numbers[0],3,6,4,1,2,8,7,1,5; break; @@ -924,16 +916,17 @@ lhz_cube,237,183,0 script Barrel#cube 111,{ mes "metal plate on top of the box"; mes "you found inside the keg.^000000"; next; - for( set .@i, 0; .@i < 9; set .@i, .@i + 1 ) { + for( .@i = 0; .@i < 9; .@i++ ) { input .@input; - if (.@input == .@numbers[.@i]) set .@number_line,.@number_line+1; + if (.@input == .@numbers[.@i]) + .@number_line++; } if (.@number_line == 9) { mes "^3355FFThe metal plate slides"; mes "open and you find a key"; mes "Key inside the box. You"; mes "to keep this ^000000Yellow Key^3355FF.^000000"; - set lhz_secret01,6; + lhz_secret01 = 6; } else { mes "^3355FFNothing happened."; @@ -971,7 +964,7 @@ lhz_cube,224,192,0 script Power Generator#cube 111,{ mes "insert into the keyhole.^000000"; close; } - else if (lhz_secret01 == 6) { + if (lhz_secret01 == 6) { mes "^3355FFThis is a noisily"; mes "operating huge machine"; mes "with a front panel that has"; @@ -990,7 +983,7 @@ lhz_cube,224,192,0 script Power Generator#cube 111,{ mes "^3355FFYou notice that the"; mes "^000000Status Light ^3355FFnext to the"; mes "bed has now turned off.^000000"; - set lhz_secret01,7; + lhz_secret01 = 7; } else { mes "^3355FFNothing happened."; @@ -1020,17 +1013,17 @@ lhz_cube,244,201,0 script Status Light#cube 111,{ mes "cool enough for you to touch...^000000"; close; } - else if (lhz_secret01 == 7) { + if (lhz_secret01 == 7) { mes "The Status Light"; mes "is now off and the"; mes "bulb has cooled down."; next; - if (select("Smash the light bulb.:Cancel") == 1) { + if (select( "Smash the light bulb.", "Cancel" ) == 1) { mes "^3355FFYou smash the"; mes "Status Light's bulb"; mes "and discover another key."; mes "You obtained a ^000000Black Key^3355FF.^000000"; - set lhz_secret01,8; + lhz_secret01 = 8; } close; } @@ -1040,12 +1033,12 @@ lhz_cube,244,201,0 script Status Light#cube 111,{ } lhz_cube,234,200,0 script Desk#cube 111,{ - if (lhz_secret02 <= 1) { + if (lhz_secret02 < 2) { mes "^3355FFYou've found"; mes "a completely"; mes "cluttered desk.^000000"; next; - switch(select("On the desk:Under the desk:Desk drawer")) { + switch( select( "On the desk", "Under the desk", "Desk drawer" ) ) { case 1: mes "^3355FFVarious documents,"; mes "books and lab equipment"; @@ -1061,7 +1054,7 @@ lhz_cube,234,200,0 script Desk#cube 111,{ mes "that you decide to keep."; mes "You never know when"; mes "you'll need one of those.^000000"; - set lhz_secret02,1; + lhz_secret02 = 1; } else { mes "^3355FFThis is where you"; @@ -1080,7 +1073,7 @@ lhz_cube,234,200,0 script Desk#cube 111,{ close; } } - else if (lhz_secret02 == 2) { + if (lhz_secret02 == 2) { mes "^3355FFYou're back at the"; mes "messy desk which"; mes "is probably used by"; @@ -1088,7 +1081,7 @@ lhz_cube,234,200,0 script Desk#cube 111,{ mes "who has someone else"; mes "do his desk tidying for him.^000000"; next; - switch(select("On the desk:Under the desk:Desk drawer")) { + switch( select( "On the desk", "Under the desk", "Desk drawer" ) ) { case 1: mes "^3355FFAlas, no matter how much"; mes "you rummage through it,"; @@ -1126,7 +1119,7 @@ lhz_cube,234,200,0 script Desk#cube 111,{ mes "to the sum of its parts."; mes "You are now the proud"; mes "bearer of a ^000000Long Stick^3355FF.^000000"; - set lhz_secret02,3; + lhz_secret02 = 3; close; case 3: mes "^3355FFThis desk drawer is"; @@ -1143,7 +1136,7 @@ lhz_cube,234,200,0 script Desk#cube 111,{ mes "objects, but such is its"; mes "destiny as office equipment.^000000"; next; - switch(select("On the desk:Under the desk:Desk drawer")) { + switch( select( "On the desk", "Under the desk", "Desk drawer" ) ) { case 1: mes "^3355FFAlas, no matter how much"; mes "you rummage through it,"; @@ -1182,7 +1175,7 @@ lhz_cube,247,198,0 script Bed#cube 111,{ mes "in which the sheets"; mes "are slovenly arranged.^000000"; next; - if (select("On the bed:Under the bed") == 1) { + if (select( "On the bed", "Under the bed" ) == 1) { mes "^3355FFNo one's in the bed"; mes "and if you climbed in,"; mes "you'd just be alone. For"; @@ -1196,16 +1189,16 @@ lhz_cube,247,198,0 script Bed#cube 111,{ mes "keep. You never know"; mes "when certain, seemingly"; mes "useless objects will save you.^000000"; - set lhz_secret02,2; + lhz_secret02 = 2; } close; } - else if (lhz_secret02 == 1) { + if (lhz_secret02 == 1) { mes "^3355FFYou've found a bed"; mes "in which the sheets"; mes "are slovenly arranged.^000000"; next; - if (select("On the bed:Under the bed") == 1) { + if (select( "On the bed", "Under the bed" ) == 1) { mes "^3355FFNo one's in the bed"; mes "and if you climbed in,"; mes "you'd just be alone. For"; @@ -1225,16 +1218,16 @@ lhz_cube,247,198,0 script Bed#cube 111,{ mes "to the sum of its parts."; mes "You are now the proud"; mes "bearer of a ^000000Long Stick^3355FF.^000000"; - set lhz_secret02,3; + lhz_secret02 = 3; } close; } - else if (lhz_secret02 == 2) { + if (lhz_secret02 == 2) { mes "^3355FFYou've found a bed"; mes "in which the sheets"; mes "are slovenly arranged.^000000"; next; - if (select("On the bed:Under the bed") == 1) { + if (select( "On the bed", "Under the bed" ) == 1) { mes "^3355FFNo one's in the bed"; mes "and if you climbed in,"; mes "you'd just be alone. For"; @@ -1267,12 +1260,12 @@ lhz_cube,247,198,0 script Bed#cube 111,{ } close; } - else if (lhz_secret02 == 3) { + if (lhz_secret02 == 3) { mes "^3355FFYou find a messy"; mes "bed that may be more"; mes "than meets the eye.^000000"; next; - if (select("On the bed:Under the bed") == 1) { + if (select( "On the bed", "Under the bed" ) == 1) { mes "^3355FFNo one's in the bed"; mes "and if you climbed in,"; mes "you'd just be alone. For"; @@ -1294,7 +1287,7 @@ lhz_cube,247,198,0 script Bed#cube 111,{ mes "it under the bed towards you."; mes "You now possess the ^000000Cube^3355FF"; mes "that was under the bed.^000000"; - set lhz_secret02,4; + lhz_secret02 = 4; } else { mes "^3355FFUnfortunately,"; @@ -1310,7 +1303,7 @@ lhz_cube,247,198,0 script Bed#cube 111,{ mes "in which the sheets"; mes "are slovenly arranged.^000000"; next; - if (select("On the bed:Under the bed") == 1) { + if (select( "On the bed", "Under the bed" ) == 1) { mes "^3355FFNo one's in the bed"; mes "and if you climbed in,"; mes "you'd just be alone. For"; @@ -1332,7 +1325,7 @@ lhz_cube,229,184,0 script Goblet#cube 111,{ mes "It looks like you"; mes "missed the party.^000000"; next; - if (select("Examine the goblet.:Cancel") == 1) { + if (select( "Examine the goblet.", "Cancel" ) == 1) { mes "^3355FFInside the goblet,"; mes "you find a ^000000Rusty Key^3355FF"; mes "which you decide to keep."; @@ -1340,7 +1333,7 @@ lhz_cube,229,184,0 script Goblet#cube 111,{ mes "rid of that rust somehow."; mes "Perhaps you can dip the key"; mes "in some corrosive chemical?^000000"; - set lhz_secret03,1; + lhz_secret03 = 1; } close; } @@ -1368,7 +1361,7 @@ lhz_cube,231,202,0 script Chemicals#cube 111,{ mes "chemicals on something else.^000000"; close; } - else if (lhz_secret03 == 1) { + if (lhz_secret03 == 1) { mes "^3355FFThere is a bottle"; mes "containing slightly"; mes "corrosive chemicals"; @@ -1382,7 +1375,7 @@ lhz_cube,231,202,0 script Chemicals#cube 111,{ mes "again. Now that it is clean,"; mes "the Rusty Key has become"; mes "a sparkling ^000000Green Key^3355FF.^000000"; - set lhz_secret03,2; + lhz_secret03 = 2; } else { mes "^3355FFWhatever you tried to"; @@ -1408,7 +1401,7 @@ lhz_cube,249,191,0 script Cabinet#cube 111,{ mes "many drawers. Perhaps"; mes "something useful is inside?"; next; - if (select("Open:Cancel") == 1) { + if (select( "Open", "Cancel" ) == 1) { input .@input$; mes "^3355FFUnfortunately, the"; mes "cabinet has been locked."; @@ -1417,7 +1410,7 @@ lhz_cube,249,191,0 script Cabinet#cube 111,{ } close; } - else if (lhz_secret03 == 2) { + if (lhz_secret03 == 2) { mes "^3355FFYou've found a"; mes "cabinet that contains"; mes "many drawers. Perhaps"; @@ -1430,7 +1423,7 @@ lhz_cube,249,191,0 script Cabinet#cube 111,{ mes "one of the drawer keyholes."; mes "You open the drawer and"; mes "obtain a strange ^000000Polygon^3355FF.^000000"; - set lhz_secret03,3; + lhz_secret03 = 3; } else { mes "^3355FFWhatever you tried"; @@ -1470,7 +1463,7 @@ lhz_cube,224,197,0 script Experiment Tube#cube 111,{ mes "card to insert into the slot.^000000"; close; } - else if (lhz_secret01 == 8) { + if (lhz_secret01 == 8) { mes "^3355FFYou find a strange"; mes "tube that seems to"; mes "contain something."; @@ -1485,14 +1478,14 @@ lhz_cube,224,197,0 script Experiment Tube#cube 111,{ mes "the experiment tube to open"; mes "and reveal an ^000000Oval^3355FF which you"; mes "you choose to take with you.^000000"; - set lhz_secret01,9; + lhz_secret01 = 9; } else { mes "^3355FFNothing happened...^000000"; } close; } - else if (lhz_secret01 == 9) { + if (lhz_secret01 == 9) { mes "^3355FFThis is where you"; mes "obtained the ^000000Oval^3355FF."; mes "As you look around"; @@ -1518,17 +1511,17 @@ lhz_cube,224,197,0 script Experiment Tube#cube 111,{ mes "ground splits open, revealing"; mes "an underground staircase.^000000"; next; - if (select("Go downstairs:Cancel") == 1) { + if (select( "Go downstairs", "Cancel" ) == 1) { mes "^3355FFYou walk down"; mes "the long flight"; mes "of winding stairs...^000000"; close2; //remove variables that are no longer used. - set lhz_sincube,0; - set lhz_secret01,0; - set lhz_secret02,0; - set lhz_secret03,0; - set MISC_QUEST,MISC_QUEST|512; + lhz_sincube = 0; + lhz_secret01 = 0; + lhz_secret02 = 0; + lhz_secret03 = 0; + MISC_QUEST = MISC_QUEST | 512; warp "lhz_cube",177,13; end; } @@ -1553,7 +1546,7 @@ lhz_cube,224,197,0 script Experiment Tube#cube 111,{ } lhz_cube,248,193,0 script Box#cube1 111,{ - if ((lhz_secret01 < 9) && (lhz_secret02 < 4) && (lhz_secret03 < 3)) { + if (lhz_secret01 < 9 && lhz_secret02 < 4 && lhz_secret03 < 3) { mes "^3355FFYou find a box with"; mes "three distinctively"; mes "shaped holes.^000000"; @@ -1563,27 +1556,26 @@ lhz_cube,248,193,0 script Box#cube1 111,{ mes "^3355FFNothing happened.^000000"; close; } - else if ((lhz_secret01 != 10) || (lhz_secret02 != 5) || (lhz_secret03 != 4)) { + if (lhz_secret01 != 10 || lhz_secret02 != 5 || lhz_secret03 != 4) { mes "^3355FFYou find a box with"; mes "three distinctively"; mes "shaped holes.^000000"; next; - switch(select("Oval Hole:Cube Hole:Polygon Hole")) { + switch( select( "Oval Hole", "Cube Hole", "Polygon Hole" ) ) { case 1: if (lhz_secret01 == 9) { - next; input .@input$; if (.@input$ == "Oval") { mes "^3355FFYou insert the Oval"; mes "into the Oval shaped"; mes "hole where it fits perfectly.^000000"; - set lhz_secret01,10; + lhz_secret01 = 10; close; } mes "^3355FFNothing happened.^000000"; close; } - else if (lhz_secret01 == 10) { + if (lhz_secret01 == 10) { mes "^3355FFThe Oval shaped hole"; mes "already has an Oval in it."; mes "Besides, it's not you have"; @@ -1595,7 +1587,6 @@ lhz_cube,248,193,0 script Box#cube1 111,{ close; case 2: if (lhz_secret02 == 4) { - next; input .@input$; if (.@input$ == "Cube") { mes "^3355FFYou insert the Cube"; @@ -1603,13 +1594,13 @@ lhz_cube,248,193,0 script Box#cube1 111,{ mes "and it clicks into place."; mes "Your formal Kindergarten"; mes "training is finally justified.^000000"; - set lhz_secret02,5; + lhz_secret02 = 5; close; } mes "^3355FFNothing happened.^000000"; close; } - else if (lhz_secret02 == 5) { + if (lhz_secret02 == 5) { mes "^3355FFYou already placed"; mes "a Cube into the hole."; mes "You could take it back"; @@ -1623,7 +1614,6 @@ lhz_cube,248,193,0 script Box#cube1 111,{ close; case 3: if (lhz_secret03 == 3) { - next; input .@input$; if (.@input$ == "Polygon") { mes "^3355FFFortunately, the"; @@ -1633,13 +1623,13 @@ lhz_cube,248,193,0 script Box#cube1 111,{ mes "nondescript Polygonal hole."; mes "The Polygon fits perfectly,"; mes "almost as if it were destiny.^000000"; - set lhz_secret03,4; + lhz_secret03 = 4; close; } mes "^3355FFNothing happened.^000000"; close; } - else if (lhz_secret03 == 4) { + if (lhz_secret03 == 4) { mes "^3355FFThe Polygon is already"; mes "inserted into the hole."; mes "Trust that this is as much"; @@ -1651,14 +1641,14 @@ lhz_cube,248,193,0 script Box#cube1 111,{ close; } } - else if (lhz_secret01 == 10 && lhz_secret02 == 5 && lhz_secret03 == 4 && lhz_sincube != 10) { + if (lhz_secret01 == 10 && lhz_secret02 == 5 && lhz_secret03 == 4 && lhz_sincube != 10) { mes "^3355FFYou find a box with"; mes "three distinctively"; mes "shaped holes that"; mes "are now filled with the"; mes "objects you've inserted.^000000"; next; - if (select("Open the box.:Cancel") == 1) { + if (select( "Open the box.", "Cancel" ) == 1) { mes "^3355FFYou open the box"; mes "and find that there's"; mes "a small card labeled"; @@ -1666,8 +1656,8 @@ lhz_cube,248,193,0 script Box#cube1 111,{ mes "You pocket this ^000000Laboratory"; mes "Permit^3355FF, knowing that you"; mes "will be needing it later."; - set lhz_sincube,10; - getitem 2657,1; //Lab_Passport + lhz_sincube = 10; + getitem 2657,1;// Lab_Passport } close; } @@ -1685,7 +1675,7 @@ lhz_cube,250,184,0 script Door#cube 111,{ mes "^3355FFYou've come upon a"; mes "door that leads outside.^000000"; next; - if (select("Exit:Cancel") == 1) { + if (select( "Exit", "Cancel" ) == 1) { warp "lighthalzen",310,302; end; } @@ -1693,6 +1683,7 @@ lhz_cube,250,184,0 script Door#cube 111,{ } lhz_dun02,224,6,0 script Exit1#lt 45,1,1,{ + end; OnTouch_: if (MISC_QUEST&512) { warp "lhz_cube",231,90; diff --git a/npc/re/custom/lasagna/lasagna_npcs.txt b/npc/re/custom/lasagna/lasagna_npcs.txt index 0cc16710d8..12e26256c6 100644 --- a/npc/re/custom/lasagna/lasagna_npcs.txt +++ b/npc/re/custom/lasagna/lasagna_npcs.txt @@ -1360,6 +1360,10 @@ izlude,195,213,5 script Con-Chliina Crewman#doi 4_M_MERCAT1,{ end; } malangdo,218,81,5 duplicate(Con-Chliina Crewman#doi) Con-Chliina Crewman#dom 4_M_MERCAT1 +izlude_a,195,213,5 duplicate(Con-Chliina Crewman#doi) Con-Chliina Crewman#doia 4_M_MERCAT1 +izlude_b,195,213,5 duplicate(Con-Chliina Crewman#doi) Con-Chliina Crewman#doib 4_M_MERCAT1 +izlude_c,195,213,5 duplicate(Con-Chliina Crewman#doi) Con-Chliina Crewman#doic 4_M_MERCAT1 +izlude_d,195,213,5 duplicate(Con-Chliina Crewman#doi) Con-Chliina Crewman#doid 4_M_MERCAT1 izlude,138,183,3 script Vigilante Penne#doect01 4_DR_SOLDIER,{ if (Class == Job_Summoner) { diff --git a/npc/re/instances/AirshipAssault.txt b/npc/re/instances/AirshipAssault.txt new file mode 100644 index 0000000000..5f83c88607 --- /dev/null +++ b/npc/re/instances/AirshipAssault.txt @@ -0,0 +1,1380 @@ +//===== rAthena Script ======================================= +//= Airship Assault Instance Script +//===== Description ========================================== +//= Heroes Trail Part-III 'Airship Assault' instance +//===== Additional Comments: ================================= +//= [Official Conversion] +//= 1.0 First Version [Ziu] +//= 1.1 Fix Explosion Effect and add respawn attack visual mob [Ziu] +//= 1.1a Change close;-> end; [Ziu] +//= 2.0 English version [Secretdataz/Capuche] +//= 2.1 Clean-up [Secretdataz] +//= 2.2 Dialogues clean-ups [Aleos] +//============================================================ + +dali02,136,79,3 script Explorer Lion#air1 4_M_DST_GRAND,{ + mes "[Explorer Lion]"; + mes "Hm...after several days of observation, this place seems to be a device imprinted with the memories of an airship."; + next; + mes "[Explorer Lion]"; + mes "...that is different. I don't have any more information..."; + close; +} + +dali02,142,81,3 script Dimensional Device#air1 PORTAL,{ + if (checkquest(15050,PLAYTIME) == 2) { + erasequest 15050;// Memorial Dungeon: Airship Assault + erasequest 15051; + } + else if (checkquest(15051,PLAYTIME) == 2) {// Memorial Dungeon: Airship Assault + mes "^ff0000Memorial Dungeon cannot be reentered within 23 hours after your last entrance.^000000"; + close; + } + .@party_id = getcharid(1); + .@p_name$ = getpartyname(.@party_id); + .@md_name$ = "Assault on the Airship"; + + if (BaseLevel < 125) { + mes "^ff0000Users below level 125 cannot enter this dungeon^000000"; + close; + } + if (.@party_id < 1) { + mes "^ff0000To enter, you must create or join a party of 1 or more members.^000000"; + close; + } + if (getcharid(0) != getpartyleader(.@party_id,2)) { + mes "^ff0000This Memorial Dungeon is only for 1 person. Only the party leader can enter.^000000"; + close; + } + .@s = select( "Power Up the Device", "Use the Device", "Cancel" ); + if (getcharid(0) != getpartyleader(.@party_id,2)) { + mes "^ff0000This Memorial Dungeon is only for 1 person. Only the party leader can enter.^000000"; + close; + } + switch(.@s) { + case 1: + if (instance_create(.@md_name$) < 0) { + mes "Party name: " + getpartyname( getcharid(1) ); + mes "Character name: " + strcharinfo(0); + mes "^0000ff" + .@md_name$ + "^000000 - Creation failed!"; + close; + } + mes "^ff0000After dimension device has formed^000000"; + mes "^ff0000click to enter again.^000000"; + close; + case 2: + switch( instance_enter(.@md_name$) ) { + case IE_OK: + if (isbegin_quest(15050) == 0) { + setquest 15050;// Memorial Dungeon: Airship Assault + setquest 15051;// Memorial Dungeon: Airship Assault + } + mapannounce "dali02", "" + strcharinfo(0) + ", member of the party " + getpartyname( getcharid(1) ) + " entered the instance " + .@md_name$ + ".", bc_map,"0x00ff99"; + specialeffect2 EF_WARP; + // warp "1@air1",244,73; + end; + case IE_NOMEMBER: + mes "^ff0000To enter, you must create or join a party of 1 or more members.^000000"; + close; + case IE_NOINSTANCE: + mes "^ff0000The party leader has not used the device.^000000"; + close; + case IE_OTHER: + mes "An unknown error has occurred.";// Custom + close; + } + case 3: + end; + } +} + +// Warps +1@air1,253,54,0 warp warp1#air1 2,2,1@air1,91,68 +1@air1,104,72,0 warp warp2a#air1 2,2,1@air1,101,200 +1@air1,104,52,0 warp warp2b#air1 2,2,1@air1,101,176 +1@air1,103,200,0 warp warp3a#air1 2,2,1@air2,104,52 +1@air1,103,176,0 warp warp3b#air1 2,2,1@air2,104,52 +1@air2,88,67,0 warp warp4a#air2 2,2,1@air2,247,53 +1@air2,244,73,0 warp warp5a#air2 2,2,dali02,137,82 + +// Entrance +1@air1,240,57,3 script Loki#air1 4_M_ROKI2,{ + if ('airship_status == 0) { + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "...Glad there aren't any of those pesky things here..."; + close3; + } + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "...I will defend this place no matter what. Go down into the airship...!!"; + close3; +} + +1@air1,235,57,5 script Fenrir#air1 4_F_FENRIR,{ + if ('airship_status == 0) { + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "Flying in the air through with the strength of machinery... the development of technology is truly marvelous."; + next; + mes "[Fenrir]"; + mes "But I feel there's a power of some kind... I think this airship won't be able to fly solely just by technology."; + close3; + } + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "I will face them here. Chaos, go down to the lower floor of the airship with Iris!"; + close3; +} + +1@air1,215,67,5 script Iris#air1 4_F_IRIS,{ end; } +1@air1,214,66,5 duplicate(Iris#air1) Chaos#air1 4_M_CHAOS + +1@air1,217,67,3 script Captain Ferlock#air1 4_M_REINDEER,{ + if ('airship_status == 0) { + cutin "h_iris02",2; + mes "[Iris]"; + mes "Whoa~ this is great!! The wind is so cool~!!"; + mes "Hooray~ we are flying through the sky! For free on top of that!"; + next; + mes "[Iris]"; + mes "Is it not marvelous how this huge ship can fly without the use of magic? Chaos?"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "......"; + next; + cutin "h_iris02",2; + mes "[Iris]"; + mes "...?? Chaos?"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes ".....Sage Kadmon.."; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "What are you doing instead of listening to me!!!!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "Argh! Aaah~!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Humph! That's what you get for being absent-minded!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "Ah...Iris!! Are you trying to kill me~!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Humph! I don't care if you die or not..."; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Hey!! No horsing around on the ship!!"; + mes "This is what's wrong with young humans. They have no manners! If you act up I will toss all of you off!!"; + next; + cutin "h_iris02",2; + mes "[Iris]"; + mes "Oops... By the way captain, how does this big airship fly through the sky? It is so marvelous!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Huh? That's a good question."; + mes "As you can see, we heat the large boiler to boil water then use the pressure of the steam to move the pistons which turns the cogwheel and moves the turbine to turn the propeller."; + next; + cutin "h_iris02",2; + mes "[Iris]"; + mes "Eh... So that's how this big ship floats... but now the feeling of the mystery is gone. I thought there would be some mystical device... a little disappointed..."; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "That's right. This big ship can't be in the sky with just steam. So it uses an amplifier called a 'Rune Engine'."; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Rune Engine? What is that?"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "It's a device that uses a magical stone."; + mes "Something about fallen fragments of a broken heart according to the legends... a ridiculous legend but that doesn't matter..."; + next; + mes "[Captain Ferlock]"; + mes "The stone is the so-called 'Tear of Ymir.' If put in junction with locomotive engines like steam engines, the rune exuded from the stone amplifies the energy."; + next; + mes "[Captain Ferlock]"; + mes "In all honesty it is not an overstatement to say a rock the size of a thumb is moving this ship. It possesses an incredible power."; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "That little thing...!!!"; + next; + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "......huh?"; + mes "Something is coming this way..."; + next; + cutin "",255; + mes "[Guard]"; + mes "Alert!! Alert!! A large Wyvern unit at 7 o'clock!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "What?!"; + next; + cutin "",255; + mes "[Guard]"; + mes "Gre...Gremlins!! Gremlins have landed from the Wyvern!!"; + for ( .@i = 1; .@i <= 8; .@i++ ) + enablenpc instance_npcname("Gremlin#" + .@i + "air1"); + enablenpc instance_npcname("Rotar Zairo#1air1"); + enablenpc instance_npcname("Rotar Zairo#2air1"); + enablenpc instance_npcname("Acidus#1air1"); + enablenpc instance_npcname("Acidus#2air1"); + enablenpc instance_npcname("Wywern#air1"); + 'airship_status = 1; + next; + } + if ('airship_status == 1) { + cutin "h_chaos01",2; + mes "[Chaos]"; + mes "Hm... What is this now?"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Hahahaha~ You have waited long!!"; + mes "Beautiful sorceress Arcana's surprise airborne monster show!!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "Wha...what show?"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Now... Let us get started! Gremlins~!!"; + mes "It's PARTY TIME~!!"; + next; + cutin "",255; + mes "[Guard]"; + mes "Cap..Captain! This is serious!"; + mes "Gremlins are all over the ship!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "What?! These are Gremlins?!"; + mes "You bastards!! Come down from there now!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Captain. There is no need to be so agitated."; + mes "Gremlins are just monsters that tinker with machines. Rather..."; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "You don't know what you're talking about!!"; + mes "We're at an altitude of 8000!! Even a minor malfunction could lead to a deadly crash!"; + next; + cutin "",255; + mes "[Guard]"; + mes "Argh!! Rear engine number 1!!"; + mes "...This is serious! They are heading towards the engine room! We have to protect the Rune Engine!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Damn it... Where did I put my weapon..."; + mes "Hey humans!! Block that nuisance while I go to the captain's room to look for my weapon!!"; + next; + mes "[Captain Ferlock]"; + mes "We have to especially stop them from getting to the Rune Engine!! If that is destroyed the ship can no longer fly!!"; + next; + mes "[Captain Ferlock]"; + mes "Damn... if only I had my weapon..."; + next; + disablenpc instance_npcname("Captain Ferlock#air1"); + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "Iris!! Let's go down to the engine room! Loki and Fenrir, hold this place!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Oh...okay! Alright... Let's go!!"; + close2; + cutin "",255; + if ('airship_status == 1) + donpcevent instance_npcname("#airshipputmob1") + "::OnStart"; + } + end; +} + +1@air1,236,57,3 duplicate(Iris#air1) Gremlin#1air1 3176 +1@air1,239,57,5 duplicate(Iris#air1) Gremlin#2air1 3176 +1@air1,230,50,5 duplicate(Iris#air1) Gremlin#3air1 3176 +1@air1,226,62,3 duplicate(Iris#air1) Gremlin#4air1 3176 +1@air1,241,48,3 duplicate(Iris#air1) Gremlin#5air1 3176 +1@air1,225,40,7 duplicate(Iris#air1) Gremlin#6air1 3176 +1@air1,236,48,7 duplicate(Iris#air1) Gremlin#7air1 3176 +1@air1,224,66,5 duplicate(Iris#air1) Gremlin#8air1 3176 +1@air1,213,75,5 duplicate(Iris#air1) Wywern#air1 3180 +1@air1,218,78,3 duplicate(Iris#air1) Acidus#1air1 3178 +1@air1,208,78,5 duplicate(Iris#air1) Acidus#2air1 3179 +1@air1,200,78,5 duplicate(Iris#air1) Rotar Zairo#1air1 3175 +1@air1,223,78,3 duplicate(Iris#air1) Rotar Zairo#2air1 3175 + +// Step 1 +1@air1,0,0,0 script #airshipputmob1 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#airshipputmob1"); + enablenpc instance_npcname("Traveling Knight#air1"); + enablenpc instance_npcname("Passed out Drunkard#air1"); + enablenpc instance_npcname("Wealthy man at a meal#a"); + enablenpc instance_npcname("Free Riding Bard#air1"); + enablenpc instance_npcname("Airship Cafeteria Manager#air1"); + enablenpc instance_npcname("Gambling Spirit#air1"); + 'airship_status = 2; + initnpctimer; + end; +OnTimer500: + disablenpc instance_npcname("Iris#air1"); + disablenpc instance_npcname("Chaos#air1"); + mapannounce 'map_air1$, "Enemies have suddenly appeared and are attempting to destroy the Airship.", bc_map,"0xFFFF00"; + + enablenpc instance_npcname("warp1#air1"); + .@label$ = instance_npcname("#airshipputmob1") + "::OnMyMobDead"; + monster 'map_air1$,113,66, "Beholder",3177,1, .@label$; + monster 'map_air1$,113,58, "Beholder",3177,1, .@label$; + monster 'map_air1$, 94,76, "Beholder",3177,1, .@label$; + monster 'map_air1$, 96,46, "Beholder",3177,1, .@label$; + monster 'map_air1$, 67,69, "Beholder",3177,1, .@label$; + monster 'map_air1$, 67,54, "Beholder",3177,1, .@label$; + monster 'map_air1$, 67,30, "Beholder",3177,1, .@label$; + monster 'map_air1$, 46,57, "Beholder",3177,1, .@label$; + monster 'map_air1$, 44,64, "Beholder",3177,1, .@label$; + monster 'map_air1$, 35,45, "Beholder",3177,1, .@label$; + monster 'map_air1$, 25,65, "Beholder",3177,1, .@label$; + monster 'map_air1$, 25,63, "Beholder",3177,1, .@label$; + monster 'map_air1$, 25,61, "Beholder",3177,1, .@label$; + monster 'map_air1$, 36,79, "Beholder",3177,1, .@label$; + monster 'map_air1$, 63,91, "Beholder",3177,1, .@label$; + + monster 'map_air1$,106,56, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$,115,68, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 95,64, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 96,56, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 82,77, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 63,30, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 44,61, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 42,53, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 33,54, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 18,65, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 18,61, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 18,56, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 32,71, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 69,90, "Rotar Zairo",3175,1, .@label$; + monster 'map_air1$, 84,45, "Rotar Zairo",3175,1, .@label$; + end; +OnTimer1500: + mapannounce 'map_air1$, "Go to the bottom of the Airship and defeat the enemy.", bc_map,"0xFFFF00"; + end; +OnTimer2500: + mapannounce 'map_air1$, "All the enemies on one floor have to be defeated in order to progress.", bc_map,"0xFFFF00"; + stopnpctimer; + end; +OnMyMobDead: + if (mobcount( 'map_air1$, instance_npcname("#airshipputmob1") + "::OnMyMobDead" ) < 1) { + mapannounce 'map_air1$, "All the enemies on this floor have been defeated. Go down to the next floor.", bc_map,"0xFFFF00"; + disablenpc instance_npcname("#airshipputmob1"); + donpcevent instance_npcname("#airshipputmob2") + "::OnStart"; + 'airship_status = 3; + } + end; +} + +1@air1,120,62,3 script Traveling Knight#air1 4_M_JOB_KNIGHT1,{ + mes "[Traveling Knight]"; + mes "What are these things?"; + mes "Should I cut them all down? ...No it is not enough money for me to be involved..."; + close2; + emotion ET_OHNO; + end; +} + +1@air1,95,47,3 script Passed out Drunkard#air1 4_M_LIEMAN,{ + mes "[Passed out Drunkard]"; + mes "Ugh... Getting drunk... hiccup"; + mes "....Snore...Zzz"; + close2; + emotion ET_CONFUSE; + end; +} + +1@air1,75,71,5 script Wealthy man at a meal#a 1_M_JOBTESTER,{ + mes "[Wealthy man at a meal]"; + mes "Wha... what are these monsters?!"; + mes "How dare you interrupt my precious meal time! Guard! Where are you!"; + close; +} + +1@air1,61,88,5 script Free Riding Bard#air1 1_M_BARD,{ + mes "[Free Riding Bard]"; + mes "Whoa... Gorgeous~ Fantastic~"; + mes "Even the exploding ship is incredible~ Whoa~"; + close; +} + +1@air1,46,61,5 script Airship Cafeteria Manager#air1 1_M_PUBMASTER,{ + mes "[Airship Cafeteria Manager]"; + mes "They might look menacing but those monsters are also customers to my cafeteria."; + mes "What would you like monster customer?"; + next; + mes "[Airship Cafeteria Manager]"; + mes "Ah... Argh! Help me!!"; + close; +} + +1@air1,28,67,5 script Gambling Spirit#air1 4_M_YURI,{ + mes "[Gambling Spirit]"; + mes "Hey! Don't touch my cards!"; + mes "Off with your hands and neck!"; + next; + mes "[Gambling Spirit]"; + mes "Huh..?!"; + mes "I was just getting a feel for this and these monsters show up?! Are you trying to steal my money because I won a little? Huh?!"; + close; +} + +// Step 2 +1@air1,0,0,0 script #airshipputmob2 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#airshipputmob2"); + enablenpc instance_npcname("Airship Crew#1air1"); + enablenpc instance_npcname("Airship Crew#2air1"); + enablenpc instance_npcname("King's Escort#1air1"); + enablenpc instance_npcname("King's Escort#2air1"); + enablenpc instance_npcname("Tourist#1air1"); + enablenpc instance_npcname("Tourist#2air1"); + enablenpc instance_npcname("King of a Small Country#1air1"); + enablenpc instance_npcname("warp2a#air1"); + enablenpc instance_npcname("warp2b#air1"); + .@label$ = instance_npcname("#airshipputmob2") + "::OnMyMobDead"; + + monster 'map_air1$,111,190, "Gremlins",3176,1, .@label$; + monster 'map_air1$,120,190, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 97,198, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 97,201, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 82,191, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 82,199, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 66,197, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 67,161, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 54,173, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 69,213, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 43,175, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 36,190, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 41,202, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 26,195, "Gremlins",3176,1, .@label$; + monster 'map_air1$, 20,193, "Gremlins",3176,1, .@label$; + + monster 'map_air1$, 82,186, "Acidus",3179,1, .@label$; + monster 'map_air1$, 81,202, "Acidus",3179,1, .@label$; + monster 'map_air1$, 97,178, "Acidus",3179,1, .@label$; + monster 'map_air1$, 97,175, "Acidus",3179,1, .@label$; + monster 'map_air1$, 67,180, "Acidus",3179,1, .@label$; + monster 'map_air1$, 65,157, "Acidus",3179,1, .@label$; + monster 'map_air1$, 64,212, "Acidus",3179,1, .@label$; + monster 'map_air1$, 37,173, "Acidus",3179,1, .@label$; + monster 'map_air1$, 37,201, "Acidus",3179,1, .@label$; + monster 'map_air1$, 32,186, "Acidus",3179,1, .@label$; + monster 'map_air1$, 20,181, "Acidus",3179,1, .@label$; + monster 'map_air1$, 18,186, "Acidus",3179,1, .@label$; + monster 'map_air1$, 55,200, "Acidus",3179,1, .@label$; + monster 'map_air1$,115,184, "Acidus",3179,1, .@label$; + monster 'map_air1$,115,189, "Acidus",3179,1, .@label$; + end; +OnMyMobDead: + if (mobcount( 'map_air1$, instance_npcname("#airshipputmob2") + "::OnMyMobDead" ) < 1) { + mapannounce 'map_air1$, "All the enemies on this floor have been defeated. Head to the engine room entrance.", bc_map,"0xFFFF00"; + enablenpc instance_npcname("Iris#2air1"); + enablenpc instance_npcname("Chaos#2air1"); + enablenpc instance_npcname("Gremlin#2aair1"); + disablenpc instance_npcname("#airshipputmob2"); + 'airship_status = 4; + } + end; +} + +1@air1,93,193,3 script Airship Crew#1air1 4_M_EIN_SOLDIER,{ + mes "[Airship Crew]"; + mes "This is the entrance to the engine room. Stop them from getting in!"; + close; +} + +1@air1,22,182,7 script Airship Crew#2air1 4_M_EIN_SOLDIER,{ + mes "[Airship Crew]"; + mes "Damn... There are too many of them! The engine room could get overrun!!"; + close; +} + +1@air1,43,191,4 script King's Escort#1air1 8W_SOLDIER,{ + mes "[King's Escort]"; + mes "We must not waken our sleeping King no matter what happens!"; + close; +} +1@air1,39,191,4 duplicate(King's Escort#1air1) King's Escort#2air1 8W_SOLDIER + +1@air1,58,197,3 script Tourist#1air1 4_M_LIEMAN,{ + mes "[" + strnpcinfo(1) + "]"; + mes "....Snore...Zzz"; + close; +} +1@air1,49,169,5 duplicate(Tourist#1air1) Tourist#2air1 4_M_LIEMAN +1@air1,42,205,3 duplicate(Tourist#1air1) King of a Small Country#1air1 4_M_TRISTAN + +1@air1,88,187,5 duplicate(Iris#air1) Chaos#2air1 4_M_CHAOS +1@air1,93,188,5 duplicate(Iris#air1) Gremlin#2aair1 3176 + +1@air1,88,189,5 script Iris#2air1 4_F_IRIS,{ + if ('airship_status == 4) { + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "Damn... They have already reached this far! Thanks to you the Rune Engine was defended."; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Uh...oh!! There's a gremlin heading towards the engine room!!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes ".....!! We have to stop him!!"; + next; + cutin "",255; + mes "[Gremlin]"; + mes "Squeak..!!"; + if ('airship_status == 4) { + hideonnpc instance_npcname("Gremlin#2aair1"); + donpcevent instance_npcname("#airshipputmob3") + "::OnStart"; + donpcevent instance_npcname("firecontrol#air2") + "::OnStart"; + 'airship_status = 5; + } + next; + } + if ('airship_status == 5) { + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Gremlin#2aair1"); + mes "- Pop! Pop pop!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Eeek!!"; + next; + cutin "",255; + mes "[Crew Member]"; + mes "Argh! The Rune Engine!! The engine room has exploded!! Fire suppression team! Put out the fire!!"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "Damn it!! It's dangerous here! Let's get out of here first! Iris, hurry!!"; + close2; + // 'airship_status = 6;// no consequence + cutin "",255; + disablenpc instance_npcname("Iris#2air1"); + disablenpc instance_npcname("Chaos#2air1"); + initnpctimer; + } + end; +OnTimer1000: + mapannounce 'map_air1$, "You must go up to the deck of the airship while defeating the enemy.", bc_map,"0xFFFF00"; + stopnpctimer; + end; +} + +// Step 3 +1@air2,0,0,0 script #airshipputmob3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#airshipputmob3"); + enablenpc instance_npcname("warp3a#air1"); + enablenpc instance_npcname("warp3b#air1"); + enablenpc instance_npcname("Passed out Drunkard#air2"); + enablenpc instance_npcname("Wealthy man at a meal#b"); + enablenpc instance_npcname("Traveling Knight#air2"); + enablenpc instance_npcname("Free Riding Bard#air2"); + enablenpc instance_npcname("Gambling Spirit#air2"); + enablenpc instance_npcname("Airship Cafeteria Manager#air2"); + + .@label$ = instance_npcname("#airshipputmob3") + "::OnMyMobDead"; + monster 'map_air2$,115,68, "Beholder",3177,1, .@label$; + monster 'map_air2$,106,56, "Beholder",3177,1, .@label$; + monster 'map_air2$, 95,64, "Beholder",3177,1, .@label$; + monster 'map_air2$, 96,56, "Beholder",3177,1, .@label$; + monster 'map_air2$, 84,45, "Beholder",3177,1, .@label$; + monster 'map_air2$, 63,30, "Beholder",3177,1, .@label$; + monster 'map_air2$, 76,77, "Beholder",3177,1, .@label$; + monster 'map_air2$, 69,90, "Beholder",3177,1, .@label$; + monster 'map_air2$, 50,57, "Beholder",3177,1, .@label$; + monster 'map_air2$, 42,53, "Beholder",3177,1, .@label$; + monster 'map_air2$, 32,71, "Beholder",3177,1, .@label$; + monster 'map_air2$, 18,65, "Beholder",3177,1, .@label$; + monster 'map_air2$, 18,61, "Beholder",3177,1, .@label$; + monster 'map_air2$, 18,56, "Beholder",3177,1, .@label$; + monster 'map_air2$, 33,54, "Beholder",3177,1, .@label$; + + monster 'map_air2$,113,66, "Acidus",3178,1, .@label$; + monster 'map_air2$,113,58, "Acidus",3178,1, .@label$; + monster 'map_air2$, 94,76, "Acidus",3178,1, .@label$; + monster 'map_air2$, 96,46, "Acidus",3178,1, .@label$; + monster 'map_air2$, 67,30, "Acidus",3178,1, .@label$; + monster 'map_air2$, 67,54, "Acidus",3178,1, .@label$; + monster 'map_air2$, 67,69, "Acidus",3178,1, .@label$; + monster 'map_air2$, 63,91, "Acidus",3178,1, .@label$; + monster 'map_air2$, 51,50, "Acidus",3178,1, .@label$; + monster 'map_air2$, 36,79, "Acidus",3178,1, .@label$; + monster 'map_air2$, 25,65, "Acidus",3178,1, .@label$; + monster 'map_air2$, 25,63, "Acidus",3178,1, .@label$; + monster 'map_air2$, 25,61, "Acidus",3178,1, .@label$; + monster 'map_air2$, 30,45, "Acidus",3178,1, .@label$; + monster 'map_air2$, 38,72, "Acidus",3178,1, .@label$; + end; +OnMyMobDead: + if (mobcount( 'map_air2$, instance_npcname("#airshipputmob3") + "::OnMyMobDead" ) < 1) { + mapannounce 'map_air2$, "All the enemies on this floor have been defeated. Go up to the deck.", bc_map,"0xFFFF00"; + enablenpc instance_npcname("warp4a#air2"); + enablenpc instance_npcname("Iris#air2"); + enablenpc instance_npcname("Fenrir#air2"); + enablenpc instance_npcname("Wywern#air2"); + enablenpc instance_npcname("Wywern#2air2"); + enablenpc instance_npcname("Wywern#3air2"); + enablenpc instance_npcname("Acidus#1air2"); + enablenpc instance_npcname("Acidus#2air2"); + enablenpc instance_npcname("Rotar Zairo#1air2"); + enablenpc instance_npcname("Rotar Zairo#2air2"); + donpcevent instance_npcname("firecontrol2#air2") + "::OnStart"; + disablenpc instance_npcname("#airshipputmob3"); + 'airship_status = 6; + } + end; +} + +1@air2,95,47,3 duplicate(Passed out Drunkard#air1) Passed out Drunkard#air2 4_M_LIEMAN +1@air2,75,71,5 duplicate(Wealthy man at a meal#a) Wealthy man at a meal#b 1_M_JOBTESTER + +1@air2,120,62,3 script Traveling Knight#air2 4_M_JOB_KNIGHT1,{ + mes "[Traveling Knight]"; + mes "Ah.. Argh!!"; + mes "It's going to explode! Have to go over... I have to go over to that Airship on the other side!!"; + close; +} + +1@air2,61,88,5 script Free Riding Bard#air2 1_M_BARD,{ + mes "[Free Riding Bard]"; + mes "Whoa... Gorgeous~ Fantastic~"; + mes "Even the exploding ship is incredible~ Whoa~"; + close; +} + +1@air2,28,67,5 script Gambling Spirit#air2 4_M_YURI,{ + mes "[Gambling Spirit]"; + mes "What is this? Fire?"; + mes "Ahhhhhh~"; + close; +} + +1@air2,46,61,5 script Airship Cafeteria Manager#air2 1_M_PUBMASTER,{ + mes "[Airship Cafeteria Manager]"; + mes "Is this ship.. going to fall.."; + mes "However I will share fate with this ship. This ship and I are one!"; + next; + mes "[Airship Cafeteria Manager]"; + mes "Ah... Argh! Help me!!"; + close; +} + +// Step 4 +1@air2,236,57,3 script Gremlin#1air2 3176,{ + end; +OnExplosion1: + specialeffect EF_SUI_EXPLOSION; + sleep 500; + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Gremlin#2air2"); + sleep 500; + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Gremlin#3air2"); + end; +OnExplosion2: + specialeffect EF_SUI_EXPLOSION; + hideonnpc instance_npcname("Gremlin#1air2"); + sleep 500; + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Gremlin#2air2"); + hideonnpc instance_npcname("Gremlin#2air2"); + sleep 500; + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Gremlin#3air2"); + hideonnpc instance_npcname("Gremlin#3air2"); + end; +} + +1@air2,239,57,5 duplicate(Iris#air1) Gremlin#2air2 3176 +1@air2,230,50,5 duplicate(Iris#air1) Gremlin#3air2 3176 +1@air2,226,62,3 duplicate(Iris#air1) Gremlin#4air2 3176 +1@air2,241,48,3 duplicate(Iris#air1) Gremlin#5air2 3176 +1@air2,225,40,7 duplicate(Iris#air1) Gremlin#6air2 3176 +1@air2,236,48,7 duplicate(Iris#air1) Gremlin#7air2 3176 +1@air2,224,66,5 duplicate(Iris#air1) Gremlin#8air2 3176 + +1@air2,229,56,5 duplicate(Iris#air1) Loki#air2 4_M_ROKI2 +1@air2,241,54,3 duplicate(Iris#air1) Iris#air2 4_F_IRIS +1@air2,213,75,5 duplicate(Iris#air1) Wywern#air2 3180 +1@air2,235,59,3 duplicate(Iris#air1) Wywern#2air2 3180 +1@air2,235,49,3 duplicate(Iris#air1) Wywern#3air2 3180 +1@air2,218,78,3 duplicate(Iris#air1) Acidus#1air2 3178 +1@air2,208,78,5 duplicate(Iris#air1) Acidus#2air2 3179 +1@air2,200,78,5 duplicate(Iris#air1) Rotar Zairo#1air2 3175 +1@air2,223,78,3 duplicate(Iris#air1) Rotar Zairo#2air2 3175 + +1@air2,229,54,5 script Fenrir#air2 4_F_FENRIR,{ + if ('airship_status != 6) + end; + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "...These bastards just keep coming."; + next; + cutin "h_guardian2",1; + mes "[?????]"; + mes "As expected. Our intuition wasn't wrong. It was fruitful to have followed the wave of evil and come this far."; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "...?? Who goes there!!"; + next; + cutin "h_guardian2",1; + mes "[?????]"; + mes "Let me introduce..."; + next; + mes "[?????]"; + mes "Shiva! Basara! Laksmi!"; + mes "We are the invincible Rangers!"; + next; + cutin "h_guardian1",1; + mes "[Guardian Heroines]"; + mes "Guardian Heroines!!"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "......"; + next; + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "......"; + next; + cutin "h_guardian1",1; + mes "[Shiva]"; + mes "Hm? What's with the reaction? Everybody is kind of a lukewarm... Was it too much?"; + next; + mes "[Basara]"; + mes "Hm, no, no. Everybody is just captivated by our great entrance."; + next; + mes "[Laksmi]"; + mes "Right, right. This much production for a hero's entrance is a bit too much!!"; + next; + cutin "h_iris02",2; + mes "[Iris]"; + mes "Pu...."; + mes "Puhahahahahahahahaha"; + next; + mes "[Iris]"; + mes "What? Who are these idiots?!"; + mes "Just look at their clothes!!"; + mes "Are those stage costumes? Are they celebrities and not heroes?"; + next; + cutin "h_guardian3",1; + mes "[Shiva]"; + mes "Humph. You don't know what you're talking about!"; + mes "Do you know how much these clothes cost? That is what's wrong with people who are dull to the latest fashion~"; + next; + mes "[Basara]"; + mes "You guys! This isn't the time to be chatting like this! Let's root out the wave of evil!!"; + next; + mes "[Shiva]"; + mes "Roger, Basara! Let's end it with a swift attack!!"; + mes "Huuma Metal Shuriken!! Hiyah!"; + next; + cutin "",255; + mes "- Pop! Pop pop!"; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "What, what are they... Absolute morons..."; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Oh? Gee!"; + mes "An unexpected ally?"; + mes "This could turn out to be a fun party~"; + next; + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "Wait!"; + mes "It would be better to end this party now... What is this? Did Freyja send you?"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Oh. You have no fear."; + mes "How dare a mere lowly human say Freyja's name."; + next; + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "As expected. You are Freyja's pawn?"; + next; + cutin "h_arcana01",2; + mes "[Arcana]"; + mes "...Careful. If you keep going on like that..."; + mes "You will receive a divine punishment!"; + next; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "...!!"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Okay~ I will show you something good. Something to cool your heads."; + next; + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "Could it be... Wyvern's Breath?!!"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "B.I.N.G.O. ~"; + next; + cutin "",255; + mes "[Wyvern]"; + mes "Wooooo..!!"; + next; + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "No... no!! The ship!!"; + next; + enablenpc instance_npcname("Loki#air2"); + specialeffect EF_SUI_EXPLOSION,AREA, instance_npcname("Loki#air2"); + cutin "",255; + mes "- Boom!!!"; + next; + cutin "fenrir_a",2; + mes "[Fenrir]"; + mes "...?! Loki!!"; + next; + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "Hm..."; + mes "My new clothes are ruined..."; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Ooh.. you threw back Wyvern's Breath... an unexpected outcome. But can you withstand this one?"; + next; + cutin "",255; + mes "[Wyvern]"; + mes "Wooooo..!!"; + next; + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "Bothersome pests..."; + mes "You! I will face one while you face the other..."; + close2; + cutin "",255; + if ('airship_status == 6) + donpcevent instance_npcname("calla#air2") + "::OnStart"; + end; +} + +1@air2,104,72,0 script calla#air2 HIDDEN_WARP_NPC,{ + end; +OnStart: + 'airship_status = 7; + disablenpc instance_npcname("Fenrir#air2"); + disablenpc instance_npcname("Loki#air2"); + disablenpc instance_npcname("Iris#air2"); + disablenpc instance_npcname("Wywern#2air2"); + disablenpc instance_npcname("Wywern#3air2"); + enablenpc instance_npcname("calla#air2"); + monster 'map_air2$,235,49,"Wywern",3180,1, instance_npcname("calla#air2") + "::OnMyMobDead";// E1_G_S_NYDHOG + end; +OnMyMobDead: + if (mobcount( 'map_air2$, instance_npcname("calla#air2") + "::OnMyMobDead" ) < 1) { + for ( .@i = 1; .@i <= 8; .@i++ ) + enablenpc instance_npcname("Gremlin#" + .@i + "air2"); + enablenpc instance_npcname("Iris#2air2"); + enablenpc instance_npcname("Captain Ferlock#air2"); + disablenpc instance_npcname("calla#air2"); + 'airship_status = 8; + } + end; +} + +// Step 5 +1@air2,232,51,5 script Iris#2air2 4_F_IRIS,{ + if ('airship_status != 8) + end; + mes "[Gremlins]"; + mes "Squeak... Kooar~!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Eek! There are still more of these!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Felrock]"; + mes "Found it! My weapon! Hehehehe"; + next; + mes "[Captain Ferlock]"; + mes "I will show you what happens when you attack my ship!"; + next; + mes "[Captain Ferlock]"; + mes "I will end this with my specially manufactured Exodus Joker XIII Doom Rifle!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Just.. just a minute..."; + mes "You're really going to fire that?!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Of course!"; + mes "Hehehehehehehehe!"; + next; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion2"; + cutin "",255; + mes "- Bang! Babang! Bang!"; + next; + mes "[Gremlins]"; + mes "Urrrk!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Muhahahaha!"; + mes "How do you like that!!"; + mes "Muhahahahaha"; + next; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + cutin "",255; + mes "- Bang! Babang! Bang!"; + next; + mes "[Guard]"; + mes "Arrgh... the en..engine!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "What?! Those bastards are breaking the engine more?!! You're making me angry!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "You're the one who did it!!!"; + next; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + cutin "",255; + mes "- Bang! Babang! Bang!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Bastards! Die! Die!"; + mes "Muhahahaha!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "The way things are going the ship will crash because of that reindeer captain!! Stop that captain!! I'm scared..."; + next; + mes "[Iris]"; + mes "How can we stop him? ...Maybe he will regain his senses if you beat him just enough to not die... I'm counting on you!!"; + close2; + cutin "",255; + if ('airship_status == 8) + donpcevent instance_npcname("callb#air2") + "::OnStart"; + end; +} + +1@air2,247,51,3 duplicate(Iris#air1) Captain Ferlock#air2 4_M_REINDEER + +1@air2,104,52,0 script callb#air2 HIDDEN_WARP_NPC,{ + end; +OnStart: + 'airship_status = 9; + for ( .@i = 1; .@i <= 8; .@i++ ) + disablenpc instance_npcname("Gremlin#" + .@i + "air2"); + disablenpc instance_npcname("Captain Ferlock#air2"); + disablenpc instance_npcname("Iris#2air2"); + enablenpc instance_npcname("callb#air2"); + monster 'map_air2$,247,51,"Out of control Captain",3181,1, instance_npcname("callb#air2") + "::OnMyMobDead";// E1_FELOCK + end; +OnMyMobDead: + if (mobcount( 'map_air2$, instance_npcname("callb#air2") + "::OnMyMobDead" ) < 1) + initnpctimer; + end; +OnTimer6000: + enablenpc instance_npcname("Chaos#air2"); + enablenpc instance_npcname("Captain Ferlock#2air2"); + disablenpc instance_npcname("callb#air2"); + 'airship_status = 10; + stopnpctimer; + end; +} + +// Final +1@air2,239,58,5 script Chaos#air2 4_M_CHAOS,{ + if ('airship_status > 10) { + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "You get out of here now!! This ship is in danger!!"; + close3; + } + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Oops.. I was shooting like crazy. Looks like a lot of the Gremlins are gone? Hehehehe"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "The ship is damaged because of you!!"; + next; + cutin "h_arcana02",2; + mes "[Arcana]"; + mes "Doing our work for us. Hm, I guess this is enough?"; + next; + mes "[Arcana]"; + mes "Then it's time for us to slip away..."; + next; + cutin "h_guardian1",1; + mes "[Laksmi]"; + mes "Oh? ... There, Basara. Looks like they are retreating."; + next; + mes "[Basara]"; + mes "Of course!! They got a sense of our skill!! Hohoho~"; + next; + mes "[Basara]"; + mes "On that note, one last Huuma Metal Shuriken!!"; + next; + for ( .@i = 1; .@i < 4; .@i++ ) { + enablenpc instance_npcname("Gremlin#" + .@i + "air2"); + hideonnpc instance_npcname("Gremlin#" + .@i + "air2"); + } + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + cutin "",255; + mes "- Babang! Bang!"; + next; + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "Eek!! Looks like we'll fall!!"; + mes "...too short... Can't reach..."; + next; + mes "[Fenrir]"; + mes "...is this the end?"; + mes "...A place I can't reach like before..."; + mes "Chaos..."; + next; + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "...Grab on"; + next; + cutin "fenrir_b",2; + mes "[Fenrir]"; + mes "Lo...ki?"; + next; + cutin "ep14_roki02",2; + mes "[Loki]"; + mes "What are you looking at? Here, come up..."; + next; + cutin "",255; + mes "[Guard]"; + mes "All engines confirmed halted!!"; + mes "We have to quickly escape!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Damn..."; + mes "Everybody get on the lifeboats!"; + mes "Board the lifeboats with the passengers being first priority! Release the lifeboats that have completed boarding!"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "Wait!! There are still people remaining!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "There's nothing we can do!"; + mes "If we keep stalling the rest will be in danger!! It's too bad but we have done all we can!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "But the remaining people are precious lives as well! You're going to leave them?!! Huh?!!"; + next; + cutin "fly_felrock2",2; + mes "[Captain Ferlock]"; + mes "Yeah, you are right..."; + mes "On that note I will leave you to take care of the aftermath. I'm off!!"; + disablenpc instance_npcname("Captain Ferlock#2air2"); + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "Hey! Where are you going! Argh!!"; + mes "I will catch you. I will kill you!!"; + next; + cutin "h_guardian1",1; + mes "[Basara]"; + mes "It is not the time for us to be facing these trivial Gremlins."; + next; + mes "[Basara]"; + mes "I can feel a larger wave of evil."; + mes "Let's leave these little ones to them. Let's go!"; + next; + mes "[Laksmi&Shiva]"; + mes "Roger!! Ranger Flying form!!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Huh? Hey!!"; + mes "Where do you think you're going after destroying the ship?!"; + next; + mes "[Iris]"; + mes "If I catch you next time I will make sure you die!! Be nervous!! You got it?! Be ready, you yokels!!"; + next; + cutin "h_guardian3",1; + mes "[Guardian Heroines]"; + mes "...yokels? (Rage)"; + next; + mes "[Guardian Heroines]"; + mes "The ones who denigrate and condemn the path of righteousness... We should mercilessly hand down righteous judgment, right?"; + next; + mes "[Guardian Heroines]"; + mes "Die villains!! Huuma Metal Shuriken!!"; + next; + donpcevent instance_npcname("Gremlin#1air2") + "::OnExplosion1"; + cutin "",255; + mes "- Bang! Babang! Bang!"; + next; + cutin "h_iris01",2; + mes "[Iris]"; + mes "Eeek!!"; + next; + cutin "h_guardian1",1; + mes "[Guardian Heroines]"; + mes "Ahahahahaha!!"; + mes "Serves you right~!! Let's go!!"; + next; + cutin "h_chaos03",2; + mes "[Chaos]"; + mes "Iris!! Come here!!"; + mes "Let's quickly find Fenrir and Loki and get out of here!!"; + next; + cutin "h_chaos02",2; + mes "[Chaos]"; + mes "You get out of here now!! This ship is in danger!!"; + close2; + if ('airship_status == 10){ + 'airship_status = 11; + enablenpc instance_npcname("warp5a#air2"); + cutin "",255; + getexp 100000,65000; + } + end; +} + +1@air2,243,58,3 duplicate(Iris#air1) Captain Ferlock#2air2 4_M_REINDEER + +// Explosions +1@air2,113,52,0 duplicate(Iris#air1) fire1#air2 HIDDEN_WARP_NPC +1@air2,115,68,0 duplicate(Iris#air1) fire2#air2 HIDDEN_WARP_NPC +1@air2,96,58,0 duplicate(Iris#air1) fire3#air2 HIDDEN_WARP_NPC +1@air2,90,75,0 duplicate(Iris#air1) fire4#air2 HIDDEN_WARP_NPC +1@air2,92,51,0 duplicate(Iris#air1) fire5#air2 HIDDEN_WARP_NPC +1@air2,77,42,0 duplicate(Iris#air1) fire6#air2 HIDDEN_WARP_NPC +1@air2,69,77,0 duplicate(Iris#air1) fire7#air2 HIDDEN_WARP_NPC +1@air2,50,49,0 duplicate(Iris#air1) fire8#air2 HIDDEN_WARP_NPC +1@air2,44,61,0 duplicate(Iris#air1) fire9#air2 HIDDEN_WARP_NPC +1@air2,31,53,0 duplicate(Iris#air1) fire10#air2 HIDDEN_WARP_NPC +1@air2,24,74,0 duplicate(Iris#air1) fire11#air2 HIDDEN_WARP_NPC +1@air2,43,45,0 duplicate(Iris#air1) fire12#air2 HIDDEN_WARP_NPC +1@air2,73,65,0 duplicate(Iris#air1) fire13#air2 HIDDEN_WARP_NPC +1@air2,53,72,0 duplicate(Iris#air1) fire14#air2 HIDDEN_WARP_NPC +1@air2,82,62,0 duplicate(Iris#air1) fire15#air2 HIDDEN_WARP_NPC +1@air2,234,70,0 duplicate(Iris#air1) fire21#air2 HIDDEN_WARP_NPC +1@air2,247,64,0 duplicate(Iris#air1) fire22#air2 HIDDEN_WARP_NPC +1@air2,230,33,0 duplicate(Iris#air1) fire23#air2 HIDDEN_WARP_NPC +1@air2,277,39,0 duplicate(Iris#air1) fire25#air2 HIDDEN_WARP_NPC +1@air2,223,50,0 duplicate(Iris#air1) fire26#air2 HIDDEN_WARP_NPC +1@air2,238,70,0 duplicate(Iris#air1) fire29#air2 HIDDEN_WARP_NPC +1@air2,238,32,0 duplicate(Iris#air1) fire30#air2 HIDDEN_WARP_NPC + +1@air2,0,0,0 script firecontrol#air2 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("firecontrol#air2"); + for ( .@i = 1; .@i <= 15; .@i++ ) + enablenpc instance_npcname("fire" + .@i + "#air2"); + initnpctimer; + end; +OnTimer1000: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire1#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire8#air2"); + end; +OnTimer1400: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire2#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire9#air2"); + end; +OnTimer1800: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire3#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire10#air2"); + end; +OnTimer2200: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire4#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire11#air2"); + end; +OnTimer2600: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire5#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire12#air2"); + end; +OnTimer3000: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire6#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire13#air2"); + end; +OnTimer3400: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire7#air2"); + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire14#air2"); + end; +OnTimer3800: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire15#air2"); + initnpctimer; + end; +} + +1@air2,0,0,0 script firecontrol2#air2 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("firecontrol2#air2"); + enablenpc instance_npcname("fire21#air2"); + enablenpc instance_npcname("fire22#air2"); + enablenpc instance_npcname("fire23#air2"); + enablenpc instance_npcname("fire25#air2"); + enablenpc instance_npcname("fire26#air2"); + enablenpc instance_npcname("fire29#air2"); + enablenpc instance_npcname("fire30#air2"); + initnpctimer; + end; +OnTimer1000: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire21#air2"); + end; +OnTimer1400: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire22#air2"); + end; +OnTimer1800: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire23#air2"); + end; +OnTimer2200: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire25#air2"); + end; +OnTimer2600: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire26#air2"); + end; +OnTimer3000: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire29#air2"); + end; +OnTimer3400: + specialeffect EF_BLASTMINEBOMB,AREA, instance_npcname("fire30#air2"); + initnpctimer; + end; + +OnInstanceInit: + 'airship_status = 0; + + 'map_air1$ = instance_mapname("1@air1"); + 'map_air2$ = instance_mapname("1@air2"); + + // Warps + disablenpc instance_npcname("warp1#air1"); + disablenpc instance_npcname("warp2a#air1"); + disablenpc instance_npcname("warp2b#air1"); + disablenpc instance_npcname("warp3a#air1"); + disablenpc instance_npcname("warp3b#air1"); + disablenpc instance_npcname("warp4a#air2"); + disablenpc instance_npcname("warp5a#air2"); + + // Entrance + disablenpc instance_npcname("Acidus#1air1"); + disablenpc instance_npcname("Acidus#2air1"); + disablenpc instance_npcname("Rotar Zairo#1air1"); + disablenpc instance_npcname("Rotar Zairo#2air1"); + disablenpc instance_npcname("Wywern#air1"); + for ( .@i = 1; .@i <= 8; .@i++ ) + disablenpc instance_npcname("Gremlin#" + .@i + "air1"); + + // Step 1 + disablenpc instance_npcname("#airshipputmob1"); + disablenpc instance_npcname("Traveling Knight#air1"); + disablenpc instance_npcname("Passed out Drunkard#air1"); + disablenpc instance_npcname("Wealthy man at a meal#a"); + disablenpc instance_npcname("Free Riding Bard#air1"); + disablenpc instance_npcname("Airship Cafeteria Manager#air1"); + disablenpc instance_npcname("Gambling Spirit#air1"); + + // Step 2 + disablenpc instance_npcname("#airshipputmob2"); + disablenpc instance_npcname("Iris#2air1"); + disablenpc instance_npcname("Chaos#2air1"); + disablenpc instance_npcname("Gremlin#2aair1"); + disablenpc instance_npcname("Airship Crew#1air1"); + disablenpc instance_npcname("Airship Crew#2air1"); + disablenpc instance_npcname("King's Escort#1air1"); + disablenpc instance_npcname("King's Escort#2air1"); + disablenpc instance_npcname("Tourist#1air1"); + disablenpc instance_npcname("Tourist#2air1"); + disablenpc instance_npcname("King of a Small Country#1air1"); + + // Step 3 - 1@air2 + disablenpc instance_npcname("#airshipputmob3"); + disablenpc instance_npcname("firecontrol#air2"); + disablenpc instance_npcname("Passed out Drunkard#air2"); + disablenpc instance_npcname("Wealthy man at a meal#b"); + disablenpc instance_npcname("Traveling Knight#air2"); + disablenpc instance_npcname("Free Riding Bard#air2"); + disablenpc instance_npcname("Gambling Spirit#air2"); + disablenpc instance_npcname("Airship Cafeteria Manager#air2"); + + // Step 4 + disablenpc instance_npcname("calla#air2"); + disablenpc instance_npcname("firecontrol2#air2"); + disablenpc instance_npcname("Fenrir#air2"); + disablenpc instance_npcname("Loki#air2"); + disablenpc instance_npcname("Iris#air2"); + disablenpc instance_npcname("Wywern#air2"); + disablenpc instance_npcname("Wywern#2air2"); + disablenpc instance_npcname("Wywern#3air2"); + disablenpc instance_npcname("Acidus#1air2"); + disablenpc instance_npcname("Acidus#2air2"); + disablenpc instance_npcname("Rotar Zairo#1air2"); + disablenpc instance_npcname("Rotar Zairo#2air2"); + disablenpc instance_npcname("Captain Ferlock#air2"); + for ( .@i = 1; .@i <= 3; .@i++ ) + hideonnpc instance_npcname("Gremlin#" + .@i + "air2"); + for ( .@i = 4; .@i <= 8; .@i++ ) + disablenpc instance_npcname("Gremlin#" + .@i + "air2"); + + // Step 5 + disablenpc instance_npcname("callb#air2"); + disablenpc instance_npcname("Iris#2air2"); + + // Final + disablenpc instance_npcname("Chaos#air2"); + disablenpc instance_npcname("Captain Ferlock#2air2"); + + // Blast + for ( .@i = 1; .@i <= 15; .@i++ ) + disablenpc instance_npcname("fire" + .@i + "#air2"); + disablenpc instance_npcname("fire21#air2"); + disablenpc instance_npcname("fire22#air2"); + disablenpc instance_npcname("fire23#air2"); + disablenpc instance_npcname("fire25#air2"); + disablenpc instance_npcname("fire26#air2"); + disablenpc instance_npcname("fire29#air2"); + disablenpc instance_npcname("fire30#air2"); + end; +} diff --git a/npc/re/instances/FacewormsNest.txt b/npc/re/instances/FacewormsNest.txt index a8d4935e07..66eb30ff69 100644 --- a/npc/re/instances/FacewormsNest.txt +++ b/npc/re/instances/FacewormsNest.txt @@ -405,19 +405,19 @@ dali,72,55,4 script Interdimensional Device CLEAR_NPC,{ switch( checkquest(12325,PLAYTIME) ) { case -1: switch( instance_enter(.@md_name$) ) { - case 3: + case IE_OTHER: mes "[Interdimensional Device]"; mes "An unknown error has occurred."; close; - case 2: + case IE_NOINSTANCE: mes "[Interdimensional Device]"; mes "The passage for space travel is not activated yet."; close; - case 1:// Custom text + case IE_NOMEMBER:// Custom text mes "[Interdimensional Device]"; mes "You are not allowed to access the device."; close; - case 0: + case IE_OK: mapannounce "dali", getpartyname(.@party_id) + " party's party member " + strcharinfo(0) + " enters " + .@md_name$ + ".",bc_map,"0x00ff99"; setquest 12325;// Faceworm's Nest after-effects //warp "1@face",112,374; @@ -527,6 +527,7 @@ OnInstanceInit: OnStart: .@mob_c = getmapusers('map_name$) + 1; .@event$ = instance_npcname("#fwormcontrol1") + "::OnMyMobDead"; + killmonster 'map_name$, .@event$; areamonster 'map_name$,65,330,179,336,"Faceworm",2528, (.@mob_c*2), .@event$; areamonster 'map_name$,62,62,68,332,"Faceworm",2528, (.@mob_c*7), .@event$; areamonster 'map_name$,66,59,172,65,"Faceworm",2528, (.@mob_c*2), .@event$; diff --git a/npc/re/instances/HorrorToyFactory.txt b/npc/re/instances/HorrorToyFactory.txt index 1b99436dda..add059c741 100644 --- a/npc/re/instances/HorrorToyFactory.txt +++ b/npc/re/instances/HorrorToyFactory.txt @@ -58,7 +58,7 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ next; select("I couldn't even imagine, seeing this mood..."); mes "[Catherine Jet Johnson]"; - mes "Yes, because we couldn't earn a livng by packaging toys forever. The situations got tough after the villagers left in ones and twos."; + mes "Yes, because we couldn't earn a living by packaging toys forever. The situations got tough after the villagers left in ones and twos."; next; mes "[Catherine Jet Johnson]"; mes "I was the one who worked as an assistant beside the doll craftsman who made dolls to the end."; @@ -70,31 +70,31 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ mes "On the day when the factory is decided to be closed, the doll maker dressed the last doll he made and shed tears."; next; mes "[Catherine Jet Johnson]"; - mes "Perhaps he thought he wouldn't make a doll anymore."; + mes "Perhaps he thought he wouldn't make dolls anymore."; next; mes "[Catherine Jet Johnson]"; mes "He named the last doll ^0000ffCeline Kimi^000000 and stopped all the lines in the factory."; next; select("Did he give a doll a name?"); mes "[Catherine Jet Johnson]"; - mes "Sometimes there can be the work as if it were their child to doll makers. Kimi was the one for him."; + mes "Sometimes so much work goes into a doll as if it were their child to doll makers. Kimi was the one for him."; next; mes "[Catherine Jet Johnson]"; mes "I guess his earnestness breathed life to Kimi."; next; select("Do you mean the doll is alive?"); mes "[Catherine Jet Johnson]"; - mes "Yes, ^0000ffShe^000000 became a living creature. I don't know the reason, but she is striding in the toy factory with heavy sorrow and rage."; + mes "Yes, ^0000ffShe^000000 became a living creature. I don't know how, but she is striding in the toy factory with heavy sorrow and rage."; next; mes "[Catherine Jet Johnson]"; - mes "When I first saw her, she was standing beside the doll maker who died and collapsed. She stood there with an unknowable expression."; + mes "When I first saw her, she was standing beside the doll maker who died and collapsed. She stood there with a bare expression."; next; mes "[Catherine Jet Johnson]"; - mes "That's the end. I was outside when I woke up again after I had been blacked out. My face has become like this."; + mes "That's the end. I was outside when I woke up again after I had blacked out. My face has become like this."; next; select("Did Kimi do that?"); mes "[Catherine Jet Johnson]"; - mes "I don't know.. She would do it, or it could be a different problem. I have no memory with this."; + mes "I don't know.. She would do it, or it could be a different problem. I have no memory of it."; next; select("Do you blame her?"); mes "[Catherine Jet Johnson]"; @@ -114,9 +114,9 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ mes "[Catherine Jet Johnson]"; mes "Heh? You would do me a favor?"; next; - select("Let's get into the factory with me."); + select("Let's get into the factory."); mes "[Catherine Jet Johnson]"; - mes "We.. Well, I cannot help you at all except for providing you with directions. Besides, there can be a big danger to you."; + mes "We.. Well, I cannot help you at all except for providing you with directions. Besides, this can be very dangerous to you."; next; select("You can reunite with Kimi, can't you?"); mes "[Catherine Jet Johnson]"; @@ -141,14 +141,14 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ } next; if (getcharid(1) < 1) { - mes "^0000ffYou need to organize a party having more than a member to get into Horror Toy Factory.^000000"; + mes "^0000ffYou need to organize a party having more than one member to get into Horror Toy Factory.^000000"; close; } switch( checkquest(12331,PLAYTIME) ) { case -1: if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "[Catherine Jet Johnson]"; - mes "Eh.. Give me a second. I am talking to the person in charge. Please wait for a while."; + mes "Eh.. Give me a second. I am talking to the person in charge. Please wait a little bit."; close; } if (select( "Unlock Horror Toy Factory", "Cancel" ) == 1) { @@ -160,10 +160,10 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ case 0: case 1: mes "[Catherine Jet Johnson]"; - mes "The smell of preservative from the factory has not been going away. You cannot stand longer there under this state."; + mes "The smell of preservative from the factory has not gone away. You cannot enter under this state."; next; mes "[Catherine Jet Johnson]"; - mes "I will keep you from entering before the scent of preservative is completely gone away."; + mes "I will keep you from entering until the scent of preservative is completely gone."; close; case 2: mes "^0000ffThe smell of preservative has gone away. You can talk to Catherine Jet Johnson.^000000"; @@ -175,7 +175,7 @@ xmas,237,303,3 script Catherine Jet Johnson 4_F_SKULL06GIRL,{ xmas,233,305,4 script Factory Dimension Telep PORTAL,{ if (getstatus(SC_MONSTER_TRANSFORM,1) > 0) { mes "[Factory Dimension Teleporter]"; - mes "There are some work study programs as monster workers during the Horror Toy Factory tour. Therefore, ^ff0000You are limited to enter when you are in transformation.^000000"; + mes "There are some work study programs as monster workers during the Horror Toy Factory tour. Therefore, ^ff0000you are unable to enter when you are transformed.^000000"; close; } if (BaseLevel < 140) { @@ -185,7 +185,7 @@ xmas,233,305,4 script Factory Dimension Telep PORTAL,{ } if (getcharid(1) < 1) { mes "[Factory Dimension Teleporter]"; - mes "You don't have any fellows? Please organize a party and come again if you go alone."; + mes "You don't have any support? Please organize a party and come again if you go in alone."; close; } switch( checkquest(12331,PLAYTIME) ) { @@ -199,10 +199,10 @@ xmas,233,305,4 script Factory Dimension Telep PORTAL,{ close; case 1:// dummy mes "[Factory Dimension Teleporter]"; - mes "You don't have any fellows? Please organize a party and come again if you go alone."; + mes "You don't have any support? Please organize a party and come again if you go in alone."; close; case 0: - mapannounce "xmas", getpartyname( getcharid(1) ) +" party's party member "+ strcharinfo(0) +" enters Horror Toy Factory.", bc_map, "0x00ff99"; + mapannounce "xmas", getpartyname( getcharid(1) ) +" party's party member "+ strcharinfo(0) +" has entered the Horror Toy Factory.", bc_map, "0x00ff99"; setquest 12331;// Trail of Toy Factory end; } @@ -220,10 +220,10 @@ xmas,233,305,4 script Factory Dimension Telep PORTAL,{ 1@xm_d,112,20,6 script Catherine Jet Johnson#0 4_F_SKULL06GIRL,{ if (getstatus(SC_MONSTER_TRANSFORM,1) > 0) { mes "[Catherine Jet Johnson]"; - mes "You cannot come to here if you are under the effect of a monstre transformation."; + mes "You cannot come here if you are under the effect of a monster transformation."; next; mes "[Catherine Jet Johnson]"; - mes "Please wait until the transformation is finished. You cannot move to another area before you become normal."; + mes "Please wait until the transformation is finished. You cannot move to another area until you become normal."; close; } if (getpartyleader(getcharid(1),2) != getcharid(0)) { @@ -269,7 +269,7 @@ OnStart: sleep 5000; npctalk "Catherine Jet Johnson: I think other spirits have inhabited the empty factory for too long."; sleep 3000; - mapannounce 'xm_d_map$, "Factory announcement: Waste and other debries should be kept clear from work areas. This is to keep you safe at all times.", bc_map, "0x00ff44"; + mapannounce 'xm_d_map$, "Factory announcement: Waste and other debris should be kept clear from work areas. This is to keep you safe at all times.", bc_map, "0x00ff44"; sleep 3000; npctalk "Catherine Jet Johnson: It's just like when humans worked here."; sleep 3000; @@ -281,18 +281,18 @@ OnStart: sleep 3000; npctalk "Catherine Jet Johnson: Ah, maybe we should restore those toys and gift boxes to their original condition."; sleep 5000; - npctalk "Catherine Jet Johnson: Eh? I... I mean... To return them as they were.. Yes... We need to fight them? I don't how exactly."; + npctalk "Catherine Jet Johnson: Eh? I... I mean... To return them as they were.. Yes... We need to fight them? I don't know how exactly."; sleep 2000; mapannounce 'xm_d_map$, "Factory announcement: All employees must wear a proper uniform and identification. Please check with security if you do not have yours.", bc_map, "0x00ff44"; sleep 3000; - npctalk "Catherine Jet Johnson: Good heavens, I home the guards are still human. There were boxes of uniforms near here in the past.."; + npctalk "Catherine Jet Johnson: Good heavens, I hope the guards are still human. There were boxes of uniforms near here in the past.."; enablenpc instance_npcname("Employees' Uniform Box#1"); enablenpc instance_npcname("Employees' Uniform Box#2"); enablenpc instance_npcname("Employees' Uniform Box#3"); sleep 5000; npctalk "Catherine Jet Johnson: Ah, they are behind me. You'd better change into the uniform. Fortunately, I still have my employee card."; sleep 5000; - npctalk "Catherine Jet Johnson: I will find my way around here. Let's meet near the second production line. Cheer up its a toy factory. It can't be all that bad!!"; + npctalk "Catherine Jet Johnson: I will find my way around here. Let's meet near the second production line. Cheer up, it's a toy factory. It can't be all that bad!!"; sleep 6000; disablenpc instance_npcname("Catherine Jet Johnson#01"); disablenpc instance_npcname("#bgm01"); @@ -311,7 +311,7 @@ OnStart2: enablenpc instance_npcname("Employees' Uniform Box#3"); mapannounce 'xm_d_map$, "Factory announcement: Wake up, toy factory working time has come...", bc_map, "0x00ff44"; sleep 6000; - mapannounce 'xm_d_map$, "Factory announcement: Waste and other debries should be kept clear from work areas. This is to keep you safe at all times.", bc_map, "0x00ff44"; + mapannounce 'xm_d_map$, "Factory announcement: Waste and other debris should be kept clear from work areas. This is to keep you safe at all times.", bc_map, "0x00ff44"; sleep 6000; mapannounce 'xm_d_map$, "Factory announcement: Let's make presents for every child's dream today.", bc_map, "0x00ff44"; donpcevent instance_npcname("#fac1ct") + "::OnStart"; @@ -345,12 +345,12 @@ OnInstanceInit: playBGM "52"; .@mob_id_transform = getstatus(SC_MONSTER_TRANSFORM,1); if (.@mob_id_transform == 1246 || .@mob_id_transform < 1) { - mes "^0000ffYou put on a factory uniform. There still seem to be a few uniforms left in the box.^000000"; + mes "^0000ffYou put on a factory uniform. There still seems to be a few uniforms left in the box.^000000"; transform 1246,180000;// COOKIE_XMAS close; } - mes "^ff0000In transformation"; - mes "You cannot use uniform box when already transformed.^000000"; + mes "^ff0000You are in transformation."; + mes "You cannot use the uniform box when already transformed.^000000"; close; OnInstanceInit: disablenpc instance_npcname( strnpcinfo(0) ); @@ -376,7 +376,7 @@ OnMyMobDead: OnTimer1000: killmonster 'xm_d_map$, instance_npcname("#fac1ct") + "::OnMyMobDead"; enablenpc instance_npcname("#fac1bs"); - mapannounce 'xm_d_map$, "Coordinator's announcement: Huh? Where's everyone! How dare workers to be absent from the line!", bc_map, "0xff8800"; + mapannounce 'xm_d_map$, "Coordinator's announcement: Huh? Where's everyone! How dare workers be absent from the line!", bc_map, "0xff8800"; for ( .@i = 61; .@i <= 89; .@i++ ) disablenpc instance_npcname( "alert#"+ .@i ); stopnpctimer; @@ -413,7 +413,7 @@ OnAlert: .@npc_name$ = instance_npcname("#fac1bs"); .@event$ = .@npc_name$ + "::OnMyMobDead"; killmonster 'xm_d_map$, .@event$; - npctalk "Coordinator: Guard! Where is guard! Humans are invading!!"; + npctalk "Coordinator: Guard! Where is a guard! Humans are invading!!"; sleep 3000; disablenpc .@npc_name$; for ( .@i = 0; .@i <= 10; .@i++ ) { @@ -429,7 +429,7 @@ OnTimer60000: .@npc_name$ = instance_npcname("#fac1bs"); killmonster 'xm_d_map$, .@npc_name$ + "::OnMyMobDead"; enablenpc .@npc_name$; - npctalk "Coordinator: This kind of things happens a lot these days..."; + npctalk "Coordinator: This kind of thing happens a lot these days..."; stopnpctimer; end; @@ -446,7 +446,7 @@ OnInstanceInit: transform 1249,180000;// MYSTCASE } else if (.@mob_id_transform == 1249) - mes "^009900The box is in your hands. You cannot carry more than one boxe.^000000"; + mes "^009900The box is in your hands. You cannot carry more than one box.^000000"; else mes "^ff0000You are not in uniform. The Coordinator won't let you pick it up.^000000"; close; @@ -479,21 +479,21 @@ OnTouch: OnStart: .@r = rand(1,10); if (.@r == 1) - mapannounce 'xm_d_map$, "Factory announcement: Outsiders are spotted on the product line. Guard, please move out immediately.",bc_map,"0x00ffff"; + mapannounce 'xm_d_map$, "Factory announcement: Outsiders are spotted on the product line. Guards, please move out immediately.",bc_map,"0x00ffff"; else if (.@r == 2) mapannounce 'xm_d_map$, "Factory announcement: Invaders have been identified. Distinction Code AX0829. Type: Human. Chase them away.", bc_map, "0x00ffff"; else if (.@r == 3) - mapannounce 'xm_d_map$, "Guard's announcement: Please immediately leave here, outsiders.", bc_map, "0xffff00"; + mapannounce 'xm_d_map$, "Guard's announcement: Please leave here immediately, outsiders.", bc_map, "0xffff00"; else if (.@r == 4) mapannounce 'xm_d_map$, "Factory announcement: Outsiders, hold up your hands and surrender. Otherwise, I will shoot you.", bc_map, "0x00ffff"; else if (.@r == 5) - mapannounce 'xm_d_map$, "Factory announcement: Dispatch the guard. Suppress the invaders.", bc_map, "0x00ffff"; + mapannounce 'xm_d_map$, "Factory announcement: Dispatch the guards. Suppress the invaders.", bc_map, "0x00ffff"; else if (.@r == 6) mapannounce 'xm_d_map$, "CAUTION: The plant manger is coming to inspect. Wipe out the outsiders.", bc_map, "0xff4444"; else if (.@r == 7) - mapannounce 'xm_d_map$, "Factory announcement: Not good news. Outside creatures are detected. Guard, please mobilize.", bc_map, "0x00ff88"; + mapannounce 'xm_d_map$, "Factory announcement: Not good news. Outside creatures are detected. Guards, please mobilize.", bc_map, "0x00ff88"; else if (.@r == 8) - mapannounce 'xm_d_map$, "Factory announcement: Outsiders or invaders are obstacles to operate the factory. You can kill them if it is necessary.", bc_map, "0xff9999"; + mapannounce 'xm_d_map$, "Factory announcement: Outsiders or invaders are obstacles to factory's operation. You can kill them if necessary.", bc_map, "0xff9999"; else if (.@r == 9) mapannounce 'xm_d_map$, "Factory announcement: Okay that's it, party's over! Get out of my house!", bc_map, "0x00ffff"; else @@ -599,7 +599,7 @@ OnMyMobDead: mes "[Catherine Jet Johnson]"; mes "Lucky you got here safely."; next; - switch( select( "Quit the story", "Listen to her tatics.", "I know what to do. Proceed quickly!" ) ) { + switch( select( "Quit the story", "Listen to her tactics.", "I know what to do. Proceed quickly!" ) ) { case 1: mes "[Catherine Jet Johnson]"; mes "Oh, dear. Let me know when you are ready."; @@ -637,13 +637,13 @@ S_Skip: sleep 5000; npctalk "Catherine Jet Johnson: Ah, I realized something while coming here. Some...Children..."; sleep 5000; - npctalk "Catherine Jet Johnson: How can I say.. There were lots of souls looking very scary, but awfully sad."; + npctalk "Catherine Jet Johnson: How can I say.. There were lots of very scary, but awfully sad, looking souls."; sleep 5000; npctalk "Catherine Jet Johnson: How pitiful they are, but please make them rest if they attack you. Fortunately, they won't come at me."; sleep 5000; npctalk "Catherine Jet Johnson: If you see a worker toy on duty while searching here, would you ask it about the doll maker?"; sleep 5000; - npctalk "Catherine Jet Johnson: He might be sent to Heaven if they recall the memory of doll maker. That the only hope."; + npctalk "Catherine Jet Johnson: He might be sent to Heaven if they recall the memory of doll maker. That's the best hope."; sleep 5000; npctalk "Catherine Jet Johnson: If you find all clues, search other places. I will look for the spot where I met the doll maker last time I was here."; sleep 5000; @@ -758,12 +758,12 @@ OnInstanceInit: npctalk "Worker: I wish he wouldn't pass away. Ah... Ahah... I feel better."; break; case 2: - npctalk "Worker: Did Kimi kill the craftman grandpa? Who said that? That's not true. Kimi was going to save him!"; + npctalk "Worker: Did Kimi kill the craftsman grandpa? Who said that? That's not true. Kimi was going to save him!"; sleep2 3000; - npctalk "Worker: Ah... B.. By the way, why my body becomes..."; + npctalk "Worker: Ah... B.. By the way, why my does my body become..."; break; case 3: - npctalk "Worker: He had chronic cardiac disease, but it suddenly started to fit on the day he died. Kimi found him and gave him first aid, but.."; + npctalk "Worker: He had a chronic cardiac disease, but it was so sudden when it started and he died. Kimi found him and gave him first aid, but.."; sleep2 3000; npctalk "Worker: Ah.. Did you do something to me? I feel strange..."; break; @@ -788,16 +788,16 @@ OnInstanceInit: npctalk "Worker: Perhaps Grandpa's affection made her move and become alive. Ahah.. I'm sleepy.."; break; case 8: - npctalk "Worker: Grandpa good man! Kimi pity! Kimi loves Grandpa! Granpa died. I'm sad!"; + npctalk "Worker: Grandpa was a good man! Pity on Kimi! Kimi loved Grandpa! But Grandpa died. I'm sad!"; sleep2 3000; break; case 9: npctalk "Worker: He was so amazed to see Kimi's opening eyes and his heart... It became like that."; sleep2 3000; - npctalk "Worker: Anyhow, why my body... It's likely to float in the air.... Something strange."; + npctalk "Worker: Anyhow, why my is my body... It's likely to float in the air.... Something strange."; break; case 10: - npctalk "Worker: Kimi didn't hurt Grandpa! Kimi's wanted to save Grandpa! People are scared of Kimi Kimi is kind! Kimi is a good girl!"; + npctalk "Worker: Kimi didn't hurt Grandpa! Kimi's wanted to save Grandpa! People are scared of Kimi, but Kimi is kind! Kimi is a good girl!"; sleep2 3000; npctalk "Worker: Grandpa... I miss him. Grandpa, Grandpa..."; break; @@ -920,7 +920,7 @@ OnStart: sleep 5000; mapannounce 'xm_d_map$, "Factory announcement: Delivery employees, please stand by.", bc_map, "0x00ff44"; sleep 3000; - npctalk "Antonio: Oh! Wohuhu! A bunch of presents are dealayed. Let's have a party today?!", .@antonio$; + npctalk "Antonio: Oh! Wohuhu! A bunch of presents are delayed. Let's have a party today?!", .@antonio$; sleep 4000; npctalk "Antonio: Hey, human. You can follow me if you'd like to help. I'm okay unless you disturb me!", .@antonio$; sleep 4000; @@ -1059,7 +1059,7 @@ OnInstanceInit: 1@xm_d,233,183,3 script Celine Kimi#0 4_F_KIMI,{ mes "[Celine Kimi]"; - mes "Did you come here as well? Why all the humans are anxious to destroy what we built?"; + mes "Did you come here as well? Why are all of the humans so anxious to destroy what we built?"; close; OnInstanceInit: disablenpc instance_npcname( strnpcinfo(0) ); @@ -1094,7 +1094,7 @@ OnInstanceInit: OnStart: .@kimi$ = instance_npcname("Celine Kimi#0"); sleep 2000; - npctalk "Catherine Jet Johnson: Kimi! Listen to me. I didn't come to blame you here."; + npctalk "Catherine Jet Johnson: Kimi! Listen to me. I didn't come here to blame you."; sleep 3000; npctalk "Celine Kimi: Everyone hates me!... You don't like me as well? This ugly and creepy doll likes me...", .@kimi$; sleep 4000; @@ -1104,7 +1104,7 @@ OnStart: sleep 1000; npctalk "Celine Kimi: Don't lie. If that's true, why didn't he see me with love in his eyes?", .@kimi$; sleep 4000; - npctalk "Celine Kimi: Why didn't call my name? [Kimi] [Kimi!] I was anxious to hear the Grandpa's voice.", .@kimi$; + npctalk "Celine Kimi: Why didn't he say my name? [Kimi] [Kimi!] I was anxious to hear the Grandpa's voice.", .@kimi$; sleep 4000; mapannounce 'xm_d_map$, "Phantom's yell: Yes, Kimi~ Father was frightened! He was scared of you~", bc_map, "0xff8800"; sleep 3000; @@ -1118,7 +1118,7 @@ OnStart: sleep 3000; npctalk "Celine Kimi: D.. Did I.. kill him?...", .@kimi$; sleep 2000; - npctalk "Catherine Jet Johnson: No, Kimi! I've realized that. I misunderstood you. Just he had a disease!"; + npctalk "Catherine Jet Johnson: No, Kimi! I've realized that. I misunderstood you. He was sick!"; sleep 3000; npctalk "Celine Kimi: D.. Di.. Did I... kill... him?", .@kimi$; sleep 2000; @@ -1128,10 +1128,10 @@ OnStart: sleep 1000; mapannounce 'xm_d_map$, "Phantom's yell: Don't you agree you are frightening? No one loves you, Kimi~", bc_map, "0xff8800"; sleep 3000; - npctalk "Celine Kimi: Because of me, granpa was dead...", .@kimi$; + npctalk "Celine Kimi: Because of me, grandpa is dead...", .@kimi$; specialeffect EF_MAPPILLAR2, AREA, .@kimi$; sleep 3000; - npctalk "Catherine Jet Johnson: It became serious. Kimi is suffering. It would be dangerous under this condition!"; + npctalk "Catherine Jet Johnson: It has become serious. Kimi is suffering. It would be dangerous under this condition!"; specialeffect EF_MAPPILLAR2, AREA, .@kimi$; sleep 1000; mapannounce 'xm_d_map$, "Phantom's yell: Rage~ Sorrow~ No one cries for you, Kimi~", bc_map, "0xff8800"; @@ -1183,15 +1183,15 @@ OnEnd: OnTalk: .@chat_r = rand(1,10); if (.@chat_r == 1) - unittalk 'celene_id, "I will burn you with hell inferno."; + unittalk 'celene_id, "I will burn you with hell's inferno."; else if (.@chat_r == 2) unittalk 'celene_id, "Will you bear this flame?!"; else if (.@chat_r == 3) - unittalk 'celene_id, "I shouldn't have done, but..."; + unittalk 'celene_id, "I shouldn't have, but..."; else if (.@chat_r == 4) unittalk 'celene_id, "It's boiling!... Bear it if you can."; else if (.@chat_r == 5) - unittalk 'celene_id, "Breathe as much as you can. It'll be the last breath you make."; + unittalk 'celene_id, "Breathe as much as you can. It'll be the last breath you take."; else if (.@chat_r == 6) unittalk 'celene_id, "Frankly, I don't like fire."; else @@ -1382,11 +1382,11 @@ OnInstanceInit: 1@xm_d,233,183,3 script Celine Kimi#2 4_F_KIMI,{ mes "[Celine Kimi]"; - mes "You also... come here to kill me?"; + mes "You also... came here to kill me?"; close; OnStart: - npctalk "Celine Kimi: You also... come here to kill me?"; + npctalk "Celine Kimi: You also... came here to kill me?"; specialeffect EF_MAPPILLAR2; sleep 5000; disablenpc instance_npcname("Celine Kimi#2"); @@ -1413,7 +1413,7 @@ OnStart: initnpctimer; end; OnTimer3000: - mapannounce 'xm_d_map$, "Celine Kimi and her phantom are shared their strength. They will be stronger than ever!",bc_map,"0xff6666"; + mapannounce 'xm_d_map$, "Celine Kimi and her phantom have shared their strength. They will be stronger than ever!",bc_map,"0xff6666"; stopnpctimer; end; @@ -1454,15 +1454,15 @@ OnInstanceInit: end; OnStart: sleep 1000; - npctalk "Catherine Jet Johnson: Unfortunately, I am failed to persuade Kimi."; + npctalk "Catherine Jet Johnson: Unfortunately, I have failed to persuade Kimi."; sleep 3000; - npctalk "Catherine Jet Johnson: What was the voice of phantom? Why it torments Kimi so harshly..."; + npctalk "Catherine Jet Johnson: What was the voice of that phantom? Why does it torment Kimi so harshly..."; sleep 4000; - npctalk "Catherine Jet Johnson: I guess that the curse of my face was form the unidentified voice."; + npctalk "Catherine Jet Johnson: I guess that the curse of my face was from the unidentified voice."; sleep 4000; - npctalk "Catherine Jet Johnson: Anyway, even Kimi, saying hates everyone, has collected her recollections here a lot."; + npctalk "Catherine Jet Johnson: Anyway, even Kimi hates everyone and has collected her recollections here a lot."; sleep 6000; - npctalk "Catherine Jet Johnson: I will put this thing safely even if her soul will return and she won't be disappointed."; + npctalk "Catherine Jet Johnson: I will end this thing safely even if her soul will return and she won't be disappointed."; sleep 5000; npctalk "Catherine Jet Johnson: Thanks to you, everything that I have wondered is completely resolved. Please call me again if you are going to send her to Heaven next time."; sleep 5000; @@ -1652,7 +1652,7 @@ OnInstanceInit: case 2: transform 1246,180000; enablenpc instance_npcname("#fac1bs"); - mapannounce 'xm_d_map$, "Coordinator's announcement: Huh? Where's everyone! How dare you workers to be absent their line and muck around!",bc_map,"0xff8800"; + mapannounce 'xm_d_map$, "Coordinator's announcement: Huh? Where's everyone! How dare the workers be absent from their line and muck around!",bc_map,"0xff8800"; warp 'xm_d_map$,70,125; break; case 3: diff --git a/npc/re/instances/IsleOfBios.txt b/npc/re/instances/IsleOfBios.txt new file mode 100644 index 0000000000..7183f7994b --- /dev/null +++ b/npc/re/instances/IsleOfBios.txt @@ -0,0 +1,772 @@ +//===== rAthena Script ======================================= +//= Isle Of Bios +//===== Description: ========================================= +//= [Walkthrough Conversion] +//= Isle Of Bios Instance +//===== Changelogs: ========================================== +//= 1.0 First version. [Capuche] +//============================================================ + +moro_cav,50,64,5 script Yellow Seed#bios CLEAR_NPC,{ + if (BaseLevel < 160) { + mes "^ff0000Characters below Level 160 cannot enter this dungeon.^000000"; + close; + } + if (isbegin_quest(15006) == 0) { + mes "^ff0000You first must meet Wandering Old Man to gain access to this dungeon.^000000"; + close; + } + .@party_id = getcharid(1); + if (.@party_id < 1) { + mes "^ff0000You first must form/join a party of at least 1 person to enter this dungeon.^000000"; + close; + } + switch( checkquest(15005,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + if (checkquest(15007,PLAYTIME) == 2) {// 5 mins to re-enter + mes "^ff0000This Memorial Dungeon cannot be accessed for 23 hours after your last visit.^000000"; + close; + } + switch( checkquest(15008,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "^0000ffThis Memorial Dungeon cannot be accessed for 23 hours after your last visit.^000000"; + close; + case 2: + break; + } + break; + case 2: + erasequest 15005;// Memorial Dungeon: Isle of Bios + erasequest 15007;// Memorial Dungeon: Isle of Bios + if (isbegin_quest(15008) > 0) + erasequest 15008;// Memorial Dungeon: Isle of Bios + break; + } + if (getpartyleader(.@party_id,2) == getcharid(0)) + .@create$ = "Create Memorial dungeon."; + switch( select( .@create$, "Enter Isle of Bios.", "Cancel." ) ) { + case 1: + instance_create("Isle of Bios"); + mes "^ff0000Created the Memorial dungeon.^000000"; + mes "^ff0000Please click and press Enter again.^000000"; + close; + case 2: + switch( instance_enter("Isle of Bios") ) { + case IE_NOMEMBER: + case IE_NOINSTANCE: + case IE_OTHER: + if (getpartyleader(getcharid(1),2) != getcharid(0)) { + mes "^ff0000Please note that This Memorial Dungeon cannot be accessed for 23 hours after your last visit.^000000"; + next; + } + mes "^ff0000Your party leader has not yet created a Crack of Time.^000000"; + close; + case IE_OK: + mapannounce "moro_cav", "" + strcharinfo(0) + " of the party, " + getpartyname( getcharid(1) ) + ", is entering Isle of Bios.",bc_map,"0x00FF99"; + if (isbegin_quest(15005) == 0) { + setquest 15005;// Memorial Dungeon: Isle of Bios + setquest 15007;// Memorial Dungeon: Isle of Bios + } + end; + } + case 3: + end; + } + end; + +OnInit: + while(true) { + sleep 500; + specialeffect EF_ENHANCE; + } + end; +} + +moro_cav,45,60,5 script Wandering Old Man#sara 4_M_EINOLD,{ + if (BaseLevel < 160) { + mes "[Wandering Old Man]"; + mes "..."; + mes "I'm afraid you're not up for this yet."; + mes "You have to be at least Level 160."; + close; + } + if (isbegin_quest(15006) == 0) { + mes "[Wandering Old Man]"; + mes "...Where am I?"; + next; + mes "[Wandering Old Man]"; + mes "I don't know when it began..."; + mes "The same nightmare has been plaguing me for a long time."; + next; + mes "[Wandering Old Man]"; + mes "In my nightmare, Demon King Morocc awakens from his century-long slumber and fills the world with darkness and horror."; + next; + mes "[Wandering Old Man]"; + mes "I couldn't shake off the vivid images I saw in that nightmare. I've wandered off and around like a madman and finally arrived here."; + next; + mes "[Wandering Old Man]"; + mes "I saw this place in my dream. It's where Demon God Morocc awakens from his slumber. My dream was showing me a possible future."; + next; + mes "[Wandering Old Man]"; + mes "If my dream really is a premonition, the forces of Demon God Morocc's are within that yellow seed."; + next; + mes "[Wandering Old Man]"; + mes "I tried to enter the seed, but to no avail: I'm just too old and weak. But perhaps you can."; + next; + mes "[Wandering Old Man]"; + mes "Please investigate that yellow seed."; + mes "It's too dangerous for you to go alone. You should take at least one comrade with you."; + setquest 15006;// Isle of Bios Exploration + completequest 15006;// Isle of Bios Exploration + close; + } + mes "[Wandering Old Man]"; + mes "Please investigate that yellow seed."; + mes "It's too dangerous for you to go alone. You should take at least one comrade with you."; + close; +} + +// warps +1@dth1,291,102,0 warp2 warp1#bios1 2,2,1@dth2,17,93 +1@dth2,291,102,0 warp2 warp1#bios2 2,2,1@dth3,45,68 + +// zone 1 +1@dth1,74,94,3 script Grim Reaper Ankou#bios1 3029,{ end; } +1@dth1,71,97,3 duplicate(Grim Reaper Ankou#bios1) Zeith#bios1 4_M_GUILLOTINE +1@dth1,67,97,5 duplicate(Grim Reaper Ankou#bios1) Vrid#bios1 4_M_KNIGHT_BLACK +// 1@dth1,67,97,5 script Vrid#bios1 4_M_KNIGHT_BLACK,5,7,{// official + +// 1@dth1,67,97,5 script start1#bios1 HIDDEN_WARP_NPC,{// official +1@dth1,67,97,5 script start1#bios1 HIDDEN_WARP_NPC,5,7,{ + end; +OnTouch_: + disablenpc instance_npcname("start1#bios1"); + 'zeith$ = instance_npcname("Zeith#bios1"); + 'vrid$ = instance_npcname("Vrid#bios1"); + 'reaper$ = instance_npcname("Grim Reaper Ankou#bios1"); + initnpctimer; + npctalk "Vrid: Ah, someone else has come to join us.", 'vrid$; + end; +OnTimer2500: + npctalk "Vrid: Did you also come to stop Morocc's resurrection?", 'vrid$; + end; +OnTimer5000: + npctalk "Vrid: I'm Vrid and this is Zeith, from Prontera. We've been traveling around the world, fighting for justice.", 'vrid$; + end; +OnTimer7500: + npctalk "Vrid: Hey, Zeith. Say something.", 'vrid$; + end; +OnTimer10000: + npctalk "Zeith: ...", 'zeith$; + end; +OnTimer12500: + npctalk "Zeith: I'm Zeith.", 'zeith$; + end; +OnTimer15000: + npctalk "Zeith: ...", 'zeith$; + end; +OnTimer17500: + npctalk "Vrid: Don't mind him. He's not so quiet when there are only two of us.", 'vrid$; + end; +OnTimer19500: + npctalk "Zeith: ...You talk enough for both of us.", 'zeith$; + end; +OnTimer21000: + npctalk "Vrid: We only came because the old geezer down below kept rambling about Morocc's resurrection.", 'vrid$; + end; +OnTimer23500: + npctalk "Vrid: Err, what's this place? I just touched the seed, and suddenly the scenery changed.", 'vrid$; + end; +OnTimer26000: + npctalk "Vrid: Holy cow, are we flying in the sky?!", 'vrid$; + end; +OnTimer28500: + npctalk "???: *Chuckle* Do you want to know where you are?", 'reaper$; + end; +OnTimer31000: + npctalk "Zeith: Who's there?!", 'zeith$; + end; +OnTimer33500: + enablenpc 'reaper$; + npctalk "Grim Reaper Ankou: *Chuckle* This is the Isle of Bios, a place I conjured up in my mind.", 'reaper$; + end; +OnTimer36000: + npctalk "Grim Reaper Ankou: You've walked into the trap, making yourself willing sacrifices for my Lord Morocc. Aren't you afraid of dying?", 'reaper$; + end; +OnTimer38500: + npctalk "Vrid: Pah! If I was I wouldn't have come willingly, would I?", 'vrid$; + end; +OnTimer41000: + npctalk "Vrid: Whoever you are, we'll kill you before you do!", 'vrid$; + end; +OnTimer43500: + npctalk "Grim Reaper Ankou: Don't tempt me, human.", 'reaper$; + end; +OnTimer46000: + npctalk "Grim Reaper Ankou: I want to watch you die slowly and painfully. *Chuckle*", 'reaper$; + end; +OnTimer48500: + disablenpc 'reaper$; + end; +OnTimer51000: + npctalk "Vrid: Who's he? Is he trying to resurrect Morocc? ", 'vrid$; + end; +OnTimer53500: + npctalk "Vrid: Let's chase him! Zeith, hurry!", 'vrid$; + end; +OnTimer54000: + disablenpc 'vrid$; + end; +OnTimer56000: + npctalk "Zeith: ...Ack.", 'zeith$; + end; +OnTimer58500: + npctalk "Zeith: I hate running.", 'zeith$; + end; +OnTimer61000: + disablenpc 'zeith$; + end; +OnTimer66000: + stopnpctimer; + mapannounce 'map_dth1$, "System: Eliminate all the enemies on the island and exit through the door on the other side to move on to the next area.",bc_map,"0xFFFF00"; + 'zeith$ = 'vrid$ = 'reaper$ = ""; + end; +} + +1@dth1,1,1,0 script mobs#bios1 HIDDEN_WARP_NPC,{ + end; +OnStart: + .@label$ = instance_npcname("mobs#bios1") + "::OnMyMobDead"; + for ( .@mob_id = 3010; .@mob_id < 3013; .@mob_id++ ) { + switch(.@mob_id) { + case 3010: // Corrupt Orc Baby + setarray .@coord[0], + 90,94, 153,76, 121,53, 135,50, 145,107, 132,126, 101,125, 119,144, 124,164, 192,145, 194,116, + 203,131, 214,142, 196,156, 217,129, 227,150, 215,109, 240,130, 252,105, 249,144, 249,155, 232,87, + 316,103, 245,71, 246,71, 210,62, 214,53, 211,88; + break; + case 3011: // Corrupt Baby Desert Wolf + setarray .@coord[0], + 90,94, 121,69, 153,76, 166,80, 131,101, 145,107, 108,156, 141,143, 165,130, 203,151, + 203,162, 219,151, 203,162, 206,169, 219,171, 227,150, 238,117, 240,140, 274,104, 306,103, + 237,80, 224,62, 233,57; + break; + case 3012: // Corrupt Familiar + setarray .@coord[0], + 143,49, 156,46, 170,67, 170,67, 131,101, 144,125, 101,125, 108,156, 135,152, 144,164, + 184,130, 204,112, 227,150, 205,98, 225,103, 228,124, 243,106, 225,89, 297,103, 223,72, + 232,69, 225,54, 211,73; + break; + } + .@size = getarraysize(.@coord); + for ( .@i = 0; .@i < .@size; .@i += 2 ) + monster 'map_dth1$, .@coord[.@i], .@coord[.@i+1], "--ja--", .@mob_id,1, .@label$; + } + end; + +OnMyMobDead: + .@count = mobcount( 'map_dth1$,instance_npcname("mobs#bios1") + "::OnMyMobDead" ); + if (.@count == 10 || .@count == 5) + mapannounce 'map_dth1$, "System: " + .@count + " monsters remain on the island.",bc_map,"0xFFFF00"; + else if (.@count == 1) + mapannounce 'map_dth1$, "System: 1 last monster remains on the island.",bc_map,"0xFFFF00"; + else if (.@count == 0) { + mapannounce 'map_dth1$, "System: You have eliminated all the monsters. Use the exit at 3 o'clock to move on to the next area.",bc_map,"0xFFFF00"; + disablenpc instance_npcname("mobs#bios1"); + enablenpc instance_npcname("warp1#bios1"); + enablenpc instance_npcname("start1#bios2"); + donpcevent instance_npcname("mobs#bios2") + "::OnStart"; // spawn at entrance + } + end; +} + +// zone 2 +1@dth2,67,97,0 script start1#bios2 HIDDEN_WARP_NPC,5,5,{ + end; +OnTouch_: + disablenpc instance_npcname("start1#bios2"); + mapannounce 'map_dth2$, "System: Eliminate all the enemies on the island and exit through the door on the other side to move on to the next area.",bc_map,"0xFFFF00"; + end; +} + +1@dth2,1,1,0 script mobs#bios2 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("mobs#bios2"); + .@label$ = instance_npcname("mobs#bios2") + "::OnMyMobDead"; + for ( .@mob_id = 3013; .@mob_id < 3016; ++.@mob_id ) { + switch(.@mob_id) { + case 3013: // Corrupt Orc Warrior + setarray .@coord[0], + 90,94, 153,76, 116,66, 133,47, 145,107, 137,134, 101,125, 119,144, 124,164, 194,116, + 203,131, 211,88, 215,109, 214,142, 192,145, 196,156, 217,129, 227,150, 230,89, 210,62, + 214,53, 246,71, 248,81, 252,105, 246,126, 249,144, 249,155, 316,103; + break; + case 3014: // Corrupt Desert Wolf + setarray .@coord[0], + 90,94, 121,69, 153,76, 165,84, 145,107, 131,101, 108,156, 138,140, 165,130, 203,151, + 203,162, 219,151, 206,169, 203,162, 227,150, 222,164, 238,117, 237,80, 224,62, 233,57, + 236,138, 274,104, 306,103; + break; + case 3015: // Corrupt Phen + setarray .@coord[0], + 142,54, 156,46, 170,67, 170,67, 131,101, 101,125, 108,156, 135,152, 144,164, 135,131, + 184,130, 204,112, 205,98, 225,103, 225,89, 227,150, 232,69, 223,72, 212,75, 225,54, + 247,110, 232,126, 297,103; + break; + } + .@size = getarraysize(.@coord); + for ( .@i = 0; .@i < .@size; .@i += 2 ) + monster 'map_dth2$, .@coord[.@i], .@coord[.@i+1], "--ja--", .@mob_id,1, .@label$; + } + end; + +OnMyMobDead: + .@count = mobcount( 'map_dth2$,instance_npcname("mobs#bios2") + "::OnMyMobDead" ); + if (.@count == 10 || .@count == 5) + mapannounce 'map_dth2$, "System: " + .@count + " monsters remain on the island.",bc_map,"0xFFFF00"; + else if (.@count == 1) + mapannounce 'map_dth2$, "System: 1 last monster remains on the island.",bc_map,"0xFFFF00"; + else if (.@count == 0) { + mapannounce 'map_dth2$, "System: You have eliminated all the monsters. Use the exit at 3 o'clock to move on to the next area.",bc_map,"0xFFFF00"; + disablenpc instance_npcname("mobs#bios2"); + enablenpc instance_npcname("warp1#bios2"); + enablenpc instance_npcname("Zeith#bios3"); + enablenpc instance_npcname("Vrid#bios3"); + enablenpc instance_npcname("event_boss#bios3"); + } + end; +} + +// zone 3 +// 1@dth3,64,74,5 script Vrid#bios3 4_M_KNIGHT_BLACK,5,7,{// official +1@dth3,64,74,5 script Vrid#bios3 4_M_KNIGHT_BLACK,{ + if ('reward == 1) { + mes "[Vrid]"; + mes "I came by"; + mes "this Hero Token by accident."; + mes "I want to give it to you. You deserve it."; + next; + mes "[Vrid]"; + mes "Let's get out of this creepy place!"; + close2; + getitem 6684,1;// Token Of Hero + if (ep14_3_isle == 0) + ep14_3_isle = 1; + if (checkquest(15007,PLAYTIME) == 0 || checkquest(15007,PLAYTIME) == 1) + setquest 15008;// Memorial Dungeon: Isle of Bios + warp "moro_cav",45,63; + } + end; +} + +1@dth3,64,74,5 script event_boss#bios3 HIDDEN_WARP_NPC,5,7,{ + end; +OnTouch_: + disablenpc instance_npcname("event_boss#bios3"); + 'party_id = getcharid(1); + donpcevent instance_npcname("freeze#bios3") + "::OnStart"; + end; +} + +// 1@dth3,69,67,0 script freeze#bios3 HIDDEN_WARP_NPC,30,30,{// official +1@dth3,1,1,0 script freeze#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("freeze#bios3"); + 'reaper3$ = instance_npcname("Grim Reaper Ankou#bios3"); + 'zeith3$ = instance_npcname("Zeith#bios3"); + 'vrid3$ = instance_npcname("Vrid#bios3"); + initnpctimer; + npctalk "Vrid: You're lucky to be here. I got totally lost the moment I entered that maze.", 'vrid3$; + end; +OnTimer2500: + npctalk "Vrid: If it weren't for Zeith, I'd still be in there, wandering. Thanks, Zeith.", 'vrid3$; + end; +OnTimer5000: + npctalk "Zeith: ...Something's been bothering me.", 'zeith3$; + end; +OnTimer7500: + npctalk "Vrid: What's up?", 'vrid3$; + end; +OnTimer10000: + npctalk "Zeith: I've got the feeling that the monsters were growing stronger with time.", 'zeith3$; + end; +OnTimer12500: + npctalk "Zeith: Just like children growing up into adults.", 'zeith3$; + end; +OnTimer15000: + npctalk "Vrid: Um, I think you're right.", 'vrid3$; + end; +OnTimer17500: + npctalk "Vrid: They're all small in the beginning, and then we faced bigger and stronger ones over time.", 'vrid3$; + end; +OnTimer20000: + npctalk "Vrid: To me, that sounds natural. What are you worried about?", 'vrid3$; + end; +OnTimer22500: + npctalk "Zeith: Well, I'm curious about the monster we'll face now.", 'zeith3$; + end; +OnTimer25000: + npctalk "Zeith: Whether they're stronger versions of their original selves, or something completely different.", 'zeith3$; + end; +OnTimer27000: + enablenpc 'reaper3$; + end; +OnTimer27500: + npctalk "Grim Reaper Ankou: *Chuckle* At least one of you has a good head on his shoulders.", 'reaper3$; + end; +OnTimer30000: + npctalk "Vrid: You again?", 'vrid3$; + end; +OnTimer32500: + npctalk "Grim Reaper Ankou: Are you curious about your next adversaries?", 'reaper3$; + end; +OnTimer35000: + npctalk "Grim Reaper Ankou: Ahead of you is an army of the immortal.", 'reaper3$; + end; +OnTimer37500: + npctalk "Grim Reaper Ankou: *Chuckle* Come out, my soldiers!", 'reaper3$; + end; +OnTimer37700: + specialeffect EF_READYPORTAL,AREA,'reaper3$; + end; +OnTimer40000: + for ( .@i = 1; .@i <= 3; ++.@i ) { + for ( .@j = 1; .@j <= 8; ++.@j ) + enablenpc instance_npcname( "Corrupt Orc Zombie#" + .@j + "bio" + .@i ); + } + end; +OnTimer42000: + npctalk "Vrid: Shut up, you fiend! We don't have time for your lackeys!", 'vrid3$; + end; +OnTimer45000: + npctalk "Vrid: I'll get rid of you myself!", 'vrid3$; + end; +OnTimer47500: + npctalk "Grim Reaper Ankou: Right back at you, bigmouth.", 'reaper3$; + end; +OnTimer50000: + npctalk "Grim Reaper Ankou: I'll teach you how terrifying it is to be helpless in the face of horror!", 'reaper3$; + end; +OnTimer52500: + specialeffect EF_STORMGUST,AREA,'reaper3$; + end; +OnTimer52700: + specialeffect EF_FREEZED,AREA,'zeith3$; + specialeffect EF_FREEZED,AREA,'vrid3$; + specialeffect EF_FIREHIT,AREA,'zeith3$; + specialeffect EF_FIREHIT,AREA,'vrid3$; + setnpcdisplay( 'vrid3$, 4_M_FROZEN_KN ); + setnpcdisplay( 'zeith3$, 4_M_FROZEN_GC ); + + getpartymember 'party_id, 0, .@player_name$; + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == true) { + getmapxy .@map$,.@x,.@y, UNITTYPE_PC, .@player_name$[.@i]; + if (.@map$ == 'map_dth3$ && distance(.@x,.@y,69,67) < 30) + sc_start SC_FREEZE,17500,0,10000, (SCSTART_NOAVOID|SCSTART_NOTICKDEF|SCSTART_NORATEDEF), .@account_id[.@i]; + } + } + end; +OnTimer55000: + npctalk "Vrid: Ugh! W-what's going on?! I-I can't move!", 'vrid3$; + end; +OnTimer57500: + npctalk "Zeith: N-neither can I! I can't move my feet!", 'zeith3$; + end; +OnTimer60000: + npctalk "Grim Reaper Ankou: On the Isle of Bios, each day is a lifetime.", 'reaper3$; + end; +OnTimer62500: + npctalk "Grim Reaper Ankou: You must have noticed my soldiers have grown up before the sunset.", 'reaper3$; + end; +OnTimer65000: + npctalk "Grim Reaper Ankou: After nightfall, they've reached the final stage of their development: life beyond death.", 'reaper3$; + end; +OnTimer67500: + npctalk "Grim Reaper Ankou: That's right. It's time for you to experience death.", 'reaper3$; + end; +OnTimer70000: + npctalk "Grim Reaper Ankou: Get ready to feel the fear of death! *Chuckle*", 'reaper3$; + // note: unfreeze player + end; +OnTimer72000: + disablenpc 'reaper3$; + end; +OnTimer72500: + npctalk "Vrid: Damn it, the undead are coming, but I can't fight because I can't move my feet!", 'vrid3$; + end; +OnTimer75000: + npctalk "Vrid: Ack, I don't want to die!", 'vrid3$; + end; +OnTimer77500: + npctalk "Zeith: ...Ugh...", 'zeith3$; + end; +OnTimer80000: + stopnpctimer; + for ( .@i = 1; .@i <= 3; ++.@i ) { + for ( .@j = 1; .@j <= 8; ++.@j ) + disablenpc instance_npcname( "Corrupt Orc Zombie#" + .@j + "bio" + .@i ); + } + .@label$ = instance_npcname("freeze#bios3") + "::OnMyMobDead"; + for ( .@y = 80; .@y <= 92; .@y += 6 ) + for ( .@x = 62; .@x <= 78; .@x += 2 ) + monster 'map_dth3$,.@x,.@y,"Corrupt Orc Zombie",3016,1, .@label$;// EP14_3_DEATH_C_MOB1 + end; + +OnMyMobDead: + if (mobcount( 'map_dth3$,instance_npcname("freeze#bios3") + "::OnMyMobDead" ) == 0) { + disablenpc instance_npcname("freeze#bios3"); + donpcevent instance_npcname("verit#bios3") + "::OnStart"; + } + end; +} + +1@dth3,1,1,0 script verit#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("verit#bios3"); + initnpctimer; + npctalk "Vrid: Wow, you're amazing! Did you kill them all?", 'vrid3$; + end; +OnTimer2500: + npctalk "Zeith: Not yet. More are coming!", 'zeith3$; + end; +OnTimer5000: + stopnpctimer; + .@label$ = instance_npcname("verit#bios3") + "::OnMyMobDead"; + for ( .@y = 80; .@y <= 92; .@y += 6 ) + for ( .@x = 62; .@x <= 78; .@x += 2 ) + monster 'map_dth3$,.@x,.@y,"Corrupt Verit",3017,1, .@label$;// EP14_3_DEATH_C_MOB2 + end; + +OnMyMobDead: + if (mobcount( 'map_dth3$,instance_npcname("verit#bios3") + "::OnMyMobDead" ) == 0) { + disablenpc instance_npcname("verit#bios3"); + donpcevent instance_npcname("megalodon#bios3") + "::OnStart"; + } + end; +} + +1@dth3,1,1,0 script megalodon#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("megalodon#bios3"); + initnpctimer; + npctalk "Vrid: I hope that really was the last of them.", 'vrid3$; + end; +OnTimer2500: + npctalk "Zeith: Nope, we aren't so lucky--more is on the way!", 'zeith3$; + end; +OnTimer5000: + stopnpctimer; + .@label$ = instance_npcname("megalodon#bios3") + "::OnMyMobDead"; + for ( .@y = 80; .@y <= 92; .@y += 6 ) + for ( .@x = 62; .@x <= 78; .@x += 2 ) + monster 'map_dth3$,.@x,.@y,"Corrupt Megalodon",3018,1, .@label$;// EP14_3_DEATH_C_MOB3 + end; + +OnMyMobDead: + if (mobcount( 'map_dth3$,instance_npcname("megalodon#bios3") + "::OnMyMobDead" ) == 0) { + disablenpc instance_npcname("megalodon#bios3"); + donpcevent instance_npcname("boss_prelude#bios3") + "::OnStart"; + } + end; +} + +1@dth3,1,1,0 script boss_prelude#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc 'reaper3$; + initnpctimer; + end; +OnTimer500: + npctalk "Grim Reaper Ankou: I underestimated you, or my soldiers aren't as strong as I thought.", 'reaper3$; + end; +OnTimer3000: + npctalk "Vrid: You're cheating! Release us and fight fairly!", 'vrid3$; + end; +OnTimer5500: + npctalk "Grim Reaper Ankou: You're still talking. I'll just kill you myself and get it over with!", 'reaper3$; + end; +OnTimer7500: + disablenpc 'reaper3$; + end; +OnTimer8000: + stopnpctimer; + donpcevent instance_npcname("boss#bios3") + "::OnStart"; + end; +} + +1@dth3,1,1,0 script boss#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("boss#bios3"); + monster 'map_dth3$,70,67,"Grim Reaper Ankou",3029,1, instance_npcname("boss#bios3") + "::OnMyBossDead"; + 'boss_id = $@mobid[0]; + donpcevent instance_npcname("talk_friends#bios3") + "::OnStart"; + donpcevent instance_npcname("talk_boss#bios3") + "::OnStart"; + end; +OnMyBossDead: + 'boss_id = 0; + donpcevent instance_npcname("talk_friends#bios3") + "::OnStop"; + donpcevent instance_npcname("talk_boss#bios3") + "::OnStop"; + enablenpc 'reaper3$; + enablenpc 'zeith3$; + enablenpc 'vrid3$; + initnpctimer; + end; +OnTimer3000: + npctalk "Grim Reaper Ankou: You're strong...", 'reaper3$; + end; +OnTimer6500: + npctalk "Grim Reaper Ankou: But my goal has been accomplished... Don't think this is over.", 'reaper3$; + end; +OnTimer8000: + npctalk "Grim Reaper Ankou: Soon Lord Morocc will return. *Chuckle* The fear of death will follow you wherever you go.", 'reaper3$; + end; +OnTimer10500: + disablenpc 'reaper3$; + specialeffect EF_ICECRASH,AREA,'vrid3$; + specialeffect EF_ICECRASH,AREA,'zeith3$; + setnpcdisplay( 'vrid3$, 4_M_KNIGHT_BLACK ); + setnpcdisplay( 'zeith3$, 4_M_GUILLOTINE ); + end; +OnTimer13000: + npctalk "Vrid: Ah, finally I can move!", 'vrid3$; + end; +OnTimer16500: + npctalk "Zeith: Hmpf, I'm ashamed of myself for being so weak...", 'zeith3$; + end; +OnTimer18000: + npctalk "Vrid: Whew, that reaper was much stronger than me and Zeith combined.", 'vrid3$; + end; +OnTimer20500: + npctalk "Vrid: We could have died if it weren't for you.", 'vrid3$; + end; +OnTimer23000: + stopnpctimer; + npctalk "Vrid: I want to give you something for saving our lives. Talk to me again when you're ready to accept it.", 'vrid3$; + 'reward = 1; + disablenpc instance_npcname("boss#bios3"); + end; +} + +1@dth3,1,1,0 script talk_friends#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + initnpctimer; + end; +OnTimer15000: + .@r = rand(7); + if (.@r == 0) + npctalk "Zeith: Ugh... I feel so helpless...", 'zeith3$; + else if (.@r == 1) + npctalk "Zeith: That guy Ankou smells dangerous. You better move once he starts using a skill.", 'zeith3$; + else if (.@r == 2) + npctalk "Vrid: Ack, I'm sorry we can't help.", 'vrid3$; + else if (.@r == 3) + npctalk "Vrid: You cheater, fight fairly!", 'vrid3$; + else if (.@r == 4) + npctalk "Vrid: Damn it, I can't move...", 'vrid3$; + initnpctimer; + end; +OnStop: + stopnpctimer; + end; +} + +1@dth3,1,1,0 script talk_boss#bios3 HIDDEN_WARP_NPC,{ + end; +OnStart: + initnpctimer; + end; +OnTimer13000: + .@r = rand(6); + if (.@r == 0) + unittalk 'boss_id, "Grim Reaper Ankou: *Chuckle*"; + else if (.@r == 1) + unittalk 'boss_id, "Grim Reaper Ankou: Feel the fear of death!"; + else if (.@r == 2) + unittalk 'boss_id, "Grim Reaper Ankou: Lord Morocc will return soon."; + else if (.@r == 3) + unittalk 'boss_id, "Grim Reaper Ankou: Is this the best you can do? Such weak creatures, you humans."; + initnpctimer; + end;; +OnStop: + stopnpctimer; + end; + +OnInstanceInit: + 'reward = 'boss_id = 0; + 'map_dth1$ = instance_mapname("1@dth1"); + 'map_dth2$ = instance_mapname("1@dth2"); + 'map_dth3$ = instance_mapname("1@dth3"); + + // warps + disablenpc instance_npcname("warp1#bios1"); + disablenpc instance_npcname("warp1#bios2"); + + // zone 1 + disablenpc instance_npcname("Grim Reaper Ankou#bios1"); + donpcevent instance_npcname("mobs#bios1") + "::OnStart"; // spawn at entrance + + // zone 2 + disablenpc instance_npcname("start1#bios2"); + disablenpc instance_npcname("mobs#bios2"); + + // zone 3 + disablenpc instance_npcname("event_boss#bios3"); + disablenpc instance_npcname("freeze#bios3"); + disablenpc instance_npcname("verit#bios3"); + disablenpc instance_npcname("megalodon#bios3"); + disablenpc instance_npcname("boss_prelude#bios3"); + disablenpc instance_npcname("boss#bios3"); + disablenpc instance_npcname("talk_friends#bios3"); + disablenpc instance_npcname("talk_boss#bios3"); + disablenpc instance_npcname("Vrid#bios3"); + disablenpc instance_npcname("Zeith#bios3"); + disablenpc instance_npcname("Grim Reaper Ankou#bios3"); + for ( .@i = 1; .@i <= 3; ++.@i ) { + for ( .@j = 1; .@j <= 8; ++.@j ) + disablenpc instance_npcname( "Corrupt Orc Zombie#" + .@j + "bio" + .@i ); + } + end; +} + +1@dth3,72,74,3 duplicate(Grim Reaper Ankou#bios1) Zeith#bios3 4_M_GUILLOTINE +1@dth3,70,67,3 duplicate(Grim Reaper Ankou#bios1) Grim Reaper Ankou#bios3 3029 + +1@dth3,62,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#1bio1 3016 +1@dth3,64,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#2bio1 3016 +1@dth3,66,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#3bio1 3016 +1@dth3,68,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#4bio1 3016 +1@dth3,72,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#5bio1 3016 +1@dth3,74,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#6bio1 3016 +1@dth3,76,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#7bio1 3016 +1@dth3,78,80,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#8bio1 3016 +1@dth3,62,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#1bio2 3016 +1@dth3,64,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#2bio2 3016 +1@dth3,66,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#3bio2 3016 +1@dth3,68,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#4bio2 3016 +1@dth3,72,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#5bio2 3016 +1@dth3,74,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#6bio2 3016 +1@dth3,76,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#7bio2 3016 +1@dth3,78,86,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#8bio2 3016 +1@dth3,62,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#1bio3 3016 +1@dth3,64,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#2bio3 3016 +1@dth3,66,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#3bio3 3016 +1@dth3,68,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#4bio3 3016 +1@dth3,72,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#5bio3 3016 +1@dth3,74,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#6bio3 3016 +1@dth3,76,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#7bio3 3016 +1@dth3,78,92,3 duplicate(Grim Reaper Ankou#bios1) Corrupt Orc Zombie#8bio3 3016 diff --git a/npc/re/instances/LastRoom.txt b/npc/re/instances/LastRoom.txt index 0677d8a73f..a5f2b75c1e 100644 --- a/npc/re/instances/LastRoom.txt +++ b/npc/re/instances/LastRoom.txt @@ -164,7 +164,8 @@ un_myst,163,38,5 script Mark 4_M_BLUEMAN,{ cutin "ep143_tahuk.bmp",2; npctalk "Tamarin: Then I will stay with Verity until she recovers so you can go on ahead."; close2; - 'protocole = 1; + if ('protocole == 0) + 'protocole = 1; cutin "",255; } end; diff --git a/npc/re/instances/MalangdoCulvert.txt b/npc/re/instances/MalangdoCulvert.txt index d05e8dbaa5..39a4c23303 100644 --- a/npc/re/instances/MalangdoCulvert.txt +++ b/npc/re/instances/MalangdoCulvert.txt @@ -1031,7 +1031,7 @@ OnTouch: 2@pump,1,1,4 duplicate(Monster Hole#n) Monster Hole#h -1 2@pump,1,1,4 duplicate(Boss Creation#n) Boss Creation#h -1 2@pump,39,88,4 duplicate(Missing, the Cleaner#no) Missing, the Cleaner#ho 545 -2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h 45,3,3 +2@pump,38,100,0 duplicate(Culvert Entrance#n) Culvert Entrance#h 3,3 //MD_Putmob "2@pump" 0 0 0 0 20 HYDRA 0 0 2 2@pump,1,1,4 duplicate(Hydra#n) Hydra#h -1 diff --git a/npc/re/instances/MorseCave.txt b/npc/re/instances/MorseCave.txt new file mode 100644 index 0000000000..d2e83f9d02 --- /dev/null +++ b/npc/re/instances/MorseCave.txt @@ -0,0 +1,1225 @@ +//===== rAthena Script ======================================= +//= Morse Cave +//===== Description: ========================================= +//= [Walkthrough Conversion] +//= Morse Cave Instance +//===== Changelogs: ========================================== +//= 1.0 First version. [Capuche] +//============================================================ + +moro_cav,61,69,3 script Senior Tracker#a1 4_M_JOB_ASSASSIN,{ + if (ep14_3_isle == 0) { + mes "[Senior Tracker]"; + mes "This is our advance base"; + mes "to stop Morroc."; + mes "I'm a tracker"; + mes "charged with leading my army"; + mes "to Morroc's lair."; + close; + } + switch( checkquest(9319,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "[Senior Tracker]"; + mes "We're nowhere near close"; + mes "to stopping Morroc's resurrection."; + mes "I can't sleep at night,"; + mes "knowing Morroc is doing everything he can"; + mes "to recover his strength."; + mes "Could you come back tomorrow?"; + close; + case 2: + break; + } + switch( isbegin_quest(9318) ) { + case 0: + mes "[Senior Tracker]"; + mes "This is our advance base"; + mes "to stop Morroc."; + mes "I'm a tracker"; + mes "charged with leading my army"; + mes "to Morroc's lair."; + next; + mes "[Senior Tracker]"; + mes "After a painstaking search,"; + mes "I've located"; + mes "the place with the highest chance of"; + mes "hiding Morroc inside."; + next; + mes "[Senior Tracker]"; + mes "According to my intel,"; + mes "Morroc is hiding out in this place,"; + mes "trying to recover"; + mes "his full strength."; + next; + mes "[Senior Tracker]"; + mes "Even though I've located this place myself,"; + mes "I have to admit"; + mes "that I'm not equipped to"; + mes "explore it by myself."; + mes "I'm a tracker after all, not a fighter."; + next; + mes "[Senior Tracker]"; + mes "You look like"; + mes "a warrior spoiling for"; + mes "a good fight with Morroc,"; + mes "and I think"; + mes "you have a chance at winning it."; + next; + mes "[Senior Tracker]"; + mes "How'd you like to"; + mes "enter Morroc's lair,"; + mes "defeat him,"; + mes "and become the hero"; + mes "who saved the world from evil?"; + next; + if (getcharid(1) < 1 || getcharid(0) != getpartyleader(getcharid(1),2)) { + mes "[Senior Tracker]"; + mes "If you're interested in my proposition,"; + mes "let me talk to your party leader."; + mes "We'll discuss more details together."; + close; + } + mes "[Senior Tracker]"; + mes "Morroc may not have recovered his full strength, but fighting him still"; + break; + case 1: + mes "[Senior Tracker]"; + mes "Finally you're back!"; + mes "What happened in there?"; + next; + mes "- You relay"; + mes "your experience in the Red Flower. -"; + next; + mes "[Senior Tracker]"; + mes "So Morroc got away."; + mes "That's a shame."; + next; + if (checkquest(9318,HUNTING) == 2) { + mes "[Senior Tracker]"; + mes "At least"; + mes "you wiped out"; + mes "his army."; + mes "That's an accomplishment in itself."; + next; + } + mes "[Senior Tracker]"; + mes "At least we know"; + mes "where he is."; + mes "Could you come back tomorrow"; + mes "and help me track"; + mes "him down again?"; + mes "I'll be waiting here."; + if (checkquest(9318,HUNTING) == 2) + getitem 6684,1; // TokenOfHero + completequest 9318;// Pursuing Hiding Morroc + setquest 9319;// Pursuing Hiding Morroc Continues + close; + case 2: + mes "[Senior Tracker]"; + mes "I knew you'd return."; + mes "You look well-rested."; + next; + mes "[Senior Tracker]"; + mes "According to my intel,"; + mes "Morroc is hiding out in this place,"; + mes "recovering his strength."; + next; + mes "[Senior Tracker]"; + mes "Fighting Morroc"; + break; + } + mes "takes more than a few warriors, no matter how strong they are."; + mes "I recommend you join forces with"; + mes "as many comrades as you can find."; + mes "Are you ready to enter the Red Flower"; + mes "where Morroc is believed to be hiding?"; + if (getcharid(1) > 0 && getcharid(0) == getpartyleader(getcharid(1),2)) { + next; + if (select( "No.", "Yes." ) == 1) { + mes "[Senior Tracker]"; + mes "Come back"; + mes "if you change your mind."; + close; + } + mes "[Senior Tracker]"; + mes "The entrance to the Red Flower"; + mes "has opened."; + mes "It will only stay open for a while."; + mes "You'd better use it"; + mes "while you can."; + if (instance_create("Morse's Cave") >= 0) + 'party_id = getcharid(1); + } + close; +} + +moro_cav,57,69,3 script Red Flower#a1 CLEAR_NPC,{ + if (ep14_3_isle == 0) { + mes "[Senior Tracker]"; + mes "This is our advance base"; + mes "to stop Morroc."; + mes "I'm a tracker"; + mes "charged with leading my army"; + mes "to Morroc's lair."; + close; + } + if (isbegin_quest(9318) == 1) { + mes "- The Red Flower is closed."; + mes "You cannot enter it yet. -"; + close; + } + switch( checkquest(9319,PLAYTIME) ) { + case -1: + break; + case 0: + case 1: + mes "- The Red Flower is closed."; + mes "You cannot enter it yet. -"; + close; + case 2: + break; + } + if (select( "Do not enter the Red Flower.", "Enter the Red Flower." ) == 1) { + mes "- You can sense some sinister energy. -"; + close; + } + switch( instance_enter("Morse's Cave") ) { + case IE_OTHER: + mes "An unknown error occurred."; + close; + case IE_NOINSTANCE: + mes "The Memorial dungeon Morse's Cave does not exist."; + mes "Your party leader has not yet created the Memorial dungeon."; + close; + case IE_NOMEMBER: + mes "Only party members can enter this Memorial dungeon."; + close; + case IE_OK: + mapannounce 'map_rev$, getpartyname( getcharid(1) ) + " party's " + strcharinfo(0) + " is entering Morse's Cave.", bc_map,0xFF99; + if (isbegin_quest(9319) > 0) + erasequest 9319;// Pursuing Hiding Morroc Continues + if (isbegin_quest(9318) > 0) + erasequest 9318; + setquest 9318;// Pursuing Hiding Morroc + // warp "1@rev",26,181; + end; + } + end; + +OnInit: + while(true) { + sleep 15000; + specialeffect 239; + } + end; +} + +// Entrance +1@rev,27,181,0 script #RZ Memorial Start HIDDEN_WARP_NPC,4,4,{ + end; +OnTouch: + // note : party member can also trigger this event + disablenpc instance_npcname("#RZ Memorial Start"); + 'soul_name$ = strcharinfo(0); // name displayed on soul is defined at entrance + mes ""; + sleep2 500; + mapannounce 'map_rev$, "Morroc: Who dares to disrupt my sleep?!", bc_map,0xEBFF; + unittalk getcharid(3), "" + strcharinfo(0) + " : We came to the right place!"; + sleep2 3000; + unittalk getcharid(3), "" + strcharinfo(0) + " : Wait! There's something ahead of us!"; + sleep2 3000; + specialeffect2 EF_LOCKON; + unittalk getcharid(3), "" + strcharinfo(0) + " : Are these hideous monsters Morroc's lackeys?"; + donpcevent instance_npcname("#RZ Event_1") + "::OnStart"; + end; +} + +// 1@rev,31,181,0 script #RZ Event_1 HIDDEN_WARP_NPC,5,5,{ +1@rev,1,1,0 script #RZ Event_1 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#RZ Event_1"); + .@label$ = instance_npcname("#RZ Event_1") + "::OnMobDead"; + monster 'map_rev$,38,180,"Morroc's Ghoul",3001,1, .@label$; // EP14_MORS_MOB1 + monster 'map_rev$,38,181,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,38,182,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,54,180,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,54,181,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,54,182,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,70,180,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,70,181,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,70,182,"Morroc's Ghoul",3001,1, .@label$; + end; +OnMobDead: + if (mobcount( 'map_rev$, instance_npcname("#RZ Event_1") + "::OnMobDead" ) < 1) { + donpcevent instance_npcname("Reaper Yanku#RZ Event_2") + "::OnStart"; + disablenpc instance_npcname("#RZ Event_1"); + } + end; +} + +1@rev,64,181,4 script Reaper Yanku#RZ Event_2 3029,{ + end; +OnStart: + enablenpc instance_npcname("Reaper Yanku#RZ Event_2"); + npctalk "Reaper Yanku: *Chuckle* We meet again!"; + sleep 3000; + npctalk "Reaper Yanku: You shouldn't have come. You're interrupting Lord Morroc from recovering his strength."; + sleep 3000; + npctalk "Reaper Yanku: This world resides in his mind."; + sleep 3000; + npctalk "Reaper Yanku: You can't do anything against his will. *Chuckle*"; + sleep 3000; + npctalk "Reaper Yanku: Lord Morroc is expecting you. Let me take you to him. *Chuckle*"; + sleep 3000; + disablenpc instance_npcname("Reaper Yanku#RZ Event_2"); + enablenpc instance_npcname("#RZ Event_3"); + sleep 3000; + /* Officials scripts + enablenpc instance_npcname("#RZ Move_30"); + enablenpc instance_npcname("#RZ Move_31"); + enablenpc instance_npcname("#RZ Move_32"); + */ + mapwarp 'map_rev$,'map_rev$,103,177; // note: officially players are warped when the next event start - player entering can't access to the current event + end; +} + +// Weakened Morroc Room +1@rev,104,176,0 script #RZ Event_3 HIDDEN_WARP_NPC,4,4,{ + end; +OnTouch: // note : party member can also trigger this event + mes ""; // fix me + disablenpc instance_npcname("#RZ Event_3"); + enablenpc instance_npcname("Weakened Morroc#RZ1"); + unittalk getcharid(3), "" + strcharinfo(0) + " : Finally, here we are, Morroc."; + sleep2 3000; + unittalk getcharid(3), "" + strcharinfo(0) + " : It's been almost too easy to find you,"; + sleep2 3000; + unittalk getcharid(3), "" + strcharinfo(0) + " : but it doesn't matter; you'll die today!"; + sleep2 3000; + specialeffect2 EF_LOCKON; + donpcevent instance_npcname("Weakened Morroc#RZ1") + "::OnTalk1"; + end; +} + +1@rev,111,178,4 script Weakened Morroc#RZ1 1916,{ + end; +OnTalk1: + npctalk "Weakened Morroc: I should punish you for disturbing my slumber."; + sleep 3000; + npctalk "Weakened Morroc: Do you really think you can stop me?"; + sleep 3000; + npctalk "Weakened Morroc: I'll make you regret ever coming here."; + sleep 3000; + npctalk "Weakened Morroc: I may have not recovered my full strength,"; + specialeffect EF_ENERGYCOAT; + sleep 3000; + npctalk "Weakened Morroc: but I still can take down a bunch of you easily."; + sleep 3000; + npctalk "Weakened Morroc: Death is your only escape!"; + specialeffect EF_VOLCANO; + sleep 3000; + disablenpc instance_npcname("Weakened Morroc#RZ1"); + donpcevent instance_npcname("Weakened Morroc#control") + "::OnStart"; + end; +OnTalk2: + enablenpc instance_npcname("Weakened Morroc#RZ1"); + npctalk "Weakened Morroc: I'm sorry, but I haven't recovered my full strength."; + sleep 3000; + npctalk "Weakened Morroc: I'll have to leave you to my soldiers for now."; + sleep 3000; + npctalk "Weakened Morroc: Do your worst to get out of my world!"; + sleep 3000; + npctalk "Weakened Morroc: In the end, you'll learn the meaning of helplessness in the most painful way!"; + sleep 3000; + npctalk "Weakened Morroc: And your souls will be mine! Mwah hah hah!"; + sleep 3000; + disablenpc instance_npcname("Weakened Morroc#RZ1"); + sleep 3000; + /* Officials scripts use WARPNPC + enablenpc instance_npcname("#RZ Move_1"); + enablenpc instance_npcname("#RZ Move_2"); + enablenpc instance_npcname("#RZ Move_3"); + enablenpc instance_npcname("#RZ Move_4"); + */ + enablenpc instance_npcname("#Battle_1RZ1"); + enablenpc instance_npcname("#Battle_1RZ2"); + for ( .@i = 1; .@i <= 12; .@i++ ) + enablenpc instance_npcname( "#Pause Effect RZ" + .@i ); + for ( .@i = 1; .@i <= 8; .@i++ ) + enablenpc instance_npcname( "#RZ Debuff_" + .@i ); + + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) + continue; + if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) { + if ((.@count % 2) == 0) // Right + warp 'map_rev$, rand(33,36), rand(117,118), .@char_id[.@i]; + else // Left + warp 'map_rev$, rand(112,114), rand(116,118), .@char_id[.@i]; + .@count++; + } + } + end; +} + +1@rev,1,1,0 script Weakened Morroc#control HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("Weakened Morroc#control"); + monster 'map_rev$,111,178,"Weakened Morroc",2998,1, instance_npcname("Weakened Morroc#control") + "::OnMobDead"; // EP14_MORS_EVENT + end; +OnMobDead: + donpcevent instance_npcname("Weakened Morroc#RZ1") + "::OnTalk2"; + disablenpc instance_npcname("Weakened Morroc#control"); + end; +} + + +1@rev,34,126,4 script Reaper Yanku#RZ Event_3 3029,{ end; } +1@rev,112,126,4 duplicate(Reaper Yanku#RZ Event_3) Reaper Yanku#RZ Event_4 3029 +1@rev,34,55,4 duplicate(Reaper Yanku#RZ Event_3) Reaper Yanku#RZ Event_5 3029 +1@rev,112,48,4 duplicate(Reaper Yanku#RZ Event_3) Reaper Yanku#RZ Event_6 3029 + + +// Battle 1 - waves, event A - left side +// 1@rev,35,119,0 script #Battle_1RZ1 HIDDEN_WARP_NPC,10,10,{ +1@rev,35,119,0 script #Battle_1RZ1 HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch: + pcblockmove 0, true; + if ('status_battle[0] == 0) { + 'status_battle[0] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your bodies are mine to control!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your souls are food for my resurrection!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + } + end; +} + +// Event B - right side +// 1@rev,112,126,0 script #Battle_1RZ2 HIDDEN_WARP_NPC,10,10 +1@rev,112,116,0 script #Battle_1RZ2 HIDDEN_WARP_NPC,2,2,{ + end; +OnTouch: + pcblockmove 0, true; + if ('status_battle[1] == 0) { + 'status_battle[1] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; + } + end; +} + +1@rev,1,1,0 script #morse_cave_wave_1 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#morse_cave_wave_1"); + sleep 5000; + callsub( S_Spawn,0 ); + sleep 20000; + callsub( S_Spawn,0 ); + sleep 20000; + callsub( S_Spawn,0 ); + mapannounce 'map_rev$, "Morroc: My soldiers, make them suffer! Feast on their bodies and souls!", bc_map,0xEBFF; + sleep 20000; + callsub( S_Spawn,0 ); + sleep 20000; + callsub( S_Spawn,0 ); + mapannounce 'map_rev$, "Morroc: Not enough. Make them feel terror!", bc_map,0xEBFF; + sleep 20000; + callsub( S_Spawn,0 ); + sleep 20000; + callsub( S_Spawn,0 ); + mapannounce 'map_rev$, "Morroc: Resist me! Fight to the death!", bc_map,0xEBFF; + sleep 20000; + callsub( S_Spawn,0 ); + sleep 15000; + callsub( S_Spawn,1 ); + mapannounce 'map_rev$, "Morroc: Mwa hah hah, I can feel my power returning!", bc_map,0xEBFF; + sleep 10000; + callsub( S_Spawn,2 ); + sleep 12000; + .@count[0] = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead" ); + .@count[1] = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead2" ); + killmonster 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead"; + killmonster 'map_rev$, instance_npcname("#morse_cave_wave_1") + "::OnMobDead2"; + disablenpc instance_npcname("#Battle_1RZ1"); + disablenpc instance_npcname("#Battle_1RZ2"); + for ( .@i = 1; .@i <= 12; .@i++ ) + donpcevent instance_npcname( "#Pause Effect RZ" + .@i ) + "::OnStop"; + sleep 3000; + if (.@count[0] > 19 || .@count[1] > 19) { + .@reaper$[0] = instance_npcname("Reaper Yanku#RZ Event_3"); + .@reaper$[1] = instance_npcname("Reaper Yanku#RZ Event_4"); + enablenpc .@reaper$[0]; + enablenpc .@reaper$[1]; + npctalk "You're pathetic.", .@reaper$[0]; + npctalk "You're pathetic.", .@reaper$[1]; + sleep 3000; + npctalk "Weaklings like you aren't enough food for Lord Morroc", .@reaper$[0]; + npctalk "Weaklings like you aren't enough food for Lord Morroc", .@reaper$[1]; + sleep 3000; + npctalk "to get the energy he needs for a full recovery.", .@reaper$[0]; + npctalk "to get the energy he needs for a full recovery.", .@reaper$[1]; + sleep 3000; + npctalk "I'll give you one chance to leave. NOW!", .@reaper$[0]; + npctalk "I'll give you one chance to leave. NOW!", .@reaper$[1]; + sleep 3000; + disablenpc .@reaper$[0]; + disablenpc .@reaper$[1]; + sleep 5000; + /* Officials scripts + enablenpc instance_npcname("#RZ Move_5a");// warp to prontera,97,167 + enablenpc instance_npcname("#RZ Move_6a"); + enablenpc instance_npcname("#RZ Move_7a"); + enablenpc instance_npcname("#RZ Move_8a"); + enablenpc instance_npcname("#RZ Move_9a"); + enablenpc instance_npcname("#RZ Move_10a"); + enablenpc instance_npcname("#RZ Move_11a"); + enablenpc instance_npcname("#RZ Move_12a"); + */ + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) + continue; + if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) + pcblockmove .@account_id[.@i], false; + } + mapwarp 'map_rev$,"prontera",97,167; + } + else { + mapannounce 'map_rev$, "Morroc: You're more resilient than I thought.", bc_map,0xEBFF; + sleep 2000; + mapannounce 'map_rev$, "Morroc: But enough is enough.", bc_map,0xEBFF; + sleep 5000; + /* Officials scripts + enablenpc instance_npcname("#RZ Move_5");// warp to 1@rev,31,50 + enablenpc instance_npcname("#RZ Move_6"); + enablenpc instance_npcname("#RZ Move_7"); + enablenpc instance_npcname("#RZ Move_8"); + enablenpc instance_npcname("#RZ Move_9"); + enablenpc instance_npcname("#RZ Move_10"); + enablenpc instance_npcname("#RZ Move_11"); + enablenpc instance_npcname("#RZ Move_12"); + */ + for ( .@i = 9; .@i <= 15; .@i++ ) + enablenpc instance_npcname( "#RZ Debuff_" + .@i ); + enablenpc instance_npcname("#Battle_2RZ1"); + for ( .@i = 1; .@i <= 12; .@i++ ) + enablenpc instance_npcname( "#Pause Effecto RZ" + .@i ); + warpparty 'map_rev$,31,50, 'party_id, 'map_rev$,1,1; + } + for ( .@i = 1; .@i <= 8; .@i++ ) + disablenpc instance_npcname( "#RZ Debuff_" + .@i ); + disablenpc instance_npcname("#morse_cave_wave_1"); + donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStop"; + donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStop"; + end; + +S_Spawn: + .@additionnal_monster = getarg(0); + .@label$ = instance_npcname("#morse_cave_wave_1") + "::OnMobDead"; + monster 'map_rev$,33,128,"Morroc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1 + monster 'map_rev$,42,120,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,34,111,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,25,119,"Morroc's Ghoul",3001,1, .@label$; + if (.@additionnal_monster == 1) + monster 'map_rev$,33,111,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + else if (.@additionnal_monster == 2) + monster 'map_rev$,32,128,"Morroc's Archer Skeleton",3003,1, .@label$; + + if ('status_battle[1] == true) { + .@label$ = instance_npcname("#morse_cave_wave_1") + "::OnMobDead2"; + monster 'map_rev$,112,126,"Morroc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1 + monster 'map_rev$,120,118,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,112,109,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,103,117,"Morroc's Ghoul",3001,1, .@label$; + if (.@additionnal_monster == 1) + monster 'map_rev$,103,118,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + else if (.@additionnal_monster == 2) + monster 'map_rev$,120,117,"Morroc's Archer Skeleton",3003,1, .@label$; + } + return; + +OnMobDead: +OnMobDead2: + end; +} + +// display icewall every 30s +1@rev,33,117,0 script #Pause Effect RZ1 HIDDEN_WARP_NPC,1,1,{ + end; +OnTouch: + if (countstr( strnpcinfo(0), "Effecto" ) == 0) + .@num = atoi( replacestr( strnpcinfo(2), "Pause Effect RZ", "" ) ); + else + .@num = atoi( replacestr( strnpcinfo(2), "Pause Effecto RZ", "" ) ) + 20; + if ('pause_effect[.@num] == 0) { + 'pause_effect[.@num] = 1; + specialeffect EF_ICEWALL; + initnpctimer; + } + pcblockmove 0, true; + if (.@num < 7 && 'status_battle[0] == 0) { + mes ""; // fix me + 'status_battle[0] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your bodies are mine to control!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your souls are food for my resurrection!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + } + else if (.@num >= 7 && .@num < 13 && 'status_battle[1] == 0) { + 'status_battle[1] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; + } + else if (.@num >= 21 && .@num < 33 && 'status_battle[2] == 0) { + mes ""; // fix me + 'status_battle[2] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: This world of mine is evolving.", bc_map,0xEBFF; + sleep2 2000; + mapannounce 'map_rev$, "Morroc: My power is returning!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your bodies and souls are under my command!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart"; + } + end; +OnTimer30000: + specialeffect EF_ICEWALL; + initnpctimer; + end; +OnStop: + stopnpctimer; + disablenpc instance_npcname( strnpcinfo(0) ); + end; +} +1@rev,36,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ2 HIDDEN_WARP_NPC,1,1 +1@rev,36,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ3 HIDDEN_WARP_NPC,1,1 +1@rev,34,122,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ4 HIDDEN_WARP_NPC,1,1 +1@rev,31,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ5 HIDDEN_WARP_NPC,1,1 +1@rev,31,118,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ6 HIDDEN_WARP_NPC,1,1 + +// Event B - right side +1@rev,112,116,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ7 HIDDEN_WARP_NPC,1,1 +1@rev,114,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ8 HIDDEN_WARP_NPC,1,1 +1@rev,114,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ9 HIDDEN_WARP_NPC,1,1 +1@rev,111,121,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ10 HIDDEN_WARP_NPC,1,1 +1@rev,109,120,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ11 HIDDEN_WARP_NPC,1,1 +1@rev,109,117,0 duplicate(#Pause Effect RZ1) #Pause Effect RZ12 HIDDEN_WARP_NPC,1,1 + +// Battle 2 - waves +1@rev,31,50,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ1 HIDDEN_WARP_NPC,1,1 +1@rev,36,49,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ2 HIDDEN_WARP_NPC,1,1 +1@rev,37,45,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ3 HIDDEN_WARP_NPC,1,1 +1@rev,30,45,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ4 HIDDEN_WARP_NPC,1,1 +1@rev,29,47,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ5 HIDDEN_WARP_NPC,1,1 +1@rev,33,51,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ6 HIDDEN_WARP_NPC,1,1 +1@rev,38,49,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ7 HIDDEN_WARP_NPC,1,1 +1@rev,34,44,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ8 HIDDEN_WARP_NPC,1,1 +1@rev,32,44,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ9 HIDDEN_WARP_NPC,1,1 +1@rev,29,49,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ10 HIDDEN_WARP_NPC,1,1 +1@rev,35,51,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ11 HIDDEN_WARP_NPC,1,1 +1@rev,37,47,0 duplicate(#Pause Effect RZ1) #Pause Effecto RZ12 HIDDEN_WARP_NPC,1,1 + +// Event A - left side - debuff +1@rev,33,111,0 script #RZ Debuff_1 HIDDEN_WARP_NPC,12,4,{ + end; +OnTouch: + pcblockmove 0, true; + .@num = atoi( replacestr( strnpcinfo(2), "RZ Debuff_", "" ) ); + if (.@num < 5 && 'status_battle[0] == 0) { + mes ""; // fix me + 'status_battle[0] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 1") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: How do you like to be separated from each other and have your bodies and minds bound?", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: You're trespassing! Riff-raff like you have no business in here!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your bodies are mine to control!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your souls are food for my resurrection!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_1") + "::OnStart"; + } + else if (.@num >= 5 && .@num < 9 && 'status_battle[1] == 0) { + 'status_battle[1] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 2") + "::OnStart"; + } + else if (.@num >= 9 && .@num < 16 && 'status_battle[2] == 0) { + mes ""; // fix me + 'status_battle[2] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: This world of mine is evolving.", bc_map,0xEBFF; + sleep2 2000; + mapannounce 'map_rev$, "Morroc: My power is returning!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Your bodies and souls are under my command!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart"; + } + end; +} +1@rev,42,124,0 duplicate(#RZ Debuff_1) #RZ Debuff_2 HIDDEN_WARP_NPC,4,8 +1@rev,25,124,0 duplicate(#RZ Debuff_1) #RZ Debuff_3 HIDDEN_WARP_NPC,4,8 +1@rev,33,128,0 duplicate(#RZ Debuff_1) #RZ Debuff_4 HIDDEN_WARP_NPC,4,4 + +// Event B - right side - debuff +1@rev,112,110,0 duplicate(#RZ Debuff_1) #RZ Debuff_5 HIDDEN_WARP_NPC,12,4 +1@rev,103,122,0 duplicate(#RZ Debuff_1) #RZ Debuff_6 HIDDEN_WARP_NPC,4,7 +1@rev,120,122,0 duplicate(#RZ Debuff_1) #RZ Debuff_7 HIDDEN_WARP_NPC,4,7 +1@rev,112,126,0 duplicate(#RZ Debuff_1) #RZ Debuff_8 HIDDEN_WARP_NPC,4,3 + +// Battle 2 - waves - debuff +1@rev,32,47,0 duplicate(#RZ Debuff_1) #RZ Debuff_9 HIDDEN_WARP_NPC,1,1 +1@rev,24,48,0 duplicate(#RZ Debuff_1) #RZ Debuff_10 HIDDEN_WARP_NPC,3,5 +1@rev,27,56,0 duplicate(#RZ Debuff_1) #RZ Debuff_11 HIDDEN_WARP_NPC,4,4 +1@rev,43,47,0 duplicate(#RZ Debuff_1) #RZ Debuff_12 HIDDEN_WARP_NPC,3,4 +1@rev,41,56,0 duplicate(#RZ Debuff_1) #RZ Debuff_13 HIDDEN_WARP_NPC,4,4 +1@rev,34,56,0 duplicate(#RZ Debuff_1) #RZ Debuff_14 HIDDEN_WARP_NPC,2,3 +1@rev,34,39,0 duplicate(#RZ Debuff_1) #RZ Debuff_15 HIDDEN_WARP_NPC,12,3 + +// official npcs to block the player from moving +// Event A - left side +// 1@rev,28,125,0 script #RZ Debuff_1 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,28,114,0 script #RZ Debuff_2 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,114,0 script #RZ Debuff_3 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,125,0 script #RZ Debuff_4 HIDDEN_WARP_NPC,10,10,{ + +// Event B - right side +// 1@rev,106,123,0 script #RZ Debuff_5 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,106,112,0 script #RZ Debuff_6 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,117,112,0 script #RZ Debuff_7 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,117,123,0 script #RZ Debuff_8 HIDDEN_WARP_NPC,10,10,{ + +// Battle 2 - waves +// 1@rev,28,53,0 script #RZ Debuff_9 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,28,42,0 script #RZ Debuff_10 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,42,0 script #RZ Debuff_11 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,53,0 script #RZ Debuff_12 HIDDEN_WARP_NPC,10,10,{ + +// 1@rev,28,53,0 script #RZ Debuff Recovery_1 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,28,42,0 script #RZ Debuff Recovery_2 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,42,0 script #RZ Debuff Recovery_3 HIDDEN_WARP_NPC,10,10,{ +// 1@rev,39,53,0 script #RZ Debuff Recovery_4 HIDDEN_WARP_NPC,10,10,{ + +// Battle 2 - waves +// 1@rev,34,47,0 script #Battle_2RZ1 HIDDEN_WARP_NPC,10,10,{ +1@rev,34,47,0 script #Battle_2RZ1 HIDDEN_WARP_NPC,3,3,{ + end; +OnTouch: + pcblockmove 0, true; + if ('status_battle[2] == 0) { + 'status_battle[2] = 1; + donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStart"; + mapannounce 'map_rev$, "Morroc: This world of mine is evolving.", bc_map,0xEBFF; + sleep 2000; + mapannounce 'map_rev$, "Morroc: My power is returning!", bc_map,0xEBFF; + sleep 3000; + mapannounce 'map_rev$, "Morroc: Your bodies and souls are under my command!", bc_map,0xEBFF; + sleep 3000; + mapannounce 'map_rev$, "Morroc: My soldiers, tear their bodies asunder and bring their souls to me!", bc_map,0xEBFF; + donpcevent instance_npcname("#morse_cave_wave_2") + "::OnStart"; + } + end; +} + +1@rev,1,1,0 script #morse_cave_wave_2 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#morse_cave_wave_2"); + .@label$ = instance_npcname("#morse_cave_wave_2") + "::OnMobDead"; + sleep 5000; + callsub( S_Spawn ); + monster 'map_rev$,27,53,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,27,41,"Morroc's Archer Skeleton",3003,1, .@label$; + mapannounce 'map_rev$, "Morroc: This power! It feels great! Mwah hah hah!", bc_map,0xEBFF; + sleep 25000; + callsub( S_Spawn ); + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + mapannounce 'map_rev$, "Morroc: How do you like losing control of your own body? *Chuckle*", bc_map,0xEBFF; + sleep 25000; + callsub( S_Spawn ); + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,27,53,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + sleep 25000; + callsub( S_Spawn ); + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,27,53,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + mapannounce 'map_rev$, "Morroc: More! I need more energy!", bc_map,0xEBFF; + sleep 25000; + callsub( S_Spawn ); + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,27,53,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + mapannounce 'map_rev$, "Morroc: Mwah hah hah! Fear my army! Struggle harder!", bc_map,0xEBFF; + sleep 25000; + monster 'map_rev$,34,57,"Morroc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1 + monster 'map_rev$,43,48,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,33,38,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,27,53,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + sleep 25000; + callsub( S_Spawn ); + monster 'map_rev$,27,53,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,27,41,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,40,41,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + monster 'map_rev$,40,54,"Morroc's Verit",3005,1, .@label$; + mapannounce 'map_rev$, "Morroc: You're pathetic, struggling to survive!", bc_map,0xEBFF; + sleep 15000; + callsub( S_Spawn ); + monster 'map_rev$,40,41,"Morroc's Archer Skeleton",3003,1, .@label$;// EP14_MORS_MOB3 + monster 'map_rev$,40,54,"Morroc's Archer Skeleton",3003,1, .@label$; + monster 'map_rev$,27,53,"Morroc's Verit",3005,1, .@label$;// EP14_MORS_MOB5 + monster 'map_rev$,27,41,"Morroc's Verit",3005,1, .@label$; + sleep 12000; + .@count = mobcount( 'map_rev$, instance_npcname("#morse_cave_wave_2") + "::OnMobDead" ); + killmonster 'map_rev$, instance_npcname("#morse_cave_wave_2") + "::OnMobDead"; + disablenpc instance_npcname("#Battle_2RZ1"); + for ( .@i = 1; .@i <= 12; .@i++ ) + donpcevent instance_npcname( "#Pause Effecto RZ" + .@i ) + "::OnStop"; + sleep 3000; + if (.@count > 19) { + .@reaper$ = instance_npcname("Reaper Yanku#RZ Event_5"); + enablenpc .@reaper$; + npctalk "You're pathetic.", .@reaper$; + sleep 3000; + npctalk "Weaklings like you aren't enough food for Lord Morroc", .@reaper$; + sleep 3000; + npctalk "to get the energy he needs for a full recovery.", .@reaper$; + sleep 3000; + npctalk "I'll give you one chance to leave. NOW!", .@reaper$; + sleep 3000; + disablenpc .@reaper$; + sleep 5000; + /* Officials scripts + enablenpc instance_npcname("#Move_13a");// warp to prontera,97,167 + enablenpc instance_npcname("#Move_14a"); + enablenpc instance_npcname("#Move_15a"); + enablenpc instance_npcname("#Move_16a"); + */ + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) + continue; + if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) + pcblockmove .@account_id[.@i], false; + } + mapwarp 'map_rev$,"prontera",97,167; + } + else { + mapannounce 'map_rev$, "Morroc: I'm surprised you've lasted this long. Thank you for helping me recover most of my strength.", bc_map,0xEBFF; + sleep 4000; + mapannounce 'map_rev$, "Morroc: Good, I feel rejuvenated.", bc_map,0xEBFF; + sleep 3000; + for ( .@i = 9; .@i <= 15; .@i++ ) + disablenpc instance_npcname( "#RZ Debuff_" + .@i ); + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) + continue; + if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) + pcblockmove .@account_id[.@i], false; + } + // enablenpc instance_npcname("#RZ Debuff Recovery_1"); + // enablenpc instance_npcname("#RZ Debuff Recovery_2"); + // enablenpc instance_npcname("#RZ Debuff Recovery_3"); + // enablenpc instance_npcname("#RZ Debuff Recovery_4"); + sleep 1000; + // enablenpc instance_npcname("#RZ Move_13");// warp to 1@rev,104,48 + // enablenpc instance_npcname("#RZ Move_14"); + // enablenpc instance_npcname("#RZ Move_15"); + // enablenpc instance_npcname("#RZ Move_16"); + enablenpc instance_npcname("#Battle_3RZ1"); + mapwarp 'map_rev$,'map_rev$,104,48; + } + disablenpc instance_npcname("#morse_cave_wave_2"); + donpcevent instance_npcname("#RZ Memorial Effect 3") + "::OnStop"; + end; +S_Spawn: + .@label$ = instance_npcname("#morse_cave_wave_2") + "::OnMobDead"; + monster 'map_rev$,34,57,"Morroc's Ghoul",3001,1, .@label$;// EP14_MORS_MOB1 + monster 'map_rev$,43,48,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,33,38,"Morroc's Ghoul",3001,1, .@label$; + monster 'map_rev$,24,48,"Morroc's Ghoul",3001,1, .@label$; + return; +OnMobDead: + end; +} + + +// Display EF_CURSEATTACK effect overhead 'Soul' monster +// Event A - left side +1@rev,34,120,0 script #RZ Memorial Effect 1 HIDDEN_WARP_NPC,{ + end; +OnStart: + .@npc_name$ = instance_npcname( strnpcinfo(0) ); + enablenpc .@npc_name$; + getmapxy .@map$,.@x,.@y, UNITTYPE_NPC; + monster 'map_rev$,.@x,.@y,('soul_name$ + "'s Soul"),3007,1, .@npc_name$ + "::OnStop"; // EP14_MORS_DUMMY + initnpctimer; + specialeffect EF_STORMGUST; + specialeffect EF_CURSEATTACK; + end; +OnTimer2000: + specialeffect EF_CURSEATTACK; + initnpctimer; + end; +OnStop: + stopnpctimer; + killmonster 'map_rev$, instance_npcname( strnpcinfo(0) ) + "::OnStop"; + disablenpc instance_npcname( strnpcinfo(0) ); + end; +} +// Event B - right side +1@rev,112,118,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 2 HIDDEN_WARP_NPC + +// Battle 2 - waves +1@rev,34,48,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 3 HIDDEN_WARP_NPC + +// official range +// 1@rev,34,120,0 script #RZ Memorial Effect 1 HIDDEN_WARP_NPC,4,4,{ +// 1@rev,112,118,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 2 HIDDEN_WARP_NPC,4,4 +// 1@rev,34,48,0 duplicate(#RZ Memorial Effect 1) #RZ Memorial Effect 3 HIDDEN_WARP_NPC,4,4 + +// Battle 3 +1@rev,112,48,4 script Morocc Necromancer#RZ1 4_GHOST_STAND,{ end; } + +1@rev,104,47,0 script #Battle_3RZ1 HIDDEN_WARP_NPC,5,5,{ + end; +OnTouch: + disablenpc instance_npcname("#Battle_3RZ1"); + mapannounce 'map_rev$, "Morroc: I can't let you go unscathed!", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: Hah hah, my Necromancer. I'll leave them to you.", bc_map,0xEBFF; + sleep2 3000; + mapannounce 'map_rev$, "Morroc: My loyal soldier, I'll trust you with their deaths!", bc_map,0xEBFF; + sleep2 3000; + .@necromancer$ = instance_npcname("Morocc Necromancer#RZ1"); + enablenpc .@necromancer$; + sleep2 3000; + specialeffect EF_TWOHANDQUICKEN,AREA, .@necromancer$; + npctalk "Morocc Necromancer: As you wish, My Lord!", .@necromancer$; + sleep2 3000; + npctalk "Morocc Necromancer: *Chuckle* You still have no idea, do you?", .@necromancer$; + sleep2 3000; + npctalk "Morocc Necromancer: The energy you generated to protect me while I was hiding within your soul", .@necromancer$; + sleep2 3000; + npctalk "Morocc Necromancer: has been converted to healing energy for Lord Morroc the moment you entered this world of his!", .@necromancer$; + sleep2 3000; + npctalk "Morocc Necromancer: *Chuckle* Your stupidity was a blessing for us. We don't need you anymore. DIE!", .@necromancer$; + specialeffect EF_BEGINSPELL2,AREA, .@necromancer$; + sleep2 3000; + disablenpc .@necromancer$; + donpcevent instance_npcname("#morse_cave_3") + "::OnStart"; + end; +} + +1@rev,1,1,0 script #morse_cave_3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#morse_cave_3"); + monster 'map_rev$,112,48,"Morocc Necromancer",2999,1, instance_npcname("#morse_cave_3") + "::OnMobDead";// EP14_MORS_BOSSA + end; +OnMobDead: + .@necromancer$ = instance_npcname("Morocc Necromancer#RZ1"); + enablenpc .@necromancer$; + sleep 3000; + npctalk "Morocc Necromancer: You're stronger than you look.", .@necromancer$; + sleep 3000; + npctalk "Morocc Necromancer: *Giggle* I'll show you what I'm truly capable of.", .@necromancer$; + sleep 3000; + npctalk "Morocc Necromancer: Beg me for your lives!", .@necromancer$; + sleep 3000; + npctalk "Morocc Necromancer: *Giggle*", .@necromancer$; + sleep 3000; + disablenpc .@necromancer$; + monster 'map_rev$,112,48,"Morocc Necromancer",3000,1, instance_npcname("#morse_cave_3") + "::OnMobDead2";// EP14_MORS_BOSSB + 'boss_id = $@mobid[0]; + donpcevent instance_npcname("#morse_cave_wave_3") + "::OnStart"; + donpcevent instance_npcname("#morse_cave_boss_talk") + "::OnStart"; + end; +OnMobDead2: + donpcevent instance_npcname("#morse_cave_wave_3") + "::OnStop"; + donpcevent instance_npcname("#morse_cave_boss_talk") + "::OnStop"; + donpcevent instance_npcname("#morse_cave_wave_3_mobs") + "::OnStop"; + sleep 3000; + .@reaper$ = instance_npcname("Reaper Yanku#RZ Event_6"); + enablenpc .@reaper$; + sleep 1000; + npctalk "Reaper Yanku: Sigh, Necromancer, why did you have to die so quickly?", .@reaper$; + sleep 3000; + npctalk "Reaper Yanku: Don't be so happy!", .@reaper$; + sleep 3000; + npctalk "Reaper Yanku: Now that Lord Morroc has fully recovered his strength, you're as good as dead!", .@reaper$; + sleep 3000; + npctalk "Reaper Yanku: We'll meet again. *Chuckle*", .@reaper$; + sleep 2000; + hideonnpc .@reaper$; + enablenpc instance_npcname("#RZ Move_17a"); + specialeffect EF_THUNDERSTORM,AREA, .@reaper$; // officially Morocc Necromancer#RZ1 display the effects but they have the same coordinates + sleep 1000; + specialeffect EF_LORD,AREA, .@reaper$; + specialeffect EF_THUNDERSTORM,AREA, .@reaper$; + sleep 1000; + specialeffect EF_LORD,AREA, .@reaper$; + end; +} + +1@rev,1,1,0 script #morse_cave_wave_3 HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#morse_cave_wave_3"); + initnpctimer; + end; +OnTimer7000: + stopnpctimer; + donpcevent instance_npcname("#morse_cave_wave_3_mobs") + "::OnStart"; + end; +OnStop: + disablenpc instance_npcname("#morse_cave_wave_3"); + stopnpctimer; + end; +} + +1@rev,1,1,0 script #morse_cave_boss_talk HIDDEN_WARP_NPC,{ + end; +OnStart: + initnpctimer; + end; +OnTimer8000: + .@r = rand(4); + if (.@r == 0) + unittalk 'boss_id, "Morocc Necromancer: We the soldiers of Morroc know no mercy!"; + else if (.@r == 1) + unittalk 'boss_id, "Morocc Necromancer: You're doing good so far. *Giggle*"; + else if (.@r == 2) + unittalk 'boss_id, "Morocc Necromancer: I see you're weakening, though."; + else + unittalk 'boss_id, "Morocc Necromancer: Feel the power of his army!"; + initnpctimer; + end; +OnTimer25000: + initnpctimer; + end; +OnStop: + disablenpc instance_npcname("#morse_cave_boss_talk"); + stopnpctimer; + end; +} + +1@rev,1,1,0 script #morse_cave_wave_3_mobs HIDDEN_WARP_NPC,{ + end; +OnStart: + enablenpc instance_npcname("#morse_cave_wave_3_mobs"); + initnpctimer; + + setarray 'coord[0], + 112,57, + 121,47, + 112,38, + 120,54, + 119,40, + 104,40, + 102,48; + 'num_coord = getarraysize('coord) / 2; + end; +OnTimer25000: + for ( .@i = 0; .@i < 'num_coord; .@i++ ) { + .@last = ( 'num_coord - .@i - 1 ) * 2; + .@r = rand( 'num_coord - .@i ) * 2; + setarray .@xy[0], 'coord[.@r], 'coord[.@r+1]; + setarray 'coord[.@r], 'coord[.@last], 'coord[.@last+1]; + setarray 'coord[.@last], .@xy[0], .@xy[1]; + } + .@label$ = instance_npcname("#morse_cave_wave_3_mobs") + "::OnMobDead"; + if (mobcount( 'map_rev$, .@label$ ) < 100) { // stop to 100 mobs for performance + monster 'map_rev$,'coord[0],'coord[1], "Morroc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1 + monster 'map_rev$,'coord[2],'coord[3], "Morroc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1 + monster 'map_rev$,'coord[4],'coord[5], "Morroc's Ghoul", 3001,1, .@label$; // EP14_MORS_MOB1 + monster 'map_rev$,'coord[6],'coord[7], "Morroc's Osiris", 3002,1, .@label$; // EP14_MORS_MOB2 + monster 'map_rev$,'coord[8],'coord[9], "Morroc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3 + monster 'map_rev$,'coord[10],'coord[11], "Morroc's Wraith", 3004,1, .@label$; // EP14_MORS_MOB4 + + if (rand(100) < 20) + monster 'map_rev$,'coord[12],'coord[12], "Morroc's Archer Skeleton", 3003,1, .@label$; // EP14_MORS_MOB3 + else + monster 'map_rev$,'coord[12],'coord[13], "Morroc's Verit", 3005,1, .@label$; // EP14_MORS_MOB5 + + // inaccurate + areamonster 'map_rev$,102,38,121,57, "#Poison", 3008,1, .@label$; // EP14_MORS_HIDDEN + } + initnpctimer; + end; +OnStop: + stopnpctimer; + killmonster 'map_rev$, instance_npcname("#morse_cave_wave_3_mobs") + "::OnMobDead"; + disablenpc instance_npcname("#morse_cave_wave_3_mobs"); + end; +OnMobDead: + end; +} + +// 1@rev,106,57,0 script #Battle_3RZ2 HIDDEN_WARP_NPC,{ +// 1@rev,120,54,0 script #Battle_3RZ3 HIDDEN_WARP_NPC,{ +// 1@rev,120,55,0 script #Battle_3RZ4 HIDDEN_WARP_NPC,{ +// 1@rev,120,56,0 script #Battle_3RZ5 HIDDEN_WARP_NPC,{ +// 1@rev,120,57,0 script #Battle_3RZ6 HIDDEN_WARP_NPC,{ +// 1@rev,120,58,0 script #Battle_3RZ7 HIDDEN_WARP_NPC,{ + +1@rev,112,56,3 script #RZ Move_17a PORTAL,{ + mes "Do you want to exit through the portal?"; + next; + if (select( "No.", "Yes." ) == 2) { + mes "- Teleporting... -"; + close2; + warp "moro_cav",59,63; + end; + } + end; + +OnInstanceInit: + 'map_rev$ = instance_mapname("1@rev"); + 'status_battle[0] = 0; + 'status_battle[1] = 0; + 'status_battle[2] = 0; + + // Entrance + disablenpc instance_npcname("#RZ Event_1"); + disablenpc instance_npcname("Reaper Yanku#RZ Event_2"); + + // Weakened Morroc + disablenpc instance_npcname("#RZ Event_3"); + disablenpc instance_npcname("Weakened Morroc#RZ1"); + disablenpc instance_npcname("Weakened Morroc#control"); + + // Battle 1 + disablenpc instance_npcname("Reaper Yanku#RZ Event_3"); + disablenpc instance_npcname("Reaper Yanku#RZ Event_4"); + disablenpc instance_npcname("#Battle_1RZ1"); + disablenpc instance_npcname("#Battle_1RZ2"); + disablenpc instance_npcname("#RZ Memorial Effect 1"); + disablenpc instance_npcname("#RZ Memorial Effect 2"); + disablenpc instance_npcname("#morse_cave_wave_1"); + for ( .@i = 1; .@i <= 12; .@i++ ) + disablenpc instance_npcname( "#Pause Effect RZ" + .@i ); + + // Battle 2 + disablenpc instance_npcname("Reaper Yanku#RZ Event_5"); + disablenpc instance_npcname("#RZ Memorial Effect 3"); + disablenpc instance_npcname("#morse_cave_wave_2"); + disablenpc instance_npcname("#Battle_2RZ1"); + for ( .@i = 1; .@i <= 12; .@i++ ) + disablenpc instance_npcname( "#Pause Effecto RZ" + .@i ); + + // Battle 3 + disablenpc instance_npcname("#morse_cave_3"); + disablenpc instance_npcname("#morse_cave_wave_3"); + disablenpc instance_npcname("Reaper Yanku#RZ Event_6"); + disablenpc instance_npcname("#Battle_3RZ1"); + disablenpc instance_npcname("Morocc Necromancer#RZ1"); + disablenpc instance_npcname("#RZ Move_17a"); + + // Debuff - Battle 1 & 2 + for ( .@i = 1; .@i <= 15; .@i++ ) + disablenpc instance_npcname( "#RZ Debuff_" + .@i ); + + // reload + if ('party_id > 0) { + getpartymember 'party_id, 1, .@char_id; + getpartymember 'party_id, 2, .@account_id; + for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { + if (isloggedin(.@account_id[.@i],.@char_id[.@i]) == false) + continue; + if (strcharinfo(3,.@char_id[.@i]) == 'map_rev$) + pcblockmove .@account_id[.@i], false; + } + } + end; +} + +/* +// Original warps +// Entrance -> Weakened Morroc +1@rev,63,181,0 warp2 #RZ Move_30 10,10,1@rev,103,177 +1@rev,47,181,0 warp2 #RZ Move_31 10,10,1@rev,103,177 +1@rev,31,181,0 warp2 #RZ Move_32 10,10,1@rev,103,177 + +// Weakened Morroc -> Battle Wave 1a +1@rev,106,172,0 warp2 #RZ Move_1 10,10,1@rev,33,117 +1@rev,106,172,0 warp2 #RZ Move_2 10,10,1@rev,33,117 +1@rev,117,172,0 warp2 #RZ Move_3 10,10,1@rev,33,117 +1@rev,117,183,0 warp2 #RZ Move_4 10,10,1@rev,33,117 + +// Weakened Morroc -> Battle Wave 1b +1@rev,106,172,0 warp2 #RZ Move_1 10,10,1@rev,112,116 +1@rev,106,172,0 warp2 #RZ Move_2 10,10,1@rev,112,116 +1@rev,117,172,0 warp2 #RZ Move_3 10,10,1@rev,112,116 +1@rev,117,183,0 warp2 #RZ Move_4 10,10,1@rev,112,116 + +// Battle Wave 1a -> Battle Wave 2 +1@rev,28,125,0 warp2 #RZ Move_5 10,10,1@rev,31,50 +1@rev,28,114,0 warp2 #RZ Move_6 10,10,1@rev,31,50 +1@rev,39,114,0 warp2 #RZ Move_7 10,10,1@rev,31,50 +1@rev,39,125,0 warp2 #RZ Move_8 10,10,1@rev,31,50 + +// Battle Wave 1a -> Prontera +1@rev,28,125,0 warp2 #RZ Move_5a 10,10,prontera,97,167 +1@rev,28,114,0 warp2 #RZ Move_6a 10,10,prontera,97,167 +1@rev,39,114,0 warp2 #RZ Move_7a 10,10,prontera,97,167 +1@rev,39,125,0 warp2 #RZ Move_8a 10,10,prontera,97,167 + +// Battle Wave 1b -> Battle Wave 2 +1@rev,106,123,0 warp2 #RZ Move_9 10,10,1@rev,31,50 +1@rev,106,112,0 warp2 #RZ Move_10 10,10,1@rev,31,50 +1@rev,117,112,0 warp2 #RZ Move_11 10,10,1@rev,31,50 +1@rev,117,123,0 warp2 #RZ Move_12 10,10,1@rev,31,50 + +// Battle Wave 1b -> Prontera +1@rev,106,123,0 warp2 #RZ Move_9a 10,10,prontera,97,167 +1@rev,106,112,0 warp2 #RZ Move_10a 10,10,prontera,97,167 +1@rev,117,112,0 warp2 #RZ Move_11a 10,10,prontera,97,167 +1@rev,117,123,0 warp2 #RZ Move_12a 10,10,prontera,97,167 + +// Battle Wave 2 -> Final Battle +1@rev,28,53,0 warp2 #RZ Move_13 10,10,1@rev,104,48 +1@rev,28,42,0 warp2 #RZ Move_14 10,10,1@rev,104,48 +1@rev,39,42,0 warp2 #RZ Move_15 10,10,1@rev,104,48 +1@rev,39,53,0 warp2 #RZ Move_16 10,10,1@rev,104,48 + +// Battle Wave 2 -> Prontera +1@rev,28,53,0 warp2 #RZ Move_13a 10,10,prontera,97,167 +1@rev,28,42,0 warp2 #RZ Move_14a 10,10,prontera,97,167 +1@rev,39,42,0 warp2 #RZ Move_15a 10,10,prontera,97,167 +1@rev,39,53,0 warp2 #RZ Move_16a 10,10,prontera,97,167 +*/ diff --git a/npc/re/instances/OldGlastHeim.txt b/npc/re/instances/OldGlastHeim.txt index e3604f94b2..f39619e669 100644 --- a/npc/re/instances/OldGlastHeim.txt +++ b/npc/re/instances/OldGlastHeim.txt @@ -1554,12 +1554,19 @@ OnMobDead: end; OnTouch: specialeffect2 EF_ENHANCE; - // buff - // .@num = atoi( replacestr(strnpcinfo(2), "Buff", "") ); - // if (.@num == 1) - // else if (.@num == 2) - // else if (.@num == 3) - // else + .@num = atoi( replacestr(strnpcinfo(2), "Buff", "") ); + if (.@num == 1) + sc_start SC_GLASTHEIM_HIDDEN,30000,1,10000,SCSTART_NOTICKDEF; + else if (.@num == 2) + sc_start SC_GLASTHEIM_STATE,30000,1,10000,SCSTART_NOTICKDEF; + else if (.@num == 3) { + sc_start SC_GLASTHEIM_HEAL,30000,1,10000,SCSTART_NOTICKDEF; + sc_start SC_GLASTHEIM_HPSP,30000,1,10000,SCSTART_NOTICKDEF; + } + else { + sc_start SC_GLASTHEIM_DEF,30000,1,10000,SCSTART_NOTICKDEF; + sc_start SC_GLASTHEIM_ITEMDEF,30000,1,10000,SCSTART_NOTICKDEF; + } end; OnEvent: initnpctimer; @@ -1572,7 +1579,7 @@ OnEvent: else if (.@num == 3) npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais' zombie, come to me and get more power!"; else - npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais's power, come to me and get more power! "; + npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais's power, come to me and get more power!"; end; OnTimer10000: stopnpctimer; diff --git a/npc/re/instances/SaraMemory.txt b/npc/re/instances/SaraMemory.txt index 40f1bfa513..4cb8e6bb76 100644 --- a/npc/re/instances/SaraMemory.txt +++ b/npc/re/instances/SaraMemory.txt @@ -1083,71 +1083,73 @@ OnDisable: OnEnable: enablenpc instance_npcname("#MobsSara01", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,107,325,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,115,325,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,116,317,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,108,317,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,116,311,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,108,311,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + .@event$ = instance_npcname("#MobsSara01")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,107,325,"Payon Soldier",2543,1, .@event$; + monster .@map$,115,325,"Payon Soldier",2543,1, .@event$; + monster .@map$,116,317,"Payon Soldier",2543,1, .@event$; + monster .@map$,108,317,"Payon Soldier",2543,1, .@event$; + monster .@map$,116,311,"Payon Soldier",2543,1, .@event$; + monster .@map$,108,311,"Payon Soldier",2543,1, .@event$; - monster .@map$,101,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,105,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,109,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,113,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,117,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,295,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,101,295,"Payon Soldier",2543,1, .@event$; + monster .@map$,105,295,"Payon Soldier",2543,1, .@event$; + monster .@map$,109,295,"Payon Soldier",2543,1, .@event$; + monster .@map$,113,295,"Payon Soldier",2543,1, .@event$; + monster .@map$,117,295,"Payon Soldier",2543,1, .@event$; + monster .@map$,121,295,"Payon Soldier",2543,1, .@event$; - monster .@map$,122,227,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,122,225,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,122,223,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,122,221,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,122,219,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,122,217,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,227,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,225,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,223,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,221,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,219,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,121,217,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,122,227,"Payon Soldier",2543,1, .@event$; + monster .@map$,122,225,"Payon Soldier",2543,1, .@event$; + monster .@map$,122,223,"Payon Soldier",2543,1, .@event$; + monster .@map$,122,221,"Payon Soldier",2543,1, .@event$; + monster .@map$,122,219,"Payon Soldier",2543,1, .@event$; + monster .@map$,122,217,"Payon Soldier",2543,1, .@event$; + monster .@map$,121,227,"Guard Dog",2545,1, .@event$; + monster .@map$,121,225,"Guard Dog",2545,1, .@event$; + monster .@map$,121,223,"Guard Dog",2545,1, .@event$; + monster .@map$,121,221,"Guard Dog",2545,1, .@event$; + monster .@map$,121,219,"Guard Dog",2545,1, .@event$; + monster .@map$,121,217,"Guard Dog",2545,1, .@event$; - monster .@map$,151,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,153,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,155,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,157,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,159,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,161,231,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,151,231,"Payon Soldier",2543,1, .@event$; + monster .@map$,153,231,"Payon Soldier",2543,1, .@event$; + monster .@map$,155,231,"Payon Soldier",2543,1, .@event$; + monster .@map$,157,231,"Payon Soldier",2543,1, .@event$; + monster .@map$,159,231,"Payon Soldier",2543,1, .@event$; + monster .@map$,161,231,"Payon Soldier",2543,1, .@event$; - monster .@map$,187,215,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,187,217,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,187,219,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,187,221,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,187,223,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,187,225,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,215,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,217,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,219,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,221,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,223,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,188,225,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,187,215,"Guard Dog",2545,1, .@event$; + monster .@map$,187,217,"Guard Dog",2545,1, .@event$; + monster .@map$,187,219,"Guard Dog",2545,1, .@event$; + monster .@map$,187,221,"Guard Dog",2545,1, .@event$; + monster .@map$,187,223,"Guard Dog",2545,1, .@event$; + monster .@map$,187,225,"Guard Dog",2545,1, .@event$; + monster .@map$,188,215,"Payon Soldier",2543,1, .@event$; + monster .@map$,188,217,"Payon Soldier",2543,1, .@event$; + monster .@map$,188,219,"Payon Soldier",2543,1, .@event$; + monster .@map$,188,221,"Payon Soldier",2543,1, .@event$; + monster .@map$,188,223,"Payon Soldier",2543,1, .@event$; + monster .@map$,188,225,"Payon Soldier",2543,1, .@event$; - monster .@map$,192,250,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,194,250,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,196,250,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,198,250,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,192,250,"Payon Soldier",2543,1, .@event$; + monster .@map$,194,250,"Guard Dog",2545,1, .@event$; + monster .@map$,196,250,"Payon Soldier",2543,1, .@event$; + monster .@map$,198,250,"Guard Dog",2545,1, .@event$; - monster .@map$,196,254,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,196,256,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,196,258,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,199,254,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,199,256,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,199,258,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,196,254,"Guard Dog",2545,1, .@event$; + monster .@map$,196,256,"Guard Dog",2545,1, .@event$; + monster .@map$,196,258,"Guard Dog",2545,1, .@event$; + monster .@map$,199,254,"Payon Soldier",2543,1, .@event$; + monster .@map$,199,256,"Payon Soldier",2543,1, .@event$; + monster .@map$,199,258,"Payon Soldier",2543,1, .@event$; - monster .@map$,204,246,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,204,248,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,204,250,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,204,252,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,204,254,"Payon Soldier",2543,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; - monster .@map$,206,251,"Guard Dog",2545,1,instance_npcname("#MobsSara01")+"::OnMyMobDead"; + monster .@map$,204,246,"Payon Soldier",2543,1, .@event$; + monster .@map$,204,248,"Payon Soldier",2543,1, .@event$; + monster .@map$,204,250,"Payon Soldier",2543,1, .@event$; + monster .@map$,204,252,"Payon Soldier",2543,1, .@event$; + monster .@map$,204,254,"Payon Soldier",2543,1, .@event$; + monster .@map$,206,251,"Guard Dog",2545,1, .@event$; set 'Sara_Mobs,58; initnpctimer; end; @@ -1183,27 +1185,29 @@ OnDisable: OnEnable: enablenpc instance_npcname("#MobsSara02", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,228,312,"Guard Dog",2546,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,227,312,"Guard Dog",2546,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,229,315,"Guard Dog",2546,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + .@event$ = instance_npcname("#MobsSara02")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,228,312,"Guard Dog",2546,1, .@event$; + monster .@map$,227,312,"Guard Dog",2546,1, .@event$; + monster .@map$,229,315,"Guard Dog",2546,1, .@event$; - monster .@map$,247,290,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,248,290,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,249,290,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + monster .@map$,247,290,"Payon Soldier",2544,1, .@event$; + monster .@map$,248,290,"Payon Soldier",2544,1, .@event$; + monster .@map$,249,290,"Payon Soldier",2544,1, .@event$; - monster .@map$,223,264,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,230,248,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,227,248,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + monster .@map$,223,264,"Payon Soldier",2544,1, .@event$; + monster .@map$,230,248,"Payon Soldier",2544,1, .@event$; + monster .@map$,227,248,"Payon Soldier",2544,1, .@event$; - monster .@map$,238,229,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,225,220,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,228,220,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + monster .@map$,238,229,"Payon Soldier",2544,1, .@event$; + monster .@map$,225,220,"Payon Soldier",2544,1, .@event$; + monster .@map$,228,220,"Payon Soldier",2544,1, .@event$; - monster .@map$,220,212,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,223,212,"Payon Soldier",2544,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + monster .@map$,220,212,"Payon Soldier",2544,1, .@event$; + monster .@map$,223,212,"Payon Soldier",2544,1, .@event$; - monster .@map$,219,203,"Guard Dog",2546,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; - monster .@map$,222,203,"Guard Dog",2546,1,instance_npcname("#MobsSara02")+"::OnMyMobDead"; + monster .@map$,219,203,"Guard Dog",2546,1, .@event$; + monster .@map$,222,203,"Guard Dog",2546,1, .@event$; set 'Sara_Mobs,16; end; @@ -1229,59 +1233,61 @@ OnDisable: OnEnable: enablenpc instance_npcname("#MobsSara03", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,255,91,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,255,92,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,255,93,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,255,94,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,254,91,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,254,92,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,254,93,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,254,94,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + .@event$ = instance_npcname("#MobsSara03")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,255,91,"Guard Dog",2545,1, .@event$; + monster .@map$,255,92,"Guard Dog",2545,1, .@event$; + monster .@map$,255,93,"Guard Dog",2545,1, .@event$; + monster .@map$,255,94,"Guard Dog",2545,1, .@event$; + monster .@map$,254,91,"Guard Dog",2545,1, .@event$; + monster .@map$,254,92,"Guard Dog",2545,1, .@event$; + monster .@map$,254,93,"Guard Dog",2545,1, .@event$; + monster .@map$,254,94,"Guard Dog",2545,1, .@event$; - monster .@map$,228,65,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,228,64,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,228,63,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,228,62,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,228,65,"Payon Soldier",2543,1, .@event$; + monster .@map$,228,64,"Payon Soldier",2543,1, .@event$; + monster .@map$,228,63,"Payon Soldier",2543,1, .@event$; + monster .@map$,228,62,"Payon Soldier",2543,1, .@event$; - monster .@map$,198,62,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,195,56,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,195,60,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,195,62,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,192,56,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,192,60,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,192,62,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,198,62,"Guard Dog",2546,1, .@event$; + monster .@map$,195,56,"Guard Dog",2546,1, .@event$; + monster .@map$,195,60,"Guard Dog",2546,1, .@event$; + monster .@map$,195,62,"Guard Dog",2546,1, .@event$; + monster .@map$,192,56,"Guard Dog",2546,1, .@event$; + monster .@map$,192,60,"Guard Dog",2546,1, .@event$; + monster .@map$,192,62,"Guard Dog",2546,1, .@event$; - monster .@map$,187,68,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,188,63,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,187,68,"Guard Dog",2546,1, .@event$; + monster .@map$,188,63,"Guard Dog",2546,1, .@event$; - monster .@map$,120,39,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,121,39,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,121,39,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,120,39,"Payon Soldier",2543,1, .@event$; + monster .@map$,121,39,"Payon Soldier",2543,1, .@event$; + monster .@map$,121,39,"Payon Soldier",2543,1, .@event$; - monster .@map$,93,64,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,93,68,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,93,72,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,93,76,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,90,64,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,90,68,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,90,72,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,90,76,"Guard Dog",2545,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,93,64,"Guard Dog",2545,1, .@event$; + monster .@map$,93,68,"Guard Dog",2545,1, .@event$; + monster .@map$,93,72,"Guard Dog",2545,1, .@event$; + monster .@map$,93,76,"Guard Dog",2545,1, .@event$; + monster .@map$,90,64,"Guard Dog",2545,1, .@event$; + monster .@map$,90,68,"Guard Dog",2545,1, .@event$; + monster .@map$,90,72,"Guard Dog",2545,1, .@event$; + monster .@map$,90,76,"Guard Dog",2545,1, .@event$; - monster .@map$,87,67,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,87,63,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,87,59,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,87,55,"Payon Soldier",2543,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,87,67,"Payon Soldier",2543,1, .@event$; + monster .@map$,87,63,"Payon Soldier",2543,1, .@event$; + monster .@map$,87,59,"Payon Soldier",2543,1, .@event$; + monster .@map$,87,55,"Payon Soldier",2543,1, .@event$; - monster .@map$,84,67,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,84,63,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,84,59,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,84,55,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,84,67,"Guard Dog",2546,1, .@event$; + monster .@map$,84,63,"Guard Dog",2546,1, .@event$; + monster .@map$,84,59,"Guard Dog",2546,1, .@event$; + monster .@map$,84,55,"Guard Dog",2546,1, .@event$; - monster .@map$,81,67,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,81,63,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,81,59,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,81,55,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; - monster .@map$,81,51,"Guard Dog",2546,1,instance_npcname("#MobsSara03")+"::OnMyMobDead"; + monster .@map$,81,67,"Guard Dog",2546,1, .@event$; + monster .@map$,81,63,"Guard Dog",2546,1, .@event$; + monster .@map$,81,59,"Guard Dog",2546,1, .@event$; + monster .@map$,81,55,"Guard Dog",2546,1, .@event$; + monster .@map$,81,51,"Guard Dog",2546,1, .@event$; set 'Sara_Mobs,45; end; @@ -1307,58 +1313,60 @@ OnDisable: OnEnable: enablenpc instance_npcname("#MobsSara04", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,155,97,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,157,97,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,159,97,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,161,97,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + .@event$ = instance_npcname("#MobsSara04")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,155,97,"Payon Soldier",2543,1, .@event$; + monster .@map$,157,97,"Payon Soldier",2543,1, .@event$; + monster .@map$,159,97,"Payon Soldier",2543,1, .@event$; + monster .@map$,161,97,"Payon Soldier",2543,1, .@event$; - monster .@map$,201,113,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,204,113,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,207,113,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,210,113,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,213,113,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,201,113,"Payon Soldier",2544,1, .@event$; + monster .@map$,204,113,"Payon Soldier",2544,1, .@event$; + monster .@map$,207,113,"Payon Soldier",2544,1, .@event$; + monster .@map$,210,113,"Payon Soldier",2544,1, .@event$; + monster .@map$,213,113,"Payon Soldier",2544,1, .@event$; - monster .@map$,201,117,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,204,117,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,207,117,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,210,117,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,213,117,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,201,117,"Payon Soldier",2544,1, .@event$; + monster .@map$,204,117,"Payon Soldier",2544,1, .@event$; + monster .@map$,207,117,"Payon Soldier",2544,1, .@event$; + monster .@map$,210,117,"Payon Soldier",2544,1, .@event$; + monster .@map$,213,117,"Payon Soldier",2544,1, .@event$; - monster .@map$,223,152,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,223,148,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,223,144,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,223,152,"Payon Soldier",2544,1, .@event$; + monster .@map$,223,148,"Payon Soldier",2544,1, .@event$; + monster .@map$,223,144,"Payon Soldier",2544,1, .@event$; - monster .@map$,221,152,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,221,148,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,221,144,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,221,152,"Payon Soldier",2544,1, .@event$; + monster .@map$,221,148,"Payon Soldier",2544,1, .@event$; + monster .@map$,221,144,"Payon Soldier",2544,1, .@event$; - monster .@map$,151,174,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,153,174,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,155,174,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,157,174,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,159,174,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,151,174,"Payon Soldier",2543,1, .@event$; + monster .@map$,153,174,"Payon Soldier",2543,1, .@event$; + monster .@map$,155,174,"Payon Soldier",2543,1, .@event$; + monster .@map$,157,174,"Payon Soldier",2543,1, .@event$; + monster .@map$,159,174,"Payon Soldier",2543,1, .@event$; - monster .@map$,151,177,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,153,177,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,155,177,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,157,177,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,159,177,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,151,177,"Payon Soldier",2543,1, .@event$; + monster .@map$,153,177,"Payon Soldier",2543,1, .@event$; + monster .@map$,155,177,"Payon Soldier",2543,1, .@event$; + monster .@map$,157,177,"Payon Soldier",2543,1, .@event$; + monster .@map$,159,177,"Payon Soldier",2543,1, .@event$; - monster .@map$,151,180,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,153,180,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,155,180,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,157,180,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,159,180,"Payon Soldier",2544,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,151,180,"Payon Soldier",2544,1, .@event$; + monster .@map$,153,180,"Payon Soldier",2544,1, .@event$; + monster .@map$,155,180,"Payon Soldier",2544,1, .@event$; + monster .@map$,157,180,"Payon Soldier",2544,1, .@event$; + monster .@map$,159,180,"Payon Soldier",2544,1, .@event$; - monster .@map$,173,139,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,170,139,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,167,139,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,164,139,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,173,139,"Payon Soldier",2543,1, .@event$; + monster .@map$,170,139,"Payon Soldier",2543,1, .@event$; + monster .@map$,167,139,"Payon Soldier",2543,1, .@event$; + monster .@map$,164,139,"Payon Soldier",2543,1, .@event$; - monster .@map$,173,137,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,170,137,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,167,137,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; - monster .@map$,164,137,"Payon Soldier",2543,1,instance_npcname("#MobsSara04")+"::OnMyMobDead"; + monster .@map$,173,137,"Payon Soldier",2543,1, .@event$; + monster .@map$,170,137,"Payon Soldier",2543,1, .@event$; + monster .@map$,167,137,"Payon Soldier",2543,1, .@event$; + monster .@map$,164,137,"Payon Soldier",2543,1, .@event$; set 'Sara_Mobs,43; end; @@ -1398,21 +1406,23 @@ OnDisable: OnEnable: enablenpc instance_npcname("#BossSara01", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,150,232,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + .@event$ = instance_npcname("#BossSara01")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,150,232,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"I am getting too old for this sh-"; - monster .@map$,150,227,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,150,227,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,150,222,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,150,222,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,150,217,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,150,217,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,161,232,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,161,232,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,161,227,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,161,227,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,161,222,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,161,222,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; - monster .@map$,161,217,"Payon Soldier",2544,1,instance_npcname("#BossSara01")+"::OnMyMobDead"; + monster .@map$,161,217,"Payon Soldier",2544,1, .@event$; unittalk $@mobid[0],"For Payon !!"; areamobuseskill .@map$,155,225,10,2544,"NPC_EMOTION",1,0,0,ET_GO,0; areamobuseskill .@map$,159,236,1,2543,"NPC_EMOTION",1,0,0,ET_SWEAT,0; @@ -1437,7 +1447,9 @@ OnDisable: OnEnable: enablenpc instance_npcname("#BossSara02", instance_id()); set .@map$, instance_mapname("1@sara"); - monster .@map$,155,226,"Doyen Irene",2542,1,instance_npcname("#BossSara02")+"::OnMyMobDead"; + .@event$ = instance_npcname("#BossSara02")+"::OnMyMobDead"; + killmonster .@map$, .@event$; + monster .@map$,155,226,"Doyen Irene",2542,1, .@event$; unittalk $@mobid[0],"I will have revenge for Sara's mom !!"; end; diff --git a/npc/re/jobs/novice/academy.txt b/npc/re/jobs/novice/academy.txt index e4fefec285..e409e37e1b 100644 --- a/npc/re/jobs/novice/academy.txt +++ b/npc/re/jobs/novice/academy.txt @@ -5318,7 +5318,7 @@ new_1-3,108,165,3 script Ghostring#cupet 4_GHOSTRING,{ // - Little Porings // ----------------------------------------------------------------------------- new_1-3,105,165,5 script Cowardly Poring#pet_1 2398,{ end; } -new_1-3,105,164,5 script Unskillful Poring#pet_2 2398,{ end; } +new_1-3,105,164,5 script Unskilled Poring#pet_2 2398,{ end; } new_1-3,105,163,5 script Foolish Poring#pet_3 2398,{ end; } // - Kafra Guide Trainer @@ -12921,7 +12921,7 @@ izlude_d,153,126,1 duplicate(Refinery Owner Han#iz) Refinery Owner Han#iz_d 4_M_ if (isbegin_quest(5153) == 1) { if (getequipweaponlv(.@part) == 1) { mes "[Refining Machine Wagjak]"; - mes "Type : 1 level weapon"; + mes "Type : Level 1 weapon"; mes "Charge : Phracon, 1000 zeny"; mes "Service usage coupon sensed. No charge to be requested. Will you refine?"; next; @@ -12969,33 +12969,17 @@ izlude_d,153,126,1 duplicate(Refinery Owner Han#iz) Refinery Owner Han#iz_d 4_M_ } } } - switch(getequipweaponlv(.@part)) { - case 0: + + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count + .@price = getequiprefinecost(.@part, REFINE_COST_WAGJAK, REFINE_ZENY_COST); + .@material = getequiprefinecost(.@part, REFINE_COST_WAGJAK, REFINE_MATERIAL_ID); + + if ((getequipweaponlv(.@part) >= 1) && (getequipweaponlv(.@part) <= 4)) + .@type$ = "Level " + getequipweaponlv(.@part) + " weapon"; + else .@type$ = "Armor"; - .@material = 985;// Elunium - .@price = 20000; - break; - case 1: - .@type$ = "Level 1 weapon"; - .@material = 1010;// Phracon - .@price = 1000; - break; - case 2: - .@type$ = "Level 2 weapon"; - .@material = 1011;// Emveretarcon - .@price = 2000; - break; - case 3: - .@type$ = "Level 3 weapon"; - .@material = 984;// Oridecon - .@price = 10000; - break; - case 4: - .@type$ = "Level 4 weapon"; - .@material = 984;// Oridecon - .@price = 20000; - break; - } + mes "[Refining Machine Wagjak]"; mes "Type : "+ .@type$ +""; mes "Charge : "+ getitemname(.@material) +", "+ .@price +" zeny"; @@ -13025,6 +13009,17 @@ izlude_d,153,126,1 duplicate(Refinery Owner Han#iz) Refinery Owner Han#iz_d 4_M_ if (countitem(.@material) > 0 && Zeny >= .@price) { delitem .@material, 1; Zeny -= .@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Refining Machine Wagjak]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } } else { mes "[Refining Machine Wagjak]"; mes "^FF0000- error number 8282 -^000000"; diff --git a/npc/re/mapflag/nobranch.txt b/npc/re/mapflag/nobranch.txt index 6a3967ef82..7acd777baa 100644 --- a/npc/re/mapflag/nobranch.txt +++ b/npc/re/mapflag/nobranch.txt @@ -95,6 +95,15 @@ izlude_b mapflag nobranch izlude_c mapflag nobranch izlude_d mapflag nobranch +// Glast Heim Memorial Dungeon === +1@gl_k mapflag nobranch +2@gl_k mapflag nobranch + +// Wave Mode Memorial Dungeon ==== +1@def01 mapflag nobranch +1@def02 mapflag nobranch +1@def03 mapflag nobranch + // Heroes' Trail - Part 1 ======== 1@face mapflag nobranch 1@sara mapflag nobranch @@ -132,6 +141,11 @@ dali02 mapflag nobranch 1@lab mapflag nobranch 1@uns mapflag nobranch 1@mcd mapflag nobranch +un_myst mapflag nobranch + +// Nightmare Biolab +lhz_dun_n mapflag nobranch +lhz_d_n2 mapflag nobranch // WOE:TE Maps =================== te_alde_gld mapflag nobranch @@ -147,6 +161,57 @@ te_aldecas3 mapflag nobranch te_aldecas4 mapflag nobranch te_aldecas5 mapflag nobranch -// Episode 15 -1@lab mapflag nobranch -1@uns mapflag nobranch +// Novice training +int_land mapflag nobranch +int_land01 mapflag nobranch +int_land02 mapflag nobranch +int_land03 mapflag nobranch +int_land04 mapflag nobranch + +// Ep 16 +prt_lib mapflag nobranch +prt_lib_q mapflag nobranch +prt_cas mapflag nobranch +prt_cas_q mapflag nobranch +prt_pri00 mapflag nobranch +rebel_in mapflag nobranch +que_swat mapflag nobranch +1@mir mapflag nobranch +2@mir mapflag nobranch +1@sthb mapflag nobranch +1@sthc mapflag nobranch +1@sthd mapflag nobranch +1@slw mapflag nobranch +1@swat mapflag nobranch + +// Rockridge +har_in01 mapflag nobranch +rockmi2 mapflag nobranch + +// Lasagna +lasagna mapflag nobranch +lasa_in01 mapflag nobranch +conch_in mapflag nobranch +lasa_dun_q mapflag nobranch + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag nobranch +2@gl_k2 mapflag nobranch + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag nobranch + +// Suspicious shipwreck +1@tre mapflag nobranch + +// Poring Town +1@begi mapflag nobranch + +// Volcanic island Korodo +1@crd mapflag nobranch + +// Noodles Festival July +1@drdo mapflag nobranch + +// Soul Reaper Job Change +1@soul mapflag nobranch diff --git a/npc/re/mapflag/noicewall.txt b/npc/re/mapflag/noicewall.txt index d9c76c166d..fd0759a601 100644 --- a/npc/re/mapflag/noicewall.txt +++ b/npc/re/mapflag/noicewall.txt @@ -32,6 +32,15 @@ // Inside Eclage =========== 1@ecl mapflag noicewall +// Glast Heim Memorial Dungeon === +1@gl_k mapflag noicewall +2@gl_k mapflag noicewall + +// Wave Mode Memorial Dungeon ==== +1@def01 mapflag noicewall +1@def02 mapflag noicewall +1@def03 mapflag noicewall + // Heroes' Trail - Part 1 ======== 1@face mapflag noicewall 1@sara mapflag noicewall @@ -80,6 +89,33 @@ te_aldecas3 mapflag noicewall te_aldecas4 mapflag noicewall te_aldecas5 mapflag noicewall -// Episode 15 -1@lab mapflag noicewall -1@uns mapflag noicewall +// Ep 16 +1@mir mapflag noicewall +2@mir mapflag noicewall +1@sthb mapflag noicewall +1@sthc mapflag noicewall +1@sthd mapflag noicewall +1@slw mapflag noicewall +1@swat mapflag noicewall + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag noicewall +2@gl_k2 mapflag noicewall + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag noicewall + +// Suspicious shipwreck +1@tre mapflag noicewall + +// Poring Town +1@begi mapflag noicewall + +// Volcanic island Korodo +1@crd mapflag noicewall + +// Noodles Festival July +1@drdo mapflag noicewall + +// Soul Reaper Job Change +1@soul mapflag noicewall diff --git a/npc/re/mapflag/nomemo.txt b/npc/re/mapflag/nomemo.txt index 337a87536e..9dcdf296f0 100644 --- a/npc/re/mapflag/nomemo.txt +++ b/npc/re/mapflag/nomemo.txt @@ -117,23 +117,53 @@ gl_cas02_ mapflag nomemo // Glast Heim Memorial Dungeon === 1@gl_k mapflag nomemo 2@gl_k mapflag nomemo -gl_chyard_ mapflag nomemo -gl_cas02_ mapflag nomemo // Wave Mode Memorial Dungeon ==== 1@def01 mapflag nomemo 1@def02 mapflag nomemo 1@def03 mapflag nomemo -// Heroes' Trails - Part 1 ======= -1@gef mapflag nomemo +// Heroes' Trail - Part 1 ======== 1@face mapflag nomemo 1@sara mapflag nomemo -1@gef_in mapflag nomemo -1@glast mapflag nomemo dali mapflag nomemo dali02 mapflag nomemo +// Heroes' Trail - Part 2 ======== +1@ge_st mapflag nomemo +1@gef mapflag nomemo +1@gef_in mapflag nomemo +1@spa mapflag nomemo +1@tnm1 mapflag nomemo +1@tnm2 mapflag nomemo +1@tnm3 mapflag nomemo + +// Heroes' Trail - Part 3 ======== +1@glast mapflag nomemo +1@air1 mapflag nomemo +1@air2 mapflag nomemo + +// Decisive Battle - Part 1 ====== +moro_cav mapflag nomemo +1@dth1 mapflag nomemo +1@dth2 mapflag nomemo +1@dth3 mapflag nomemo +1@rev mapflag nomemo + +// Decisive Battle - Part 2 ====== +1@eom mapflag nomemo +1@jtb mapflag nomemo + +// Episode 15 - Phantasmagorica +1@lab mapflag nomemo +1@uns mapflag nomemo +1@mcd mapflag nomemo +un_myst mapflag nomemo + +// Nightmare Biolab +lhz_dun_n mapflag nomemo +lhz_d_n2 mapflag nomemo + // WOE:TE Maps =================== te_prtcas01 mapflag nomemo te_prtcas02 mapflag nomemo @@ -148,8 +178,86 @@ te_aldecas5 mapflag nomemo teg_dun01 mapflag nomemo teg_dun02 mapflag nomemo -// Episode 15 -1@lab mapflag nomemo -1@uns mapflag nomemo -un_bk_q mapflag nomemo -un_myst mapflag nomemo +// Novice training +int_land mapflag nomemo +int_land01 mapflag nomemo +int_land02 mapflag nomemo +int_land03 mapflag nomemo +int_land04 mapflag nomemo + +// Ep 16 +prt_cas mapflag nomemo +prt_cas_q mapflag nomemo +prt_pri00 mapflag nomemo +prt_lib mapflag nomemo +prt_lib_q mapflag nomemo +prt_q mapflag nomemo +prt_prison mapflag nomemo +rebel_in mapflag nomemo +slabw01 mapflag nomemo +que_swat mapflag nomemo +1@mir mapflag nomemo +2@mir mapflag nomemo +1@sthb mapflag nomemo +1@sthc mapflag nomemo +1@sthd mapflag nomemo +1@slw mapflag nomemo +1@swat mapflag nomemo + +// Rockridge +har_in01 mapflag nomemo +rockmi1 mapflag nomemo +rockmi2 mapflag nomemo + +// Lasagna +lasa_in01 mapflag nomemo +conch_in mapflag nomemo +lasa_dun01 mapflag nomemo +lasa_dun02 mapflag nomemo +lasa_dun03 mapflag nomemo +lasa_dun_q mapflag nomemo + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag nomemo +2@gl_k2 mapflag nomemo + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag nomemo + +// Illusion Payon (Moonlight) +pay_d03_i mapflag nomemo + +// Illusion Geffen (Vampire) +gef_d01_i mapflag nomemo + +// Illusion Ice (Frozen) +ice_d03_i mapflag nomemo + +// Suspicious shipwreck +1@tre mapflag nomemo + +// Poring Town +1@begi mapflag nomemo + +// Illusion Turtle island (Archery) +tur_d03_i mapflag nomemo +tur_d04_i mapflag nomemo + +// Volcanic island Korodo +1@crd mapflag nomemo + +// Noodles Festival July +1@drdo mapflag nomemo + +// Illusion Teddy Bear Nasarian Empire +ein_d02_i mapflag nomemo + +// Illusion Ruande +com_d02_i mapflag nomemo + +// Soul Reaper Job Change +1@soul mapflag nomemo + +// Star Emperor Job Change +star_frst mapflag nomemo +star_in mapflag nomemo diff --git a/npc/re/mapflag/nopenalty.txt b/npc/re/mapflag/nopenalty.txt index e9426458df..8925f5147c 100644 --- a/npc/re/mapflag/nopenalty.txt +++ b/npc/re/mapflag/nopenalty.txt @@ -71,3 +71,25 @@ job3_gen01 mapflag nopenalty job3_sha01 mapflag nopenalty job_ko mapflag nopenalty job_gun mapflag nopenalty + +// Nightmare Biolab +lhz_dun_n mapflag nopenalty +lhz_d_n2 mapflag nopenalty + +// Ep 16 +prt_cas mapflag nopenalty +prt_cas_q mapflag nopenalty +prt_pri00 mapflag nopenalty +prt_lib mapflag nopenalty +prt_lib_q mapflag nopenalty +que_swat mapflag nopenalty + +// Rockridge +har_in01 mapflag nopenalty +rebel_in mapflag nopenalty +rockmi2 mapflag nopenalty + +// Lasagna +lasagna mapflag nopenalty +lasa_in01 mapflag nopenalty +conch_in mapflag nopenalty diff --git a/npc/re/mapflag/nosave.txt b/npc/re/mapflag/nosave.txt index 019ae3e433..0b6fb58c43 100644 --- a/npc/re/mapflag/nosave.txt +++ b/npc/re/mapflag/nosave.txt @@ -137,3 +137,38 @@ que_avan01 mapflag nosave SavePoint 1@uns mapflag nosave SavePoint un_myst mapflag nosave SavePoint 1@mcd mapflag nosave SavePoint + +// Ep 16 +que_swat mapflag nosave SavePoint +1@mir mapflag nosave SavePoint +2@mir mapflag nosave SavePoint +1@sthb mapflag nosave SavePoint +1@sthc mapflag nosave SavePoint +1@sthd mapflag nosave SavePoint +1@slw mapflag nosave SavePoint +1@swat mapflag nosave SavePoint + +// Rockridge +rockmi2 mapflag nosave SavePoint + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag nosave SavePoint +2@gl_k2 mapflag nosave SavePoint + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag nosave SavePoint + +// Suspicious shipwreck +1@tre mapflag nosave SavePoint + +// Poring Town +1@begi mapflag nosave SavePoint + +// Volcanic island Korodo +1@crd mapflag nosave SavePoint + +// Noodles Festival July +1@drdo mapflag nosave SavePoint + +// Soul Reaper Job Change +1@soul mapflag nosave SavePoint diff --git a/npc/re/mapflag/noteleport.txt b/npc/re/mapflag/noteleport.txt index 30d8c009d9..ff049c1cc1 100644 --- a/npc/re/mapflag/noteleport.txt +++ b/npc/re/mapflag/noteleport.txt @@ -83,20 +83,6 @@ gl_cas02_ mapflag noteleport 1@def03 mapflag noteleport 1@def03 mapflag monster_noteleport -// Heroes' Trails - Part 1 ======= -1@gef mapflag noteleport -1@gef mapflag monster_noteleport -1@face mapflag noteleport -1@face mapflag monster_noteleport -1@sara mapflag noteleport -1@sara mapflag monster_noteleport -1@gef_in mapflag noteleport -1@gef_in mapflag monster_noteleport -1@glast mapflag noteleport -1@glast mapflag monster_noteleport -dali mapflag noteleport -dali02 mapflag noteleport - // Heroes' Trail - Part 1 ======== 1@face mapflag noteleport 1@face mapflag monster_noteleport @@ -162,6 +148,10 @@ un_bk_q mapflag monster_noteleport verus04 mapflag monster_noteleport 1@mcd mapflag monster_noteleport +// Nightmare Biolab +lhz_dun_n mapflag noteleport +lhz_d_n2 mapflag noteleport + // WOE:TE Maps =================== te_prtcas01 mapflag noteleport te_prtcas02 mapflag noteleport @@ -184,12 +174,56 @@ te_aldecas3 mapflag monster_noteleport te_aldecas4 mapflag monster_noteleport te_aldecas5 mapflag monster_noteleport -// Episode 15 -1@lab mapflag noteleport -1@uns mapflag noteleport -un_bk_q mapflag noteleport -un_myst mapflag noteleport -verus04 mapflag noteleport -1@lab mapflag monster_noteleport -1@uns mapflag monster_noteleport -un_bk_q mapflag monster_noteleport +// Ep 16 +prt_cas mapflag noteleport +prt_cas_q mapflag noteleport +prt_pri00 mapflag noteleport +prt_lib mapflag noteleport +prt_lib_q mapflag noteleport +que_swat mapflag noteleport +rebel_in mapflag noteleport +rebel_in mapflag monster_noteleport +1@mir mapflag noteleport +2@mir mapflag noteleport +1@sthb mapflag noteleport +1@sthc mapflag noteleport +1@sthd mapflag noteleport +1@slw mapflag noteleport +1@swat mapflag noteleport +1@mir mapflag monster_noteleport +2@mir mapflag monster_noteleport +1@sthb mapflag monster_noteleport +1@sthc mapflag monster_noteleport +1@sthd mapflag monster_noteleport +1@slw mapflag monster_noteleport +1@swat mapflag monster_noteleport + +// Rockridge +har_in01 mapflag noteleport +rockmi2 mapflag noteleport + +// Lasagna +lasa_in01 mapflag noteleport +conch_in mapflag noteleport + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag noteleport +2@gl_k2 mapflag noteleport + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag noteleport + +// Suspicious shipwreck +1@tre mapflag noteleport + +// Poring Town +1@begi mapflag noteleport + +// Volcanic island Korodo +1@crd mapflag noteleport + +// Noodles Festival July +1@drdo mapflag noteleport + +// Soul Reaper Job Change +1@soul mapflag noteleport diff --git a/npc/re/mapflag/nowarp.txt b/npc/re/mapflag/nowarp.txt index 7d9a256198..e52cf2fdd6 100644 --- a/npc/re/mapflag/nowarp.txt +++ b/npc/re/mapflag/nowarp.txt @@ -30,3 +30,14 @@ un_bk_q mapflag nowarp un_myst mapflag nowarp job_gun mapflag nowarp + +// Nightmare Biolab +lhz_dun_n mapflag nowarp +lhz_d_n2 mapflag nowarp + +// Ep 16 +que_swat mapflag nowarp + +// Rockridge +un_myst mapflag nowarp +rockmi2 mapflag nowarp diff --git a/npc/re/mapflag/nowarpto.txt b/npc/re/mapflag/nowarpto.txt index 9651adb6b6..53a0f97862 100644 --- a/npc/re/mapflag/nowarpto.txt +++ b/npc/re/mapflag/nowarpto.txt @@ -111,10 +111,52 @@ te_aldecas3 mapflag nowarpto te_aldecas4 mapflag nowarpto te_aldecas5 mapflag nowarpto -// Episode 15 -1@lab mapflag nowarpto -1@uns mapflag nowarpto -un_bk_q mapflag nowarpto -un_myst mapflag nowarpto - +// Rebellion Job Change Map job_gun mapflag nowarpto + +// Ep 16 +prt_cas mapflag nowarpto +prt_cas_q mapflag nowarpto +prt_pri00 mapflag nowarpto +prt_lib mapflag nowarpto +prt_lib_q mapflag nowarpto +rebel_in mapflag nowarpto +que_swat mapflag nowarpto +1@mir mapflag nowarpto +2@mir mapflag nowarpto +1@sthb mapflag nowarpto +1@sthc mapflag nowarpto +1@sthd mapflag nowarpto +1@slw mapflag nowarpto +1@swat mapflag nowarpto + +// Rockridge +har_in01 mapflag nowarpto +rockmi2 mapflag nowarpto + +// Lasagna +lasa_in01 mapflag nowarpto +conch_in mapflag nowarpto +lasa_dun_q mapflag nowarpto + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag nowarpto +2@gl_k2 mapflag nowarpto + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag nowarpto + +// Suspicious shipwreck +1@tre mapflag nowarpto + +// Poring Town +1@begi mapflag nowarpto + +// Volcanic island Korodo +1@crd mapflag nowarpto + +// Noodles Festival July +1@drdo mapflag nowarpto + +// Soul Reaper Job Change +1@soul mapflag nowarpto diff --git a/npc/re/mapflag/partylock.txt b/npc/re/mapflag/partylock.txt index bc57976eed..1f2dc76a50 100644 --- a/npc/re/mapflag/partylock.txt +++ b/npc/re/mapflag/partylock.txt @@ -47,16 +47,69 @@ 1@def02 mapflag partylock 1@def03 mapflag partylock -// Heroes' Trails - Part 1 ======== -1@gef mapflag partylock +// Heroes' Trail - Part 1 ======== 1@face mapflag partylock 1@sara mapflag partylock -1@gef_in mapflag partylock -1@glast mapflag partylock -// Horror Toy Factory +// Heroes' Trail - Part 2 ======== +1@ge_st mapflag partylock +1@gef mapflag partylock +1@gef_in mapflag partylock +1@spa mapflag partylock +1@tnm1 mapflag partylock +1@tnm2 mapflag partylock +1@tnm3 mapflag partylock + +// Horror Toy Factory Memorial Dungeon 1@xm_d mapflag partylock -// Central Laboratory Memorial ==== +// Heroes' Trail - Part 3 ======== +1@glast mapflag partylock +1@air1 mapflag partylock +1@air2 mapflag partylock + +// Decisive Battle - Part 1 ====== +1@dth1 mapflag partylock +1@dth2 mapflag partylock +1@dth3 mapflag partylock +1@rev mapflag partylock + +// Decisive Battle - Part 2 ====== +1@eom mapflag partylock +1@jtb mapflag partylock + +// Episode 15 - Phantasmagorica 1@lab mapflag partylock 1@uns mapflag partylock +1@mcd mapflag partylock + +// Ep 16 +1@mir mapflag partylock +2@mir mapflag partylock +1@sthb mapflag partylock +1@sthc mapflag partylock +1@sthd mapflag partylock +1@slw mapflag partylock +1@swat mapflag partylock + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag partylock +2@gl_k2 mapflag partylock + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag partylock + +// Suspicious shipwreck +1@tre mapflag partylock + +// Poring Town +1@begi mapflag partylock + +// Volcanic island Korodo +1@crd mapflag partylock + +// Noodles Festival July +1@drdo mapflag partylock + +// Soul Reaper Job Change +1@soul mapflag partylock diff --git a/npc/re/mapflag/restricted.txt b/npc/re/mapflag/restricted.txt index 518abd40c5..e0a602a269 100644 --- a/npc/re/mapflag/restricted.txt +++ b/npc/re/mapflag/restricted.txt @@ -20,6 +20,15 @@ 1@ma_b mapflag restricted 6 1@ecl mapflag restricted 6 +// Glast Heim Memorial Dungeon === +1@gl_k mapflag restricted 6 +2@gl_k mapflag restricted 6 + +// Wave Mode Memorial Dungeon ==== +1@def01 mapflag restricted 6 +1@def02 mapflag restricted 6 +1@def03 mapflag restricted 6 + // Heroes' Trail - Part 1 ======== 1@face mapflag restricted 6 1@sara mapflag restricted 6 @@ -56,6 +65,37 @@ 1@uns mapflag restricted 6 1@mcd mapflag restricted 6 +// Ep 16 +1@mir mapflag restricted 6 +2@mir mapflag restricted 6 +1@sthb mapflag restricted 6 +1@sthc mapflag restricted 6 +1@sthd mapflag restricted 6 +1@slw mapflag restricted 6 +1@swat mapflag restricted 6 + +// Chicken Mode Nightmare Glastheim +1@gl_k2 mapflag restricted 6 +2@gl_k2 mapflag restricted 6 + +// Chicken Mode Horror Toy Factory +1@xm_d2 mapflag restricted 6 + +// Suspicious shipwreck +1@tre mapflag restricted 6 + +// Poring Town +1@begi mapflag restricted 6 + +// Volcanic island Korodo +1@crd mapflag restricted 6 + +// Noodles Festival July +1@drdo mapflag restricted 6 + +// Soul Reaper Job Change +1@soul mapflag restricted 6 + // Towns ========================= brasilis mapflag restricted 7 dewata mapflag restricted 7 @@ -68,6 +108,7 @@ izlude_d mapflag restricted 7 malangdo mapflag restricted 7 malaya mapflag restricted 7 mora mapflag restricted 7 +lasagna mapflag restricted 7 // Restricted maps for WOE:TE Items == teg_dun01 mapflag restricted 8 diff --git a/npc/re/mapflag/town.txt b/npc/re/mapflag/town.txt index a779d2be31..3262f2f242 100644 --- a/npc/re/mapflag/town.txt +++ b/npc/re/mapflag/town.txt @@ -24,3 +24,4 @@ izlude_d mapflag town malangdo mapflag town malaya mapflag town mora mapflag town +lasagna mapflag town diff --git a/npc/re/merchants/advanced_refiner.txt b/npc/re/merchants/advanced_refiner.txt index 574ca76030..d1f70dc946 100644 --- a/npc/re/merchants/advanced_refiner.txt +++ b/npc/re/merchants/advanced_refiner.txt @@ -70,33 +70,31 @@ malangdo,221,174,6 script Holink#mal_cash 559,{ close; } mes "[Holink]"; - // TODO: Price is different to Suhnbi of Payon. Intended? [Secret] - .@material = getequiprefinecost(.@part, REFINE_COST_ENRICHED, REFINE_MATERIAL_ID); + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count + .@price = getequiprefinecost(.@part, REFINE_COST_HOLINK, REFINE_ZENY_COST); + .@material = getequiprefinecost(.@part, REFINE_COST_HOLINK, REFINE_MATERIAL_ID); + switch(getequipweaponlv(.@part)) { default: case 0: // Armor - set .@price,15000; - set .@type$,"armor"; + .@type$ = "armor"; mes "You have chosen an armor, meow~"; break; case 1: // Level 1 Weapon - set .@price,500; - set .@type$,"weapon"; + .@type$ = "weapon"; mes "A level 1 weapon...?"; break; case 2: // Level 2 Weapon - set .@price,2000; - set .@type$,"weapon"; + .@type$ = "weapon"; mes "Meow, a level 2 weapon...?"; break; case 3: // Level 3 Weapon - set .@price,20000; - set .@type$,"weapon"; + .@type$ = "weapon"; mes "Meow Meow~~ A level 3 weapon~~"; break; case 4: // Level 4 Weapon - set .@price,50000; - set .@type$,"weapon"; + .@type$ = "weapon"; mes "Me-Meow!... A level 4 weapon...!"; mes "I've only seen it twice while"; mes "learning from Aragam... Me-Meow!!"; @@ -108,7 +106,7 @@ malangdo,221,174,6 script Holink#mal_cash 559,{ if(select("Yes!!:No!!") == 2) { mes "[Holink]"; mes "Kyack!!"; - mes "You don't belive in refine master Holink, meow?~"; + mes "You don't believe in refine master Holink, meow?~"; close; } if (getequippercentrefinery(.@part, true) < 100) { @@ -148,6 +146,18 @@ malangdo,221,174,6 script Holink#mal_cash 559,{ } delitem .@material,1; set Zeny, Zeny-.@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Holink]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + if (getequippercentrefinery(.@part, true) > rand(100)) { successrefitem .@part; mes "[Holink]"; diff --git a/npc/re/merchants/bio4_reward.txt b/npc/re/merchants/bio4_reward.txt index 325fe3fbbe..94847df810 100644 --- a/npc/re/merchants/bio4_reward.txt +++ b/npc/re/merchants/bio4_reward.txt @@ -18,11 +18,11 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ next; if (select("Ignore him", "Talk with him") == 1) { mes "[Weird old man]"; - mes "You, Very bad young man!"; + mes "You, very bad young man!"; close; } mes "["+ strcharinfo(0) +"]"; - mes "Sir, Are you alright??"; + mes "Sir, are you alright??"; next; mes "[Weird old man]"; mes "....?? You are not like other young people. You have good manners! You know what happened to me..?"; @@ -30,16 +30,16 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ switch(rand(1,2)) { case 1: mes "[Weird old man]"; - mes "I was on the way to visit my son who lives in Rune Midgarts. It's really far away, so I took the airplane, and.."; + mes "I was on the way to visit my son who lives in Rune Midgard. It's really far away, so I took the airplane, and.."; next; mes "[Weird old man]"; - mes "those young people...so noisy.... I was standing but non of them offered me a seat..and they were just talking in loud voices which bothered everyone."; + mes "those young people...so noisy.... I was standing but none of them offered me a seat..and they were just talking loudly which bothered everyone."; next; mes "[Weird old man]"; - mes "I could lecture them if I were 10 years younger than now.."; + mes "I could lecture them if I were 10 years younger.."; next; mes "[Weird old man]"; - mes "Pffff.. Never like the time passing...."; + mes "Pffff.. Never liked the passing of time...."; next; mes "[Weird old man]"; mes "So, you... what would you do??"; @@ -50,16 +50,16 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ break; case 2: mes "[Weird old man]"; - mes "I was on the way to visit my son who lives in Rune Midgarts. It's really far away, so I took the airplane, and.."; + mes "I was on the way to visit my son who lives in Rune Midgard. It's really far away, so I took the airplane, and.."; next; mes "[Weird old man]"; - mes "those young people...so noisy.... I was standing but non of them offered me a seat..and they were just talking in loud voices which bothered everyone."; + mes "those young people...so noisy.... I was standing but none of them offered me a seat..and they were just talking loudly which bothered everyone."; next; mes "[Weird old man]"; - mes "I could lecture them if I were 10 years younger than now.."; + mes "I could lecture them if I were 10 years younger.."; next; mes "[Weird old man]"; - mes "Pffff.. Never like the time passing...."; + mes "Pffff.. Never liked the passing of time...."; next; mes "[Weird old man]"; mes "So, you... what would you do??"; @@ -73,44 +73,44 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ switch(rand(1,2)) { case 1: mes "[Weird old man]"; - mes "Oh, and then! you know what...?"; + mes "Oh, and then you know what...?"; next; mes "[Weird old man]"; - mes "Once I was walking in the town, and some boy were spitting on the street, and were bothering girls who were passing by...tut tut!"; + mes "Once I was walking in the town and some boys were spitting on the street and were bothering girls who were passing by...tut tut!"; next; mes "[Weird old man]"; - mes "The world is going to the dogs.. How will it be?? It was even a day time when they were doing it..tut tut."; + mes "The world is going to the dogs.. How will it be?? It was even day time when they were doing it..tut tut."; next; switch(rand(1,2)) { case 1: mes "[Weird old man]"; - mes "Oh, and then! you know what...?"; + mes "Oh, and then you know what...?"; next; break; case 2: mes "[Weird old man]"; - mes "Oh, and then! you know what...?"; + mes "Oh, and then you know what...?"; next; mes "[Weird old man]"; mes "Lately young people are not so patient!!!!"; next; mes "[Weird old man]"; - mes "That often, they say they will quit.. they say they can't more. How will they live all the lift with that kind of mentality..tut tut."; + mes "So often they say they will quit.. they say they can't do more. How will they live life with that kind of mentality..tut tut."; next; mes "[Weird old man]"; - mes "It's not easy to find a job, it is very difficult to be hired. But then they even cannot stand a week there, and leave the work already."; + mes "It's not easy to find a job. It is very difficult to be hired but then they even cannot stand a week there and leave the work place."; next; mes "[Weird old man]"; mes "How impatient and irresponsible!!"; next; mes "[Weird old man]"; - mes "Oh, and then! you know what...?"; + mes "Oh, and then you know what...?"; next; break; } case 2: mes "[Weird old man]"; - mes "Oh, and then! you know what...?"; + mes "Oh, and then you know what...?"; next; break; } @@ -121,17 +121,17 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ mes "Hm......You are not like common young people, you seem pretty patient too. I like that!!!"; next; mes "[Weird old man]"; - mes "Now I am just an old, weak man but when I was young, I was a famous merchant in the town."; + mes "Now I am just an weak old man but when I was young I was a famous merchant in the town."; next; mes "[Weird old man]"; mes "It's been a while since I stopped the business,"; mes "but a former client of mine contacted me and asked me"; next; mes "[Weird old man]"; - mes "If I could get him some unknown objects named 'Will of Warrior', 'Thirst for Blood', 'Chill of the Dead'."; + mes "If I could get him some unknown objects named 'Will of Warrior', 'Thirst for Blood', and 'Chill of the Dead'."; next; mes "[Weird old man]"; - mes "I liked your politeness which is not like most of young people, so if you get me those, I will dare to give you some stuffs that I consider as my treasures."; + mes "I like your politeness which most young people don't have, so if you get me those, I will give you some stuff that I consider as my treasure."; next; while(1) { switch(select("When I gather them, I will come back", "Show me the armors", "Show me the weapons")) { @@ -160,7 +160,7 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ switch(select( "Show me other items.", ""+.@armor$[1]+"Giant Shield^000000", - ""+.@armor$[2]+"Acient Book of Geffenia-Water^000000", + ""+.@armor$[2]+"Ancient Book of Geffenia-Water^000000", ""+.@armor$[3]+"Bible of Promise(2nd Vol.)^000000", ""+.@armor$[4]+"Salvage Cape^000000", ""+.@armor$[5]+"Assassin's Handcuffs^000000", @@ -180,7 +180,7 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ callsub L_Reward, 2160, 100, 50, 35; //Giant_Shield break; case 3: - mes "<<Acient Book of Geffenia-Water[1]>>"; + mes "<<Ancient Book of Geffenia-Water[1]>>"; mes "INT + 1, MDEF + 2. If Original INT point is 120, MATK + 10, MHP + 800."; mes "When equipping with Lacryma Stick, the casting % from Storm Gust, Frost Misty and Jack frost will discount equivalent to 4 times Refine Lv."; mes "Shield / Def 30 / Weight 100 / Required Lv 100 / Socket 1 / for Warlock"; @@ -194,7 +194,7 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ break; case 5: mes "<<Salvage Cape[0]>>"; - mes "Allow to use 'Cicada Skin Shed'(Lv 1). Cool time for this skill will be 30 seconds. When equiping it, SP consumption for using any skill will be doubled, When taking it off, SP - 1200."; + mes "Allow to use 'Cicada Skin Shed'(Lv 1). Cool down time for this skill will be 30 seconds. When equipping it, SP consumption for using any skill will be doubled, When taking it off, SP - 1200."; mes "Garment / Def 1 / Weight 40 / Required Lv 130 / Socket 0 / for Archbishop"; callsub L_Reward, 2582, 300, 300, 400; //Salvage_Cape break; @@ -316,13 +316,13 @@ lighthalzen,342,291,4 script Weird old man#Bio4Reward 4_M_EINOLD,{ case 10: mes "<<Aztoe Nail[0]>>"; mes "MATK + 80. For Physical Melee Attack, cast Freezing to the target with a certain chance. The chance is affected by Refine Lv."; - mes "Dagger / ATK 160 / Weight 50 / Wind Property / Weapon Lv 4 / Required Lv 110 / Socket 0 / for High Swordman/Merchant/Theif Classes"; + mes "Dagger / ATK 160 / Weight 50 / Wind Property / Weapon Lv 4 / Required Lv 110 / Socket 0 / for High Swordman/Merchant/Thief Classes"; callsub L_Reward, 13069, 50, 100, 35; //Aztoe_Nail break; case 11: mes "<<Scarletto Nail[0]>>"; mes "MATK + 80. For Physical Melee Attack, cast Stone curse to the target with a certain chance. The chance is affected by Refine Lv."; - mes "Dagger / ATK 160 / Weight 50 / Fire Property / Weapon Lv 4 / Required Lv 110 / Socket 0 / for High Swordman/Merchant/Theif Classes"; + mes "Dagger / ATK 160 / Weight 50 / Fire Property / Weapon Lv 4 / Required Lv 110 / Socket 0 / for High Swordman/Merchant/Thief Classes"; callsub L_Reward, 13070, 50, 100, 35; //Scarletto_Nail break; case 12: @@ -394,7 +394,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ mes "[Pudding]"; mes "... .... ..."; next; - switch(select("Umba umba humbaa", "What are you doing here?", "Which are the equipments found so far?", "Here you are, Sir.")) { + switch(select("Umba umba humbaa", "What are you doing here?", "Which are the equipments found so far?", "Here you are, sir.")) { case 1: emotion ET_FRET; mes "[Pudding]"; @@ -402,7 +402,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ close; case 2: mes "[Pudding]"; - mes "As you can see, I'm a training Sorcerer, and my name is Pudding."; + mes "As you can see I'm a training Sorcerer, and my name is Pudding."; next; select("....?"); emotion ET_FRET; @@ -411,17 +411,17 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ next; emotion ET_OK; mes "[Pudding]"; - mes "Couple of days ago, while I was undergoing discipline, I felt a strange, bizzare tinge. So I followed that and it brought me here."; + mes "A couple of days ago while I was undergoing discipline, I felt a strange, bizarre tinge. So I followed that and it brought me here."; next; select("I see."); mes "[Pudding]"; - mes "OK, let me continue. I am so bothered if you disturb me while I'm talking."; + mes "OK, let me continue. I become bothered if you disturb me while I'm talking."; next; mes "[Pudding]"; - mes "And I entered to the laboratory here in order to investigate, and oh gosh! I found those monsters which were like doppelgangers from 'Geffen Dungeon'. It was full of them."; + mes "And I entered to the laboratory here in order to investigate and oh gosh! I found those monsters which were like doppelgangers from 'Geffen Dungeon'. It was full of them."; next; mes "[Pudding]"; - mes "From those monsters, I could find rare items like '^F2766EWill of Warrior^000000' '^952420Thirst for Blood^000000' '^88C6F7Chill of the Dead^000000' which you cannot find from any other place."; + mes "From those monsters, I could find rare items like '^F2766EWill of Warrior^000000', '^952420Thirst for Blood^000000', and '^88C6F7Chill of the Dead^000000' which you cannot find in any other place."; next; emotion ET_QUESTION; mes "[Pudding]"; @@ -443,7 +443,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ break; } mes "[Pudding]"; - mes "Those '^F2766EWill of Warrior^000000' and '^952420Thirst for Blood^000000'..... are aggresive but warm materials."; + mes "Those '^F2766EWill of Warrior^000000' and '^952420Thirst for Blood^000000'..... are aggressive but warm materials."; next; mes "[Pudding]"; mes "So '^F2766EWill of Warrior^000000' can dwell a special power to the 4th slot of an equipment,"; @@ -453,8 +453,8 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ next; mes "[Pudding]"; mes "Whereas!!!"; - mes "'^88C6F7Chill of the Dead^000000' is a cold type material."; - mes "which allows to return the power from '^F2766EWill of Warrior^000000' or '^952420Thirst for Blood^000000' so it let the equipment to be 'ZERO'."; + mes "'^88C6F7Chill of the Dead^000000' is a cold type material"; + mes "which allows the return of power from '^F2766EWill of Warrior^000000' or '^952420Thirst for Blood^000000' so makes the equipment no longer enchanted."; next; mes "[Pudding]"; mes "What do you say? Doesn't it sound interesting? But, there's a problem..."; @@ -466,7 +466,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ emotion ET_QUESTION, playerattached(); emotion ET_FRET; mes "[Pudding]"; - mes "Gee.. I told you not to cut while I talk, didn't I? Well, I will answer that becuase that's important."; + mes "Gee.. I told you not to cut while I talk, didn't I? Well, I will answer that because that's important."; next; mes "[Pudding]"; mes "If you bring me 10 '^F2766EWill of Warrior^000000' or 10 '^952420Thirst for Blood^000000', I will dwell some power to certain equipments that you can find in the Lab.."; @@ -475,7 +475,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ mes "And if you are not satisfied with the power you got, bring me 10 '^88C6F7Chill of the Dead^000000', and I will take off that power."; next; mes "[Pudding]"; - mes "WHat do you say? Having both options.....quite nice, huh?"; + mes "What do you say? Having both options.....quite nice, huh?"; next; mes "[Pudding]"; mes "If you obtain '^F2766EWill of Warrior^000000' or '^952420Thirst for Blood^000000', and obtain also equipment which is capable to accept their power, bring them to me. I will be waiting."; @@ -500,7 +500,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 2: mes "< Armor List >"; mes "Giant Shield[1]"; - mes "Acient Book of Geffenia-Water[1]"; + mes "Ancient Book of Geffenia-Water[1]"; mes "Bible of Promise(2nd Vol.)[1]"; mes "Salvage Cape[0]"; mes "Assassin's Handcuffs[1]"; @@ -592,7 +592,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 3: if (!getequipisequiped(EQI_HAND_L)) { mes "[Pudding]"; - mes "Well.. You are not equipping anything on the left hand."; + mes "Well.. You have nothing equipped on the left hand."; close; } .@part = EQI_HAND_L; @@ -600,7 +600,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 4: if (!getequipisequiped(EQI_HAND_R)) { mes "[Pudding]"; - mes "Well.. You are not equipping anything on the right hand."; + mes "Well.. You have nothing equipped on the right hand."; close; } .@part = EQI_HAND_R; @@ -632,7 +632,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 8: if (!getequipisequiped(EQI_HEAD_TOP)) { mes "[Pudding]"; - mes "Hey.. Are you not wearing any Helm?"; + mes "Hey.. Are you not wearing any helm?"; close; } .@part = EQI_HEAD_TOP; @@ -659,7 +659,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ .@lhz_max_num = 4200; } else { mes "[Pudding]"; - mes "Before! I need to check if this equipment can accept the power."; + mes "First! I need to check if this equipment can accept the power."; next; specialeffect2 EF_SPHERE; progressbar "ffff00", 2; @@ -688,7 +688,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ else .@menu_in$[3] = "Not enough ^999999'Chill of the Dead'^000000"; mes "[Pudding]"; - mes "OK! Which power do you want to dwell in your equipment?"; + mes "OK! Which power do you want to dwell into your equipment?"; next; switch(select("I say no! I don't need that!!", .@menu_in$[1], .@menu_in$[2], .@menu_in$[3])) { case 1: @@ -698,12 +698,12 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 2: if (countitem(6469) < 10) { mes "[Pudding]"; - mes "Not enough '^F2766EWill of Warrior^000000', You need to bring 10 '^F2766EWill of Warrior^000000'"; + mes "Not enough '^F2766EWill of Warrior^000000'. You need to bring 10 '^F2766EWill of Warrior^000000'"; close; } else if (getequipcardid(.@part, 3) > 0) { mes "[Pudding]"; - mes "This equipment already got the power of '^F2766EWill of Warrior^000000'."; + mes "This equipment already has the power of '^F2766EWill of Warrior^000000'."; close; } else { .@socket_type = 4; @@ -712,12 +712,12 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 3: if (countitem(6470) < 10) { mes "[Pudding]"; - mes "Not enough '^952420Thirst for Blood^000000', You need to bring 10 '^952420Thirst for Blood^000000'"; + mes "Not enough '^952420Thirst for Blood^000000'. You need to bring 10 '^952420Thirst for Blood^000000'"; close; } else if (getequipcardid(.@part, 2) > 0) { mes "[Pudding]"; - mes "This equipment already got the power of '^952420Thirst for Blood^000000'."; + mes "This equipment already has the power of '^952420Thirst for Blood^000000'."; close; } else { .@socket_type = 3; @@ -747,7 +747,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ mes "[Pudding]"; mes "Alright, which power do you want to remove?"; next; - .@menu = select("No, I don't wannna remove any.", .@menu_clear$[1], .@menu_clear$[2]); + .@menu = select("No, I don't wanna remove any.", .@menu_clear$[1], .@menu_clear$[2]); switch(.@menu){ case 1: mes "[Pudding]"; @@ -757,7 +757,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ case 3: if (countitem(6471) < 10) { mes "[Pudding]"; - mes "Not enough '^88C6F7Chill of the Dead^000000', You need to bring 10 '^88C6F7Chill of the Dead^000000'"; + mes "Not enough '^88C6F7Chill of the Dead^000000'. You need to bring 10 '^88C6F7Chill of the Dead^000000'"; close; } if ( (.@menu==3 && .@3thzptsodyd == 1) || (.@menu==2 && .@4thzptsodyd == 1) ) { @@ -786,24 +786,24 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ } } mes "[Pudding]"; - mes "Before I dwell the power, let me explain to you cautions."; + mes "Before I dwell the power, let me caution you."; next; mes "[Pudding]"; - mes "While dwelling the power of '^F2766EWill of Warrior^000000' or '^952420Thirst for Blood^000000', the equipment would be not capable to accept that and will be destryed.."; + mes "While I dwell the power of '^F2766EWill of Warrior^000000' or '^952420Thirst for Blood^000000', the equipment could be not capable of accepting it and will be destroyed as a result.."; next; mes "[Pudding]"; mes "^9D2628If the equipment is destroyed, you will also lose the cards you inserted in it, and the refine Lv will be removed too.^000000"; next; mes "[Pudding]"; - mes "Alright. will you really wish to dwell the power into the equipment?"; + mes "Alright. Do you really wish to dwell the power into the equipment?"; next; if (select("Wait, I will think again.", "Sure, carry on.") == 1) { mes "[Pudding]"; - mes "OK. I will be hoping to see you again."; + mes "OK. I hope to see you again."; close; } mes "[Pudding]"; - mes "I wish you made a correct decision..."; + mes "I hope you made the correct decision..."; next; if (.@socket_type >= 3) { switch(.@type){ @@ -978,7 +978,7 @@ lhz_cube,233,24,4 script Sorcerer#Bio4Reward 4_M_UMDANCEKID,{ getitem2 .@equip_item, 1, 1, .@refine_count, 0, .@equip_card[0], .@equip_card[1], .@equip_card[2], .@equip_card[3]; emotion ET_DELIGHT; mes "[Pudding]"; - mes "Fortunately the power of "+((.@socket_type==3)?"'^952420Thirst for Blood^000000'":"'^F2766EWill of Warrior^000000'")+" has been dwelt well in your equipment..."; + mes "Fortunately, the power of "+((.@socket_type==3)?"'^952420Thirst for Blood^000000'":"'^F2766EWill of Warrior^000000'")+" has been dwelt well into your equipment..."; close; } } diff --git a/npc/re/merchants/card_separation.txt b/npc/re/merchants/card_separation.txt index 8118dd6644..2a621db044 100644 --- a/npc/re/merchants/card_separation.txt +++ b/npc/re/merchants/card_separation.txt @@ -105,7 +105,8 @@ break; } - setarray .@equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3); + setarray .@check_equip_card[0], getequipcardid(.@equip_num,0),getequipcardid(.@equip_num,1),getequipcardid(.@equip_num,2),getequipcardid(.@equip_num,3); + setarray .@equip_card[0], .@check_equip_card[0], .@check_equip_card[1], .@check_equip_card[2], .@check_equip_card[3]; set .@mvp_list$, "|4408|4128|4456|4168|4142"+ //Gloom_Under_Night_Card, Golden_Bug_Card, Nidhogg_Shadow_Card, Dark_Lord_Card, Doppelganger_Card "|4134|4137|4386|4407|4357"+ //Dracula_Card, Drake_Card, Detale_Card, Randgris_Card, B_Seyren_Card @@ -118,9 +119,9 @@ "|4363|4324|4361|4330|4342|"; //B_Magaleta_Card, Garm_Card, B_Harword_Card, Dark_Snake_Lord_Card, Rsx_0806_Card if (.@Jeremy) { - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i] >= 4700) // Armor Enchant System - set .@equip_card[.@i],0; + for ( .@i = 0; .@i < MAX_SLOTS; .@i++ ) { + if (callfunc("F_IsCharm",.@equip_card[.@i]) == true) + .@equip_card[.@i] = 0;// Armor Enchant System } if (!getarraysize(.@equip_card)) { mes .@n$; @@ -136,7 +137,7 @@ // Official "Richard" script uses a hardcoded list including every possible item. //if (!getequipisequiped(.@equip_num)) { // mes "[Richard]"; - // mes "I'm sorry. We don't provide that equipmnet yet."; + // mes "I'm sorry. We don't provide that equipment yet."; // close; //} @@ -144,11 +145,12 @@ mes "Which number socket do you want to separate the card? From the left socket, they are sorted 1,2,3,4."; next; set .@menu$,""; - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i] && .@equip_card[.@i] < 4700) // Armor Enchant System - set .@menu$, .@menu$+"Socket "+(.@i+1)+" - "+getitemname(.@equip_card[.@i])+":"; - else - set .@menu$, .@menu$+"^777777Socket "+(.@i+1)+" - No card^000000:"; + for ( .@i = 0; .@i < MAX_SLOTS; .@i++ ) { + if (.@equip_card[.@i] && callfunc("F_IsCharm",.@equip_card[.@i]) == false) // Armor Enchant System + .@menu$ = .@menu$ + "Socket " + (.@i+1) + " - " + getitemname(.@equip_card[.@i])+":"; + else { + .@menu$ = .@menu$ + "^777777Socket " + (.@i+1) + " - No card^000000:"; + } } set .@i, select("Stop the work:"+.@menu$); switch(.@i) { @@ -158,7 +160,7 @@ close; default: set .@slot, .@i-2; - if (.@equip_card[.@slot] == 0 || .@equip_card[.@slot] >= 4700) { + if (.@equip_card[.@slot] == 0 || callfunc("F_IsCharm",.@equip_card[.@slot]) == true) { mes .@n$; mes "This socket is not equipped with any card. Why don't you check again?"; close; @@ -287,7 +289,7 @@ set .@equip_refine, getequiprefinerycnt(.@equip_num); // anti-hack - if (callfunc("F_IsEquipCardHack", .@equip_num, .@equip_card[0], .@equip_card[1], .@equip_card[2], .@equip_card[3])) + if (callfunc("F_IsEquipCardHack", .@equip_num, .@check_equip_card[0], .@check_equip_card[1], .@check_equip_card[2], .@check_equip_card[3])) close; delequip .@equip_num; @@ -314,12 +316,12 @@ } } else { set .@card, .@equip_card[.@slot]; - set .@equip_card[.@slot],0; + set .@check_equip_card[.@slot],0; - // Chance of retaining equipment. + // Chance of retaining equipment (all enchantments are preserved). if (rand(1,.@sf_w_num) < 61) { set .@equip_safe,1; - getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3]; + getitem2 .@equip_id,1,1,.@equip_refine,0,.@check_equip_card[0],.@check_equip_card[1],.@check_equip_card[2],.@check_equip_card[3]; } // Chance of retaining card. diff --git a/npc/re/merchants/enchan_ko.txt b/npc/re/merchants/enchan_ko.txt index 23c3777791..7f82e515fb 100644 --- a/npc/re/merchants/enchan_ko.txt +++ b/npc/re/merchants/enchan_ko.txt @@ -258,15 +258,15 @@ que_ng,75,20,3 script Artisan Tene#ko 762,{ // Initialization if (.@select == 2) { - if (.@sot03_ck) { - if (.@equip_card[2] < 4700) { // Armor Enchant System + if (.@sot03_ck) {// reset only 3rd slot + if (callfunc("F_IsCharm",.@equip_card[2]) == false) { // Armor Enchant System mes "[Artisan Tene]"; mes "The third slot is is not enchanted. Please check again."; //custom translation close; } set .@equip_card[2],0; } else { - if (.@equip_card[3] < 4700) { // Armor Enchant System + if (callfunc("F_IsCharm",.@equip_card[3]) == false) { // Armor Enchant System mes "[Artisan Tene]"; mes "This equipment is is not enchanted. Please check again."; //custom translation close; @@ -294,8 +294,8 @@ que_ng,75,20,3 script Artisan Tene#ko 762,{ else set .@ko_type01,5; //custom translations - if (.@equip_card[3] >= 4700) { // Armor Enchant System - if (.@equip_card[2] >= 4700) { + if (callfunc("F_IsCharm",.@equip_card[3]) == true) { // Armor Enchant System + if (callfunc("F_IsCharm",.@equip_card[2]) == true) { mes "[Artisan Tene]"; mes "This equipment cannot be further enchanted."; next; diff --git a/npc/re/merchants/enchan_mal.txt b/npc/re/merchants/enchan_mal.txt index 899714f459..96b948a44b 100644 --- a/npc/re/merchants/enchan_mal.txt +++ b/npc/re/merchants/enchan_mal.txt @@ -649,9 +649,9 @@ L_Socket: delequip EQI_HAND_R; // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3] - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i] >= 4700) // Armor Enchant System - set .@equip_card[.@i],0; + for ( .@i = getiteminfo(.@equip_id,10); .@i < MAX_SLOTS; .@i++ ) { + if (callfunc("F_IsCharm",.@equip_card[.@i]) == true) + .@equip_card[.@i] = 0;// Armor Enchant System } getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3]; diff --git a/npc/re/merchants/enchan_mora.txt b/npc/re/merchants/enchan_mora.txt index 80db547757..9187454351 100644 --- a/npc/re/merchants/enchan_mora.txt +++ b/npc/re/merchants/enchan_mora.txt @@ -1150,9 +1150,9 @@ L_Socket: delequip .@part; // GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3] - for(set .@i,0; .@i<4; set .@i,.@i+1) { - if (.@equip_card[.@i] >= 4700) // Armor Enchant System - set .@equip_card[.@i],0; + for ( .@i = getiteminfo(.@equip_id,10); .@i < MAX_SLOTS; .@i++ ) { + if (callfunc("F_IsCharm",.@equip_card[.@i]) == true) + .@equip_card[.@i] = 0;// Armor Enchant System } getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3]; diff --git a/npc/re/merchants/enchan_upg.txt b/npc/re/merchants/enchan_upg.txt index 2abc3a79af..acc4a55f68 100644 --- a/npc/re/merchants/enchan_upg.txt +++ b/npc/re/merchants/enchan_upg.txt @@ -250,7 +250,7 @@ prt_in,28,73,3 script Devil Enchant Master#prq 63,{ mes "You need to bring some money to initialize!!"; close; } - if (.@equip_card[3] < 4700) { // Armor Enchant System + if (callfunc("F_IsCharm",.@equip_card[3]) == false) { mes "This item is not enchanted!"; close; } diff --git a/npc/re/merchants/hd_refiner.txt b/npc/re/merchants/hd_refiner.txt index 533bba6d36..1f6c86661f 100644 --- a/npc/re/merchants/hd_refiner.txt +++ b/npc/re/merchants/hd_refiner.txt @@ -74,6 +74,8 @@ close; } + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count .@price = getequiprefinecost(.@part, REFINE_COST_HD, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_HD, REFINE_MATERIAL_ID); @@ -105,6 +107,18 @@ } delitem .@material,1; set Zeny, Zeny-.@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Blacksmith Mighty Hammer]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + mes "[Blacksmith Mighty Hammer]"; mes "Tac! Tac! Tac!"; if (getequippercentrefinery(.@part, true) > rand(100)) { @@ -200,6 +214,8 @@ lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 826 mes "This weapon is perfect, no need to refine it anymore~"; close; } + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count .@price = getequiprefinecost(.@part, REFINE_COST_OVER10_HD, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_OVER10_HD, REFINE_MATERIAL_ID); switch(getequipweaponlv(.@part)) { @@ -253,6 +269,18 @@ lhz_in02,280,19,3 duplicate(MightyHammer) Mighty Hammer#lhz 826 } delitem .@material,1; set Zeny, Zeny-.@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Basta]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + mes "Pow! Pow! Pow! Pow!"; if (getequippercentrefinery(.@part, true) > rand(100)) { successrefitem .@part; diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt index 81d8a34e09..e91b509110 100644 --- a/npc/re/merchants/refine.txt +++ b/npc/re/merchants/refine.txt @@ -439,6 +439,8 @@ malangdo,224,172,6 script Clink#mal_normal 544,{ close; } + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count .@price = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_ZENY_COST); .@material = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_MATERIAL_ID); @@ -502,6 +504,18 @@ malangdo,224,172,6 script Clink#mal_normal 544,{ } delitem .@material,1; Zeny = Zeny-.@price; + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Clink]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + if (getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; mes "[Clink]"; diff --git a/npc/re/merchants/ticket_refiner.txt b/npc/re/merchants/ticket_refiner.txt index 1e173135d4..eb2827562a 100644 --- a/npc/re/merchants/ticket_refiner.txt +++ b/npc/re/merchants/ticket_refiner.txt @@ -76,6 +76,8 @@ prontera,184,177,6 script Refine Master 851,{ mes "This item is impossible to refine."; close; } + .@refineitemid = getequipid(.@part); // save id of the item + .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)) { default: case 0: @@ -143,9 +145,20 @@ prontera,184,177,6 script Refine Master 851,{ mes "I have my own special way to refine..."; mes ".......ka boom!"; specialeffect EF_SUI_EXPLOSION; - if (countitem(.@ticket_id)) + if (countitem(.@ticket_id)) { delitem .@ticket_id,1; - else { + + // anti-hack + if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || + callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) { + mes "[Refine Master]"; + emotion ET_FRET; + mes "Wait a second..."; + mes "Do you think I'm stupid?!"; + mes "You switched the item while I wasn't looking! Get out of here!"; + close; + } + } else { next; mes "Error!"; mes "Please report this."; diff --git a/npc/re/mobs/citycleaners.txt b/npc/re/mobs/citycleaners.txt deleted file mode 100644 index b60a2aae47..0000000000 --- a/npc/re/mobs/citycleaners.txt +++ /dev/null @@ -1,31 +0,0 @@ -//===== rAthena Script ======================================= -//= City Cleaners Monster Spawn Script -//===== By: ================================================== -//= Euphy -//===== Current Version: ===================================== -//= 1.0 -//===== Compatible With: ===================================== -//= rAthena Project -//===== Description: ========================================= -//= Spawns monsters to clean up cities. -//===== Additional Comments: ================================= -//= 1.0 First version, Renewal spawns. -//============================================================ - -//================================================== -// Wild Rose City Spawns -//================================================== -brasilis,0,0 monster Wild Rose 1261,1,7200000,3600000 -dewata,0,0 monster Wild Rose 1261,1,7200000,3600000 -malaya,0,0 monster Wild Rose 1261,1,7200000,3600000 -izlude_a,0,0 monster Wild Rose 1261,1,7200000,3600000 -izlude_b,0,0 monster Wild Rose 1261,1,7200000,3600000 -izlude_c,0,0 monster Wild Rose 1261,1,7200000,3600000 -izlude_d,0,0 monster Wild Rose 1261,1,7200000,3600000 - -//================================================== -// Thief Bug Egg City Spawns -//================================================== -payon_in02,23,68,5,5 monster Thief Bug Egg 1048,7,1200000,600000 -jawaii_in,73,117,4,4 monster Thief Bug Egg 1048,1,5400000,3000000 -jawaii_in,83,117,5,5 monster Thief Bug Egg 1048,1,4800000,2400000 diff --git a/npc/re/other/achievements.txt b/npc/re/other/achievements.txt index c574ef9e44..4c1e2daf66 100644 --- a/npc/re/other/achievements.txt +++ b/npc/re/other/achievements.txt @@ -276,3 +276,14 @@ yuno_fild07,113,339,0 duplicate(ach_treasure#core) #yuno_ach7::120058 HIDDEN_WAR yuno_fild08,179,209,0 duplicate(ach_treasure#core) #yuno_ach8::120059 HIDDEN_WARP_NPC,5,5 yuno_fild09,166,228,0 duplicate(ach_treasure#core) #yuno_ach9::120060 HIDDEN_WARP_NPC,5,5 yuno_fild11,141,357,0 duplicate(ach_treasure#core) #yuno_ach10::120061 HIDDEN_WARP_NPC,5,5 + +// If the feature is turned off these NPCs are useless +- script AchievementInit -1,{ + end; + +OnInit: + if( !getbattleflag( "feature.achievement" ) ){ + unloadnpc "ach_treasure#core"; + } + end; +} diff --git a/npc/re/quests/quests_14_3.txt b/npc/re/quests/quests_14_3.txt new file mode 100644 index 0000000000..130696442e --- /dev/null +++ b/npc/re/quests/quests_14_3.txt @@ -0,0 +1,1296 @@ +//===== rAthena Script ======================================= +//= Quest NPCs related to episode 14.3 +//===== Description: ========================================= +//= [Walkthrough Conversion] +//- Dimensional Travel Quest (access to Flame Basin / Flame Cave) +//- Others NPCs related to ep14.3 +//===== Changelogs: ========================================== +//= 1.0 First version. [Capuche] +//============================================================ + +// Dimensional Travel Quest +morocc,138,238,4 script Piled Rags#ep14bs 4_M_DIEMAN,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "- You are carrying too many items to proceed with the quest. -"; + close; + } + if (BaseLevel < 140) { + mes "- There is a pile of dirty rags. -"; + close; + } + if (ep14_3_dimensional_travel == 0) { + mes "- There is a pile of dirty rags. -"; + next; + if (select( "Leave it.", "Remove it." ) == 1) { + mes "- You left the pile of dirty rags where it is. -"; + close; + } + mes "[???]"; + mes "Ugh..."; + next; + mes "- A moan is heard underneath the pile of rags. -"; + next; + if (select( "Run.", "Shake the rags." ) == 1) { + mes "- Startled, you ran. -"; + close; + } + mes "[" + strcharinfo(0) + "]"; + mes "Hey,"; + mes "wake up!"; + next; + mes "[???]"; + mes "Ugh..."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Are you all right?"; + next; + mes "[???]"; + mes "Ugh..."; + mes "I n-need food..."; + mes "I could even eat ^0000FFMonster's Feed^000000. Please..."; + next; + mes "- Again he lost consciousness, exhausted just from talking."; + mes "You should feed him ^0000FFMonster's Feed^000000. -"; + setquest 11349;// Dimensional Travel + ep14_3_dimensional_travel = 1; + close; + } + if (ep14_3_dimensional_travel < 3) { + if (ep14_3_dimensional_travel == 2) + cutin "ep143_tadir.bmp",2; + else { + if (countitem(528) < 1) { + mes "- Again he lost consciousness, exhausted just from talking."; + mes "You should feed him ^0000FFMonster's Feed^000000. -"; + close; + } + mes "[???]"; + mes "Ugh..."; + next; + if (select( "Leave it.", "Give Monster's Feed." ) == 1) { + mes "[???]"; + mes "Ugh... H-help..."; + close; + } + mes "[???]"; + mes "Ugh..."; + mes "Yuck!"; + cutin "ep143_tadir.bmp",2; + delitem 528,1;// Monster's Feed + completequest 11349;// Dimensional Travel + setquest 11350;// Dimensional Travel + ep14_3_dimensional_travel = 2; + next; + mes "[???]"; + mes "*Chomp Chomp*"; + mes "*Barf*"; + next; + mes "[???]"; + mes "Phew..."; + next; + mes "[" + strcharinfo(0) + "]"; + mes "Are you all right?"; + next; + mes "[???]"; + mes "*Retch* Oh, yes, thanks to you."; + mes "*Retch*"; + next; + mes "[???]"; + mes "I thought I was going to die. I'm lucky to be alive."; + next; + mes "[???]"; + mes "I've been having nothing but bad luck lately."; + next; + mes "[???]"; + mes "I got sucked into some strange place, separated from the rest of my party. The place I arrived was terrible. There was no sign of Human habitation."; + next; + mes "[???]"; + mes "It's a miracle that I'm here."; + next; + mes "[???]"; + mes "I lucked out."; + mes "Still alive."; + mes "Hah hah hah!"; + next; + mes "[???]"; + mes "Oh!"; + mes "Where are my manners? I forgot to thank you properly."; + next; + mes "[???]"; + mes "Thank you"; + mes "for feeding me, though the feed tasted horrible."; + next; + mes "[???]"; + mes "I'm glad I didn't die on the street. The world is still a beautiful place."; + mes "I'm moved."; + next; + mes "[Tamarin]"; + mes "My name is ^0000FFTamarin^000000."; + mes "I'm an adventurer, and no, this isn't my preferred attire."; + next; + select("Introduce yourself."); + mes "[Tamarin]"; + mes "" + strcharinfo(0) + ", huh? That's a good name."; + next; + } + mes "[Tamarin]"; + mes "Ah,"; + mes "I'd better do something before people start asking if I'm homeless."; + next; + mes "[Tamarin]"; + mes "Do you know a place where I can wash myself?"; + next; + if (select( "Tell him the place.", "Say you don't know." ) == 2) { + mes "[Tamarin]"; + mes "Water is scarce in the desert, huh?"; + close3; + } + mes "[Tamarin]"; + mes "Ah,"; + mes "do you mean the ^0000FFoasis near the northwestern sphinx^000000?"; + next; + mes "[Tamarin]"; + mes "I've been in Morroc, but this is my first time inside the village."; + mes "I remember hearing that the place holds special water."; + next; + mes "[Tamarin]"; + mes "I feel excited to wash myself with the special water!"; + mes "I'm going to the oasis now. Could you wait for me?"; + next; + mes "[Tamarin]"; + mes "It'll take a while before I feel strong again, but at least I can walk on my own."; + mes "Hah hah hah!"; + next; + if (select( "Watch him.", "Accompany him." ) == 1) { + mes "[Tamarin]"; + mes "(Braces himself and inhales.)"; + mes "Wait, wait."; + mes "I can stand up on my own."; + next; + mes "[Tamarin]"; + mes "Wait, wait!"; + close3; + } + mes "[Tamarin]"; + mes "How kind of you!"; + mes "The world is still an okay place to live."; + next; + mes "[Tamarin]"; + mes "Then, let's go to the ^0000FFoasis near the northwestern sphinx^000000."; + erasequest 11350;// Dimensional Travel + setquest 11351;// Dimensional Travel + ep14_3_dimensional_travel = 3; + close3; + } + if (ep14_3_dimensional_travel == 3) { + mes "[Tamarin]"; + mes "How kind of you!"; + mes "The world is still an okay place to live."; + cutin "ep143_tadir.bmp",2; + next; + mes "[Tamarin]"; + mes "Then, let's go to the ^0000FFoasis near the northwestern sphinx^000000."; + close3; + } + mes "- There is a pile of dirty rags. -"; + close; + +OnInit: + questinfo 11349, QTYPE_QUEST, 1; + setquestinfo_level 11349,140,175; + end; +} + +moc_ruins,106,140,4 script Tamarin#ep14bs_ru 4_M_TAMARIN,{ + if (ep14_3_dimensional_travel == 3 || ep14_3_dimensional_travel == 4) { + if (ep14_3_dimensional_travel == 3) { + mes "[Tamarin]"; + mes "Pah!"; + mes "This feels great!"; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "The water feels too warm for my liking, but beggars can't be choosers."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "You saved me from starvation, and took me to this great place. I must have been a great person in the past life"; + mes "to deserve such kindness."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "I want to repay you, fellow adventurer."; + mes "I lost all my belongings when I fell into that strange hole and got separated from my party,"; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "but at least I can tell you an ^0000FFinteresting story^000000."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "It's about the strange place I've been to."; + cutin "ep143_tahuk.bmp",2; + next; + if (select( "Not interested.", "I'm listening." ) == 1) { + mes "[Tamarin]"; + mes "All right, then."; + mes "I thought you were serious about adventuring."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "Then"; + mes "do you want your Monster's Feed back?"; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "*Retch*"; + cutin "ep143_taang.bmp",2; + close3; + } + ep14_3_dimensional_travel = 4; + mes "[Tamarin]"; + mes "I knew you'd be interested!"; + mes "Nothing piques adventurers' interest like the story of a strange place, right?"; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "Ahem."; + mes "The story begins with my journey to the ^0000FFOther World^000000, the latest hot spot for adventurers."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "Adventurer Tamarin and his party went on a journey to the land of the unknown, Other World."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "Their journey was perilous, but they bravely moved forward."; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "Oh,"; + mes "why am I speaking in the third-person perspective?"; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "My original inspiration was Bard, but then I became a Hunter because my friends thought that suited me better."; + cutin "ep143_tasmi.bmp",2; + next; + select("Ask him to be more straightforward."); + mes "[Tamarin]"; + mes "Yes."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "A while ago, my friends and I decided to explore the Other World together."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "Since it'd be our first visit to the Other World, we wanted to go to a more popular spot, but one of us wouldn't have it--he was so excited that he started acting out of control."; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "When I came back to my senses, I was alone in a strange place."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "The ^0000FFland was burning with perpetual flames^000000 that weren't too hot to touch, and ^0000FFstrange-looking plants and insects^000000 were crawling all over the place."; + next; + mes "[Tamarin]"; + mes "At first I yelled for help and moved around hoping to find others, but all to no avail."; + next; + mes "[Tamarin]"; + mes "After a few days of having nothing to eat, I started to eat anything I saw off the ground, and I had the worst diarrhea ever."; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "I didn't know how many days had passed before I saw a group of some entities that I thought were men at a glance."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "But ^0000FFthey looked too strange to pass as human^000000."; + mes "I couldn't talk to them, so I just jumped into the Crack that they came through."; + next; + mes "[Tamarin]"; + mes "My knees gave way and I rolled on my side. When I looked around, I was back at the ^0000FFDimensional Crack^000000 where my friends and I first arrived."; + next; + mes "[Tamarin]"; + mes "I came out through the ^0000FFMorroc Dimensional Teleporter^000000 and used every ounce of my energy to get to Morroc."; + next; + mes "[Tamarin]"; + mes "Sigh..."; + mes "I wonder if my friends are safe."; + cutin "ep143_tasta.bmp",2; + next; + } + mes "[Tamarin]"; + mes "I should seek them out,"; + mes "but first I want to go back to that strange place when I get my full strength back. Not many people have a chance to see such a special place, you know."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "Fortunately for me, with the ^0000FFMorroc restoration work^000000 underway, I shouldn't have a problem making money through some part-time jobs."; + next; + if (select( "Tell him have safe travel.", "Tell him you want to tag along." ) == 1) { + mes "[Tamarin]"; + mes "I will."; + mes "Thank you for saving me."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "This is the beauty of adventuring:"; + mes "making new friends!"; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "I'll be in Morroc for a while, making some money and getting ready for another adventure. I hope I can see you again before I leave."; + close3; + } + mes "[Tamarin]"; + mes "!!"; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "Do you mean it?"; + next; + mes "[Tamarin]"; + mes "By the gods I'm a lucky bastard!"; + mes "*Sob*"; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "Then meet me at the ^0000FFDimensional Crack^000000. I need to replenish myself first."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "It may take a while for me to get everything packed, so get your other business done in the meantime."; + erasequest 11351;// Dimensional Travel + setquest 11352;// Dimensional Travel + ep14_3_dimensional_travel = 5; + close3; + } + if (ep14_3_dimensional_travel == 5) { + mes "[Tamarin]"; + mes "Then meet me at the ^0000FFDimensional Crack^000000. I need to replenish myself first."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "It may take a while for me to get everything packed, so get your other business done in the meantime."; + close3; + } + mes "[Tamarin]"; + mes "Pah!"; + mes "This feels great!"; + cutin "ep143_tasmi.bmp",2; + close3; +} + +dali,112,69,4 script Tamarin#ep14bs_cha 4_M_TAMARIN,{ + if (ep14_3_dimensional_travel == 5) { + mes "[Tamarin]"; + mes "" + strcharinfo(0) + ", over here!"; + mes "You're early."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "(Glancing around surreptitiously)"; + mes "I hope no one's watching us."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "I've hidden the opening to that place: I didn't want anyone to get there before me."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "At that time, I was too distracted to remember where the opening was, but I think it's definitely ^0000FFsomewhere on the 2nd floor^000000."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "Meet me in front of the ^0000FFHidden Crack^000000. Make sure no one follows you there."; + mes "I've ^0000FFcovered the opening with dirt^000000. I hope no one dug it open."; + erasequest 11352;// Dimensional Travel + setquest 11353;// Dimensional Travel + ep14_3_dimensional_travel = 6; + close3; + } + if (ep14_3_dimensional_travel == 6) { + mes "[Tamarin]"; + mes "I've hidden the opening to that place: I didn't want anyone to get there before me."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "At that time, I was too distracted to remember where the opening was, but I think it's definitely ^0000FFsomewhere on the 2nd floor^000000."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "Meet me in front of the ^0000FFHidden Crack^000000. Make sure no one follows you there."; + mes "I've ^0000FFcovered the opening with dirt^000000. I hope no one dug it open."; + close3; + } + mes "[Tamarin]"; + mes "Hm, my mark had better stay where I left it."; + cutin "ep143_tahuk.bmp",2; + close3; +} + +dali02,90,62,0 script Sand Mound#ep14bs 4_SOIL,{ + if (ep14_3_dimensional_travel < 6) { + mes "- A mound of sand stands awkwardly, looking out of place. -"; + close; + } + if (ep14_3_dimensional_travel == 6) { + mes "- A mound of sand stands awkwardly, looking out of place. -"; + next; + mes "[Tamarin]"; + mes "Whew!"; + mes "I'm glad you've found me."; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "Let me clear the dirt..."; + mes "Be mindful of the opening. It's quite narrow."; + cutin "ep143_tasta.bmp",2; + next; + if (select( "Enter.", "Quit." ) == 2) { + mes "[Tamarin]"; + mes "Aren't you going in?"; + cutin "ep143_tahuk.bmp",2; + close3; + } + mes "- The passage is barely wide enough to contain one person. -"; + completequest 11353;// Dimensional Travel + ep14_3_dimensional_travel = 7; + close2; + warp "moro_vol",136,135; + end; + } + mes "- A mound of sand stands awkwardly, looking out of place. -"; + next; + if (select( "Enter.", "Quit." ) == 2) { + mes "You decided not to enter."; + close; + } + mes "- The passage is barely wide enough to contain one person. -"; + close2; + warp "moro_vol",136,135; + end; +} + +moro_vol,137,136,0 script Sand Mound#ep14bs_ 4_SOIL,{ + mes "- A mound of sand stands awkwardly, looking out of place. -"; + next; + if (select( "Return to the Dimensional Crack.", "Quit." ) == 2) { + mes "You decided not to enter."; + close; + } + mes "- The passage is barely wide enough to contain one person. -"; + close2; + warp "dali02",91,63; + end; +} + +moro_vol,91,105,1 script Eclage Teleporter#143_1 PORTAL,{ + mes "[Dophe]"; + mes "This teleporter is connected to Eclage."; + mes "It'll be destroyed once our operation is over, but for now it's something we cannot live without."; + next; + mes "Use the teleporter to move to Eclage."; + next; + if (select( "Move to Eclage.", "Cancel." ) == 2) { + mes "Do not use the teleporter."; + close; + } + mes "Move to Eclage."; + close2; + warp "ecl_in01",38,96; + end; +} + +ecl_in01,38,98,1 script Interdimensional Device#ecl PORTAL,{ + if (ep14_3_dimensional_travel < 8) { + mes "[Eclage Guard]"; + mes "This teleporter is connected to the recently discovered hideout of the Demon God."; + mes "Only those allowed to enter the hideout can use this teleporter."; + close; + } + mes "This teleporter is connected to the recently discovered hideout of the Demon God."; + mes "Do you want to use it?"; + next; + if (select( "Move to the Demon God's hideout.", "Quit." ) == 2) { + mes "Do not use the teleporter."; + close; + } + mes "Use the teleporter to move to the Demon God's hideout."; + close2; + warp "moro_vol",91,102; + end; +} + +ecl_in01,40,96,3 script Eclage Guard#143_6 4_M_FAIRYSOLDIER,{ + mes "[Eclage Guard]"; + mes "How may I help you?"; + next; + switch( select( "What's that teleporter?", "Why is it so crowded in here?", "Demon God's hideout?", "Goodbye." ) ) { + case 1: + mes "[Eclage Guard]"; + mes "It's connected to the recently discovered hideout the of Demon God."; + mes "It's scientifically designed to send its user directly to the Dimensional Crack where his hideout is."; + next; + mes "[Eclage Guard]"; + mes "Many a warrior already left to the hideout."; + mes "So long as Morroc exists, Yggdrasil is not safe. I'm going to join the Expedition."; + close; + case 2: + mes "[Eclage Guard]"; + mes "It turns out Demon God ran from Morroc to hide out in our dimension."; + mes "He has to be dealt with, either banished back to his realm or destroyed."; + next; + mes "[Eclage Guard]"; + mes "If you want to join the Expedition to defeat the Demon God, then use this teleporter."; + mes "It'll send you directly to the Expedition Camp."; + close; + case 3: + mes "[Eclage Guard]"; + mes "You know the Dimensional Crack, don't you? Recently it's been revealed that the Crack is made up of dimensional passageways."; + mes "We can now use those passageways to explore inside the Crack."; + next; + mes "[Eclage Guard]"; + mes "Originally the Crack was created by the Demon God to aid in his escape,"; + mes "so it'd been thought investigating the Crack could locate him."; + next; + mes "[Eclage Guard]"; + mes "And it was; finally his hideout has been discovered."; + mes "His traces and his demon soldiers are sighted mainly around the giant hill in the center."; + next; + mes "[Eclage Guard]"; + mes "If you want more details, then you should visit the actual site."; + mes "Just use the teleporter over there."; + close; + case 4: + mes "[Eclage Guard]"; + mes "May Yggdrasil bless you."; + close; + } +} + +moro_vol,132,140,4 script Tamarin#ep14bs_ju 4_M_TAMARIN,{ + if (ep14_3_dimensional_travel == 7) { + mes "[Tamarin]"; + mes "Whoa!"; + mes "I didn't expect to see so many people."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "I'm disappointed that I'm not the first one to discover the place, and am glad that I'm not alone in this dismal place."; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "I see more of those entities that look sort of like men."; + mes "This place might be much more than I thought it was!"; + cutin "ep143_tasmi.bmp",2; + next; + mes "[Tamarin]"; + mes "Look!"; + mes "Walking trees!"; + mes "Grrr-!"; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Barget Tiblack]"; + mes "HEY!"; + mes "What the hell do you think you're doing?!"; + cutin "",255; + setquest 11354;// Specimen Collection + ep14_3_dimensional_travel = 8; + close; + } + if (ep14_3_dimensional_travel == 8) { + mes "[Tamarin]"; + mes "Look!"; + mes "Walking trees!"; + mes "Grrr-!"; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Barget Tiblack]"; + mes "HEY!"; + mes "What the hell do you think you're doing?!"; + cutin "",255; + close; + } + if (ep14_3_dimensional_travel == 9) { + mes "[Tamarin]"; + mes "They might kick us out if they know we sneaked in."; + mes "Let's do what they ask for now, yeah?"; + cutin "ep143_taang.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 10 || ep14_3_dimensional_travel == 11) { + mes "[Tamarin]"; + mes "Collecting the plant specimens doesn't sound too difficult. We can split them between us."; + cutin "ep143_tasta.bmp",2; + next; + mes "[Tamarin]"; + mes "^0000FFWhen you collect 25 Sonia stems, meet me by the big rock in the center of this place^000000."; + if (ep14_3_dimensional_travel == 10) { + erasequest 11356;// Specimen Collection + setquest 11357;// Specimen Collection + ep14_3_dimensional_travel = 11; + } + close3; + } + if (ep14_3_dimensional_travel == 12) { + if (countitem(6690) < 25) { + mes "[Tamarin]"; + mes "Ooh! (Wincing)"; + mes "You don't have enough stems."; + mes "Get more and take them to Barget."; + cutin "ep143_tahuk.bmp",2; + close3; + } + mes "[Tamarin]"; + mes "Let's report to Barget first."; + cutin "ep143_tahuk.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 14 || ep14_3_dimensional_travel == 15) { + mes "[Tamarin]"; + mes "Come on,"; + mes "hurry over to ^0000FFInstructor Rugen^000000!"; + cutin "ep143_tahuk.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 16) { + mes "[Tamarin]"; + mes "Thank the gods, who knew that thing I ate out of hunger would save me?"; + mes "Let's report to Barget."; + cutin "ep143_tahuk.bmp",2; + close3; + } + if (ep14_3_dimensional_travel > 16) { + mes "[Tamarin]"; + mes "Arrgh!"; + mes "" + strcharinfo(0) + " Get in the cave before everyone else explores it!"; + cutin "ep143_tahuk.bmp",2; + close3; + } + mes "[Tamarin]"; + mes "Ugh..."; + mes "I was the first to come to this place!"; + cutin "ep143_taang.bmp",2; + close3; +} + +moro_vol,142,131,5 script Barget Tiblack#ep14bs 4_M_ALCHE_D,{ + if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) { + mes "- You are carrying too many items to proceed with the quest. -"; + close; + } + if (ep14_3_dimensional_travel < 8) { + mes "[Barget Tiblack]"; + mes "Ugh, I'm exhausted."; + mes "I understand the urgency, but that doesn't mean I like being bossed around."; + close; + } + if (ep14_3_dimensional_travel == 8) { + mes "[Barget Tiblack]"; + mes "You've ruined my precious samples!"; + mes "I've asked people of your ilk to steer clear of my work zone. Didn't your superiors tell you that?"; + next; + mes "[Barget Tiblack]"; + mes "I haven't even finished the research at the camp, and they dragged me away for yet another burdening project."; + next; + mes "[Barget Tiblack]"; + mes "I demand an assistant!"; + mes "Enough with that budget problem!"; + mes "Argh!"; + next; + mes "[Barget Tiblack]"; + mes "..."; + mes "..."; + next; + mes "[Barget Tiblack]"; + mes "All right."; + mes "You two over there!"; + mes "You must have too much time on your hands, loitering about aimlessly. Make yourself useful and help me collect samples."; + next; + mes "[Barget Tiblack]"; + mes "You've ruined my existing samples, after all."; + next; + mes "[Barget Tiblack]"; + mes "First, I want to collect animal specimens."; + mes "It's not uncommon to see mutant animals around here. Recently, one of them was confirmed as a ^0000FFcompletely new species^000000."; + next; + mes "[Barget Tiblack]"; + mes "^0000FFThis new species of insect is called the Firebugs because they're surrounded by flames and live in fire pits like that over there^000000."; + next; + mes "[Barget Tiblack]"; + mes "Firebugs that crawl out of their pits die soon after."; + next; + mes "[Barget Tiblack]"; + mes "Please investigate ^0000FF20 fire pits and collect 50 Burning Insect Shells from Firebugs^000000."; + mes "Be careful not to burn yourself in the process."; + erasequest 11354;// Specimen Collection + setquest 11355;// Specimen Collection + ep14_3_dimensional_travel = 9; + close; + } + if (ep14_3_dimensional_travel < 12) { + if (ep14_3_dimensional_travel == 9) { + if (countitem(6689) < 50 || checkquest(11355,HUNTING) != 2) { + mes "[Barget Tiblack]"; + mes "First, I want to collect animal specimens."; + mes "It's not uncommon to see mutant animals around here. Recently, one of them was confirmed as a ^0000FFcompletely new species^000000."; + next; + mes "[Barget Tiblack]"; + mes "^0000FFThis new species of insect is called the Firebugs because they're surrounded by flames and live in fire pits like that over there^000000."; + next; + mes "[Barget Tiblack]"; + mes "Firebugs that crawl out of their pits die soon after."; + next; + mes "[Barget Tiblack]"; + mes "Please investigate ^0000FF20 fire pits and collect 50 Burning Insect Shells from Firebugs^000000."; + mes "Be careful not to burn yourself in the process."; + close; + } + mes "[Barget Tiblack]"; + mes "Oh,"; + mes "well done!"; + mes "You finished your task more quickly than I anticipated."; + delitem 6689,50;// Burning Bug Skin + erasequest 11355;// Specimen Collection + setquest 11356;// Specimen Collection + ep14_3_dimensional_travel = 10; + next; + mes "[Barget Tiblack]"; + mes "Ouch, HOT!"; + mes "*Huffing Puffing*"; + mes "Let me bottle them before they get cold, and send them to the lab."; + next; + } + mes "[Barget Tiblack]"; + mes "Now, it's time for plant specimens."; + mes "Our target plant is called Sonia, a very primitive type of plant."; + next; + mes "[Barget Tiblack]"; + mes "At a glance, Sonias look like plastic tubes, but their structure is very minimal."; + next; + mes "[Barget Tiblack]"; + mes "They're not difficult to gather. Please ^0000FFpick 50 Sonias and bring me 50 stems^000000."; + next; + mes "[Barget Tiblack]"; + mes "Sonia specimens are the last of my specimen collection. If you happen to ^0000FFsee peculiar Sonias^000000, please don't hesitate to let me know."; + next; + mes "[Barget Tiblack]"; + mes "Try not to stray too far away from the base. It's too dangerous out there."; + mes "Come back safely."; + next; + mes "[Tamarin]"; + mes "Hm..."; + mes "" + strcharinfo(0) + ", wait!"; + cutin "ep143_tahuk.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 12) { + if (countitem(6690) < 25) { + mes "[Barget Tiblack]"; + mes "How are you doing with collecting Sonias?"; + close; + } + mes "[Barget Tiblack]"; + mes "Ah,"; + mes "welcome back!"; + mes "I forgot to tell you ^0000FFnot to go near the rock in the center of this place^000000."; + next; + mes "[Barget Tiblack]"; + mes "When I realized my mistake, I called a rescue party, so worried for your safety. I'm glad you're back unscathed."; + next; + mes "[Barget Tiblack]"; + mes "I apologize for being a total jerk."; + mes "I was stressed out about my heavy workload."; + next; + mes "[Barget Tiblack]"; + mes "I still have so many things to do... Sigh..."; + next; + select("Tell her about the central rock."); + mes "[Barget Tiblack]"; + mes "Say WHAT?!"; + mes "You went there?!"; + mes "And you came back unscathed? How?"; + next; + mes "[Barget Tiblack]"; + mes "Everyone else who went there ^0000FFfell into a coma due to the noxious gas released from the rock^000000."; + next; + mes "[Barget Tiblack]"; + mes "What did you do?"; + mes "This is a great discovery!"; + next; + select("Relay what happened."); + mes "[Barget Tiblack]"; + mes "You ate a Sonia stem."; + mes "Okay, I've known the stem is nontoxic, but I haven't finished its substance research yet. Did you experience any side effect?"; + next; + mes "[Barget Tiblack]"; + mes "Wow!"; + mes "This really is a great discovery!"; + next; + mes "[Barget Tiblack]"; + mes "I'd better get back to the research..."; + mes "No, we first must ^0000FFtreat those patients who need Sonia stems. Please bring them to me.^000000"; + next; + mes "[Barget Tiblack]"; + mes "^0000FFInstructor Rugen manages them^000000, so you can bring them to him."; + mes "Please hand me the document. I'll sign it for you."; + next; + mes "[Barget Tiblack]"; + mes "I'd better get back to my stem research. I'll ask someone else for assistance."; + mes "You lucked out this time. Better not make a habit of eating things off the ground."; + erasequest 11358;// Specimen Collection + setquest 11359;// Antidote + ep14_3_dimensional_travel = 13; + close; + } + if (ep14_3_dimensional_travel == 13) { + mes "[Barget Tiblack]"; + mes "I'd better get back to the research..."; + mes "No, we first must ^0000FFtreat those patients who need Sonia stems. Please bring them to me.^000000"; + next; + mes "[Barget Tiblack]"; + mes "^0000FFInstructor Rugen manages them^000000, so you can bring them to him."; + mes "Please hand me the document. I'll sign it for you."; + next; + mes "[Barget Tiblack]"; + mes "I'd better get back to my stem research. I'll ask someone else for assistance."; + mes "You lucked out this time. Better not make a habit of eating things off the ground."; + close; + } + if (ep14_3_dimensional_travel < 16) { + mes "[Barget Tiblack]"; + mes "Did you see Instructor Rugen?"; + close; + } + if (ep14_3_dimensional_travel == 16) { + mes "[Barget Tiblack]"; + mes "Hah hah hah!"; + mes "How did it go?"; + mes "They worked, didn't they?"; + next; + mes "[Barget Tiblack]"; + mes "I have high hopes for my research."; + mes "Your seemingly reckless decision has saved many lives."; + next; + mes "[Barget Tiblack]"; + mes "With this, we'll soon be able to investigate that ^0000FFsuspicious cave^000000 from the inside out!"; + next; + select("What cave?"); + mes "[Barget Tiblack]"; + mes "Oh, the cave that releases the noxious gas."; + mes "The gas is ^0000FFso thick in the air, you can't see the cave entrance clearly^000000."; + next; + mes "[Barget Tiblack]"; + mes "Those who we gave the first batch of the vaccine already left to the cave."; + mes "We haven't heard from them yet. I'd like to believe it's a good sign."; + next; + mes "[Barget Tiblack]"; + mes "If it weren't two of you, I could have pulled all my hair out in frustration."; + mes "Good job, you guys!"; + getexp 0,1500000; + completequest 11362;// Antidote + ep14_3_dimensional_travel = 17; + close; + } + mes "[Barget Tiblack]"; + mes "Those who we gave the first batch of the vaccine already left to the cave."; + mes "We haven't heard from them yet. I'd like to believe it's a good sign."; + next; + mes "[Barget Tiblack]"; + mes "If it weren't two of you, I could have pulled all my hair out in frustration."; + mes "Good job, you guys!"; + close; +} + +moro_vol,101,74,4 script Patient#ep14bs2 4_F_FAIRYKID6,{ + mes "[Patient]"; + mes "*Moan*"; + close; +} + +moro_vol,101,72,4 script Patient#ep14bs1 4_M_PATIENT,{ + mes "[Patient]"; + mes "Ugh..."; + close; +} + +moro_vol,103,71,6 script Patient#ep14bs3 4_F_PATIENT,{ + mes "[Patient]"; + mes "*Groan*"; + close; +} + +moro_vol,106,69,4 script Patient#ep14bs4 4_M_PATIENT,{ + mes "[Patient]"; + mes "Aww... Ugh..."; + close; +} + +moro_vol,104,70,4 script Intoxicated Patient#ep1 4_M_LIEMAN,{ + if (ep14_3_dimensional_travel == 14) { + mes "[Poisoned Patient]"; + mes "Ugh..."; + next; + mes "- You feed him a Sonia stem. The color instantly returns to his face. -"; + erasequest 11360;// Antidote + setquest 11361;// Antidote + ep14_3_dimensional_travel = 15; + close; + } + if (ep14_3_dimensional_travel == 15) { + mes "[Poisoned Patient]"; + mes "Ugh..."; + next; + mes "- You feed him a Sonia stem. The color instantly returns to his face. -"; + mes "- Talk to Instructor Rugen. -"; + close; + } + mes "[Poisoned Patient]"; + mes "Ugh..."; + close; +} + +moro_vol,105,71,5 script Instructor Rugen#ep14bs 4_M_YOUNGKNIGHT,{ + if (ep14_3_dimensional_travel < 13) { + mes "[Instructor Rugen]"; + mes "Phew..."; + mes "Why were you so reckless?"; + next; + mes "[Instructor Rugen]"; + mes "Is this worth it?"; + mes "..."; + close; + } + if (ep14_3_dimensional_travel == 13) { + mes "[Instructor Rugen]"; + mes "Phew..."; + mes "Why were you so reckless?"; + next; + mes "[Instructor Rugen]"; + mes "Is this worth it?"; + mes "..."; + next; + if (select( "Talk to him.", "No, he looks too upset to talk." ) == 2) { + mes "[Instructor Rugen]"; + mes "Sigh..."; + mes "This is just..."; + close; + } + mes "[Instructor Rugen]"; + mes "How may I help you?"; + mes "If you're seeking medical assistance, then please describe your symptoms at the reception desk and wait until help arrives."; + next; + select("Give Sonia stems."); + if (countitem(6690) < 25) { + mes "[Instructor Rugen]"; + mes "These aren't enough."; + mes "Could you check the number of your Sonia stems?"; + close; + } + mes "[Instructor Rugen]"; + mes "Are you serious?"; + mes "Dr. Tiblack sent you, so I should believe you."; + mes "I'll feed these to the patients."; + delitem 6690,25;// Yummy Stem + erasequest 11359;// Antidote + setquest 11360;// Antidote + ep14_3_dimensional_travel = 14; + close; + } + if (ep14_3_dimensional_travel == 14) { + mes "[Instructor Rugen]"; + mes "Are you serious?"; + mes "Dr. Tiblack sent you, so I should believe you."; + mes "I'll feed these to the patients."; + close; + } + if (ep14_3_dimensional_travel == 15) { + mes "[Instructor Rugen]"; + mes "Oh!"; + mes "Otto!"; + mes "Can you see me?"; + next; + mes "[Otto]"; + mes "Ugh..."; + next; + mes "[Instructor Rugen]"; + mes "Oh!"; + mes "It worked!"; + next; + mes "[Instructor Rugen]"; + mes "The patients are showing remarkable improvements, though they need to stay in bed for now."; + mes "I'll feed the stems to the most critical patients, and wait for Dr. Tiblack to finish her research."; + next; + mes "[Instructor Rugen]"; + mes "I'll give you a report on the patients' responses to the stem. Please bring the report to ^0000FFDr. Tiblack^000000."; + mes "Hah hah."; + mes "It worked!"; + erasequest 11361;// Antidote + setquest 11362;// Antidote + ep14_3_dimensional_travel = 16; + close; + } + if (ep14_3_dimensional_travel == 16) { + mes "[Instructor Rugen]"; + mes "The patients are showing remarkable improvements, though they need to stay in bed for now."; + mes "I'll feed the stems to the most critical patients, and wait for Dr. Tiblack to finish her research."; + next; + mes "[Instructor Rugen]"; + mes "I'll give you a report on the patients' responses to the stem. Please bring the report to ^0000FFDr. Tiblack^000000."; + mes "Hah hah."; + mes "It worked!"; + close; + } + mes "[Instructor Rugen]"; + mes "I'm glad that the research resulted in our favor."; + mes "My comrades are well on their way to a full recovery."; + mes "Thank to you."; + close; +} + +// Flame Cave entrance +moro_vol,198,179,4 script Tamarin#ep14bs_st 4_M_TAMARIN,{ + if (ep14_3_dimensional_travel < 11) { + mes "[Tamarin]"; + mes "Hm..."; + mes "We don't have time for this!"; + cutin "ep143_taang.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 11) { + if (countitem(6690) < 25 || checkquest(11357,HUNTING) != 2) { + mes "[Tamarin]"; + mes "^0000FFWhen you collect 25 Sonia stems, meet me here^000000."; + cutin "ep143_tasta.bmp",2; + close3; + } + mes "[Tamarin]"; + mes "I don't remember this rock was so big."; + mes "Or seeing these strange things around it."; + mes "I also smell ^0000FFsmoke^000000."; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "Again,"; + mes "I don't remember seeing ^0000FFso many strange animals and plants^000000 either."; + mes "These are Sonias, right? They weren't so many before."; + next; + mes "[Tamarin]"; + mes "If they were, I wouldn't have had to starve."; + mes "Sonias were the most delicious and least toxic among all the plants I tried."; + cutin "ep143_taang.bmp",2; + next; + mes "[Tamarin]"; + mes "" + strcharinfo(0) + ", do you want to taste it?"; + mes "I brought a few stems for memories' sake."; + cutin "ep143_tasmi.bmp",2; + next; + cutin "",255; + mes "- Taste of Sonia -"; + mes "Its thick, tongue-warming sap fills your mouth with delicious aroma."; + next; + mes "[Tamarin]"; + mes "What do you think?"; + mes "Delicious, huh?"; + cutin "ep143_tahuk.bmp",2; + next; + mes "[Tamarin]"; + mes "I've got only a few left. Let's take turns to gather some more."; + cutin "ep143_tasmi.bmp",2; + erasequest 11357;// Specimen Collection + setquest 11358;// Specimen Collection + ep14_3_dimensional_travel = 12; + close3; + } + if (ep14_3_dimensional_travel == 12) { + mes "[Tamarin]"; + mes "I've got only a few left. Let's take turns to gather some more."; + cutin "ep143_tasmi.bmp",2; + close3; + } + if (ep14_3_dimensional_travel < 16) { + mes "[Tamarin]"; + mes "Come on,"; + mes "hurry over to ^0000FFInstructor Rugen^000000!"; + cutin "ep143_tahuk.bmp",2; + close3; + } + if (ep14_3_dimensional_travel == 16) { + mes "[Tamarin]"; + mes "Thank the gods, who knew that thing I ate out of hunger would save me?"; + mes "Let's report to Barget."; + cutin "ep143_tahuk.bmp",2; + close3; + } + mes "[Tamarin]"; + mes "Arrgh!"; + mes "" + strcharinfo(0) + " get in there before everyone else explores it!"; + cutin "ep143_tahuk.bmp",2; + next; + if (select( "Enter.", "Quit." ) == 2) { + mes "[Tamarin]"; + mes "Ah..."; + cutin "ep143_taang.bmp",2; + close3; + } + mes "[Tamarin]"; + mes "The floor is dark. Watch your step!"; + close2; + warp "moro_cav",40,50; + end; +} + +// Others +ecl_in01,44,99,1 script Combat Laphine#143_4 4_M_FAIRYSOLDIER2,{ + mes "[Combat Laphine]"; + mes "I'm nervous."; + close; +} + +ecl_in01,46,99,1 script Combat Laphine#143_5 4_M_FAIRYSOLDIER2,{ + mes "[Combat Laphine]"; + mes "I hope I can return in one piece."; + close; +} + +ecl_in01,48,99,1 script Combat Laphine#143_6 4_M_FAIRYSOLDIER2,{ + mes "[Combat Laphine]"; + mes "Hmm..."; + close; +} +ecl_in01,44,97,1 script Combat Laphine#143_7 4_F_FAIRYSOLDIER,{ + mes "[Combat Laphine]"; + mes "Shush."; + close; +} + +ecl_in01,46,97,1 script Combat Laphine#143_8 4_F_FAIRYSOLDIER,{ + mes "[Combat Laphine]"; + mes "Mwa hah hah, it's time for me to shine!"; + close; +} + +ecl_in01,48,97,1 script Combat Laphine#143_9 4_F_FAIRYSOLDIER,{ + mes "[Combat Laphine]"; + mes "I must have been out of my mind when I decided to join the army. Sigh, why does the Door to Verities have to be so high up there?"; + close; +} + +ecl_in01,46,102,3 script Commander Laphine#143_1 4_M_FAIRYSOLDIER,5,5,{ + mes "[Commander Laphine]"; + mes "Evil must be nipped in the butt."; + mes "You're unexpected visitors from the Midgard Continent."; + next; + mes "[Commander Laphine]"; + mes "If you are the cause doom to ourselves OR Yggdrasil, then we won't hesitate to fight you."; + close; + +OnTouch_: + if (.talk == 0) { + .talk = 1; + npctalk "Commander: Soldiers, finally it's time to put your training to use!"; + sleep 2000; + npctalk "Argh!", "Combat Laphine#143_4"; + npctalk "Argh!", "Combat Laphine#143_5"; + npctalk "Argh!", "Combat Laphine#143_6"; + npctalk "Ah!", "Combat Laphine#143_7"; + npctalk "Argh!", "Combat Laphine#143_8"; + npctalk "Argh!", "Combat Laphine#143_9"; + sleep 2000; + npctalk "Commander: Did someone just whimper?"; + sleep 3000; + npctalk "Commander: Don't disappoint your comrades at the Splendide advance base!"; + sleep 3000; + npctalk "Commander: Stay focused! We're going to finish off the Demon God!"; + sleep 2000; + npctalk "Yeah, yeah.", "Combat Laphine#143_7"; + sleep 2000; + npctalk "...", "Combat Laphine#143_4"; + npctalk "Ah...", "Combat Laphine#143_5"; + npctalk "...", "Combat Laphine#143_6"; + npctalk "...", "Combat Laphine#143_8"; + sleep 3000; + npctalk "Commander: Ah, suddenly I can't see..."; + .talk = 0; + } + end; +} + +ecl_in01,37,90,3 script Magic Scholar Lemony#14 4_F_FAIRY2,{ + mes "[Lemony]"; + mes "Did you read the latest issue of the Door to Verities magazine?"; + mes "Was Avant's new teleporter really featured in it?"; + next; + mes "[Armandi]"; + mes "Yes, just the basic principles and the information relevant to the Humans."; + mes "I didn't quite understand it all."; + next; + mes "[Lemony]"; + mes "I wonder if this means Avant has finally decided to pursue his interest in research activities."; + next; + mes "[Lemony]"; + mes "Hey, Human."; + mes "Were you eavesdropping on us? Well, though it wasn't like we're discussing secrets."; + next; + mes "[Lemony]"; + mes "Oh, right. Are you too going there?"; + mes "You know, the hideout of the Demon God who created some of the Space Time Dimensional Cracks has recently been discovered."; + next; + mes "[Lemony]"; + mes "If you're curious, then use that teleporter to the hideout over there."; + mes "There will be quite a spectacle to watch."; + mes "Oh, just so you know, you might be throwing away your life. *Giggle*"; + next; + mes "[Armandi]"; + mes "Lemony, you really need to work on improving your personality."; + mes "Tsk, tsk."; + close; +} + +ecl_in01,35,89,6 script Magic Scholar Armandi#1 4_M_FAIRYKID6,{ + mes "[Armandi]"; + mes "I hope the Interdimensional Device won't take a heavy toll on the world."; + mes "By the way, Avant never fails to amaze me."; + next; + mes "[Lemony]"; + mes "Ack, I hate that guy."; + next; + mes "[Armandi]"; + mes "Avant may be repulsive,"; + mes "but he's the best at what he does."; + next; + mes "[Lemony]"; + mes "That, I agree."; + mes "Only he could pull off this kind of teleporter."; + mes "Why is he helping the Mayor, anyway?"; + next; + mes "[Armandi]"; + mes "When I asked him, he mumbled something about repentance."; + mes "I can only guess it has something to do with the Mayor's birth."; + next; + mes "[Armandi]"; + mes "I wanted to ask more, but he looked down his nose at me."; + mes "Sigh, it's unfair such a jerk is considered the best in magical science."; + next; + mes "[Lemony]"; + mes "You can always study hard to beat him."; + close; +} + +// Warps +moro_cav,64,13,0 warp #flame_cave_out 3,3,moro_vol,198,176 + +// Merchants +moro_vol,95,96,6 shop Tool Merchant 4_CAT_DOWN,611:-1,501:-1,502:-1,503:-1,504:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1 + +// Placeholder (unknown scripts) +// ecl_in01,47,92,0 script #ecl_buff_N HIDDEN_WARP_NPC +// ecl_in01,48,44,0 script #ecl_buff_S HIDDEN_WARP_NPC +// ecl_in01,23,68,0 script #ecl_buff_W HIDDEN_WARP_NPC +// ecl_in01,48,67,0 script #ecl_orb_buff HIDDEN_WARP_NPC +// ecl_in01,71,67,0 script #ecl_buff_E HIDDEN_WARP_NPC +// ecl_in01,47,27,0 script #mgate03 HIDDEN_WARP_NPC diff --git a/npc/re/quests/quests_15_1.txt b/npc/re/quests/quests_15_1.txt index 4dbbde5a0d..942b97c07f 100644 --- a/npc/re/quests/quests_15_1.txt +++ b/npc/re/quests/quests_15_1.txt @@ -471,7 +471,7 @@ moc_para01,133,170,4 script Commander Arquien#e152a1 4_F_EDEN_MASTER,{ cutin "Arquien_n_atnad04.bmp",2; mes "[Nile]"; mes "What.. was.. the name. Ah.. I don't know."; - mes "It is commonly being referred to as the 'Fantasmagorica' plan."; + mes "It is commonly being referred to as the 'Phantasmagorika' plan."; mes "Rekenber of Lighthalzen is the sponser of the excavation recruitment and support."; next; select("So?"); @@ -494,7 +494,7 @@ moc_para01,133,170,4 script Commander Arquien#e152a1 4_F_EDEN_MASTER,{ } cutin "Arquien_n_atnad01.bmp",2; mes "[Nile]"; - mes "Sure. We also wanted to participate in the Fantasmagorica."; + mes "Sure. We also wanted to participate in the Phantasmagorika."; } else { cutin "Arquien_n_atnad02.bmp",2; @@ -510,7 +510,7 @@ moc_para01,133,170,4 script Commander Arquien#e152a1 4_F_EDEN_MASTER,{ cutin "Arquien_n_atnad01.bmp",2; mes "[Nile]"; mes "Should I continue talking?"; - mes "We also wanted to participate in the Fantasmagorica."; + mes "We also wanted to participate in the Phantasmagorika."; } mes "Of course under the name of Paradise Squad."; next; @@ -535,7 +535,7 @@ moc_para01,133,170,4 script Commander Arquien#e152a1 4_F_EDEN_MASTER,{ mes "Not a bad proposition. Honestly it's a good opportunity."; mes "We introduce people and get paid, you work and get paid."; next; - select("Wanting to participate in Fantasmagorica?"); + select("Wanting to participate in Phantasmagorika?"); mes "[Nile]"; mes "It can be summarized as such."; mes "Basically you're participating in the site excavation work but"; @@ -547,7 +547,7 @@ moc_para01,133,170,4 script Commander Arquien#e152a1 4_F_EDEN_MASTER,{ next; mes "[Nile]"; mes "I want one thing."; - mes "There are several excavation teams and organizations currently participating in the Fantasmagorica excavation."; + mes "There are several excavation teams and organizations currently participating in the Phantasmagorika excavation."; mes "I would like you to work in an excavation team Rahim introduces."; next; cutin "Arquien_n_atnad02.bmp",2; @@ -1496,6 +1496,7 @@ verus04,172,149,3 script Commander Arquien#e152v0 4_F_EDEN_MASTER,{ close3; } } + close3; } // Note : 2 players can use the npc at the same time @@ -3343,7 +3344,7 @@ verus02,60,30,1 script Strewn paper#e152a01 4_ENERGY_BLUE,{ close; } progressbar "00ff00",3; - hideonnpc strnpcinfo(0); + disablenpc strnpcinfo(0); getitem 6757,1;// The_Memory_Recorder if (VER_MAIN == 19) { mes "You find a object never seen before as you go through the clutter of documents and office supplies."; @@ -3360,7 +3361,8 @@ verus02,60,30,1 script Strewn paper#e152a01 4_ENERGY_BLUE,{ close; OnTimer60000: - hideoffnpc strnpcinfo(0); + stopnpctimer; + enablenpc strnpcinfo(0); end; } verus02,178,32,3 duplicate(Strewn paper#e152a01) Strewn paper#e152a02 4_ENERGY_BLUE @@ -3427,7 +3429,7 @@ un_bunker,382,335,3 script Box#e152p00 4_ENERGY_BLUE,{ close; } if (VER_MAIN == 27 || isbegin_quest(7652) > 0) {// Collect Memory Records of Laboratories - if (countitem(6824) < 5) { + if (countitem(6824) > 4) { mes "Enough Memory Records are collected."; mes "No need to keep on crawling and searching."; close; @@ -3440,13 +3442,18 @@ un_bunker,382,335,3 script Box#e152p00 4_ENERGY_BLUE,{ if (select( "Check below.", "Quit." ) == 1) { progressbar "00ff00",3; mes "Found a Memory Record under the desk."; - hideonnpc strnpcinfo(0); getitem 6824,1;// Experimental_Dong_Memory_Record + initnpctimer; + disablenpc strnpcinfo(0); } close; } mes "Nothing special is found."; close; +OnTimer30000: + stopnpctimer; + enablenpc strnpcinfo(0); + end; } un_bunker,87,167,3 duplicate(Box#e152p00) Under desk#e152p01 4_ENERGY_BLUE un_bunker,316,243,3 duplicate(Box#e152p00) Under desk#e152p02 4_ENERGY_BLUE @@ -3852,10 +3859,12 @@ verus04,133,212,4 script Police Chief Kesler#EP15_1 2_M_SWORDMASTER,{ mes "- You are carrying too many items to continue. -"; close; } - .@playtime_5318 = checkquest(5318,PLAYTIME); - .@quest_5309 = isbegin_quest(5309); + .@playtime_5318 = checkquest(5318,PLAYTIME); // Come Back Tomorrow + .@quest_5309 = isbegin_quest(5309); // Police Chief's Request mes "[Police Chief Kesler]"; if (VER_MAIN < 5 || .@playtime_5318 == 2) { + if (.@playtime_5318 == 2) + erasequest 5318; emotion ET_DELIGHT; mes "Nice to meet you. I'm Kesler, chief of the Phantasmagorika Police."; } @@ -3863,8 +3872,6 @@ verus04,133,212,4 script Police Chief Kesler#EP15_1 2_M_SWORDMASTER,{ emotion ET_PROFUSELY_SWEAT; mes "Welcome to the Phantasmagorika Police."; } - if (.@playtime_5318 == 2) - erasequest 5318; next; if (countitem(6753) > 0)// Token_Of_Destruction .@string$ = "I brought Doom Tokens."; @@ -3935,7 +3942,7 @@ verus04,133,212,4 script Police Chief Kesler#EP15_1 2_M_SWORDMASTER,{ } if (.@quest_5309 == 2) erasequest 5309; - setquest 5309; + setquest 5309;// Police Chief's Request mes "[Police Chief Kesler]"; mes "Thank you."; close; @@ -4161,10 +4168,8 @@ verus03,36,113,4 script Police Officer Salgran#EP15 2_M_THIEFMASTER,{ next; if (select( "Help.", "Maybe next time." ) == 2) { emotion ET_OHNO; - if (isbegin_quest(5305) == 0) { - setquest 5305;// Police Officer Salgran - completequest 5305;// Police Officer Salgran - } + setquest 5305;// Police Officer Salgran + completequest 5305;// Police Officer Salgran setquest 5310;// Salgran's Problem mes "[Police Officer Salgran]"; mes "You must be busy. All right, then tell the Chief that everything's good in my sector."; @@ -4188,10 +4193,8 @@ verus03,36,113,4 script Police Officer Salgran#EP15 2_M_THIEFMASTER,{ if (select( "OK", "Maybe next time." ) == 2) { // inaccurate emotion ET_OHNO; - if (isbegin_quest(5305) == 0) { - setquest 5305;// Police Officer Salgran - completequest 5305;// Police Officer Salgran - } + setquest 5305;// Police Officer Salgran + completequest 5305;// Police Officer Salgran setquest 5310;// Salgran's Problem mes "[Police Officer Salgran]"; mes "You must be busy. All right, then tell the Chief that everything's good in my sector."; @@ -4270,7 +4273,6 @@ verus03,36,113,4 script Police Officer Salgran#EP15 2_M_THIEFMASTER,{ close; } - verus03,116,36,6 script Police Officer Gerev#EP15_1D 4_M_ALCHE_A,{ if (checkweight(1301,1) == 0) { mes "- You are carrying too many items to continue. -"; @@ -4324,10 +4326,8 @@ verus03,116,36,6 script Police Officer Gerev#EP15_1D 4_M_ALCHE_A,{ mes "Ah, Chief Kesler sent you. If I didn't know him, I'd have thought he was too busy to come see me. I bet I'm busier than him, though."; next; if (select( "I can help.", "Sorry I can't be of help." ) == 2) { - if (isbegin_quest(5306) == 0) { - setquest 5306; - completequest 5306; - } + setquest 5306; + completequest 5306; setquest 5311;// Gerev's Problem mes "[Police Officer Gerev]"; mes "You're willing to help the Chief, but not me. Why not because I'm not a chief?"; @@ -4355,10 +4355,8 @@ verus03,116,36,6 script Police Officer Gerev#EP15_1D 4_M_ALCHE_A,{ next; if (select( "Sure thing.", "Maybe next time." ) == 2) { emotion ET_FRET; - if (isbegin_quest(5306) == 0) { - setquest 5306; - completequest 5306; - } + setquest 5306; + completequest 5306; setquest 5311; mes "[Police Officer Gerev]"; mes "*Snort* I knew it. Just go tell Chief Kesler everything's quiet in my sector."; @@ -4424,13 +4422,15 @@ verus03,116,36,6 script Police Officer Gerev#EP15_1D 4_M_ALCHE_A,{ mes "[Police Officer Gerev]"; mes "I must be stressed out again. I feel my stomach tightening..."; close; - case 3:// can redo + case 3: erasequest 5315;// Gerev's Request trap_doom_prayers = 0; if (isbegin_quest(5306) == 0) { setquest 5306; completequest 5306; } + // note: officially 'setquest 5311;' is commented + setquest 5311; close; case 4: emotion ET_OTL; @@ -4491,10 +4491,8 @@ verus03,81,241,6 script Police Officer Seiden#EP15_1 4_M_ORIENT02,{ next; if (select( "Sure.", "Not now." ) == 2) { emotion ET_SCRATCH; - if (isbegin_quest(5307) == 0) { - setquest 5307; - completequest 5307; - } + setquest 5307; + completequest 5307; setquest 5312;// Seiden's Problem mes "[Police Officer Seiden]"; mes "I don't understand. My friend swore this never failed on people, hm... Oh well, tell Chief Kesler everything's good on my end."; @@ -4515,10 +4513,8 @@ verus03,81,241,6 script Police Officer Seiden#EP15_1 4_M_ORIENT02,{ next; if (select( "I'll be back.", "Maybe next time." ) == 2) { emotion ET_SCRATCH; - if (isbegin_quest(5307) == 0) { - setquest 5307; - completequest 5307; - } + setquest 5307; + completequest 5307; setquest 5312;// Seiden's Problem mes "[Police Officer Seiden]"; mes "I don't understand. My friend swore this never failed on people, hm... Oh well, tell Chief Kesler everything's good on my end."; @@ -4747,10 +4743,8 @@ verus04,202,258,4 script Police Officer Piffs#EP15_1 4_M_SAGE_C,{ mes "I'm running short on some supplies, but I can't leave my post unattended. Can you help me?"; next; if (select("Sure thing.", "Not now.") == 2) { - if (isbegin_quest(5308) == 0) { - setquest 5308;// Police Officer Piffs - completequest 5308; - } + setquest 5308;// Police Officer Piffs + completequest 5308; setquest 5313;// Piffs's Problem mes "[Police Officer Piffs]"; mes "I understand. If you change your mind, though, come back to me."; @@ -4864,10 +4858,9 @@ verus04,187,219,4 script Thicket#EP15_1D_01 4_CREEPER,{ mes "You've decided to forget about it."; close; } - if (rand(2)) { - progressbar "00ff00",2; + progressbar "00ff00",2; + if (rand(2)) mes "No herbs were found in the thicket."; - } else { getitem 6754,1;// Collected_Medicinal_Herbs mes "Gathered the herb."; @@ -5355,7 +5348,7 @@ verus02,79,31,4 script Krotzel#1 4_F_HUWOMAN,{ case 1: mes "[Krotzel]"; mes "They all have a professional mindset so if they haven't finished working just see if they are safe."; - if (isbegin_quest(13198) > 0) + if (isbegin_quest(13199) > 0) erasequest 13199;// Krotzel's Request - Complete setquest 13195;// Monthly Brigan setquest 13196;// Monthly Brigan diff --git a/npc/re/quests/quests_malangdo.txt b/npc/re/quests/quests_malangdo.txt index 767afc798b..9afedf3e69 100644 --- a/npc/re/quests/quests_malangdo.txt +++ b/npc/re/quests/quests_malangdo.txt @@ -10662,6 +10662,7 @@ mal_in01,15,16,3 script Fallen Angel#mal 403,{ } specialeffect2 EF_REPAIRWEAPON; progressbar "ffff00",2; + setarray .@equip_card[0], getequipcardid(EQI_GARMENT,0),getequipcardid(EQI_GARMENT,1),getequipcardid(EQI_GARMENT,2),getequipcardid(EQI_GARMENT,3); if (getequipisequiped(EQI_GARMENT) == 0) { mes "[Fallen Angel]"; mes "The Archangel Wing has been taken out!"; @@ -10677,13 +10678,12 @@ mal_in01,15,16,3 script Fallen Angel#mal 403,{ mes "I can't do it if you can't pay!"; close; } - if (getequipcardid(EQI_GARMENT,3) < 4700) { // Armor Enchant System + if (callfunc("F_IsCharm",.@equip_card[3]) == false) { mes "[Fallen Angel]"; mes "This equipment has not been enchanted, please check it again!"; close; } set .@equip_refine, getequiprefinerycnt(EQI_GARMENT); - setarray .@equip_card[0], getequipcardid(EQI_GARMENT,0),getequipcardid(EQI_GARMENT,1),getequipcardid(EQI_GARMENT,2); delitem 6417,3; //Silvervine delequip EQI_GARMENT; getitem2 2573,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],0; //Archangel_Wing diff --git a/npc/re/quests/quests_mora.txt b/npc/re/quests/quests_mora.txt index 00eaff22f0..981d3111d1 100644 --- a/npc/re/quests/quests_mora.txt +++ b/npc/re/quests/quests_mora.txt @@ -4654,7 +4654,7 @@ mora,119,103,4 script Bow-wow#pa0829 513,{ close; } -mora,119,118,4 script General Good Dealer#pa0 516,{ +mora,119,118,4 script General Goods Dealer#pa0 516,{ if (checkweight(1201,1) == 0) { mes "You have too many kinds of things with you to do that. Throw out some of them and try again."; close; @@ -4664,18 +4664,18 @@ mora,119,118,4 script General Good Dealer#pa0 516,{ close; } if (ep14_1_mistwoods < 10) { - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "Hmm, you don't look reliable enough for Bow-wow's tasks."; close; } if (BaseLevel < 97) { - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "What could you do with that fragile body? Go get some exercise."; close; } set .@playtime, checkquest(12241,PLAYTIME); if (.@playtime == -1) { - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "I see you haven't received"; mes "any tasks yet."; mes "Go talk to Bow-wow,"; @@ -4683,13 +4683,13 @@ mora,119,118,4 script General Good Dealer#pa0 516,{ mes "one of the countless tasks."; close; } else if (.@playtime == 2) { - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "The time is up to complete the existing tasks."; next; - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "If you have any unfinished tasks in your quest log, they are considered 'failed' and removed from the log."; next; - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "Once they are removed, go talk to Bow-wow and you can receive new tasks."; for(set .@i,12231; .@i<=12235; set .@i,.@i+1) { if (checkquest(.@i) > -1) @@ -4698,12 +4698,12 @@ mora,119,118,4 script General Good Dealer#pa0 516,{ erasequest 12241; close; } - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "Welcome."; mes "How may I help you?"; next; select("I have completed a task."); - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "Oh."; mes "Have you?"; mes "Please wait a minute while I check the documents."; @@ -4715,7 +4715,7 @@ mora,119,118,4 script General Good Dealer#pa0 516,{ callsub L_CheckQuest,12234,931,3; //Orcish_Voucher callsub L_CheckQuest,12235,932,3; //Skel_Bone - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "Hmm... "+strcharinfo(0)+"."; mes "It may be a documentation error, but according to the documents, you have nothing to do with the tasks."; close; @@ -4723,11 +4723,11 @@ mora,119,118,4 script General Good Dealer#pa0 516,{ L_CheckQuest: if (checkquest(getarg(0)) > -1) { if (countitem(getarg(1)) < getarg(2)) { - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "The amount is not enough..."; close; } - mes "[General Good Dealer]"; + mes "[General Goods Dealer]"; mes "I've received the items all right. It will be some time before I have another task for you, so why don't you visit the hot spring and relax?"; delitem getarg(1),getarg(2); erasequest getarg(0); diff --git a/npc/re/scripts_athena.conf b/npc/re/scripts_athena.conf index d77e0e9374..f6a2de1cfc 100644 --- a/npc/re/scripts_athena.conf +++ b/npc/re/scripts_athena.conf @@ -51,6 +51,7 @@ npc: npc/re/guides/guides_veins.txt npc: npc/re/guides/guides_woe_te.txt // ------------------------ Instances --------------------------- +npc: npc/re/instances/AirshipAssault.txt npc: npc/re/instances/BakonawaLake.txt npc: npc/re/instances/BangungotHospital.txt npc: npc/re/instances/BuwayaCave.txt @@ -60,8 +61,10 @@ npc: npc/re/instances/FacewormsNest.txt npc: npc/re/instances/GhostPalace.txt npc: npc/re/instances/HazyForest.txt npc: npc/re/instances/HorrorToyFactory.txt +npc: npc/re/instances/IsleOfBios.txt npc: npc/re/instances/LastRoom.txt npc: npc/re/instances/MalangdoCulvert.txt +npc: npc/re/instances/MorseCave.txt npc: npc/re/instances/OctopusCave.txt npc: npc/re/instances/OldGlastHeim.txt npc: npc/re/instances/SarahAndFenrir.txt @@ -153,6 +156,7 @@ npc: npc/re/quests/mrsmile.txt npc: npc/re/quests/ninja_quests.txt npc: npc/re/quests/pile_bunker.txt npc: npc/re/quests/quests_13_1.txt +npc: npc/re/quests/quests_14_3.txt npc: npc/re/quests/quests_15_1.txt npc: npc/re/quests/quests_15_2.txt npc: npc/re/quests/quests_aldebaran.txt diff --git a/npc/re/scripts_monsters.conf b/npc/re/scripts_monsters.conf index 7a4375bc91..8b3fdbaa3c 100644 --- a/npc/re/scripts_monsters.conf +++ b/npc/re/scripts_monsters.conf @@ -4,7 +4,6 @@ //npc: npc/re/mobs/academy.txt npc: npc/re/mobs/championmobs.txt -npc: npc/re/mobs/citycleaners.txt npc: npc/re/mobs/int_land.txt npc: npc/re/mobs/towns.txt npc: npc/re/mobs/verus.txt diff --git a/npc/scripts_mapflags.conf b/npc/scripts_mapflags.conf index bca8268419..b50cb260c4 100644 --- a/npc/scripts_mapflags.conf +++ b/npc/scripts_mapflags.conf @@ -3,6 +3,7 @@ // -------------------------------------------------------------- npc: npc/mapflag/nopvp.txt npc: npc/mapflag/gvg.txt +npc: npc/mapflag/gvg_noparty.txt npc: npc/mapflag/hidemobhpbar.txt npc: npc/mapflag/jail.txt npc: npc/mapflag/nightmare.txt diff --git a/npc/scripts_monsters.conf b/npc/scripts_monsters.conf index cf3dd4065d..71483599cd 100644 --- a/npc/scripts_monsters.conf +++ b/npc/scripts_monsters.conf @@ -2,7 +2,6 @@ // - Monster Scripts - // -------------------------------------------------------------- -npc: npc/mobs/citycleaners.txt npc: npc/mobs/jail.txt npc: npc/mobs/pvp.txt npc: npc/mobs/towns.txt diff --git a/rAthena.sln b/rAthena.sln index e8e96ac290..d90c563a39 100644 --- a/rAthena.sln +++ b/rAthena.sln @@ -8,27 +8,24 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "src\common\common.vcxproj", "{F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559}" ProjectSection(ProjectDependencies) = postProject {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD} = {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD} - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF} = {7AE31676-6137-4FB3-AE9C-AD47D8A861CF} {61D6A599-6BED-4154-A9FC-40553BD972E0} = {61D6A599-6BED-4154-A9FC-40553BD972E0} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libconfig", "3rdparty\libconfig\libconfig.vcxproj", "{F6CC5F60-BD13-41B1-81D3-822A45EC0DBD}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mt19937ar", "3rdparty\mt19937ar\mt19937ar.vcxproj", "{7AE31676-6137-4FB3-AE9C-AD47D8A861CF}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{60D3315D-FBF4-4FBF-8D44-99D5BED11D32}" ProjectSection(SolutionItems) = preProject - src\config\const.h = src\config\const.h - src\config\core.h = src\config\core.h - src\config\classes\general.h = src\config\classes\general.h - src\config\packets.h = src\config\packets.h - src\config\renewal.h = src\config\renewal.h - src\config\secure.h = src\config\secure.h + src\config\const.hpp = src\config\const.hpp + src\config\core.hpp = src\config\core.hpp + src\config\classes\general.hpp = src\config\classes\general.hpp + src\config\packets.hpp = src\config\packets.hpp + src\config\renewal.hpp = src\config\renewal.hpp + src\config\secure.hpp = src\config\secure.hpp EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "classes", "classes", "{33B49CB8-CBE3-4ED2-86DD-C9A351AC9026}" ProjectSection(SolutionItems) = preProject - src\config\classes\general.h = src\config\classes\general.h + src\config\classes\general.hpp = src\config\classes\general.hpp EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Custom", "Custom", "{6513C8D3-D15F-45D4-9AD8-6286CBA7EE36}" @@ -37,8 +34,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Custom", "Custom", "{6513C8 src\custom\atcommand_def.inc = src\custom\atcommand_def.inc src\custom\battle_config_init.inc = src\custom\battle_config_init.inc src\custom\battle_config_struct.inc = src\custom\battle_config_struct.inc - src\custom\defines_post.h = src\custom\defines_post.h - src\custom\defines_pre.h = src\custom\defines_pre.h + src\custom\defines_post.hpp = src\custom\defines_post.hpp + src\custom\defines_pre.hpp = src\custom\defines_pre.hpp src\custom\script.inc = src\custom\script.inc src\custom\script_def.inc = src\custom\script_def.inc EndProjectSection @@ -74,11 +71,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapcache", "src\tool\mapcac EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "yaml-cpp", "3rdparty\yaml-cpp\yaml-cpp.vcxproj", "{61D6A599-6BED-4154-A9FC-40553BD972E0}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basic_test", "src\test\basic_test.vcxproj", "{99B4DF6A-6180-4E7F-9227-F812FF30414A}" - ProjectSection(ProjectDependencies) = postProject - {F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559} = {F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559} - EndProjectSection -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -103,14 +95,6 @@ Global {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD}.Release|Win32.Build.0 = Release|Win32 {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD}.Release|x64.ActiveCfg = Release|x64 {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD}.Release|x64.Build.0 = Release|x64 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Debug|Win32.ActiveCfg = Debug|Win32 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Debug|Win32.Build.0 = Debug|Win32 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Debug|x64.ActiveCfg = Debug|x64 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Debug|x64.Build.0 = Debug|x64 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Release|Win32.ActiveCfg = Release|Win32 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Release|Win32.Build.0 = Release|Win32 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Release|x64.ActiveCfg = Release|x64 - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF}.Release|x64.Build.0 = Release|x64 {864805EA-FD39-453D-9248-C581951BA058}.Debug|Win32.ActiveCfg = Debug|Win32 {864805EA-FD39-453D-9248-C581951BA058}.Debug|Win32.Build.0 = Debug|Win32 {864805EA-FD39-453D-9248-C581951BA058}.Debug|x64.ActiveCfg = Debug|x64 @@ -159,14 +143,6 @@ Global {61D6A599-6BED-4154-A9FC-40553BD972E0}.Release|Win32.Build.0 = Release|Win32 {61D6A599-6BED-4154-A9FC-40553BD972E0}.Release|x64.ActiveCfg = Release|x64 {61D6A599-6BED-4154-A9FC-40553BD972E0}.Release|x64.Build.0 = Release|x64 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Debug|Win32.ActiveCfg = Debug|Win32 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Debug|Win32.Build.0 = Debug|Win32 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Debug|x64.ActiveCfg = Debug|x64 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Debug|x64.Build.0 = Debug|x64 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Release|Win32.ActiveCfg = Release|Win32 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Release|Win32.Build.0 = Release|Win32 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Release|x64.ActiveCfg = Release|x64 - {99B4DF6A-6180-4E7F-9227-F812FF30414A}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -174,7 +150,6 @@ Global GlobalSection(NestedProjects) = preSolution {F8FD7B1E-8E1C-4CC3-9CD1-2E28F77B6559} = {C0A6FC9A-3A5C-48F8-A4B6-8D463C61C021} {F6CC5F60-BD13-41B1-81D3-822A45EC0DBD} = {6ABA1767-6242-4CA0-BA22-A30972DC8918} - {7AE31676-6137-4FB3-AE9C-AD47D8A861CF} = {6ABA1767-6242-4CA0-BA22-A30972DC8918} {33B49CB8-CBE3-4ED2-86DD-C9A351AC9026} = {60D3315D-FBF4-4FBF-8D44-99D5BED11D32} {864805EA-FD39-453D-9248-C581951BA058} = {6D9F5D00-2988-4812-844D-D155C4F588DC} {FED3A941-0AF7-49FE-85CF-E1DFDC0EBB23} = {6D9F5D00-2988-4812-844D-D155C4F588DC} @@ -182,7 +157,6 @@ Global {352B45B3-FE88-4431-9D89-48CF811446DB} = {C0A6FC9A-3A5C-48F8-A4B6-8D463C61C021} {FC4C071B-2C26-4B03-948A-335C94A88B5E} = {9F328FE9-129D-4C0C-820B-BE4AA5996652} {61D6A599-6BED-4154-A9FC-40553BD972E0} = {6ABA1767-6242-4CA0-BA22-A30972DC8918} - {99B4DF6A-6180-4E7F-9227-F812FF30414A} = {9F328FE9-129D-4C0C-820B-BE4AA5996652} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {026DA20F-820C-40AA-983E-0E231EA90AD5} diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index 724a6a7389..83c8eaed4e 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -506,7 +506,7 @@ REPLACE INTO `item_db` VALUES (1120,'Tsurugi_','Tsurugi',5,51000,NULL,1200,130,N REPLACE INTO `item_db` VALUES (1121,'Tsurugi__','Tsurugi',5,51000,NULL,1200,130,NULL,1,0,0x000654E2,7,2,2,3,27,1,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1122,'Ring_Pommel_Saber','Ring Pommel Saber',5,24000,NULL,900,100,NULL,1,2,0x000654E2,7,2,2,2,14,1,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1123,'Haedonggum','Haedonggum',5,50000,NULL,900,120,NULL,1,1,0x000654E2,7,2,2,3,27,1,2,'bonus bInt,3;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1124,'Orcish_Sword','Orcish Sword',5,20,NULL,800,90,NULL,1,0,0x000654E3,7,2,2,3,5,1,2,'bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1124,'Orcish_Sword','Orcish Sword',5,20,NULL,800,90,NULL,1,0,0x000654E3,7,2,2,3,5,1,2,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1125,'Ring_Pommel_Saber_','Ring Pommel Saber',5,24000,NULL,900,100,NULL,1,3,0x000654E2,7,2,2,2,14,1,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1126,'Saber','Saber',5,49000,NULL,1000,115,NULL,1,2,0x000654E2,7,2,2,3,27,1,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1127,'Saber_','Saber',5,49000,NULL,1000,115,NULL,1,3,0x000654E2,7,2,2,3,27,1,2,NULL,NULL,NULL); @@ -523,14 +523,14 @@ REPLACE INTO `item_db` VALUES (1137,'Excalibur','Excalibur',5,20,NULL,1200,150,N REPLACE INTO `item_db` VALUES (1138,'Mysteltainn_','Mysteltainn',5,20,NULL,1000,170,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1139,'Tale_Fing_','Tirfing',5,20,NULL,1000,200,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000;',NULL,NULL); REPLACE INTO `item_db` VALUES (1140,'Byeorrun_Gum','Byeollungum',5,20,NULL,900,150,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus2 bSubClass,Class_Normal,-10; bonus2 bAddClass,Class_Boss,50; bonus bAllStats,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1141,'Immaterial_Sword','Immaterial Sword',5,20,NULL,900,140,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1141,'Immaterial_Sword','Immaterial Sword',5,20,NULL,900,140,NULL,1,0,0x000654E2,7,2,2,4,40,1,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1142,'Jewel_Sword','Jeweled Sword',5,20,NULL,2200,104,NULL,1,0,0x000654E2,7,2,2,3,68,1,2,'bonus2 bAddMonsterDropItemGroup,IG_Jewel,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1143,'Gaia_Sword','Gaia Sword',5,20,NULL,2500,140,NULL,1,0,0x000654E2,7,2,2,3,74,1,2,'bonus2 bAddMonsterDropItemGroup,IG_Ore,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (1144,'Sasimi','Sashimi',5,20,NULL,1400,75,NULL,1,0,0x000654E2,7,2,2,3,48,1,2,'bonus bAtkEle,Ele_Wind; bonus3 bAddMonsterDropItem,544,RC_Fish,4000;',NULL,NULL); REPLACE INTO `item_db` VALUES (1145,'Holy_Avenger','Holy Avenger',5,450000,NULL,1350,125,NULL,1,0,0x00004000,7,2,2,3,75,1,2,'bonus bAtkEle,Ele_Holy; bonus bVit,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1146,'Town_Sword','Town Sword',5,42000,NULL,800,100,NULL,1,1,0x00000001,7,2,2,3,30,1,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1147,'Town_Sword_','Town Sword',5,42000,NULL,800,100,NULL,1,2,0x00000001,7,2,2,3,30,1,2,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1148,'Star_Dust_Blade','Star Dust Blade',5,20,NULL,1000,140,NULL,1,1,0x00000001,7,2,2,4,45,1,2,'bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1148,'Star_Dust_Blade','Star Dust Blade',5,20,NULL,1000,140,NULL,1,1,0x00000001,7,2,2,4,45,1,2,'bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1149,'Flamberge_','Flamberge',5,60000,NULL,1500,150,NULL,1,2,0x00004080,7,2,2,3,27,1,2,NULL,NULL,NULL); # 2-Handed Swords REPLACE INTO `item_db` VALUES (1151,'Slayer','Slayer',5,15000,NULL,1300,90,NULL,1,2,0x00004082,7,2,34,2,18,1,3,NULL,NULL,NULL); @@ -542,18 +542,18 @@ REPLACE INTO `item_db` VALUES (1156,'Bastard_Sword__','Bastard Sword',5,22500,NU REPLACE INTO `item_db` VALUES (1157,'Two_Hand_Sword','Two-Handed Sword',5,60000,NULL,2200,160,NULL,1,1,0x00004082,7,2,34,3,33,1,3,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1158,'Two_Hand_Sword_','Two-Handed Sword',5,60000,NULL,2200,160,NULL,1,2,0x00004082,7,2,34,3,33,1,3,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1159,'Two_Hand_Sword__','Two-Handed Sword',5,60000,NULL,2200,160,NULL,1,0,0x00004082,7,2,34,3,33,1,3,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1160,'Broad_Sword','Broad Sword',5,65000,NULL,2000,140,NULL,1,1,0x00004082,7,2,34,3,33,1,3,'bonus bDef,5; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1161,'Balmung','Balmung',5,20,NULL,1000,250,NULL,1,0,0xFFFFFFFF,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Holy;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1162,'Broad_Sword_','Broad Sword',5,65000,NULL,2000,140,NULL,1,2,0x00004082,7,2,34,3,33,1,3,'bonus bDef,5; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1160,'Broad_Sword','Broad Sword',5,65000,NULL,2000,140,NULL,1,1,0x00004082,7,2,34,3,33,1,3,'bonus bDef,5; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1161,'Balmung','Balmung',5,20,NULL,1000,250,NULL,1,0,0xFFFFFFFF,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1162,'Broad_Sword_','Broad Sword',5,65000,NULL,2000,140,NULL,1,2,0x00004082,7,2,34,3,33,1,3,'bonus bDef,5; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1163,'Claymore','Claymore',5,74000,NULL,2500,180,NULL,1,0,0x00004080,7,2,34,3,33,1,3,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1164,'Muramasa','Muramasa',5,20,NULL,1000,155,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bCritical,30; bonus bAspdRate,8; bonus2 bAddEff2,Eff_Curse,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1165,'Masamune','Masamune',5,20,NULL,1000,200,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); REPLACE INTO `item_db` VALUES (1166,'Dragon_Slayer','Dragon Slayer',5,20,NULL,1300,150,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (1167,'Schweizersabel','Schweizersabel',5,20,NULL,1600,160,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1168,'Zweihander','Zweihander',5,20,NULL,2200,200,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1168,'Zweihander','Zweihander',5,20,NULL,2200,200,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1169,'Executioner_','Executioner',5,20,NULL,2200,155,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db` VALUES (1170,'Katzbalger','Katzbalger',5,20,NULL,2000,175,NULL,1,0,0x00004082,7,2,34,4,48,1,3,'bonus bVit,5; bonus bDef,10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1171,'Zweihander_','Zweihander',5,20,NULL,2200,200,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1171,'Zweihander_','Zweihander',5,20,NULL,2200,200,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1172,'Claymore_','Claymore',5,74000,NULL,2500,180,NULL,1,2,0x00004080,7,2,34,3,33,1,3,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1173,'Muramasa_C','Muramasa',5,1,NULL,0,204,NULL,1,0,0x00004082,7,2,34,4,1,0,3,'bonus bCritical,30; bonus bAspdRate,8;',NULL,NULL); REPLACE INTO `item_db` VALUES (1174,'Executioner_C','Executioner',5,2,NULL,0,190,NULL,1,0,0x00004082,7,2,34,4,0,0,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL); @@ -565,11 +565,11 @@ REPLACE INTO `item_db` VALUES (1179,'Executioner__','Executioner',5,20,NULL,2200 REPLACE INTO `item_db` VALUES (1180,'Dragon_Slayer_','Dragon Slayer',5,20,NULL,1300,150,NULL,1,2,0x00004082,7,2,34,4,48,1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (1181,'Tae_Goo_Lyeon','Tae Goo Lyeon',5,20,NULL,2000,250,NULL,1,2,0x00004082,2,2,34,4,90,1,3,'bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bCastrate,-20; bonus bDelayRate,-20; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1182,'Bloody_Eater','Bloody Eater',5,20,NULL,1200,200,NULL,1,2,0x00004082,2,2,34,4,50,1,3,'bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,200,NULL,1,0,0x00004082,7,2,34,3,80,1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1185,'Violet_Fear','Violet Fear',5,20,NULL,2200,275,NULL,1,2,0x00004082,2,2,34,4,80,1,3,'bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL); REPLACE INTO `item_db` VALUES (1186,'Death_Guidance','Death Guidance',5,20,NULL,2000,200,NULL,1,2,0x00004082,2,2,34,4,70,1,3,'bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; if( getrefine()>8 ) bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",2,20; else bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",1,20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,220,NULL,1,0,0x00004082,7,2,34,4,80,1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,220,NULL,1,0,0x00004082,7,2,34,4,80,1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1188,'Veteran_Sword','Veteran Sword',5,10000,NULL,2000,180,NULL,1,1,0x00004082,7,2,34,4,80,1,3,'if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (1189,'Krasnaya','Krasnaya',5,20,NULL,3800,200,NULL,2,3,0x00004082,2,2,34,2,50,1,3,'if(readparam(bStr)>=95) { bonus bBaseAtk,20; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1190,'Claymore_C','Claymore',5,0,NULL,0,220,NULL,1,0,0x00004080,7,2,34,3,1,0,3,'bonus2 bAddSize,Size_All,40;',NULL,NULL); @@ -595,11 +595,11 @@ REPLACE INTO `item_db` VALUES (1218,'Stiletto__','Stiletto',5,19500,NULL,700,87, REPLACE INTO `item_db` VALUES (1219,'Gladius','Gladius',5,43000,NULL,700,105,NULL,1,2,0x028F5EEE,7,2,2,3,24,1,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1220,'Gladius_','Gladius',5,43000,NULL,700,105,NULL,1,3,0x028F5EEE,7,2,2,3,24,1,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1221,'Gladius__','Gladius',5,43000,NULL,700,105,NULL,1,0,0x028F5EEE,7,2,2,3,24,1,1,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1222,'Damascus','Damascus',5,49000,NULL,800,118,NULL,1,1,0x028F5EEE,7,2,2,3,24,1,1,'bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1222,'Damascus','Damascus',5,49000,NULL,800,118,NULL,1,1,0x028F5EEE,7,2,2,3,24,1,1,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1223,'Forturn_Sword','Fortune Sword',5,20,NULL,500,90,NULL,1,0,0x028F5EEE,7,2,2,4,24,1,1,'bonus bLuk,5; bonus bFlee2,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (1224,'Sword_Breaker','Swordbreaker',5,20,NULL,1000,70,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bBreakWeaponRate,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (1225,'Mail_Breaker','Mailbreaker',5,20,NULL,1000,70,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bBreakArmorRate,500;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1226,'Damascus_','Damascus',5,49000,NULL,800,118,NULL,1,2,0x028F5EEE,7,2,2,3,24,1,1,'bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1226,'Damascus_','Damascus',5,49000,NULL,800,118,NULL,1,2,0x028F5EEE,7,2,2,3,24,1,1,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1227,'Weeder_Knife','Weeder Knife',5,20,NULL,400,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (1228,'Combat_Knife','Combat Knife',5,20,NULL,400,80,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1229,'Mama\'s_Knife','Kitchen Knife',5,20,NULL,500,75,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000;',NULL,NULL); @@ -609,7 +609,7 @@ REPLACE INTO `item_db` VALUES (1232,'Assasin_Dagger','Assassin Dagger',5,20,NULL REPLACE INTO `item_db` VALUES (1233,'Exercise','Exorciser',5,20,NULL,700,90,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1234,'Moonlight_Sword','Moonlight Dagger',5,20,NULL,700,50,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1235,'Azoth','Azoth',5,20,NULL,700,110,NULL,1,0,0x00040000,7,2,2,4,36,1,1,'bonus bClassChange,300;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1236,'Sucsamad','Sucsamad',5,20,NULL,800,140,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1236,'Sucsamad','Sucsamad',5,20,NULL,800,140,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1237,'Grimtooth_','Grimtooth',5,20,NULL,800,180,NULL,1,0,0x028F5EEE,7,2,2,4,36,1,1,'bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1238,'Zeny_Knife','Zeny Knife',5,20,NULL,1200,64,NULL,1,0,0x028F5EEE,7,2,2,3,70,1,1,'bonus2 bGetZenyNum,100,40;',NULL,NULL); REPLACE INTO `item_db` VALUES (1239,'Poison_Knife','Poison Knife',5,20,NULL,800,64,NULL,1,0,0x028F5EEE,7,2,2,3,65,1,1,'bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000;',NULL,NULL); @@ -637,9 +637,9 @@ REPLACE INTO `item_db` VALUES (1259,'Katar_Of_Piercing_Wind','Katar of Piercing REPLACE INTO `item_db` VALUES (1260,'Ghoul_Leg','Sharpened Legbone of Ghoul',5,52500,NULL,1700,150,NULL,1,0,0x00001000,7,2,34,3,65,1,16,'bonus bAtkEle,Ele_Undead;',NULL,NULL); REPLACE INTO `item_db` VALUES (1261,'Infiltrator','Infiltrator',5,57000,NULL,1500,140,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1262,'Nail_Of_Loki','Loki\'s Nail',5,20,NULL,1200,115,NULL,1,0,0x00001000,7,2,34,3,55,1,16,'bonus2 bAddEff,Eff_Bleeding,300;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1263,'Unholy_Touch','Unholy Touch',5,20,NULL,1250,151,NULL,1,0,0x00001000,7,2,34,4,70,1,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1263,'Unholy_Touch','Unholy Touch',5,20,NULL,1250,151,NULL,1,0,0x00001000,7,2,34,4,70,1,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1264,'Various_Jur','Specialty Jur',5,20,NULL,800,90,NULL,1,4,0x00001000,7,2,34,1,1,1,16,'bonus2 bAddEff2,Eff_Bleeding,10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,120,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,120,NULL,1,0,0x00001000,7,2,34,4,75,1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-(readparam(bAgi)+BaseLevel); bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1266,'Infiltrator_','Infiltrator',5,57000,NULL,1500,140,NULL,1,1,0x00001000,7,2,34,4,75,1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1267,'Infiltrator_C','Infiltrator',5,1,NULL,0,189,NULL,1,0,0x00001000,7,2,34,4,1,0,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (1268,'Wild_Beast_Claw','Wild Beast Claw',5,20,NULL,1450,160,NULL,1,1,0x00001000,2,2,34,4,55,1,16,'if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_CRITICALWOUND",2,100; } else bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100;',NULL,NULL); @@ -647,20 +647,20 @@ REPLACE INTO `item_db` VALUES (1269,'Inverse_Scale','Inverse Scale',5,20,NULL,15 REPLACE INTO `item_db` VALUES (1270,'Drill_Katar','Drill Katar',5,20,NULL,1400,110,NULL,1,1,0x00001000,2,2,34,4,55,1,16,'bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150;',NULL,NULL); REPLACE INTO `item_db` VALUES (1271,'Blood_Tears','Blood Tears',5,20,NULL,1700,120,NULL,1,2,0x00001000,2,2,34,4,55,1,16,'if(getrefine()>=9){ bonus3 bAutoSpell,"NPC_WIDEBLEEDING",2,30; } else bonus3 bAutoSpell,"NPC_WIDEBLEEDING",1,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (1272,'Scratcher','Scratcher',5,20,NULL,0,120,NULL,1,0,0x00001000,7,2,34,1,0,0,16,'bonus2 bAddClass,Class_All,50;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,148,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1274,'Unholy_Touch_C','Refined Unholy Touch',5,1,NULL,0,179,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,148,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bHPRegenRate,3,5000;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1274,'Unholy_Touch_C','Refined Unholy Touch',5,1,NULL,0,179,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1275,'Katar_Of_Cold_Icicle_','Katar of Frozen Icicle',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (1276,'Katar_Of_Thornbush_','Katar of Quaking',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (1277,'Katar_Of_Raging_Blaze_','Katar of Raging Blaze',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (1278,'Katar_Of_Piercing_Wind_','Katar of Piercing Wind',5,45000,NULL,1200,105,NULL,1,3,0x00001000,7,2,34,3,55,1,16,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); -REPLACE INTO `item_db` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,130,NULL,1,0,0x00001000,7,2,34,3,80,1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,140,NULL,1,0,0x00001000,7,2,34,4,80,1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db` VALUES (1283,'Katar_Of_Speed','Katar Of Speed',5,20,NULL,0,175,NULL,1,0,0x00001000,7,2,34,4,0,0,16,'bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1284,'Krishna','Krishna',5,20,NULL,1200,120,NULL,1,2,0x00001000,2,2,34,3,50,1,16,'bonus2 bSkillAtk,"AS_GRIMTOOTH",10; if(getskilllv("AS_SONICBLOW")) { bonus3 bAutoSpell,"AS_SONICBLOW",getskilllv("AS_SONICBLOW"),5; }else{ bonus3 bAutoSpell,"AS_SONICBLOW",1,5; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1285,'Cakram','Chakram',5,20,NULL,1000,130,NULL,1,2,0x00001000,2,2,34,3,50,1,16,'if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1286,'Jamadhar_C','Jamadhar',5,0,NULL,0,200,NULL,1,0,0x00001000,7,2,34,3,1,0,16,'bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1286,'Jamadhar_C','Jamadhar',5,0,NULL,0,200,NULL,1,0,0x00001000,7,2,34,3,1,0,16,'bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40;',NULL,NULL); # 1-Handed Axes REPLACE INTO `item_db` VALUES (1301,'Axe','Axe',5,500,NULL,800,38,NULL,1,3,0x000654E3,7,2,2,1,3,1,6,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1302,'Axe_','Axe',5,500,NULL,800,38,NULL,1,4,0x000654E3,7,2,2,1,3,1,6,NULL,NULL,NULL); @@ -671,7 +671,7 @@ REPLACE INTO `item_db` VALUES (1306,'War_Axe','War Axe',5,20,NULL,4200,140,NULL, REPLACE INTO `item_db` VALUES (1307,'Windhawk','Windhawk',5,18000,NULL,1500,115,NULL,1,0,0x000654E2,7,2,2,2,14,1,6,'bonus bAtkEle,Ele_Wind; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (1308,'Golden_Axe','Golden Axe',5,20,NULL,3000,170,NULL,1,0,0x00000001,7,2,2,4,45,1,6,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1309,'Orcish_Axe_','Orcish Axe',5,20,NULL,1500,75,NULL,1,4,0x000654E3,7,2,2,3,3,1,6,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1311,'Vecer_Axe','Vecer Axe',5,20,NULL,1500,140,NULL,1,2,0x000444A2,2,2,2,3,50,1,6,'if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90||readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1312,'Orcish_Axe_C','Orcish Axe',5,0,NULL,0,110,NULL,1,0,0x000654E3,7,2,2,3,1,0,6,'bonus2 bAddSize,Size_All,70;',NULL,NULL); REPLACE INTO `item_db` VALUES (1313,'Tourist_Axe','Tourist Axe',5,0,NULL,500,77,NULL,1,0,0x000654E3,7,2,2,1,1,0,6,'bonus bStr,2;',NULL,NULL); @@ -706,10 +706,10 @@ REPLACE INTO `item_db` VALUES (1375,'Berdysz','Berdysz',5,20,NULL,2500,200,NULL, REPLACE INTO `item_db` VALUES (1376,'Heart_Breaker','Heart Breaker',5,20,NULL,2000,175,NULL,1,1,0x000444A2,2,2,34,4,70,1,7,'bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (1377,'Hurricane_Fury','Hurricane\'s Fury',5,20,NULL,3500,332,NULL,1,1,0x000444A2,2,2,34,4,80,1,7,'bonus2 bSubSize,Size_Medium,10+getrefine(); bonus bAspdRate,getrefine(); bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (1378,'Great_Axe_C','Refined Great Axe',5,1,NULL,0,215,NULL,1,0,0x000444A2,7,2,34,4,0,0,7,'bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,200,NULL,1,0,0x000444A2,7,2,34,3,80,1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1381,'N_Battle_Axe','Novice Battle Axe',5,0,NULL,0,100,NULL,1,3,0x000444A2,7,2,34,1,3,0,7,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,220,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,220,NULL,1,0,0x000444A2,7,2,34,4,80,1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(getrefine()>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1383,'Holy_Celestial_Axe','Celestial Axe',5,20,NULL,1500,200,NULL,1,0,0x000444A2,7,2,34,4,60,1,7,'bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1384,'Veteran_Axe','Veteran Axe',5,10000,NULL,3000,250,NULL,1,2,0x000444A2,7,2,34,3,80,1,7,'if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1385,'Bradium_Stonehammer','Bradium Stone Hammer',5,20,NULL,2700,210,NULL,1,0,0x000444A2,2,2,34,4,75,1,7,'bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine());',NULL,NULL); @@ -738,15 +738,15 @@ REPLACE INTO `item_db` VALUES (1416,'Tjungkuletti','Tjungkuletti',5,20,NULL,1000 REPLACE INTO `item_db` VALUES (1417,'Pole_Axe','Pole Axe',5,20,NULL,3800,160,NULL,3,1,0x00004082,7,2,2,3,71,1,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (1418,'Gungnir_','Gungnir',5,20,NULL,500,120,NULL,3,2,0x00004082,7,2,2,4,4,1,4,'bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (1419,'Pole_Axe_C','Pole Axe',5,1,NULL,4800,159,NULL,3,0,0x00004082,7,2,2,3,1,0,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1420,'Long_Horn','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1420,'Long_Horn','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1421,'Battle_Hook','Battle Hook',5,20,NULL,900,140,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1422,'Hunting_Spear','Hunting Spear',5,20,NULL,4200,180,NULL,3,1,0x00004082,2,2,2,4,60,1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1423,'Pole_XO','Pole XO',5,20,NULL,0,120,NULL,3,0,0x00004082,7,2,2,1,0,0,4,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1424,'Skewer_C','Refined Brocca',5,1,NULL,0,149,NULL,3,0,0x00004082,7,2,2,4,0,0,4,'bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,60,NULL,3,0,0x00004082,7,2,2,3,80,1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,130,NULL,3,0,0x00004082,7,2,2,4,80,1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,60,NULL,3,0,0x00004082,7,2,2,3,80,1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,130,NULL,3,0,0x00004082,7,2,2,4,80,1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1427,'Spear_Of_Excellent','Spear Of Excellent',5,20,NULL,0,160,NULL,3,0,0x00004082,7,2,2,3,0,0,4,'bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1428,'Long_Horn_M','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1428,'Long_Horn_M','Long Horn',5,20,NULL,1000,150,NULL,3,1,0x00004082,2,2,2,4,65,1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1429,'Hunting_Spear_M','Hunting Spear',5,20,NULL,4200,180,NULL,3,1,0x00004082,2,2,2,4,60,1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (1430,'Pike_C','Pike',5,0,NULL,0,74,NULL,3,0,0x00004082,7,2,2,1,1,0,4,'bonus2 bAddSize,Size_All,70;',NULL,NULL); REPLACE INTO `item_db` VALUES (1431,'F_Pole_Axe_C','Pole Axe',5,1,NULL,4800,195,NULL,3,0,0x00004082,7,2,2,3,1,0,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); @@ -785,11 +785,11 @@ REPLACE INTO `item_db` VALUES (1478,'Ahlspiess','Ahlspiess',5,20,NULL,1000,120,N REPLACE INTO `item_db` VALUES (1479,'Spectral_Spear_','Spectral Spear',5,20,NULL,2000,170,NULL,3,1,0x00004082,7,2,34,4,75,1,5,'bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1480,'Gae_Bolg_','Gae Bolg',5,20,NULL,2000,160,NULL,3,2,0x00004082,7,2,34,4,60,1,5,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1481,'Zephyrus_','Zephyrus',5,20,NULL,2000,170,NULL,3,3,0x00004082,7,2,34,4,48,1,5,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1482,'BF_Lance1','Assaulter Lance',5,NULL,NULL,0,160,NULL,3,0,0x00004082,7,2,34,3,80,1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1482,'BF_Lance1','Assaulter Lance',5,NULL,NULL,0,160,NULL,3,0,0x00004082,7,2,34,3,80,1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1483,'Ivory_Lance','Ivory Lance',5,20,NULL,1000,160,NULL,3,1,0x00004082,2,2,34,3,50,1,5,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"LK_JOINTBEAT",1,100; skill "KN_SPEARSTAB",5;',NULL,NULL); REPLACE INTO `item_db` VALUES (1484,'Cardo','Cardo',5,20,NULL,5600,150,NULL,3,1,0x00000080,2,2,34,4,70,1,5,'bonus bAspdRate,-10; bonus bDef,getrefine()/2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1485,'Battle_Fork','Battle Fork',5,20,NULL,700,112,NULL,3,4,0x00004082,2,2,34,2,50,1,5,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,220,NULL,3,0,0x00004082,7,2,34,4,80,1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,220,NULL,3,0,0x00004082,7,2,34,4,80,1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1487,'Lance_C','Lance',5,0,NULL,0,220,NULL,3,0,0x00004082,7,2,34,3,1,0,5,'bonus2 bAddSize,Size_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1488,'Ahlspiess_C','Ahlspiess',5,20,NULL,0,135,NULL,3,0,0x00004080,7,2,34,4,1,1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL); # Maces @@ -816,13 +816,13 @@ REPLACE INTO `item_db` VALUES (1520,'Chain_','Chain',5,23000,NULL,800,84,NULL,1, REPLACE INTO `item_db` VALUES (1521,'Chain__','Chain',5,23000,NULL,800,84,NULL,1,3,0x0004C5B2,7,2,2,2,14,1,8,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1522,'Stunner','Stunner',5,60000,NULL,2000,140,NULL,1,0,0x00008110,7,2,2,3,27,1,8,'bonus2 bAddEff,Eff_Stun,1000;',NULL,NULL); REPLACE INTO `item_db` VALUES (1523,'Spike','Spike',5,20,NULL,700,85,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,110,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,110,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1525,'Long_Mace','Long Mace',5,20,NULL,800,135,NULL,3,0,0x00008110,7,2,2,4,40,1,8,'bonus bLongAtkDef,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1526,'Slash','Slash',5,20,NULL,1000,145,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,165,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1528,'Grand_Cross','Grand Cross',5,20,NULL,1500,140,NULL,1,0,0x00008110,7,2,2,4,40,1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1529,'Iron_Driver','Iron Driver',5,20,NULL,3000,155,NULL,2,0,0x00008100,7,2,2,3,78,1,8,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1530,'Mjolnir','Mjolnir',5,20,NULL,6000,250,NULL,1,0,0x000444A2,7,2,2,4,95,0,8,'bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1530,'Mjolnir','Mjolnir',5,20,NULL,6000,250,NULL,1,0,0x000444A2,7,2,2,4,95,0,8,'bonus bAtkEle,Ele_Wind; bonus bDex,40; bonus bStr,15; bonus bAspdRate,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1531,'Spanner','Wrench',5,20,NULL,2500,115,NULL,1,0,0x00008110,7,2,2,3,55,1,8,'bonus2 bAddEff,Eff_Blind,100; bonus2 bAddEff,Eff_Stun,100; bonus2 bAddEff,Eff_Poison,100; bonus2 bAddEff,Eff_Freeze,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1532,'Stunner_','Stunner',5,60000,NULL,2000,140,NULL,1,2,0x00008110,7,2,2,3,27,1,8,'bonus2 bAddEff,Eff_Stun,1000;',NULL,NULL); REPLACE INTO `item_db` VALUES (1533,'Warrior_Balmung','Warrior\'s Balmung',5,20,NULL,1000,170,NULL,1,0,0xFFFFFFFF,7,2,2,4,48,1,8,'bonus bAllStats,5;',NULL,NULL); @@ -831,14 +831,14 @@ REPLACE INTO `item_db` VALUES (1535,'Hollgrehenn_Hammer','Hollgrehenn\'s Hammer' REPLACE INTO `item_db` VALUES (1536,'Good_Morning_Star','Good Morning Star',5,20,NULL,0,120,NULL,1,0,0x0004C5B2,7,2,2,1,0,0,8,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1537,'Quadrille_C','Refined Quadrille',5,1,NULL,0,193,NULL,1,0,0x00008110,7,2,2,4,0,0,8,'bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40;',NULL,NULL); REPLACE INTO `item_db` VALUES (1538,'Spike_','Spike',5,20,NULL,700,85,NULL,1,2,0x00008110,7,2,2,4,40,1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1539,'Golden_Mace_','Golden Mace',5,20,NULL,800,110,NULL,1,2,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1539,'Golden_Mace_','Golden Mace',5,20,NULL,800,110,NULL,1,2,0x00008110,7,2,2,4,40,1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1540,'Grand_Cross_','Grand Cross',5,20,NULL,1500,140,NULL,1,1,0x00008110,7,2,2,4,40,1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1541,'Nemesis','Nemesis',5,20,NULL,900,120,NULL,1,0,0x00008110,7,2,2,4,60,1,8,'bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }";',NULL,NULL); -REPLACE INTO `item_db` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,105,NULL,1,0,0x0004C5B3,7,2,2,3,80,1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db` VALUES (1544,'Lunakaligo','Lunakaligo',5,20,NULL,700,110,NULL,1,3,0x00008110,2,2,2,3,50,1,8,'if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1545,'N_Mace','Novice Mace',5,0,NULL,0,57,NULL,1,3,0x0004C5B3,7,2,2,1,2,0,8,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,130,NULL,1,0,0x0004C5B3,7,2,2,4,80,1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,130,NULL,1,0,0x0004C5B3,7,2,2,4,80,1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(getrefine()>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1547,'Mace_Of_Madness','Mace Of Madness',5,20,NULL,0,150,NULL,1,0,0x0004C5B2,7,2,2,3,0,0,8,'bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1548,'Veteran_Hammer','Veteran Hammer',5,10000,NULL,1800,160,NULL,1,2,0x00008110,7,2,2,3,80,1,8,'bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1;',NULL,NULL); # Books @@ -866,10 +866,10 @@ REPLACE INTO `item_db` VALUES (1570,'Book_Of_Blazing_Sun_','Book of Blazing Sun' REPLACE INTO `item_db` VALUES (1571,'Book_Of_Gust_Of_Wind_','Book of Gust of Wind',5,35000,NULL,750,90,NULL,1,3,0x00410100,7,2,2,3,27,1,15,'bonus bAtkEle,Ele_Wind;',NULL,NULL); REPLACE INTO `item_db` VALUES (1572,'Principles_Of_Magic','Principles of Magic',5,20,NULL,300,60,NULL,1,2,0x00410100,7,2,2,3,60,1,15,'bonus bMatkRate,20; bonus bInt,3; bonus bSPrecovRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (1573,'Ancient_Magic','Ancient Magic',5,20,NULL,700,30,NULL,1,2,0x00410100,7,2,2,3,70,1,15,'bonus bMatkRate,15;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL); -REPLACE INTO `item_db` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,3,80,1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL); +REPLACE INTO `item_db` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,90,NULL,1,0,0x00410100,7,2,2,4,80,1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(getrefine()>8) { bonus bMatkRate,5; bonus bCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1578,'Book_Of_Prayer','Book Of Prayer',5,20,NULL,0,140,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,137,NULL,1,2,0x00410100,7,2,2,4,85,1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (1580,'Encyclopedia_C','Giant Encyclopedia',5,0,NULL,0,145,NULL,1,0,0x00410100,7,2,2,3,0,0,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40;',NULL,NULL); @@ -909,16 +909,16 @@ REPLACE INTO `item_db` VALUES (1628,'Survival_Rod_C','Refined Survivor\'s Rod',5 REPLACE INTO `item_db` VALUES (1629,'Walking_Stick','Gentleman\'s Staff',5,20,NULL,500,40,NULL,1,1,0x00818314,7,2,2,4,50,1,10,'bonus bMatkRate,15; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (1630,'Release_Of_Wish','Release of Wish',5,20,NULL,500,30,NULL,1,0,0x00810204,7,2,2,3,50,1,10,'bonus bMatkRate,15; bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }";',NULL,NULL); REPLACE INTO `item_db` VALUES (1631,'Holy_Stick','Holy Stick',5,20,NULL,500,50,NULL,1,1,0x00008100,7,2,2,4,70,1,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bCastrate,"AL_HOLYLIGHT",-25; bonus2 bCastrate,"PR_TURNUNDEAD",-25; bonus2 bCastrate,"PR_MAGNUS",-25;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1634,'BF_Staff3','Strong Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1635,'BF_Staff4','Speedy Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_SKILL; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1634,'BF_Staff3','Strong Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1635,'BF_Staff4','Speedy Recovery Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,3,80,1,10,'bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1636,'Thorn_Staff','Thorn Staff of Darkness',5,20,NULL,700,60,NULL,1,0,0x00018314,2,2,2,4,75,1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,20; bonus2 bIgnoreMdefClassRate,Class_Normal,getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,getrefine(); bonus bDelayRate,-(getrefine()*3/2);',NULL,NULL); REPLACE INTO `item_db` VALUES (1637,'Eraser','Eraser',5,20,NULL,500,80,NULL,1,0,0x00018314,2,2,2,4,70,1,10,'bonus bMatkRate,20; bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; if( getrefine()>9 ) bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",3,5,BF_MAGIC,0; else bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",1,5,BF_MAGIC,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1638,'Healing_Staff_C','Staff Of Healing',5,20,NULL,0,10,NULL,1,0,0x00008110,7,2,2,3,1,0,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);',NULL,NULL); +REPLACE INTO `item_db` VALUES (1638,'Healing_Staff_C','Staff Of Healing',5,20,NULL,0,10,NULL,1,0,0x00008110,7,2,2,3,1,1,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);',NULL,NULL); REPLACE INTO `item_db` VALUES (1639,'N_Rod','Novice Rod',5,0,NULL,0,15,NULL,1,3,0x00818315,7,2,2,1,1,0,10,'bonus bMatkRate,16;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon,0; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((getrefine()>5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((getrefine()>5) ? 5 : 0); bonus bUnbreakableWeapon; if(getrefine()>8) { bonus bCastrate,-5; bonus bDelayRate,-5; bonus bMatkRate,5; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,70,NULL,1,0,0x00818314,7,2,2,4,80,1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(getrefine()-5)*2; } if(getrefine()>8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(getrefine()>9) { bonus bHealPower,10; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1642,'Staff_Of_Darkness','Staff Of Darkness',5,20,NULL,0,100,NULL,1,0,0x00818314,7,2,2,2,0,0,10,'bonus bCastrate,-5; bonus bMatkRate,15; bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1643,'Dead_Tree_Cane','Dead Tree Cane',5,20,NULL,100,100,NULL,1,0,0x00818314,7,2,2,4,70,1,10,'bonus bMatk,15; bonus bInt,4; if(getrefine()>5) { bonus bInt,getrefine()-5; bonus bMaxHP,-200; bonus bMaxSP,-100; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1644,'Piercing_Staff_M','Staff of Piercing',5,20,NULL,500,80,NULL,1,0,0x00018314,2,2,2,3,70,1,10,'bonus bInt,4; bonus bMatkRate,15; bonus2 bIgnoreMdefClassRate,Class_Normal,10+getrefine(); bonus2 bIgnoreMdefClassRate,Class_Boss,10+getrefine();',NULL,NULL); @@ -963,12 +963,12 @@ REPLACE INTO `item_db` VALUES (1734,'Orc_Archer_Bow','Orc Archer Bow',5,20,NULL, REPLACE INTO `item_db` VALUES (1735,'Kkakkung','Kkakkung',5,20,NULL,0,120,NULL,5,0,0x000A0848,7,2,34,1,1,0,11,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1736,'Double_Bound','Double Bound',5,20,NULL,900,70,NULL,5,3,0x00000800,2,2,34,3,70,1,11,'bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1737,'Ixion_Wing','Ixion Wings',5,20,NULL,300,135,NULL,5,1,0x00000800,2,2,34,4,70,1,11,'autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,0,NULL,0,100,NULL,5,0,0x000A0848,7,2,34,3,80,1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1740,'Nepenthes_Bow','Nepenthes Bow',5,20,NULL,1000,105,NULL,5,2,0x00000800,2,2,34,4,60,1,11,'bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (1741,'Cursed_Lyre','Cursed Lyre',5,20,NULL,1250,125,NULL,5,1,0x00080808,2,2,34,4,80,1,11,'bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400;',NULL,NULL); REPLACE INTO `item_db` VALUES (1742,'N_Composite_Bow','Novice Composite Bow',5,1,NULL,0,49,NULL,5,3,0x000A0848,7,2,34,1,4,0,11,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,100,NULL,5,0,0x001A0848,7,2,34,4,80,1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,100,NULL,5,0,0x001A0848,7,2,34,4,80,1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bCritAtkRate,getrefine() * 2; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL); REPLACE INTO `item_db` VALUES (1744,'Bow_Of_Evil','Bow Of Evil',5,0,NULL,0,170,NULL,5,0,0x000A0848,7,2,34,4,1,0,11,'bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1745,'Falken_Blitz','Falken Blitz',5,0,NULL,1000,100,NULL,5,2,0x00080808,2,2,34,3,50,1,11,'bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10;',NULL,NULL); # Arrows @@ -1018,11 +1018,11 @@ REPLACE INTO `item_db` VALUES (1819,'Icicle_Fist','Icicle Fist',5,20,NULL,650,80 REPLACE INTO `item_db` VALUES (1820,'Electric_Fist','Electric Fist',5,20,NULL,650,80,NULL,1,3,0x00008100,7,2,2,3,75,1,12,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1821,'Seismic_Fist','Seismic Fist',5,20,NULL,650,80,NULL,1,3,0x00008100,7,2,2,3,75,1,12,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1822,'Combo_Battle_Glove','Combo Battle Glove',5,20,NULL,500,30,NULL,1,4,0x00008100,7,2,2,3,60,1,12,'bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,3,80,1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1825,'Horn_Of_Hilthrion','Horn of Hillslion',5,20,NULL,600,95,NULL,1,3,0x00008000,2,2,2,3,60,1,12,'bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); }',NULL,NULL); -REPLACE INTO `item_db` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(getrefine()*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(getrefine()*10-50); }',NULL,NULL); +REPLACE INTO `item_db` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,30,NULL,1,0,0x00008100,7,2,2,4,80,1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1828,'Monk_Knuckle','Monk Knuckle',5,20,NULL,0,150,NULL,1,0,0x00008100,7,2,2,4,0,0,12,'bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25;',NULL,NULL); REPLACE INTO `item_db` VALUES (1829,'Fist_C','Fist',5,0,NULL,0,150,NULL,1,0,0x00008100,7,2,2,3,1,0,12,'bonus2 bAddSize,Size_All,40;',NULL,NULL); # Instruments @@ -1038,7 +1038,7 @@ REPLACE INTO `item_db` VALUES (1909,'Harp','Harp',5,62000,NULL,900,114,NULL,1,1, REPLACE INTO `item_db` VALUES (1910,'Harp_','Harp',5,62000,NULL,900,114,NULL,1,2,0x00080000,7,1,2,3,27,1,13,'bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (1911,'Guh_Moon_Goh','Gumoongoh',5,54000,NULL,1300,126,NULL,1,1,0x00080000,7,1,2,3,27,1,13,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (1912,'Guh_Moon_Goh_','Gumoongoh',5,54000,NULL,1300,126,NULL,1,2,0x00080000,7,1,2,3,27,1,13,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (1913,'Electronic_Guitar','Electric Guitar',5,20,NULL,1800,110,NULL,1,0,0x00080000,7,1,2,4,70,1,13,'skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1913,'Electronic_Guitar','Electric Guitar',5,20,NULL,1800,110,NULL,1,0,0x00080000,7,1,2,4,70,1,13,'skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (1914,'Guitar_Of_Passion','Burning Passion Guitar',5,20,NULL,900,110,NULL,1,0,0x00080000,7,1,2,3,27,1,13,'bonus bAtkEle,Ele_Fire;',NULL,NULL); REPLACE INTO `item_db` VALUES (1915,'Guitar_Of_Blue_Solo','Loner\'s Guitar',5,20,NULL,900,110,NULL,1,0,0x00080000,7,1,2,3,27,1,13,'bonus bAtkEle,Ele_Water;',NULL,NULL); REPLACE INTO `item_db` VALUES (1916,'Guitar_Of_Vast_Land','Green Acre Guitar',5,20,NULL,900,110,NULL,1,0,0x00080000,7,1,2,3,27,1,13,'bonus bAtkEle,Ele_Earth;',NULL,NULL); @@ -1048,11 +1048,11 @@ REPLACE INTO `item_db` VALUES (1919,'Base_Guitar','Bass Guitar',5,20,NULL,1500,1 REPLACE INTO `item_db` VALUES (1920,'Berserk_Guitar','Berserk Guitar',5,20,NULL,1800,10,NULL,1,0,0x00080000,2,1,2,4,70,1,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL); REPLACE INTO `item_db` VALUES (1921,'Guh_Moon_Gom','Gun Moon Gom',5,20,NULL,0,120,NULL,1,0,0x00080000,7,1,2,1,0,0,13,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1922,'Oriental_Lute_','Oriental Lute',5,20,NULL,1200,150,NULL,1,2,0x00080000,7,1,2,4,65,1,13,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,3,80,1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1925,'Cello','Cello',5,20,NULL,700,110,NULL,1,3,0x00080000,2,1,2,3,70,1,13,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL); REPLACE INTO `item_db` VALUES (1926,'Harp_Of_Nepenthes','Harp of Nepenthes',5,20,NULL,1000,120,NULL,1,2,0x00080000,2,1,2,4,60,1,13,'bonus bInt,2; if( getrefine()>9 ) { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,2000; } else { bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,1000; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,4,80,1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,50,NULL,1,0,0x00080000,7,1,2,4,80,1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1928,'Berserk_Guitar_I','Spirited Guitar',5,0,NULL,0,40,NULL,1,0,0x00080000,2,1,2,4,0,0,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL); REPLACE INTO `item_db` VALUES (1929,'Guitar_C','Guitar',5,0,NULL,0,177,NULL,1,0,0x00080000,7,1,2,3,1,0,13,'bonus2 bAddSize,Size_All,40;',NULL,NULL); # Whips @@ -1083,17 +1083,17 @@ REPLACE INTO `item_db` VALUES (1973,'Sea_Witch_Foot','Sea Witch\'s Foot',5,20,NU REPLACE INTO `item_db` VALUES (1974,'Carrot_Whip','Carrot Whip',5,20,NULL,1300,185,NULL,2,0,0x00080000,2,0,2,4,70,1,14,'if(getrefine()>0) bonus3 bAutoSpell,"AL_INCAGI",getrefine(),10;',NULL,NULL); REPLACE INTO `item_db` VALUES (1975,'Queen_Is_Whip','Queen Is Whip',5,20,NULL,0,120,NULL,2,0,0x00080000,7,0,2,1,0,0,14,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (1976,'Queen\'s_Whip_','Queen\'s Whip',5,20,NULL,1100,150,NULL,2,2,0x00080000,7,0,2,4,65,1,14,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,3,80,1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (1979,'Stem_Of_Nepenthes','Stem of Nepenthes',5,20,NULL,1000,120,NULL,2,2,0x00080000,2,0,2,4,60,1,14,'bonus bInt,2; if( getrefine()>=9 ) { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,2000; } else { bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,1000; }',NULL,NULL); REPLACE INTO `item_db` VALUES (1980,'Whip_Of_Balance','Whip of Balance',5,20,NULL,700,110,NULL,2,3,0x00080000,2,0,2,3,70,1,14,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL); -REPLACE INTO `item_db` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,4,80,1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,50,NULL,2,0,0x00080000,7,0,2,4,80,1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (1982,'Phenomena_Whip','Phenomena Whip',5,20,NULL,0,160,NULL,2,0,0x00080000,7,0,2,4,0,0,14,'bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25;',NULL,NULL); REPLACE INTO `item_db` VALUES (1983,'Rante_C','Rante Whip',5,0,NULL,0,170,NULL,2,0,0x00080000,7,0,2,3,1,0,14,'bonus2 bAddSize,Size_All,40;',NULL,NULL); # Additional 2-Handed Staffs REPLACE INTO `item_db` VALUES (2000,'Destruction_Rod','Staff of Destruction',5,20,NULL,2500,130,NULL,1,1,0x00000200,2,2,34,4,80,1,23,'bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50;',NULL,NULL); REPLACE INTO `item_db` VALUES (2001,'Divine_Cross','Divine Cross',5,20,NULL,1500,120,NULL,1,0,0x00008100,7,2,34,4,70,1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,70,NULL,1,0,0x00018314,7,2,34,4,80,1,23,'bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,70,NULL,1,0,0x00018314,7,2,34,4,80,1,23,'bonus bMatkRate,getrefine(); bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bMagicAddRace,RC_DemiHuman,(getrefine()-5)*2; bonus2 bMagicAddRace,RC_Player,(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(getrefine()-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(getrefine()-5)*2; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL); REPLACE INTO `item_db` VALUES (2003,'Destruction_Rod_M','Staff of Destruction',5,20,NULL,2500,130,NULL,1,1,0x00000200,2,2,34,4,80,1,23,'bonus bMatkRate,25+getrefine()/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(getrefine()*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(getrefine()*20); bonus2 bCastrate,"HW_MAGICPOWER",-50;',NULL,NULL); REPLACE INTO `item_db` VALUES (2004,'Kronos','Kronos',5,20,NULL,1000,30,NULL,1,0,0x00010204,2,2,34,4,50,1,23,'bonus bMatkRate,20; bonus bInt,3+(getrefine()/2); bonus bMaxHP,300+(50*getrefine()/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); REPLACE INTO `item_db` VALUES (2005,'Dea_Staff','Dea Staff',5,20,NULL,1000,30,NULL,1,1,0x00008110,2,2,34,3,50,1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15+getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }";',NULL,NULL); @@ -1110,7 +1110,7 @@ REPLACE INTO `item_db` VALUES (2107,'Mirror_Shield','Mirror Shield',4,60000,NULL REPLACE INTO `item_db` VALUES (2108,'Mirror_Shield_','Mirror Shield',4,60000,NULL,1000,NULL,4,NULL,1,0x00404082,7,2,32,NULL,0,1,4,'bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2109,'Memorize_Book','Memory Book',4,20,NULL,1000,NULL,3,NULL,0,0x00810204,7,2,32,NULL,0,1,5,'bonus bInt,1; bonus bMdef,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (2110,'Holy_Guard','Holy Guard',4,85000,NULL,1400,NULL,5,NULL,0,0x00004000,7,2,32,NULL,68,0,4,'bonus bVit,2; bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2111,'Herald_Of_GOD','Sacred Mission',4,128000,NULL,1600,NULL,5,NULL,0,0x00004000,7,2,32,NULL,83,1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2111,'Herald_Of_GOD','Sacred Mission',4,128000,NULL,1600,NULL,5,NULL,0,0x00004000,7,2,32,NULL,83,1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield;',NULL,NULL); REPLACE INTO `item_db` VALUES (2112,'Novice_Guard','Novice Guard',4,1,NULL,1,NULL,3,NULL,0,0x00000001,7,2,32,NULL,0,0,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2113,'Novice_Shield','Novice Shield',4,5000,NULL,1000,NULL,3,NULL,1,0x00000001,7,2,32,NULL,40,1,3,'bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (2114,'Stone_Buckler','Stone Buckler',4,30000,NULL,1500,NULL,3,NULL,1,0xFFFFFFFE,7,2,32,NULL,65,1,2,'bonus2 bSubSize,Size_Large,5;',NULL,NULL); @@ -1124,10 +1124,10 @@ REPLACE INTO `item_db` VALUES (2121,'Memorize_Book_','Memory Book',4,20,NULL,100 REPLACE INTO `item_db` VALUES (2122,'Platinum_Shield','Platinum Shield',4,20,NULL,1200,NULL,5,NULL,0,0xFFFFFFFE,2,2,32,NULL,68,1,4,'bonus bMdef,5; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; bonus2 bSubRace,RC_Undead,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0;',NULL,NULL); REPLACE INTO `item_db` VALUES (2123,'Orleans_Server','Orleans\'s Server',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFE,2,2,32,NULL,55,1,4,'bonus bMdef,2; bonus bMagicDamageReturn,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2124,'Thorny_Buckler','Thorny Buckler',4,20,NULL,1000,NULL,5,NULL,1,0xFFFFFFFE,2,2,32,NULL,55,1,2,'bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2125,'Strong_Shield','Strong Shield',4,20,NULL,2500,NULL,4,NULL,1,0xFFFFFFFE,2,2,32,NULL,75,1,4,'bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2125,'Strong_Shield','Strong Shield',4,20,NULL,2500,NULL,4,NULL,1,0xFFFFFFFE,2,2,32,NULL,75,1,4,'bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); REPLACE INTO `item_db` VALUES (2126,'Guyak_Shield','Guyak Shield',4,20,NULL,700,NULL,3,NULL,0,0xFFFFFFFE,7,2,32,NULL,75,1,2,'bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (2127,'Secular_Mission','Secular Mission',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,32,NULL,0,0,4,'bonus2 bSubClass,Class_All,25;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2128,'Herald_Of_GOD_','Sacred Mission',4,128000,NULL,1600,NULL,5,NULL,1,0x00004000,7,2,32,NULL,83,1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2128,'Herald_Of_GOD_','Sacred Mission',4,128000,NULL,1600,NULL,5,NULL,1,0x00004000,7,2,32,NULL,83,1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield;',NULL,NULL); REPLACE INTO `item_db` VALUES (2129,'Exorcism_Bible','Exorcism Bible',4,20,NULL,600,NULL,5,NULL,0,0x00008100,7,2,32,NULL,50,1,5,'bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2130,'Cross_Shield','Cross Shield',4,20,NULL,2000,NULL,6,NULL,1,0x00004000,7,2,32,NULL,80,1,4,'bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2131,'Magic_Study_Vol1','Magic Bible Vol1',4,20,NULL,1000,NULL,2,NULL,1,0x00810204,2,2,32,NULL,70,1,5,'bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000;',NULL,NULL); @@ -1140,7 +1140,7 @@ REPLACE INTO `item_db` VALUES (2137,'Valkyrja\'s_Shield_C','Neo Valkyrja\'s Shie REPLACE INTO `item_db` VALUES (2138,'Bradium_Shield','Bradium Shield',4,20,NULL,1800,NULL,5,NULL,1,0x00CFFF80,2,2,32,NULL,65,1,3,'bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",60; bonus bAgi,-1; bonus bMaxHP,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (2139,'Flame_Thrower','Flame Thrower',4,20000,NULL,2000,NULL,60,NULL,0,0x00000400,63,2,32,NULL,99,0,1,NULL,NULL,NULL); # GM Shield -REPLACE INTO `item_db` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,100,NULL,0,0xFFFFFFFF,7,2,32,NULL,1,1,0,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone,0; bonus bSpeedRate,25;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;'); +REPLACE INTO `item_db` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,100,NULL,0,0xFFFFFFFF,7,2,32,NULL,1,1,0,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; Skill "WZ_ESTIMATION",1; Skill "ST_FULLSTRIP",5; Skill "HW_MAGICPOWER",10; bonus bMaxHPRate,200; bonus bNoGemStone; bonus bSpeedRate,25;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;'); # Headgears #=================================================================== REPLACE INTO `item_db` VALUES (2201,'Sunglasses','Sunglasses',4,5000,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,12,'bonus2 bResEff,Eff_Blind,500;',NULL,NULL); @@ -1188,7 +1188,7 @@ REPLACE INTO `item_db` VALUES (2242,'Luxury_Sunglasses','Purple Glasses',4,24000 REPLACE INTO `item_db` VALUES (2243,'Spinning_Eyes','Geek Glasses',4,20000,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,27,'bonus2 bResEff,Eff_Blind,1500;',NULL,NULL); REPLACE INTO `item_db` VALUES (2244,'Big_Sis\'_Ribbon','Big Ribbon',4,15000,NULL,200,NULL,2,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,28,'bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (2245,'Sweet_Gents','Sweet Gent',4,15000,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,29,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (2246,'Golden_Gear','Golden Gear',4,20,NULL,900,NULL,5,NULL,0,0xFFFFFFFE,7,2,256,NULL,40,1,30,'bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2246,'Golden_Gear','Golden Gear',4,20,NULL,900,NULL,5,NULL,0,0xFFFFFFFE,7,2,256,NULL,40,1,30,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (2247,'Oldman\'s_Romance','Romantic Gent',4,15000,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,31,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2248,'Western_Grace','Western Grace',4,15000,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,32,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2249,'Coronet','Coronet',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,33,'bonus bInt,1;',NULL,NULL); @@ -1300,7 +1300,7 @@ REPLACE INTO `item_db` VALUES (2353,'Odin\'s_Blessing','Odin\'s Blessing',4,3000 REPLACE INTO `item_db` VALUES (2354,'Goibne\'s_Armor','Goibne\'s Armor',4,50000,NULL,3500,NULL,7,NULL,0,0xFFFFFFFE,7,2,16,NULL,54,1,0,'bonus bVit,2; bonus bMaxHPrate,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2355,'Angel\'s_Protection','Angelic Protection',4,10000,NULL,600,NULL,4,NULL,1,0x00000001,7,2,16,NULL,40,1,0,'bonus bMdef,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (2356,'Vestment_Of_Grace','Blessed Holy Robe',4,20,NULL,2500,NULL,5,NULL,1,0x00008100,7,2,16,NULL,70,1,0,'bonus bMdef,5; bonus2 bResEff,Eff_Blind,8000;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2357,'Valkyrie_Armor','Valkyrian Armor',4,0,NULL,2800,NULL,6,NULL,1,0xFFFFFFFE,2,2,16,NULL,1,1,0,'bonus bAllStats,1; bonus bUnbreakableArmor,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2357,'Valkyrie_Armor','Valkyrian Armor',4,0,NULL,2800,NULL,6,NULL,1,0xFFFFFFFE,2,2,16,NULL,1,1,0,'bonus bAllStats,1; bonus bUnbreakableArmor; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000;',NULL,NULL); REPLACE INTO `item_db` VALUES (2358,'Dress_Of_Angel','Angel\'s Dress',4,20,NULL,1000,NULL,5,NULL,0,0xFFFFFFFF,7,2,16,NULL,1,0,0,'bonus bLuk,4;',NULL,NULL); REPLACE INTO `item_db` VALUES (2359,'Ninja_Suit_','Ninja Suit',4,20,NULL,1500,NULL,7,NULL,1,0x02021040,7,2,16,NULL,50,1,0,'bonus bAgi,1; bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (2360,'Robe_Of_Casting_','Robe of Cast',4,124800,NULL,1100,NULL,5,NULL,1,0x00810200,7,2,16,NULL,75,1,0,'bonus bCastrate,-3; bonus bMdef,4;',NULL,NULL); @@ -1308,11 +1308,11 @@ REPLACE INTO `item_db` VALUES (2360,'Robe_Of_Casting_','Robe of Cast',4,124800,N #REPLACE INTO `item_db` VALUES (2362,'Red_Aodai','Red Robe',4,20,NULL,500,NULL,0,NULL,0,0xFFFFFFFE,7,2,16,NULL,1,1,0,'bonus bAllStats,3; bonus bMdef,5;',NULL,NULL); #REPLACE INTO `item_db` VALUES (2363,'White_Aodai','White Robe',4,20,NULL,500,NULL,0,NULL,0,0x00000001,7,2,16,NULL,1,1,0,'bonus bAllStats,3; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2364,'Meteo_Plate_Armor','Meteo Plate Armor',4,20,NULL,3000,NULL,10,NULL,1,0x000444A2,2,2,16,NULL,55,1,0,'bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Freeze,3000;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2365,'Orleans_Gown','Orleans\'s Gown',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFE,2,2,16,NULL,55,1,0,'bonus bCastrate,15; bonus bNoCastCancel,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2365,'Orleans_Gown','Orleans\'s Gown',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFE,2,2,16,NULL,55,1,0,'bonus bCastrate,15; bonus bNoCastCancel;',NULL,NULL); REPLACE INTO `item_db` VALUES (2366,'Divine_Cloth','Divine Cloth',4,20,NULL,1500,NULL,6,NULL,1,0xFFFFFFFE,2,2,16,NULL,55,1,0,'bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (2367,'Sniping_Suit','Sniping Suit',4,20,NULL,750,NULL,5,NULL,1,0x00000800,2,2,16,NULL,50,1,0,'bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23;',NULL,NULL); REPLACE INTO `item_db` VALUES (2368,'Golden_Armor','Golden Armor',4,20,NULL,2000,NULL,4,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMdef,4;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,0,0,'bonus bUnbreakableArmor,0; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,7,2,16,NULL,0,0,0,'bonus bUnbreakableArmor; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2370,'Used_Mage_Coat','Used Mage Coat',4,0,NULL,0,NULL,15,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAGI,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2371,'G_Strings_','Pantie',4,1000,NULL,100,NULL,4,NULL,1,0xFFFFFFFF,7,2,16,NULL,0,1,0,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2372,'Mage_Coat_','Mage Coat',4,20,NULL,600,NULL,5,NULL,1,0x00810204,7,2,16,NULL,50,1,0,'bonus bMdef,5; bonus bInt,1;',NULL,NULL); @@ -1326,7 +1326,7 @@ REPLACE INTO `item_db` VALUES (2379,'Warlock_Battle_Robe','Warlock\'s Battle Rob REPLACE INTO `item_db` VALUES (2380,'Medic_Robe','Medic\'s Robe',4,10,NULL,0,NULL,3,NULL,1,0x00008110,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (2381,'Elite_Archer_Suit','Elite Archer Suit',4,10,NULL,0,NULL,3,NULL,1,0x00080808,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (2382,'Elite_Shooter_Suit','Elite Shooter Suit',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,16,NULL,80,1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2383,'Brynhild','Brynhild',4,20,NULL,400,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,94,0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,0; bonus bNoKnockback,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2383,'Brynhild','Brynhild',4,20,NULL,400,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,94,0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor; bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db` VALUES (2384,'Spritual_Tunic','Spiritual Tunic',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (2385,'Recuperative_Armor','Recuperative Armor',4,20,NULL,0,NULL,12,NULL,0,0xFFFFFFFF,7,2,16,NULL,0,0,0,'bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6;',NULL,'heal 0,-100;'); REPLACE INTO `item_db` VALUES (2386,'Chameleon_Armor','Chameleon Armor',4,20,NULL,1700,NULL,5,NULL,0,0x00CFFF80,2,2,16,NULL,70,1,0,'bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3;',NULL,NULL); @@ -1365,7 +1365,7 @@ REPLACE INTO `item_db` VALUES (2417,'Fricco_Shoes','Fricco\'s Shoes',4,30000,NUL REPLACE INTO `item_db` VALUES (2418,'Vidar\'s_Boots','Vidar\'s Boots',4,30000,NULL,650,NULL,4,NULL,0,0xFFFFFFFE,7,2,64,NULL,65,1,0,'bonus bMaxHPrate,9; bonus bMaxSPrate,9;',NULL,NULL); REPLACE INTO `item_db` VALUES (2419,'Goibne\'s_Combat_Boots','Goibne\'s Greaves',4,30000,NULL,700,NULL,4,NULL,0,0xFFFFFFFE,7,2,64,NULL,54,1,0,'bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2420,'Angel\'s_Arrival','Angel\'s Reincarnation',4,10000,NULL,300,NULL,2,NULL,1,0x00000001,7,2,64,NULL,25,1,0,'bonus bMaxHP,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2421,'Valkyrie_Shoes','Valkyrian Shoes',4,0,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,64,NULL,1,1,0,'bonus bUnbreakableShoes,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2);',NULL,NULL); +REPLACE INTO `item_db` VALUES (2421,'Valkyrie_Shoes','Valkyrian Shoes',4,0,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,2,2,64,NULL,1,1,0,'bonus bUnbreakableShoes; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2);',NULL,NULL); REPLACE INTO `item_db` VALUES (2422,'High_Fashion_Sandals','High Fashion Sandals',4,24000,NULL,200,NULL,2,NULL,1,0x00818314,7,2,64,NULL,40,1,0,'bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2423,'Variant_Shoes','Variant Shoes',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFE,2,2,64,NULL,85,1,0,'bonus bMaxHPRate,20-getrefine(); bonus bMaxSPRate,20-getrefine(); bonus bDef,getrefine()/2;',NULL,NULL); REPLACE INTO `item_db` VALUES (2424,'Tidal_Shoes','Tidal Shoes',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFE,2,2,64,NULL,55,1,0,'bonus2 bSubEle,Ele_Water,5;',NULL,NULL); @@ -1404,7 +1404,7 @@ REPLACE INTO `item_db` VALUES (2504,'Muffler_','Muffler',4,5000,NULL,400,NULL,2, REPLACE INTO `item_db` VALUES (2505,'Manteau','Manteau',4,32000,NULL,600,NULL,4,NULL,0,0x006654E2,7,2,4,NULL,0,1,0,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2506,'Manteau_','Manteau',4,32000,NULL,600,NULL,4,NULL,1,0x006654E2,7,2,4,NULL,0,1,0,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2507,'Cape_Of_Ancient_Lord','Ancient Cape',4,82000,NULL,600,NULL,2,NULL,0,0xFFFFFFFE,7,2,4,NULL,40,1,0,'bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2508,'Ragamuffin_Cape','Ragamuffin Manteau',4,56000,NULL,500,NULL,1,NULL,0,0xFFFFFFFE,7,2,4,NULL,0,1,0,'bonus bUnbreakableGarment,0; bonus bMdef,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2508,'Ragamuffin_Cape','Ragamuffin Manteau',4,56000,NULL,500,NULL,1,NULL,0,0xFFFFFFFE,7,2,4,NULL,0,1,0,'bonus bUnbreakableGarment; bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2509,'Clack_Of_Servival','Survivor\'s Manteau',4,20000,NULL,550,NULL,0,NULL,0,0x00810204,7,2,4,NULL,75,1,0,'bonus bMdef,5; bonus bVit,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (2510,'Novice_Hood','Somber Novice Hood',4,1,NULL,1,NULL,2,NULL,0,0x00000001,7,2,4,NULL,0,0,0,'bonus2 bSubEle,Ele_Neutral,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (2511,'Skeleton\'s_Cape','Skeleton Manteau',4,5000,NULL,700,NULL,1,NULL,0,0xFFFFFFFE,7,2,4,NULL,75,1,0,'bonus bStr,2; bonus bInt,-3; bonus bDex,2; bonus bVit,-3; bonus bLuk,2; bonus bAgi,-4;',NULL,NULL); @@ -1420,7 +1420,7 @@ REPLACE INTO `item_db` VALUES (2520,'Goibne\'s_Shoulder_Arms','Goibne\'s Spaulde REPLACE INTO `item_db` VALUES (2521,'Angel\'s_Warmth','Angelic Cardigan',4,10000,NULL,400,NULL,2,NULL,1,0x00000001,7,2,4,NULL,20,1,0,'bonus bHPrecovRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2522,'Undershirt','Undershirt',4,20000,NULL,150,NULL,2,NULL,0,0xFFFFFFFF,7,2,4,NULL,1,1,0,'bonus bMdef,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2523,'Undershirt_','Undershirt',4,20000,NULL,150,NULL,2,NULL,1,0xFFFFFFFF,7,2,4,NULL,1,1,0,'bonus bMdef,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2524,'Valkyrie_Manteau','Valkyrian Manteau',4,0,NULL,500,NULL,3,NULL,1,0xFFFFFFFE,2,2,4,NULL,1,1,0,'bonus bUnbreakableGarment,0; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2);',NULL,NULL); +REPLACE INTO `item_db` VALUES (2524,'Valkyrie_Manteau','Valkyrian Manteau',4,0,NULL,500,NULL,3,NULL,1,0xFFFFFFFE,2,2,4,NULL,1,1,0,'bonus bUnbreakableGarment; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2);',NULL,NULL); REPLACE INTO `item_db` VALUES (2525,'Cape_Of_Ancient_Lord_','Ancient Cape',4,82000,NULL,600,NULL,2,NULL,1,0xFFFFFFFE,7,2,4,NULL,40,1,0,'bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2526,'Dragon_Scale_Coat','Coat of Dragon Scale',4,20,NULL,10,NULL,4,NULL,0,0xFFFFFFFF,7,2,4,NULL,50,1,0,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2527,'Dragon_Breath','Dragon Breath',4,20,NULL,600,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,48,1,0,'bonus2 bSubRace,RC_Dragon,15;',NULL,NULL); @@ -1437,7 +1437,7 @@ REPLACE INTO `item_db` VALUES (2537,'Diabolus_Manteau','Diabolus Manteau',4,20,N REPLACE INTO `item_db` VALUES (2538,'Commander_Manteau','Captain\'s Manteau',4,10,NULL,0,NULL,4,NULL,1,0x026654E2,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2539,'Commander_Manteau_','Commander\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x00898B1C,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2540,'Sheriff_Manteau','Sheriff\'s Manteau',4,10,NULL,0,NULL,3,NULL,1,0x41000000,7,2,4,NULL,80,1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2541,'Asprika','Asprika',4,20,NULL,400,NULL,5,NULL,0,0xFFFFFFFF,7,2,4,NULL,94,0,0,'bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2541,'Asprika','Asprika',4,20,NULL,400,NULL,5,NULL,0,0xFFFFFFFF,7,2,4,NULL,94,0,0,'bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment;',NULL,NULL); REPLACE INTO `item_db` VALUES (2542,'Flame_Manteau','Flame Manteau of Naght Sieger',4,20,NULL,70,NULL,4,NULL,1,0xFFFFFFFE,2,2,4,NULL,70,1,0,'bonus bMaxHPRate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (2543,'Sylphid_Manteau','Sylphid Manteau',4,20,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,7,2,4,NULL,0,0,0,'bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (2544,'Leather_Of_Tendrilion','Leather of Tendrilion',4,20,NULL,300,NULL,3,NULL,1,0x00CFDF80,2,2,4,NULL,0,1,0,'bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5;',NULL,NULL); @@ -1592,7 +1592,7 @@ REPLACE INTO `item_db` VALUES (2737,'Foot_Ring','Foot Ring',4,20,NULL,150,NULL,0 REPLACE INTO `item_db` VALUES (2738,'Shiny_Coin','Shiny Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus2 bAddClass,Class_All,6; bonus bMatkRate,6;',NULL,NULL); REPLACE INTO `item_db` VALUES (2739,'Ordinary_Coin','Ordinary Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus2 bAddClass,Class_All,5; bonus bMatkRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (2740,'Rusty_Coin','Rusty Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus2 bAddClass,Class_All,3; bonus bMatkRate,3;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2741,'All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bAllStats,1; bonus bNoCastCancel,0; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2741,'All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bAllStats,1; bonus bNoCastCancel; bonus bCastRate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); #REPLACE INTO `item_db` VALUES (2742,'Lucky_Clip','Lucky Clip',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (2743,'Angelic_Ring','Angelic Ring',4,20,NULL,100,NULL,0,NULL,0,0x00CFFF80,2,2,136,NULL,70,0,0,'bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AL_HEAL","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AM_POTIONPITCHER","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"PR_SANCTUARY","{ specialeffect2 EF_HEAL3; }";',NULL,NULL); REPLACE INTO `item_db` VALUES (2744,'Sprint_Ring','Sprint Ring',4,20,NULL,100,NULL,0,NULL,0,0x00CFFF80,2,2,136,NULL,70,0,0,'bonus bCastrate,-10; bonus bDelayRate,-5;',NULL,NULL); @@ -1611,7 +1611,7 @@ REPLACE INTO `item_db` VALUES (2756,'Chemical_Ring','Chemical Ring',4,0,NULL,0,N REPLACE INTO `item_db` VALUES (2757,'Insecticide_Ring','Insecticide Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Insect,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (2758,'Fisher_Ring','Fischer Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Fish,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (2759,'Decussate_Ring','Decussate Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Demon,15;',NULL,NULL); -REPLACE INTO `item_db` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15;',NULL,NULL); +REPLACE INTO `item_db` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_DemiHuman,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (2761,'Satanic_Ring','Satanic Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Angel,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (2762,'Dragoon_Ring','Dragon Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,1,0,0,'bonus2 bExpAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (2763,'Skul_Ring_C','Neo Skull Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,2,2,136,NULL,95,0,0,'bonus bAtkRate,5; bonus bMatkrate,5; bonus bMaxHPrate,5; bonus2 bSkillHeal,"AL_HEAL",5; skill "MG_SIGHT",1;',NULL,NULL); @@ -1727,7 +1727,7 @@ REPLACE INTO `item_db` VALUES (4057,'Metaller_Card','Metaller Card',6,20,NULL,10 REPLACE INTO `item_db` VALUES (4058,'Thara_Frog_Card','Thara Frog Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4059,'Soldier_Andre_Card','Soldier Andre Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4060,'Goblin_Card','Goblin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Brute,20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4061,'Cornutus_Card','Cornutus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bUnbreakableArmor,0; bonus bDef,1;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4061,'Cornutus_Card','Cornutus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bUnbreakableArmor; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4062,'Anacondaq_Card','Anacondaq Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Poison,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (4063,'Caramel_Card','Caramel Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Insect,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (4064,'Zerom_Card','Zerom Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bDex,3;',NULL,NULL); @@ -1738,12 +1738,12 @@ REPLACE INTO `item_db` VALUES (4068,'Scorpion_Card','Scorpion Card',6,20,NULL,10 REPLACE INTO `item_db` VALUES (4069,'Drainliar_Card','Drainliar Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Water,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (4070,'Eggyra_Card','Eggyra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (4071,'Orc_Zombie_Card','Orc Zombie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Undead,30; bonus bFlee,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4072,'Golem_Card','Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon,0; bonus bBaseAtk,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4072,'Golem_Card','Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon; bonus bBaseAtk,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4073,'Pirate_Skel_Card','Pirate Skeleton Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'skill "MC_DISCOUNT",5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4074,'BigFoot_Card','Bigfoot Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Insect,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4075,'Argos_Card','Argos Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bResEff,Eff_Stone,2000; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4076,'Magnolia_Card','Magnolia Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4077,'Phen_Card','Phen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bNoCastCancel,0; bonus bCastrate,25;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4077,'Phen_Card','Phen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bNoCastCancel; bonus bCastrate,25;',NULL,NULL); REPLACE INTO `item_db` VALUES (4078,'Savage_Card','Savage Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (4079,'Mantis_Card','Mantis Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bStr,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (4080,'Flora_Card','Flora Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Fish,20;',NULL,NULL); @@ -1798,19 +1798,19 @@ REPLACE INTO `item_db` VALUES (4128,'Golden_Bug_Card','Golden Thief Bug Card',6, REPLACE INTO `item_db` VALUES (4129,'Baphomet__Card','Bapho Jr. Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bAgi,3; bonus bCritical,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4130,'Scorpion_King_Card','Scorpion King Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Undead,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (4131,'Moonlight_Flower_Card','Moonlight Flower Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSpeedRate,25;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4132,'Mistress_Card','Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone,0; bonus bUseSPrate,25;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4132,'Mistress_Card','Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone; bonus bUseSPrate,25;',NULL,NULL); REPLACE INTO `item_db` VALUES (4133,'Daydric_Card','Raydric Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (4134,'Dracula_Card','Dracula Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPDrainRate,100,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4135,'Orc_Load_Card','Orc Lord Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bShortWeaponDamageReturn,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4136,'Khalitzburg_Card','Khalitzburg Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Demon,30;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4137,'Drake_Card','Drake Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bNoSizeFix,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4137,'Drake_Card','Drake Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bNoSizeFix;',NULL,NULL); REPLACE INTO `item_db` VALUES (4138,'Anubis_Card','Anubis Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Angel,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4139,'Joker_Card','Joker Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'skill "TF_STEAL",1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4140,'Knight_Of_Abyss_Card','Abysmal Knight Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_Boss,25;',NULL,NULL); REPLACE INTO `item_db` VALUES (4141,'Evil_Druid_Card','Evil Druid Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4142,'Doppelganger_Card','Doppelganger Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAspdRate,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4143,'Orc_Hero_Card','Orc Hero Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus2 bResEff,Eff_Stun,10000;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4144,'Osiris_Card','Osiris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bRestartFullRecover,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4144,'Osiris_Card','Osiris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bRestartFullRecover;',NULL,NULL); REPLACE INTO `item_db` VALUES (4145,'Berzebub_Card','Berzebub Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bCastrate,-30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4146,'Maya_Card','Maya Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bMagicDamageReturn,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (4147,'Baphomet_Card','Baphomet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bHit,-10; bonus bSplashRange,1;',NULL,NULL); @@ -1820,7 +1820,7 @@ REPLACE INTO `item_db` VALUES (4150,'Goat_Card','Goat Card',6,20,NULL,10,NULL,NU REPLACE INTO `item_db` VALUES (4151,'Gajomart_Card','Gajomart Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4152,'Galapago_Card','Galapago Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300;',NULL,NULL); REPLACE INTO `item_db` VALUES (4153,'Crab_Card','Crab Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,530,RC_Player,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (4155,'Goblin_Leader_Card','Goblin Leader Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,RC2_Goblin,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4156,'Steam_Goblin_Card','Goblin Steamrider Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7;',NULL,NULL); REPLACE INTO `item_db` VALUES (4157,'Goblin_Archer_Card','Goblin Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7;',NULL,NULL); @@ -1864,7 +1864,7 @@ REPLACE INTO `item_db` VALUES (4194,'Rybio_Card','Rybio Card',6,20,NULL,10,NULL, REPLACE INTO `item_db` VALUES (4195,'Leaf_Cat_Card','Leaf Cat Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Water,10; bonus3 bAddMonsterDropItem,991,RC_Fish,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (4196,'Marin_Card','Marin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItem,909,2000; bonus2 bAddMonsterDropItem,7126,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4197,'Mastering_Card','Mastering Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4198,'Maya_Puple_Card','Maya Purple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4198,'Maya_Puple_Card','Maya Purple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision;',NULL,NULL); REPLACE INTO `item_db` VALUES (4199,'Merman_Card','Merman Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bHPrecovRate,10; bonus bSPrecovRate,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4200,'Megalith_Card','Megalith Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,7;',NULL,NULL); REPLACE INTO `item_db` VALUES (4201,'Majoruros_Card','Majoruros Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Stun,600;',NULL,NULL); @@ -1899,7 +1899,7 @@ REPLACE INTO `item_db` VALUES (4229,'C_Tower_Manager_Card','Tower Keeper Card',6 REPLACE INTO `item_db` VALUES (4230,'Shinobi_Card','Shinobi Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AS_CLOAKING",5,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (4231,'Increase_Soil_Card','Mi Gao Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace2,RC2_Guardian,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (4232,'Wild_Ginseng_Card','Hermit Plant Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Herb,50; bonus3 bAddMonsterDropItem,507,RC_Plant,300; bonus3 bAddMonsterDropItem,508,RC_Plant,200; bonus3 bAddMonsterDropItem,509,RC_Plant,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4233,'Baby_Leopard_Card','Baby Leopard Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4233,'Baby_Leopard_Card','Baby Leopard Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor;',NULL,NULL); REPLACE INTO `item_db` VALUES (4234,'Anolian_Card','Anolian Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AC_CONCENTRATION",1+9*(getskilllv("AC_CONCENTRATION")==10),30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4235,'Cookie_XMAS_Card','Christmas Cookie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Angel,-20; bonus2 bExpAddRace,RC_Angel,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4236,'Amon_Ra_Card','Amon Ra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,(30+70*(readparam(bInt)>=99));',NULL,NULL); @@ -1911,7 +1911,7 @@ REPLACE INTO `item_db` VALUES (4241,'Archangeling_Card','Arc Angeling Card',6,20 REPLACE INTO `item_db` VALUES (4242,'Apocalips_Card','Apocalipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800;',NULL,NULL); REPLACE INTO `item_db` VALUES (4243,'Antonio_Card','Antonio Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (4244,'Alarm_Card','Alarm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (4246,'Assulter_Card','Assaulter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7;',NULL,NULL); REPLACE INTO `item_db` VALUES (4247,'Aster_Card','Aster Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4248,'Ancient_Mummy_Card','Ancient Mummy Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30;',NULL,NULL); @@ -1922,7 +1922,7 @@ REPLACE INTO `item_db` VALUES (4252,'Alligator_Card','Alligator Card',6,20,NULL, REPLACE INTO `item_db` VALUES (4253,'Alice_Card','Alice Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40;',NULL,NULL); REPLACE INTO `item_db` VALUES (4254,'Tirfing_Card','Ogretooth Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubSize,Size_Medium,25; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4255,'Orc_Lady_Card','Orc Lady Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,3,30;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (4257,'Wild_Rose_Card','Wild Rose Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4258,'Wicked_Nymph_Card','Evil Nymph Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMaxSP,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus bHPrecovRate,30;',NULL,NULL); @@ -1947,7 +1947,7 @@ REPLACE INTO `item_db` VALUES (4277,'Zherlthsh_Card','Zealotus Card',6,20,NULL,1 REPLACE INTO `item_db` VALUES (4278,'Gibbet_Card','Gibbet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4279,'Deleter_Card','Earth Deleter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,-100; bonus bSPGainValue,10;',NULL,'heal 0,-100;'); REPLACE INTO `item_db` VALUES (4280,'Geographer_Card','Geographer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (4282,'Tengu_Card','Tengu Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItemGroup,IG_Recovery,600;',NULL,NULL); REPLACE INTO `item_db` VALUES (4283,'Greatest_General_Card','Greatest General Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte);',NULL,NULL); REPLACE INTO `item_db` VALUES (4284,'Chepet_Card','Chepet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus4 bAutoSpell,"AL_HEAL",5,50,1;',NULL,NULL); @@ -1975,7 +1975,7 @@ REPLACE INTO `item_db` VALUES (4305,'Turtle_General_Card','Turtle General Card', REPLACE INTO `item_db` VALUES (4306,'Toad_Card','Toad Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bFlee2,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4307,'Kind_Of_Beetle_Card','Beetle King Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Fish,5;',NULL,'heal 0,-5;'); REPLACE INTO `item_db` VALUES (4308,'Tri_Joint_Card','Tri Joint Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Formless,5;',NULL,'heal 0,-5;'); -REPLACE INTO `item_db` VALUES (4309,'Parasite_Card','Parasite Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4309,'Parasite_Card','Parasite Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bSubRace,RC_Formless,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4310,'Panzer_Goblin_Card','Panzer Goblin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Demon,7;',NULL,NULL); REPLACE INTO `item_db` VALUES (4311,'Permeter_Card','Permeter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,15; bonus2 bSubEle,Ele_Undead,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (4312,'Fur_Seal_Card','Seal Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bFlee,3; bonus bHit,10; if(BaseClass==Job_Acolyte) { bonus2 bCriticalAddRace,RC_Undead,9; bonus2 bCriticalAddRace,RC_Demon,9; }',NULL,NULL); @@ -1993,7 +1993,7 @@ REPLACE INTO `item_db` VALUES (4323,'Garm_Baby_Card','Hatii Babe Card',6,20,NULL REPLACE INTO `item_db` VALUES (4324,'Garm_Card','Hatii Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Freeze,5000;',NULL,NULL); REPLACE INTO `item_db` VALUES (4325,'Harpy_Card','Harpy Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bSkillAtk,"MG_NAPALMBEAT",5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4326,'See_Otter_Card','Sea-Otter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4327,'Blood_Butterfly_Card','Bloody Butterfly Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4327,'Blood_Butterfly_Card','Bloody Butterfly Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bCastrate,30; bonus bNoCastCancel; bonus2 bSkillAtk,"MG_FIREWALL",5;',NULL,NULL); REPLACE INTO `item_db` VALUES (4328,'Hyegun_Card','Yao Jun Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bFlee,15; bonus bCritical,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (4329,'Phendark_Card','Phendark Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5;',NULL,'heal 0,-5;'); REPLACE INTO `item_db` VALUES (4330,'Dark_Snake_Lord_Card','Evil Snake Lord Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000;',NULL,NULL); @@ -2008,7 +2008,7 @@ REPLACE INTO `item_db` VALUES (4338,'Obsidian_Card','Obsidian Card',6,20,NULL,10 REPLACE INTO `item_db` VALUES (4339,'Mineral_Card','Mineral Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,-25; bonus bDef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (4340,'Teddy_Bear_Card','Teddy Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Undead,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (4341,'Metaling_Card','Metaling Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"RG_STRIPWEAPON",1,50;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4342,'Rsx_0806_Card','RSX-0806 Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus bUnbreakableArmor,0; bonus bNoKnockback,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4342,'Rsx_0806_Card','RSX-0806 Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus bUnbreakableArmor; bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db` VALUES (4343,'Mole_Card','Holden Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bLuk,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (4344,'Anopheles_Card','Anopheles Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12058,RC_Insect,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (4345,'Hill_Wind_Card','Hill Wind Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSkillAtk,"MG_THUNDERSTORM",5; bonus2 bSkillAtk,"WZ_JUPITEL",5; bonus2 bSkillAtk,"WZ_VERMILION",5;',NULL,'heal 0,-50;'); @@ -2073,7 +2073,7 @@ REPLACE INTO `item_db` VALUES (4403,'Kiel_Card','Kiel-D-01 Card',6,20,NULL,10,NU REPLACE INTO `item_db` VALUES (4404,'Skogul_Card','Skogul Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF;',NULL,NULL); REPLACE INTO `item_db` VALUES (4405,'Frus_Card','Frus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (4406,'Skeggiold_Card','Skeggiold Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Demon,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (4407,'Randgris_Card','Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon,0; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50;',NULL,NULL); +REPLACE INTO `item_db` VALUES (4407,'Randgris_Card','Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (4408,'Gloom_Under_Night_Card','Gloom Under Night Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40;',NULL,NULL); REPLACE INTO `item_db` VALUES (4409,'Agav_Card','Agav Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (4410,'Echio_Card','Echio Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500;',NULL,NULL); @@ -2217,7 +2217,7 @@ REPLACE INTO `item_db` VALUES (5005,'Gas_Mask','Gas Mask',4,20,NULL,100,NULL,1,N REPLACE INTO `item_db` VALUES (5006,'Machoman_Glasses','Machoman\'s Glasses',4,36000,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,7,2,512,NULL,0,0,92,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5007,'Loard_Circlet','Grand Circlet',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,55,1,93,'bonus bStr,1; bonus bInt,1; bonus bLuk,1; bonus bMdef,4;',NULL,NULL); REPLACE INTO `item_db` VALUES (5008,'Puppy_Love','Puppy Love',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,0,94,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (5009,'Safety_Helmet','Safety Helmet',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,95,'bonus bMdef,3; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5009,'Safety_Helmet','Safety Helmet',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,95,'bonus bMdef,3; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5010,'Indian_Hair_Piece','Indian Fillet',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,96,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5011,'Antenna','Aerial',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,97,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5012,'Ph.D_Hat','Ph.D Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,98,NULL,NULL,NULL); @@ -2289,7 +2289,7 @@ REPLACE INTO `item_db` VALUES (5077,'Tulip_Hairpin','Tulip Hairpin',4,20,NULL,10 REPLACE INTO `item_db` VALUES (5078,'Sea_Otter_Cap','Sea-Otter Hat',4,20,NULL,800,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,162,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5079,'Crossed_Hair_Band','X Hairpin',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,163,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5080,'Headgear_Of_Queen','Crown of Ancient Queen',4,20,NULL,400,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,45,1,164,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (5081,'Mistress_Crown','Crown of Mistress',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,256,NULL,75,1,165,'bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5081,'Mistress_Crown','Crown of Mistress',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFE,7,2,256,NULL,75,1,165,'bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5082,'Mushroom_Band','Decorative Mushroom',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,166,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5083,'Red_Tailed_Ribbon','Red Ribbon',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,45,1,167,'bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (5084,'Lazy_Raccoon','Lazy Smokie',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFE,7,2,256,NULL,0,1,168,'bonus2 bResEff,Eff_Sleep,2000;',NULL,NULL); @@ -2367,7 +2367,7 @@ REPLACE INTO `item_db` VALUES (5155,'Granpa_Beard_F','Father\'s White Moustache' REPLACE INTO `item_db` VALUES (5156,'Flu_Mask_F','Father\'s Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,8,'bonus bMatkRate,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5157,'Viking_Helm_','Orc Helm',4,20,NULL,500,NULL,5,NULL,1,0x000654E2,7,2,256,NULL,0,1,86,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5158,'Holy_Bonnet_','Monk Hat',4,30000,NULL,100,NULL,5,NULL,1,0x00008110,7,2,256,NULL,0,1,35,'bonus bMdef,3;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5159,'Golden_Gear_','Golden Gear',4,20,NULL,900,NULL,5,NULL,1,0xFFFFFFFE,7,2,256,NULL,40,1,30,'bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5159,'Golden_Gear_','Golden Gear',4,20,NULL,900,NULL,5,NULL,1,0xFFFFFFFE,7,2,256,NULL,40,1,30,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5160,'Magestic_Goat_','Majestic Goat',4,20,NULL,800,NULL,5,NULL,1,0x006444A2,7,2,256,NULL,0,1,41,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5161,'Sharp_Gear_','Spiky Band',4,20,NULL,1000,NULL,6,NULL,1,0x0066D5F2,7,2,256,NULL,50,1,43,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5162,'Bone_Helm_','Bone Helm',4,20,NULL,800,NULL,7,NULL,1,0x000444A2,7,2,256,NULL,70,1,103,'bonus2 bSubEle,Ele_Dark,-15;',NULL,NULL); @@ -2470,7 +2470,7 @@ REPLACE INTO `item_db` VALUES (5258,'Afro_Wig','Afro Wig',4,20,NULL,100,NULL,0,N REPLACE INTO `item_db` VALUES (5259,'Elephant_Hat_','Elephant Hat',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,215,'bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5260,'Cookie_Hat','Cookie Hat',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,217,'bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5261,'Silver_Tiara_','Silver Tiara',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,218,'bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2);',NULL,NULL); -REPLACE INTO `item_db` VALUES (5262,'Gold_Tiara_','Golden Tiara',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,232,'bonus bStr,2; bonus bUnbreakableHelm,0; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5262,'Gold_Tiara_','Golden Tiara',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,232,'bonus bStr,2; bonus bUnbreakableHelm; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7;',NULL,NULL); REPLACE INTO `item_db` VALUES (5263,'Ati_Atihan_Hat','Pagdayaw',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,7,2,769,NULL,20,1,303,'bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Earth,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL); REPLACE INTO `item_db` VALUES (5264,'Aussie_Flag_Hat','Australian Flag Hat',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,304,'bonus bAllStats,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (5265,'Apple_Of_Archer_C','Apple of Archer',4,1,NULL,0,NULL,7,NULL,0,0xFFFFFFFE,7,2,256,NULL,1,0,72,'bonus bDex,4;',NULL,NULL); @@ -2497,7 +2497,7 @@ REPLACE INTO `item_db` VALUES (5285,'Vane_Hairpin','Vane Hairpin',4,20,NULL,300, REPLACE INTO `item_db` VALUES (5286,'Pecopeco_Hairband','Pecopeco Hairband',4,20,NULL,0,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,0,314,'bonus bSpeedRate,25; bonus bAspdRate,-10; bonus bCastrate,25;',NULL,NULL); REPLACE INTO `item_db` VALUES (5287,'Vacation_Hat','Vacation Hat',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,0,315,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5288,'Red_Glasses','Red Glasses',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,0,0,316,'bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5289,'Vanilmirth_Hat','Vanilmirth Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,0,317,'bonus bUnbreakableHelm,0; bonus3 bAutoSpell,"MG_FIREBOLT",1,10; bonus3 bAutoSpell,"MG_COLDBOLT",1,10; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,10; bonus bMdef,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5289,'Vanilmirth_Hat','Vanilmirth Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,0,317,'bonus bUnbreakableHelm; bonus3 bAutoSpell,"MG_FIREBOLT",1,10; bonus3 bAutoSpell,"MG_COLDBOLT",1,10; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,10; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5290,'Drooping_Bunny_','Drooping Bunny',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,249,'bonus bDex,1; bonus bFlee,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (5291,'Kettle_Hat','Kettle Hat',4,20,NULL,600,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,318,'bonus4 bAutoSpell,"SA_DELUGE",2,10,0; bonus3 bAutoSpell,"WZ_WATERBALL",3,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (5292,'Dragon_Skull','Dragon Skull',4,20,NULL,800,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,319,'bonus2 bSubRace,RC_Dragon,5;',NULL,NULL); @@ -2543,7 +2543,7 @@ REPLACE INTO `item_db` VALUES (5331,'Corsair_C','Corsair C',4,1,NULL,0,NULL,10,N REPLACE INTO `item_db` VALUES (5332,'Loki_Mask','Loki Mask',4,0,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,7,2,513,NULL,20,0,346,'bonus bFlee2,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (5333,'Radio_Antenna','Radio Antenna',4,0,NULL,1500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,1,347,'bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; skill "MG_LIGHTNINGBOLT",1; bonus4 bAutoSpellWhenHit,"MG_THUNDERSTORM",5,30,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5334,'Angeling_Wanna_Fly','Flapping Angeling',4,0,NULL,700,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,38,0,348,'bonus bLuk,2; bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5335,'Jumping_Poring','Jumping Poring',4,0,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,349,'bonus bLuk,1; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5335,'Jumping_Poring','Jumping Poring',4,0,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,349,'bonus bLuk,1; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5336,'Guildsman_Recruiter','Guildsman Recruiter Hat',4,NULL,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,350,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5337,'Party_Recruiter_Hat','Party Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,351,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5338,'Bf_Recruiter_Hat','Bf Recruiter Hat',4,0,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,352,NULL,NULL,NULL); @@ -2565,8 +2565,8 @@ REPLACE INTO `item_db` VALUES (5353,'Helm_Of_Sun_','Hat of the Sun God',4,20,NUL REPLACE INTO `item_db` VALUES (5354,'Muslim_Hat_M','Muslim Hat M',4,0,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,1,256,NULL,0,0,362,'bonus bCastrate,-5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5355,'Muslim_Hat_F','Selendang',4,0,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,0,256,NULL,0,0,363,'bonus bCastrate,-5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5356,'Pumpkin_Hat_H','Festival Pumpkin Hat',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,206,'bonus2 bSubRace,RC_Demon,5; bonus2 bAddRace,RC_Demon,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5357,'Wings_Of_Victory','Wings Of Victory',4,20,NULL,200,NULL,10,NULL,0,0xFFFFFFFF,7,2,768,NULL,0,0,365,'bonus bMdef,10; bonus bUnbreakableHelm,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5358,'Pecopeco_Wing_Ears','Peco Ears',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,70,0,366,'bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5357,'Wings_Of_Victory','Wings Of Victory',4,20,NULL,200,NULL,10,NULL,0,0xFFFFFFFF,7,2,768,NULL,0,0,365,'bonus bMdef,10; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5358,'Pecopeco_Wing_Ears','Peco Ears',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,70,0,366,'bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5359,'J_Captain_Hat','Ship Captain Hat',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,60,1,367,'bonus bDex,1; bonus bLongAtkRate,7; bonus bMaxHP,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (5360,'Whikebain_Ears','Hyuke\'s Black Cat Ears',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,45,1,368,'bonus bFlee,10; bonus bCritical,3; bonus bCritAtkRate,10; bonus bDefRate,-50; bonus bDef2Rate,-50;',NULL,NULL); REPLACE INTO `item_db` VALUES (5361,'Gang_Scarf','Gangster Scarf',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,60,0,369,'bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1;',NULL,NULL); @@ -2680,7 +2680,7 @@ REPLACE INTO `item_db` VALUES (5464,'Zaha_Doll_Hat','Zaha Doll Hat',4,20,NULL,0, #REPLACE INTO `item_db` VALUES (5469,'Noble_Hat','Musketeer Hat',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,466,'bonus bStr,2; bonus3 bAutoSpellWhenHit,"BS_ADRENALINE",1,7;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5470,'Eyes_Of_Darkness','Eye Of Darkness',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,50,0,467,'bonus bDex,1; bonus2 bResEff,Eff_Blind,10000;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5471,'Hairband_Of_Reginleif','Hairband Of Reginleif',4,20,NULL,800,NULL,1,NULL,0,0xFFFFFFFF,7,2,512,NULL,50,0,468,'bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3;',NULL,NULL); -#REPLACE INTO `item_db` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,469,'bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3; bonus3 bAddMonsterDropItem,550,RC_Player,3;',NULL,NULL); +#REPLACE INTO `item_db` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,469,'bonus3 bAddMonsterDropItem,550,RC_DemiHuman,3;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5473,'Forceps_Hairpin','Nipper Crab Hairpin',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,470,'bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,100; bonus3 bAddMonsterDropItem,991,RC_Fish,3;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5474,'Notice_Board','AFK Hat',4,20,NULL,700,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,471,NULL,NULL,NULL); #REPLACE INTO `item_db` VALUES (5475,'Cube_Mask','Mask Cube',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,0,0,472,NULL,NULL,NULL); @@ -2706,7 +2706,7 @@ REPLACE INTO `item_db` VALUES (5494,'Spinx_Helm_I','Sphinx Hat',4,0,NULL,0,NULL, REPLACE INTO `item_db` VALUES (5495,'Power_Of_Thor','Power Of Thor',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,75,1,493,'bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5496,'Dice_Hat','Dice Hat',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,50,0,494,'bonus bLuk,4;',NULL,NULL); REPLACE INTO `item_db` VALUES (5497,'King_Tiger_Doll_Hat','King Tiger Doll Hat',4,20,NULL,400,NULL,3,NULL,1,0xFFFFFFFE,7,2,256,NULL,30,1,495,'bonus bStr,2;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5498,'Wondering_Wolf_Helm','Wandering Wolf Helm',4,20,NULL,600,NULL,5,NULL,0,0xFFFFFFFE,7,2,768,NULL,50,0,490,'bonus bVit,5; bonus bFlee,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5498,'Wondering_Wolf_Helm','Wandering Wolf Helm',4,20,NULL,600,NULL,5,NULL,0,0xFFFFFFFE,7,2,768,NULL,50,1,490,'bonus bVit,5; bonus bFlee,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (5499,'Pizza_Hat','Pizza Hat',4,20,NULL,600,NULL,0,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,487,'skill "SM_PROVOKE", 1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5500,'Icecream_Hat','Icecream Hat',4,0,NULL,300,NULL,6,NULL,0,0xFFFFFFFF,7,2,256,NULL,30,1,488,'bonus bMdef,3; skill "MG_FROSTDIVER",3;',NULL,NULL); REPLACE INTO `item_db` VALUES (5501,'Pirate\'s_Pride','Pirate\'s Pride',4,0,NULL,100,NULL,6,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,0,496,'bonus2 bAddRace2,RC2_Ninja,5; bonus2 bSubRace2,RC2_Ninja,5;',NULL,NULL); @@ -2739,7 +2739,7 @@ REPLACE INTO `item_db` VALUES (5527,'Lunatic_Hat','Lunatic Hat',4,20,NULL,300,NU REPLACE INTO `item_db` VALUES (5528,'King_Frog_Hat','Frog King Hat',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,7,2,256,NULL,30,0,522,'bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5529,'Evil\'s_Bone_Hat','Satanic Bone Helm',4,20,NULL,600,NULL,6,NULL,1,0xFFFFFFFF,7,2,768,NULL,70,1,523,'bonus bDex,3; bonus2 bSubEle,Ele_Neutral,5; skill "WZ_FROSTNOVA",1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5530,'Raven_Cap','Raven Cap',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,1,524,NULL,NULL,NULL); -#REPLACE INTO `item_db` VALUES (5531,'B_Dragon_Hat','Baby Dragon Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,525,NULL,NULL,NULL); +REPLACE INTO `item_db` VALUES (5531,'B_Dragon_Hat','Baby Dragon Hat',4,45000,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,525,'bonus bDex,2; .@bonus = max(getskilllv("TF_DOUBLE"), 5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus * 5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5532,'Pirate_Dagger_J','Pirate Dagger',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,1,327,'bonus bShortWeaponDamageReturn,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (5533,'Emperor_Wreath_J','Emperor Wreath',4,20,NULL,800,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,80,1,261,'bonus bAllStats,1;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5534,'Fox_Hat_J','Fox Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,513,NULL,70,0,403,'bonus bAgi,1; bonus bFlee2,2;',NULL,NULL); @@ -2762,13 +2762,13 @@ REPLACE INTO `item_db` VALUES (5550,'Taurus_Crown','Taurus Crown',4,20,NULL,300, #REPLACE INTO `item_db` VALUES (5551,'Holy_Egg_Hat','Holy Egg Hat',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,537,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5552,'Fest_Lord_Circlet','Festival Grand Circlet',4,0,NULL,0,NULL,8,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,93,'bonus bStr,3; bonus bInt,3; bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (5553,'Fest_Bunny_Band','Festival Bunny Band',4,0,NULL,0,NULL,7,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,15,'bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9;',NULL,NULL); -REPLACE INTO `item_db` VALUES (5554,'Octopus_Hat','Octopus Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,538,'bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5554,'Octopus_Hat','Octopus Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,538,'bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db` VALUES (5555,'Leaf_Cat_Hat','Leaf Cat Hat',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,539,'bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (5556,'Fur_Seal_Hat','Seal Hat',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,7,2,769,NULL,55,1,540,'bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (5557,'Wild_Rose_Hat','Wild Rose Hat',4,20,NULL,500,NULL,6,NULL,1,0xFFFFFFFE,7,2,256,NULL,20,1,541,'bonus bAgi,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (5558,'Saci_Hat','Luxury Hat',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,1,542,'bonus3 bAddMonsterDropItem,510,RC_Plant,500;',NULL,NULL); REPLACE INTO `item_db` VALUES (5559,'Piece_Of_White_Cloth_E','Piece Of White Cloth',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,543,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (5560,'Bullock_Helm_J','Bullock Helm',4,20,NULL,3000,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,75,1,322,'bonus bMaxHP,100; bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); +REPLACE INTO `item_db` VALUES (5560,'Bullock_Helm_J','Bullock Helm',4,20,NULL,3000,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,75,1,322,'bonus bMaxHP,100; bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); REPLACE INTO `item_db` VALUES (5561,'Rabbit_Magic_Hat_J','Magic Rabbit Hat',4,0,NULL,800,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,497,'bonus bInt,1; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"MG_FIREBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_COLDBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_LIGHTNINGBOLT",3,10,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (5562,'Good_Wedding_Veil_J','Luxurious Wedding Veil',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,7,2,768,NULL,45,0,489,'bonus bMdef,10; bonus bCastRate,-3; bonus bUseSPrate,-5;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5563,'Dolor_Hat','Dolor Hat',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,0,547,NULL,NULL,NULL); @@ -2864,7 +2864,7 @@ REPLACE INTO `item_db` VALUES (5605,'RTC_Third_Best','RTC Third Place',4,0,NULL, REPLACE INTO `item_db` VALUES (5653,'Darkness_Helm_J','Darkness Helm',4,20,NULL,500,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,70,1,586,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5654,'Holy_Marching_Hat_J','Holy Marching Hat',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,10,1,587,'bonus bStr,2; bonus3 bAutoSpell,"PR_ASPERSIO",2,30;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5655,'Dark_Snake_Lord_Hat_J','Evil Snake Lord Hat',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,7,2,256,NULL,60,1,372,'bonus bInt,2; bonus bAgi,2; bonus bDex,-2; autobonus "{ bonus bCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }";',NULL,NULL); -#REPLACE INTO `item_db` VALUES (5656,'Scooter_Hat_J','Scooter Helmet',4,20,NULL,1000,NULL,7,NULL,1,0xFFFFFFFF,7,2,256,NULL,50,1,588,'bonus bUnbreakableHelm,0;',NULL,NULL); +#REPLACE INTO `item_db` VALUES (5656,'Scooter_Hat_J','Scooter Helmet',4,20,NULL,1000,NULL,7,NULL,1,0xFFFFFFFF,7,2,256,NULL,50,1,588,'bonus bUnbreakableHelm;',NULL,NULL); #REPLACE INTO `item_db` VALUES (5657,'Antique_Pipe_J','Captain\'s Pipe',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,30,0,383,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (5658,'Imp_Hat','Imp Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,589,'bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (5659,'Sleepr_Hat','Sleeper Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL); @@ -4968,7 +4968,7 @@ REPLACE INTO `item_db` VALUES (12371,'Magical_Lithography','Magical Lithography' REPLACE INTO `item_db` VALUES (12372,'Hell_Contract','Hell Contract',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1379;',NULL,NULL); REPLACE INTO `item_db` VALUES (12373,'Boy\'s_Naivety','Boy\'s Pure Heart',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1370;',NULL,NULL); REPLACE INTO `item_db` VALUES (12374,'Flaming_Ice','Ice Fireworks',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1837;',NULL,NULL); -REPLACE INTO `item_db` VALUES (12375,'Acaraje','Akaraje',2,0,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; sc_start SC_INCHITRATE,120000,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (12375,'Acaraje','Akaraje',2,0,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE;',NULL,NULL); REPLACE INTO `item_db` VALUES (12376,'Mysterious_Can2','Mysterious Can2',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 3,0; itemskill "PR_GLORIA",2;',NULL,NULL); REPLACE INTO `item_db` VALUES (12377,'Mysterious_PET_Bottle2','Mysterious PET Bottle2',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,3; itemskill "PR_MAGNIFICAT",1;',NULL,NULL); REPLACE INTO `item_db` VALUES (12378,'2009_Rice_Cake_Soup','Rice Cake Soup',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* percentheal 50,50; */',NULL,NULL); @@ -5375,7 +5375,7 @@ REPLACE INTO `item_db` VALUES (13014,'Hakujin','Hakujin',5,20,NULL,800,120,NULL, REPLACE INTO `item_db` VALUES (13015,'Hakujin_','Hakujin',5,20,NULL,800,120,NULL,1,1,0x02000000,7,2,2,3,42,1,1,'bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (13016,'Poison_Knife_','Poison Knife',5,20,NULL,800,64,NULL,1,2,0x028F5EEE,7,2,2,3,65,1,1,'bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000;',NULL,NULL); REPLACE INTO `item_db` VALUES (13017,'House_Auger_','Ice Pick',5,20,NULL,600,70,NULL,1,1,0x028F5EEE,7,2,2,4,36,1,1,'bonus bDefRatioAtkClass,Class_All;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13018,'Sucsamad_','Sucsamad',5,20,NULL,800,140,NULL,1,1,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13018,'Sucsamad_','Sucsamad',5,20,NULL,800,140,NULL,1,1,0x028F5EEE,7,2,2,4,36,1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (13019,'Ginnungagap_','Ginnungagap',5,20,NULL,700,148,NULL,1,1,0xFE9F7EEF,7,2,2,4,70,1,1,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (13020,'Warrior_Balmung_','Warrior\'s Balmung',5,20,NULL,1000,170,NULL,1,0,0xFFFFFFFF,7,2,2,4,48,1,1,'bonus bAllStats,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (13021,'Combat_Knife_C','Combat Knife',5,1,NULL,0,129,NULL,1,0,0x028F5EEE,7,2,2,4,1,0,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL); @@ -5393,13 +5393,13 @@ REPLACE INTO `item_db` VALUES (13032,'Mail_Breaker_','Mailbreaker',5,20,NULL,100 REPLACE INTO `item_db` VALUES (13033,'Assasin_Dagger_','Assassin Dagger',5,20,NULL,600,140,NULL,1,1,0x00001000,7,2,2,4,36,1,1,'bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db` VALUES (13034,'Twilight_Desert','Desert Twilight',5,20,NULL,600,130,NULL,1,2,0x00001000,2,2,2,2,70,1,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (13035,'Sandstorm','Sandstorm',5,20,NULL,600,50,NULL,1,4,0x00001000,2,2,2,2,70,1,1,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,0; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,3,80,1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); REPLACE INTO `item_db` VALUES (13038,'Dagger_Of_Hunter','Dagger of Hunter',5,20,NULL,700,120,NULL,1,3,0x00020000,2,2,2,3,70,1,1,'bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20;',NULL,NULL); REPLACE INTO `item_db` VALUES (13039,'Ivory_Knife','Ivory Knife',5,20,NULL,700,130,NULL,1,2,0x028F5EEE,2,2,2,3,50,1,1,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (13040,'N_Cutter','Novice Cutter',5,0,NULL,0,50,NULL,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (13041,'N_Main_Gauche','Novice Main Gauche',5,0,NULL,0,63,NULL,1,3,0xFE9F7EEF,7,2,2,1,1,0,1,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,120,NULL,1,0,0xFE9F7EEF,7,2,2,4,80,1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL); REPLACE INTO `item_db` VALUES (13043,'Fortune_Sword_I','Fortune Sword',5,0,NULL,0,120,NULL,1,0,0x028F5EEE,7,2,2,4,0,0,1,'bonus bLuk,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (13044,'House_Auger_I','Ice Pick',5,0,NULL,0,105,NULL,1,0,0x028F5EEE,7,2,2,4,0,0,1,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (13045,'Kamaitachi_I','Kamaitachi',5,0,NULL,0,155,NULL,2,0,0x02000000,7,2,2,4,0,0,1,NULL,NULL,NULL); @@ -5415,9 +5415,9 @@ REPLACE INTO `item_db` VALUES (13104,'The_Garrison','Garrison',5,48000,NULL,500, REPLACE INTO `item_db` VALUES (13105,'The_Garrison_','Garrison',5,48000,NULL,500,70,NULL,7,2,0x41000000,7,2,34,2,55,1,17,'bonus bHit,-10;',NULL,NULL); REPLACE INTO `item_db` VALUES (13106,'Gold_Lux','Gold Lux',5,100000,NULL,500,20,NULL,7,0,0x41000000,7,2,34,3,12,1,17,'bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100;',NULL,NULL); REPLACE INTO `item_db` VALUES (13107,'Wasteland_Outlaw','Wasteland\'s Outlaw',5,20,NULL,580,68,NULL,7,2,0x41000000,7,2,34,3,70,1,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,70,NULL,7,0,0x41000000,7,2,34,3,80,1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,70,NULL,7,0,0x41000000,7,2,34,3,80,1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (13109,'Wasteland_Outlaw_C','Wasteland Outlaw',5,20,NULL,0,100,NULL,7,0,0x41000000,7,2,34,3,0,0,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,80,NULL,7,0,0x41000000,7,2,34,4,80,1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,80,NULL,7,0,0x41000000,7,2,34,4,80,1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5){ bonus2 bAddRace,RC_DemiHuman,pow(getrefine()-4,2); bonus2 bAddRace,RC_Player,pow(getrefine()-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",getrefine()*2; }',NULL,NULL); #13111,Sharpshooter_Revolver REPLACE INTO `item_db` VALUES (13112,'P_Revolver1','Eden Revlover I',5,0,NULL,0,4,NULL,7,0,0x41000000,7,2,34,1,26,0,17,'bonus bHit,-5;',NULL,NULL); REPLACE INTO `item_db` VALUES (13113,'P_Revolver2','Eden Revlover II',5,0,NULL,0,60,NULL,7,0,0x41000000,7,2,34,1,40,0,17,'bonus bHit,-5;',NULL,NULL); @@ -5443,15 +5443,15 @@ REPLACE INTO `item_db` VALUES (13167,'Gate_KeeperDD','Gate Keeper-DD',5,72000,NU REPLACE INTO `item_db` VALUES (13168,'Thunder_P','Thunder P',5,76000,NULL,700,80,NULL,9,1,0x41000000,7,2,34,3,70,1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (13169,'Thunder_P_','Thunder P',5,76000,NULL,700,80,NULL,9,2,0x41000000,7,2,34,3,70,1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL); REPLACE INTO `item_db` VALUES (13170,'Lever_Action_Rifle','Lever Action Rifle',5,20,NULL,770,138,NULL,9,2,0x41000000,7,2,34,3,70,1,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,50,NULL,9,0,0x41000000,7,2,34,3,80,1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,80,NULL,9,0,0x41000000,7,2,34,3,80,1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,100,NULL,9,0,0x41000000,7,2,34,3,80,1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,300,NULL,9,0,0x41000000,7,2,34,3,80,1,21,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,50,NULL,9,0,0x41000000,7,2,34,3,80,1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,80,NULL,9,0,0x41000000,7,2,34,3,80,1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,100,NULL,9,0,0x41000000,7,2,34,3,80,1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,300,NULL,9,0,0x41000000,7,2,34,3,80,1,21,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (13175,'Lever_Action_Rifle_C','Lever Action Rifle',5,20,NULL,0,170,NULL,9,0,0x41000000,7,2,34,3,0,0,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); }',NULL,NULL); -REPLACE INTO `item_db` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,110,NULL,9,0,0x41000000,7,2,34,4,80,1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,330,NULL,9,0,0x41000000,7,2,34,4,80,1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",getrefine() * 3; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,90,NULL,9,0,0x41000000,7,2,34,4,80,1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) {bonus2 bAddClass,Class_All,getrefine(); }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,110,NULL,9,0,0x41000000,7,2,34,4,80,1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,330,NULL,9,0,0x41000000,7,2,34,4,80,1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",getrefine() * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL); # Bullets REPLACE INTO `item_db` VALUES (13200,'Bullet','Bullet',10,1,NULL,2,10,NULL,NULL,NULL,0x41000000,7,2,32768,NULL,1,NULL,3,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (13201,'Silver_Bullet','Silver Bullet',10,15,NULL,2,15,NULL,NULL,NULL,0x41000000,7,2,32768,NULL,1,NULL,3,'bonus bAtkEle,Ele_Holy;',NULL,NULL); @@ -5506,15 +5506,15 @@ REPLACE INTO `item_db` VALUES (13289,'Petti_Noodle_To_Throw','Throwing Petite Ta REPLACE INTO `item_db` VALUES (13290,'Black_Thing_To_Throw','Throwing Black Mass',10,100,NULL,50,0,NULL,NULL,NULL,0x00040000,8,2,32768,NULL,99,NULL,9,'sc_start SC_STOMACHACHE,60000,rand(5,10);',NULL,NULL); REPLACE INTO `item_db` VALUES (13294,'Explosive_Kunai','Explosive Kunai',10,100,NULL,30,50,NULL,NULL,NULL,0x02000000,63,2,32768,NULL,100,NULL,7,'bonus bAtkEle,Ele_Neutral;',NULL,NULL); # Ninja Fuuma Shurikens -REPLACE INTO `item_db` VALUES (13300,'Huuma_Bird_Wing','Huuma Wing Shuriken',5,90000,NULL,3000,150,NULL,1,0,0x02000000,7,2,34,4,65,1,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,50,NULL,1,3,0x02000000,7,2,34,4,42,1,22,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13302,'Huuma_Giant_Wheel_','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,50,NULL,1,4,0x02000000,7,2,34,4,42,1,22,'bonus bUnbreakableWeapon,0; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13303,'Huuma_Blaze','Huuma Blaze Shuriken',5,78000,NULL,1500,185,NULL,1,0,0x02000000,7,2,34,4,55,1,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13304,'Huuma_Calm_Mind','Huuma Calm Mind',5,20,NULL,1550,112,NULL,1,2,0x02000000,7,2,34,3,70,1,22,'bonus bUnbreakableWeapon,0; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,4,80,1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',5,0,NULL,0,230,NULL,1,0,0x02000000,7,2,34,4,0,0,22,'bonus bUnbreakableWeapon,0; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13300,'Huuma_Bird_Wing','Huuma Wing Shuriken',5,90000,NULL,3000,150,NULL,1,0,0x02000000,7,2,34,4,65,1,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,50,NULL,1,3,0x02000000,7,2,34,4,42,1,22,'bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13302,'Huuma_Giant_Wheel_','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,50,NULL,1,4,0x02000000,7,2,34,4,42,1,22,'bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13303,'Huuma_Blaze','Huuma Blaze Shuriken',5,78000,NULL,1500,185,NULL,1,0,0x02000000,7,2,34,4,55,1,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13304,'Huuma_Calm_Mind','Huuma Calm Mind',5,20,NULL,1550,112,NULL,1,2,0x02000000,7,2,34,3,70,1,22,'bonus bUnbreakableWeapon; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,3,80,1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,55,NULL,1,0,0x02000000,7,2,34,4,80,1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-3)*(getrefine()-3); bonus2 bAddRace,RC_Player,(getrefine()-3)*(getrefine()-3); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',5,0,NULL,0,230,NULL,1,0,0x02000000,7,2,34,4,0,0,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (13309,'Huuma_Giant_Wheel_C','Huuma Giant Wheel Shuriken',5,0,NULL,0,99,NULL,1,0,0x02000000,7,2,34,4,1,0,22,'bonus2 bAddSize,Size_All,80;',NULL,NULL); # More 1-Handed Swords REPLACE INTO `item_db` VALUES (13400,'Cutlas_','Cutlus',5,20,NULL,900,150,NULL,1,1,0x000654E2,7,2,2,4,40,1,2,'skill "SM_BASH",5; bonus bStr,2; bonus bDef,1;',NULL,NULL); @@ -5526,20 +5526,20 @@ REPLACE INTO `item_db` VALUES (13405,'Curved_Sword','Curved Sword',5,20,NULL,800 REPLACE INTO `item_db` VALUES (13406,'Edger','Edger',5,20,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,1,0,0,2,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db` VALUES (13407,'Nagan_C','Refined Nagan',5,1,NULL,0,148,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40;',NULL,NULL); REPLACE INTO `item_db` VALUES (13408,'Fire_Brand_C','Refined Fireblend',5,1,NULL,0,120,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13409,'Immaterial_Sword_C','Refined Immaterial Sword',5,1,NULL,0,160,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13409,'Immaterial_Sword_C','Refined Immaterial Sword',5,1,NULL,0,160,NULL,1,0,0x000654E2,7,2,2,4,0,0,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,45,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,115,NULL,1,0,0x000654E3,7,2,2,3,80,1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db` VALUES (13412,'Twin_Edge_B','Twin Edge of Naght Sieger',5,20,NULL,1500,150,NULL,1,3,0x000654E2,2,2,2,4,75,1,2,'bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL); REPLACE INTO `item_db` VALUES (13413,'Twin_Edge_R','Twin Edge of Naght Sieger',5,20,NULL,1500,160,NULL,1,3,0x000654E2,2,2,2,4,75,1,2,'bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL); REPLACE INTO `item_db` VALUES (13414,'Elemental_Sword','Elemental Sword',5,20,NULL,1200,105,NULL,1,3,0x000654E2,2,2,2,3,70,1,2,'bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus bMatkRate,5; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,1000;',NULL,NULL); REPLACE INTO `item_db` VALUES (13415,'N_Falchion','Novice Falchion',5,0,NULL,0,59,NULL,1,3,0x000654E3,7,2,2,1,2,0,2,NULL,NULL,NULL); -REPLACE INTO `item_db` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL); -REPLACE INTO `item_db` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon,0; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(getrefine()>9) bonus bInt,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,(getrefine()-4)*(getrefine()-4); bonus2 bAddRace,RC_Player,(getrefine()-4)*(getrefine()-4); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(getrefine()>6) bonus bAspdRate,5; if(getrefine()>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',5,20,NULL,0,130,NULL,1,0,0x000654E3,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus bInt,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',5,20,NULL,0,130,NULL,1,0,0x000444A2,7,2,2,4,80,1,2,'bonus bInt,getrefine()-5; bonus bMatkRate,10; bonus bUnbreakableWeapon; if(getrefine()>5) bonus bUseSPrate,-10; if(getrefine()>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(getrefine()>9) bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (13419,'Holy_Saber','Holy saber',5,20,NULL,0,160,NULL,1,0,0x000654E2,7,2,2,3,0,0,2,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (13420,'Honglyun\'s_Sword','Honglyun\'s Sword',5,20,NULL,1200,160,NULL,1,1,0x000654E2,7,2,2,4,70,1,2,'bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db` VALUES (13421,'Ruber','Ruber',5,20,NULL,1500,170,NULL,1,1,0x000444A2,2,2,2,3,50,1,2,'autobonus "{ bonus2 bSkillAtk,\\\"KN_BOWLINGBASH\\\",20; bonus2 bSkillAtk,\\\"SM_BASH\\\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); -REPLACE INTO `item_db` VALUES (13422,'Flamberge_C','Flamberge',5,0,NULL,0,185,NULL,1,0,0x00004080,7,2,2,3,1,0,2,'bonus bUnbreakableWeapon,0; bonus2 bAddSize,Size_All,40;',NULL,NULL); +REPLACE INTO `item_db` VALUES (13422,'Flamberge_C','Flamberge',5,0,NULL,0,185,NULL,1,0,0x00004080,7,2,2,3,1,0,2,'bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40;',NULL,NULL); # More Cash Shop Items REPLACE INTO `item_db` VALUES (13500,'Insurance60_Package','Life Insurrance Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14500,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (13501,'Assorted_Scroll_Box','Experience Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6261,7 +6261,7 @@ REPLACE INTO `item_db` VALUES (14216,'F_Bubble_Gum_Box5','Bubble Gum 5 Box',18,2 REPLACE INTO `item_db` VALUES (14217,'F_Megaphone_Box1','Megaphone Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12221,1;',NULL,NULL); REPLACE INTO `item_db` VALUES (14218,'F_Megaphone_Box5','Megaphone 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12221,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (14219,'F_Enriched_Elunium_Box5','Enriched Elunium 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 7619,5;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14220,'FEnriched_Oridecon_Box5','Enriched Oridecon 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 7620,5;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14220,'F_Enriched_Oridecon_Box5','Enriched Oridecon 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 7620,5;',NULL,NULL); REPLACE INTO `item_db` VALUES (14221,'MP_Scroll_Box','Mystical Amplification Scroll 10 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (14222,'MP_Scroll_Box30','Mystical Amplification Scroll 30 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,30;',NULL,NULL); REPLACE INTO `item_db` VALUES (14223,'MP_Scroll_Box50','Mystical Amplification Scroll 50 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,50;',NULL,NULL); @@ -6387,8 +6387,8 @@ REPLACE INTO `item_db` VALUES (14521,'Repair_Scroll','Repair Weapon Scroll',2,0, REPLACE INTO `item_db` VALUES (14522,'Big_Bun','Big Bun',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,0;',NULL,NULL); REPLACE INTO `item_db` VALUES (14523,'Pill_','Pill',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,100;',NULL,NULL); REPLACE INTO `item_db` VALUES (14524,'Superb_Fish_Slice','Superb Fish Slice',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14525,'Chewy_Ricecake','Chewy Ricecake',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ATKPOTION,180000,10;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14526,'Oriental_Pastry','Oriental Pastry',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MATKPOTION,180000,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14525,'Chewy_Ricecake','Chewy Ricecake',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ATKPOTION,1800000,10;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14526,'Oriental_Pastry','Oriental Pastry',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MATKPOTION,1800000,10;',NULL,NULL); REPLACE INTO `item_db` VALUES (14527,'Dun_Tele_Scroll1','Dungeon Teleport Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashDungeon",1;',NULL,NULL); REPLACE INTO `item_db` VALUES (14528,'PVP_Tele_Scroll','PVP Teleport Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (14529,'Greed_Scroll','Greed Scroll',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemskill "BS_GREED",1;',NULL,NULL); @@ -6459,15 +6459,15 @@ REPLACE INTO `item_db` VALUES (14593,'Magic_Power_Scroll','Mystical Amplificatio REPLACE INTO `item_db` VALUES (14594,'Quagmire_Scroll','Quagmire Scroll',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemskill "WZ_QUAGMIRE",5;',NULL,NULL); REPLACE INTO `item_db` VALUES (14595,'Unsealed_Magic_Spell','Unsealed Magic Spell',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'warp "yuno_fild09",255,127;',NULL,NULL); REPLACE INTO `item_db` VALUES (14596,'Pierre_Treasurebox','Pierre\'s Treasure Box',2,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1; getrandgroupitem(IG_Pierre_Treasurebox),1;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14597,'PhreeoniS','Phreeoni Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4121,SI_FOODHIT;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14598,'GhostringS','Ghostring Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4047,SI_ARMOR_PROPERTY;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14597,'PhreeoniS','Phreeoni Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4121,EFST_FOOD_BASICHIT;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14598,'GhostringS','Ghostring Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4047,EFST_ARMOR_PROPERTY;',NULL,NULL); REPLACE INTO `item_db` VALUES (14599,'Greed_Scroll_C','Greed Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (14600,'Mental_Potion','Mental Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (14601,'Tyr\'s_Blessing','Tyr\'s Blessing',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCFLEE,300000,30; sc_start SC_INCHIT,300000,30; sc_start SC_ATKPOTION,300000,20; sc_start SC_MATKPOTION,300000,20;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14602,'TaogunkaS','Tao Gunka Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4302,SI_MVPCARD_TAOGUNKA;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14603,'MistressS','Mistress Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4132,SI_MVPCARD_MISTRESS;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14604,'Orc_HeroS','Orc Hero Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4143,SI_MVPCARD_ORCHERO;',NULL,NULL); -REPLACE INTO `item_db` VALUES (14605,'Orc_LoadS','Orc Lord Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4135,SI_MVPCARD_ORCLORD;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14602,'TaogunkaS','Tao Gunka Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4302,EFST_MVPCARD_TAOGUNKA;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14603,'MistressS','Mistress Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4132,EFST_MVPCARD_MISTRESS;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14604,'Orc_HeroS','Orc Hero Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4143,EFST_MVPCARD_ORCHERO;',NULL,NULL); +REPLACE INTO `item_db` VALUES (14605,'Orc_LoadS','Orc Lord Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4135,EFST_MVPCARD_ORCLORD;',NULL,NULL); REPLACE INTO `item_db` VALUES (14606,'Job_Manual25','JOB Battle Manual',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db` VALUES (14607,'Luxurious_Dinner_W','Luxurious Western Food',2,10000,NULL,600,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCALLSTATUS,3600000,3;',NULL,NULL); REPLACE INTO `item_db` VALUES (14608,'Luxurious_Dinner_E','Manchu-Han Imperial Feast',2,20000,NULL,1200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCALLSTATUS,3600000,6;',NULL,NULL); @@ -6597,8 +6597,8 @@ REPLACE INTO `item_db` VALUES (18597,'Mercury_Helm','Mercury Riser',4,40,NULL,20 # REPLACE INTO `item_db` VALUES (18600,'Cat_Ears_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,761,'bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; }',NULL,NULL); # -REPLACE INTO `item_db` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0;',NULL,NULL); -REPLACE INTO `item_db` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm;',NULL,NULL); # REPLACE INTO `item_db` VALUES (18620,'Heart_Eyepatch','Heart Eyepatch',4,5,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,20,1,779,NULL,NULL,NULL); # diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 580be2995a..3d9df166f3 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -509,7 +509,7 @@ REPLACE INTO `item_db_re` VALUES (1120,'Tsurugi_','Tsurugi',5,51000,NULL,1200,'1 REPLACE INTO `item_db_re` VALUES (1121,'Tsurugi__','Tsurugi',5,51000,NULL,1200,'130',NULL,1,0,0x000654E2,63,2,2,3,'27',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1122,'Ring_Pommel_Saber','Ring Pommel Saber',5,24000,NULL,900,'100',NULL,1,2,0x000654E2,63,2,2,2,'14',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1123,'Haedonggum','Haedonggum',5,50000,NULL,900,'120',NULL,1,1,0x000654E2,63,2,2,3,'27',1,2,'bonus bInt,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1124,'Orcish_Sword','Orcish Sword',5,20,NULL,800,'90',NULL,1,0,0x000654E3,63,2,2,3,'5',1,2,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1124,'Orcish_Sword','Orcish Sword',5,20,NULL,800,'90',NULL,1,0,0x000654E3,63,2,2,3,'5',1,2,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1125,'Ring_Pommel_Saber_','Ring Pommel Saber',5,24000,NULL,900,'100',NULL,1,3,0x000654E2,63,2,2,2,'14',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1126,'Saber','Saber',5,49000,NULL,1000,'115',NULL,1,2,0x000654E2,63,2,2,3,'27',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1127,'Saber_','Saber',5,49000,NULL,1000,'115',NULL,1,3,0x000654E2,63,2,2,3,'27',1,2,NULL,NULL,NULL); @@ -526,14 +526,14 @@ REPLACE INTO `item_db_re` VALUES (1137,'Excalibur','Excalibur',5,20,NULL,1200,'1 REPLACE INTO `item_db_re` VALUES (1138,'Mysteltainn_','Mysteltainn',5,20,NULL,1000,'170',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Dark; bonus2 bAddEle,Ele_Ghost,15; bonus3 bAutoSpell,"MG_STONECURSE",3,100; bonus2 bAddEff,Eff_Stone,10; bonus bDex,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1139,'Tale_Fing_','Tirfing',5,20,NULL,1000,'200',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Dark; bonus2 bHPLossRate,35,10000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1140,'Byeorrun_Gum','Byeollungum',5,20,NULL,900,'150',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus2 bSubClass,Class_Normal,-10; bonus2 bAddClass,Class_Boss,50; bonus bAllStats,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1141,'Immaterial_Sword','Immaterial Sword',5,20,NULL,900,'140',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1141,'Immaterial_Sword','Immaterial Sword',5,20,NULL,900,'140',NULL,1,0,0x000654E2,63,2,2,4,'40',1,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,30,30; bonus bSPDrainValue,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1142,'Jewel_Sword','Jeweled Sword',5,20,NULL,2200,'104',NULL,1,0,0x000654E2,63,2,2,3,'68',1,2,'bonus2 bAddMonsterDropItemGroup,IG_Jewel,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1143,'Gaia_Sword','Gaia Sword',5,20,NULL,2500,'140',NULL,1,0,0x000654E2,63,2,2,3,'74',1,2,'bonus2 bAddMonsterDropItemGroup,IG_Ore,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1144,'Sasimi','Sashimi',5,20,NULL,1400,'75',NULL,1,0,0x000654E2,63,2,2,3,'48',1,2,'bonus bAtkEle,Ele_Wind; bonus3 bAddMonsterDropItem,544,RC_Fish,4000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1145,'Holy_Avenger','Holy Avenger',5,450000,NULL,1350,'125',NULL,1,0,0x00004000,63,2,2,3,'75',1,2,'bonus bAtkEle,Ele_Holy; bonus bVit,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1146,'Town_Sword','Town Sword',5,42000,NULL,800,'100',NULL,1,1,0x00000001,63,2,2,3,'30',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1147,'Town_Sword_','Town Sword',5,42000,NULL,800,'100',NULL,1,2,0x00000001,63,2,2,3,'30',1,2,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1148,'Star_Dust_Blade','Star Dust Blade',5,20,NULL,1000,'140',NULL,1,1,0x00000001,63,2,2,4,'45',1,2,'bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1148,'Star_Dust_Blade','Star Dust Blade',5,20,NULL,1000,'140',NULL,1,1,0x00000001,63,2,2,4,'45',1,2,'bonus2 bAddEff,Eff_Stun,500; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1149,'Flamberge_','Flamberge',5,60000,NULL,1500,'150',NULL,1,2,0x00004080,63,2,2,3,'27',1,2,NULL,NULL,NULL); #=================================================================== # 2-Handed Swords @@ -547,18 +547,18 @@ REPLACE INTO `item_db_re` VALUES (1156,'Bastard_Sword__','Bastard Sword',5,22500 REPLACE INTO `item_db_re` VALUES (1157,'Two_Hand_Sword','Two-Handed Sword',5,60000,NULL,2200,'160',NULL,1,1,0x00004082,63,2,34,3,'33',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1158,'Two_Hand_Sword_','Two-Handed Sword',5,60000,NULL,2200,'160',NULL,1,2,0x00004082,63,2,34,3,'33',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1159,'Two_Hand_Sword__','Two-Handed Sword',5,60000,NULL,2200,'160',NULL,1,0,0x00004082,63,2,34,3,'33',1,3,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1160,'Broad_Sword','Broad Sword',5,65000,NULL,2000,'140',NULL,1,1,0x00004082,63,2,34,3,'33',1,3,'bonus bDef,5; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1161,'Balmung','Balmung',5,20,NULL,1000,'250',NULL,1,0,0xFFFFFFFF,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1162,'Broad_Sword_','Broad Sword',5,65000,NULL,2000,'140',NULL,1,2,0x00004082,63,2,34,3,'33',1,3,'bonus bDef,5; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1160,'Broad_Sword','Broad Sword',5,65000,NULL,2000,'140',NULL,1,1,0x00004082,63,2,34,3,'33',1,3,'bonus bDef,5; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1161,'Balmung','Balmung',5,20,NULL,1000,'250',NULL,1,0,0xFFFFFFFF,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1162,'Broad_Sword_','Broad Sword',5,65000,NULL,2000,'140',NULL,1,2,0x00004082,63,2,34,3,'33',1,3,'bonus bDef,5; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1163,'Claymore','Claymore',5,74000,NULL,2500,'180',NULL,1,0,0x00004080,63,2,34,3,'33',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1164,'Muramasa','Muramasa',5,20,NULL,1000,'155',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bCritical,30; bonus bAspdRate,8; bonus2 bAddEff2,Eff_Curse,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1165,'Masamune','Masamune',5,20,NULL,1000,'200',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bFlee,30; bonus bStr,-5; bonus bAspd,2; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1166,'Dragon_Slayer','Dragon Slayer',5,20,NULL,1300,'150',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1167,'Schweizersabel','Schweizersabel',5,20,NULL,1600,'160',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bAtkEle,Ele_Wind; bonus bDef,1; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",3,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1168,'Zweihander','Zweihander',5,20,NULL,2200,'200',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1168,'Zweihander','Zweihander',5,20,NULL,2200,'200',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1169,'Executioner_','Executioner',5,20,NULL,2200,'155',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1170,'Katzbalger','Katzbalger',5,20,NULL,2000,'175',NULL,1,0,0x00004082,63,2,34,4,'48',1,3,'bonus bVit,5; bonus bDef,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1171,'Zweihander_','Zweihander',5,20,NULL,2200,'200',NULL,1,2,0x00004082,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1171,'Zweihander_','Zweihander',5,20,NULL,2200,'200',NULL,1,2,0x00004082,63,2,34,4,'48',1,3,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1172,'Claymore_','Claymore',5,74000,NULL,2500,'180',NULL,1,2,0x00004080,63,2,34,3,'33',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1173,'Muramasa_C','Muramasa',5,1,NULL,0,'204',NULL,1,0,0x00004082,63,2,34,4,'1',0,3,'bonus bCritical,30; bonus bAspdRate,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1174,'Executioner_C','Executioner',5,2,NULL,0,'190',NULL,1,0,0x00004082,63,2,34,4,'0',0,3,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10; bonus bAtkEle,Ele_Dark;',NULL,NULL); @@ -570,11 +570,11 @@ REPLACE INTO `item_db_re` VALUES (1179,'Executioner__','Executioner',5,20,NULL,2 REPLACE INTO `item_db_re` VALUES (1180,'Dragon_Slayer_','Dragon Slayer',5,20,NULL,1300,'150',NULL,1,2,0x00004082,63,2,34,4,'48',1,3,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1181,'Tae_Goo_Lyeon','Tae Goo Lyeon',5,20,NULL,2000,'250',NULL,1,2,0x00004082,18,2,34,4,'90',1,3,'bonus bFlee2,10; if(JobLevel>=70) autobonus "{ bonus bBaseAtk,50; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; if(getrefine()>8) { bonus bVariableCastrate,-20; bonus bDelayRate,-20; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1182,'Bloody_Eater','Bloody Eater',5,20,NULL,1200,'200',NULL,1,2,0x00004082,18,2,34,4,'50',1,3,'bonus bAtkEle,Ele_Ghost; autobonus "{ bonus bCritical,100; bonus bBaseAtk,50; }",1,5000,0,"{ specialeffect2 EF_FIRESPLASHHIT; }"; bonus bHPGainValue,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,'200',NULL,1,0,0x00004082,63,2,34,3,'80',1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,'200',NULL,1,0,0x00004082,63,2,34,3,'80',1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1183,'BF_Two_Handed_Sword1','Brave Assaulter\'s Katzbalger',5,20,NULL,0,'200',NULL,1,0,0x00004082,63,2,34,3,'80',1,3,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1184,'BF_Two_Handed_Sword2','Valorous Assaulter\'s Katzbalger',5,20,NULL,0,'200',NULL,1,0,0x00004082,63,2,34,3,'80',1,3,'bonus bCritical,20; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bCritAtkRate,20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1185,'Violet_Fear','Violet Fear',5,20,NULL,2200,'275',NULL,1,2,0x00004082,18,2,34,4,'80',1,3,'bonus3 bAutoSpell,"WZ_METEOR",3,30; bonus3 bAutoSpell,"WZ_FROSTNOVA",5,50; autobonus "{ bonus bIgnoreDefClass,Class_Normal; specialeffect2 EF_ENHANCE; }",50,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1186,'Death_Guidance','Death Guidance',5,20,NULL,2000,'200',NULL,1,2,0x00004082,18,2,34,4,'70',1,3,'bonus bStr,5; bonus bAgi,2; bonus bFlee2,20; bonus3 bAutoSpell,"NPC_HELLPOWER",1,10; bonus4 bAutoSpell,"NPC_HELLPOWER",1,10,0; bonus3 bAutoSpell,"NPC_VAMPIRE_GIFT",(getrefine()>8?2:1),20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,'220',NULL,1,0,0x00004082,63,2,34,4,'80',1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,1); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,1); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1187,'Krieger_Twohand_Sword1','Glorious Claymore',5,20,NULL,0,'220',NULL,1,0,0x00004082,63,2,34,4,'80',1,3,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,1); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,1); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"LK_CONCENTRATION",max(getskilllv("LK_CONCENTRATION"),1),30; bonus3 bAutoSpell,"LK_AURABLADE",max(getskilllv("LK_AURABLADE"),1),30; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1188,'Veteran_Sword','Veteran Sword',5,10000,NULL,2000,'180',NULL,1,1,0x00004082,63,2,34,4,'80',1,3,'if(getskilllv("SM_BASH")==10) { bonus2 bSkillAtk,"SM_BASH",50; } if(getskilllv("KN_BOWLINGBASH")==10) { bonus2 bSkillAtk,"KN_BOWLINGBASH",50; } bonus bStr,1; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1189,'Krasnaya','Krasnaya',5,20,NULL,3800,'200',NULL,2,3,0x00004082,18,2,34,2,'50',1,3,'if(readparam(bStr)>=95) { bonus bBaseAtk,20; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1190,'Claymore_C','Claymore',5,0,NULL,0,'220',NULL,1,0,0x00004080,63,2,34,3,'1',0,3,'bonus2 bAddSize,Size_All,40;',NULL,NULL); @@ -583,9 +583,9 @@ REPLACE INTO `item_db_re` VALUES (1192,'P_Slayer1','Eden Slayer I',5,0,NULL,0,'1 REPLACE INTO `item_db_re` VALUES (1193,'P_Slayer2','Eden Slayer II',5,0,NULL,0,'185',NULL,1,0,0x00004082,63,2,34,2,'40',0,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1194,'F_Executioner_C','Executioner',5,2,NULL,0,'190',NULL,1,0,0x00004082,63,2,34,4,'0',0,3,'bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1195,'E_Executioner_C','Executioner',5,2,NULL,0,'190',NULL,1,0,0x00004082,63,2,34,4,'0',0,3,'bonus bAtkEle,Ele_Dark;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1196,'Chrome_Twohand_Sword','Chrome Two-Handed Sword',5,20,NULL,400,'280',NULL,1,0,0x00004082,63,2,34,3,'110',1,3,'bonus bUnbreakableWeapon,1; bonus bAgi,3; bonus bMaxHPrate,-10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1196,'Chrome_Twohand_Sword','Chrome Two-Handed Sword',5,20,NULL,400,'280',NULL,1,0,0x00004082,63,2,34,3,'110',1,3,'bonus bUnbreakableWeapon; bonus bAgi,3; bonus bMaxHPrate,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1197,'P_Slayer3','Eden Slayer III',5,0,NULL,0,'200',NULL,1,0,0x00004082,63,2,34,3,'60',0,3,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1198,'Hairtail','Cutlass',5,0,NULL,0,'220',NULL,3,0,0x00004082,63,2,34,1,'50',0,3,'bonus bUnbreakableWeapon,1; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1198,'Hairtail','Cutlass',5,0,NULL,0,'220',NULL,3,0,0x00004082,63,2,34,1,'50',0,3,'bonus bUnbreakableWeapon; bonus bCritical,20; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bBaseAtk,50; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1199,'Ebony_Toe_Nail','Ebony Toe Nail',5,56000,NULL,1000,'250:150',NULL,1,0,0x00004082,63,2,34,4,'120',1,3,NULL,NULL,NULL); #=================================================================== # Daggers @@ -611,11 +611,11 @@ REPLACE INTO `item_db_re` VALUES (1218,'Stiletto__','Stiletto',5,19500,NULL,700, REPLACE INTO `item_db_re` VALUES (1219,'Gladius','Gladius',5,43000,NULL,700,'105',NULL,1,2,0x028F5EEE,63,2,2,3,'24',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1220,'Gladius_','Gladius',5,43000,NULL,700,'105',NULL,1,3,0x028F5EEE,63,2,2,3,'24',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1221,'Gladius__','Gladius',5,43000,NULL,700,'105',NULL,1,0,0x028F5EEE,63,2,2,3,'24',1,1,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1222,'Damascus','Damascus',5,49000,NULL,800,'118',NULL,1,1,0x028F5EEE,63,2,2,3,'24',1,1,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1222,'Damascus','Damascus',5,49000,NULL,800,'118',NULL,1,1,0x028F5EEE,63,2,2,3,'24',1,1,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1223,'Forturn_Sword','Fortune Sword',5,20,NULL,500,'90',NULL,1,0,0x028F5EEE,63,2,2,4,'24',1,1,'bonus bLuk,5; bonus bFlee2,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1224,'Sword_Breaker','Swordbreaker',5,20,NULL,1000,'70',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bBreakWeaponRate,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1225,'Mail_Breaker','Mailbreaker',5,20,NULL,1000,'70',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bBreakArmorRate,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1226,'Damascus_','Damascus',5,49000,NULL,800,'118',NULL,1,2,0x028F5EEE,63,2,2,3,'24',1,1,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1226,'Damascus_','Damascus',5,49000,NULL,800,'118',NULL,1,2,0x028F5EEE,63,2,2,3,'24',1,1,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1227,'Weeder_Knife','Weeder Knife',5,20,NULL,400,'80',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bIgnoreDefRace,RC_Plant; bonus2 bAddRace,RC_Plant,15; bonus2 bSubRace,RC_Plant,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1228,'Combat_Knife','Combat Knife',5,20,NULL,400,'80',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1229,'Mama\'s_Knife','Kitchen Knife',5,20,NULL,500,'75',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bCritical,30; bonus3 bAddMonsterDropItem,517,RC_Brute,5000;',NULL,NULL); @@ -625,7 +625,7 @@ REPLACE INTO `item_db_re` VALUES (1232,'Assasin_Dagger','Assassin Dagger',5,20,N REPLACE INTO `item_db_re` VALUES (1233,'Exercise','Exorciser',5,20,NULL,700,'90',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bIgnoreDefRace,RC_Demon; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_DemiHuman,-10; bonus2 bSubRace,RC_Player,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1234,'Moonlight_Sword','Moonlight Dagger',5,20,NULL,700,'50',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bMaxSPrate,10; bonus bSPDrainValue,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1235,'Azoth','Azoth',5,20,NULL,700,'110',NULL,1,0,0x00040000,63,2,2,4,'36',1,1,'bonus bClassChange,300;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1236,'Sucsamad','Sucsamad',5,20,NULL,800,'140',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1236,'Sucsamad','Sucsamad',5,20,NULL,800,'140',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1237,'Grimtooth_','Grimtooth',5,20,NULL,800,'180',NULL,1,0,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1238,'Zeny_Knife','Zeny Knife',5,20,NULL,1200,'64',NULL,1,0,0x028F5EEE,63,2,2,3,'70',1,1,'bonus2 bGetZenyNum,100,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1239,'Poison_Knife','Poison Knife',5,20,NULL,800,'64',NULL,1,0,0x028F5EEE,63,2,2,3,'65',1,1,'bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000;',NULL,NULL); @@ -655,9 +655,9 @@ REPLACE INTO `item_db_re` VALUES (1259,'Katar_Of_Piercing_Wind','Katar of Pierci REPLACE INTO `item_db_re` VALUES (1260,'Ghoul_Leg','Sharpened Legbone of Ghoul',5,52500,NULL,1700,'150',NULL,1,0,0x00001000,63,2,34,3,'65',1,16,'bonus bAtkEle,Ele_Undead;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1261,'Infiltrator','Infiltrator',5,57000,NULL,1500,'140',NULL,1,0,0x00001000,63,2,34,4,'75',1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1262,'Nail_Of_Loki','Loki\'s Nail',5,20,NULL,1200,'115',NULL,1,0,0x00001000,63,2,34,3,'55',1,16,'bonus2 bAddEff,Eff_Bleeding,300;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1263,'Unholy_Touch','Unholy Touch',5,20,NULL,1250,'151',NULL,1,0,0x00001000,63,2,34,4,'70',1,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1263,'Unholy_Touch','Unholy Touch',5,20,NULL,1250,'151',NULL,1,0,0x00001000,63,2,34,4,'70',1,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,200; bonus bCritical,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1264,'Various_Jur','Specialty Jur',5,20,NULL,800,'90',NULL,1,4,0x00001000,63,2,34,1,'1',1,16,'bonus2 bAddEff2,Eff_Bleeding,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,'120',NULL,1,0,0x00001000,63,2,34,4,'75',1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1265,'Bloody_Roar','Bloody Roar',5,20,NULL,1000,'120',NULL,1,0,0x00001000,63,2,34,4,'75',1,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-(readparam(bAgi)+BaseLevel); bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1266,'Infiltrator_','Infiltrator',5,57000,NULL,1500,'140',NULL,1,1,0x00001000,63,2,34,4,'75',1,16,'bonus2 bAddRace,RC_DemiHuman,50; bonus2 bAddRace,RC_Player,50; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1267,'Infiltrator_C','Infiltrator',5,1,NULL,0,'189',NULL,1,0,0x00001000,63,2,34,4,'1',0,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bDef,3; bonus bFlee,5; bonus bFlee2,2; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1268,'Wild_Beast_Claw','Wild Beast Claw',5,20,NULL,1450,'160',NULL,1,1,0x00001000,18,2,34,4,'55',1,16,'bonus3 bAutoSpell,"NPC_CRITICALWOUND",(getrefine()>=9?2:1),100;',NULL,NULL); @@ -665,20 +665,20 @@ REPLACE INTO `item_db_re` VALUES (1269,'Inverse_Scale','Inverse Scale',5,20,NULL REPLACE INTO `item_db_re` VALUES (1270,'Drill_Katar','Drill Katar',5,20,NULL,1400,'110',NULL,1,1,0x00001000,18,2,34,4,'55',1,16,'bonus bHit,30; bonus3 bAutoSpell,"ST_FULLSTRIP",1,150;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1271,'Blood_Tears','Blood Tears',5,20,NULL,1700,'120',NULL,1,2,0x00001000,18,2,34,4,'55',1,16,'bonus3 bAutoSpell,"NPC_WIDEBLEEDING",(getrefine()>=9?2:1),30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1272,'Scratcher','Scratcher',5,20,NULL,0,'120',NULL,1,0,0x00001000,63,2,34,1,'0',0,16,'bonus2 bAddClass,Class_All,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,'148',NULL,1,0,0x00001000,63,2,34,4,'0',0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bFlee,-160; bonus bFlee2,-160;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1274,'Unholy_Touch_C','Refined Unholy Touch',5,1,NULL,0,'179',NULL,1,0,0x00001000,63,2,34,4,'0',0,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1273,'Bloody_Roar_C','Refined Bloody Roar',5,1,NULL,0,'148',NULL,1,0,0x00001000,63,2,34,4,'0',0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bHPRegenRate,3,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1274,'Unholy_Touch_C','Refined Unholy Touch',5,1,NULL,0,'179',NULL,1,0,0x00001000,63,2,34,4,'0',0,16,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Curse,5000; bonus bCritical,-1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1275,'Katar_Of_Cold_Icicle_','Katar of Frozen Icicle',5,45000,NULL,1200,'105',NULL,1,3,0x00001000,63,2,34,3,'55',1,16,'bonus bAtkEle,Ele_Water; bonus2 bAddEff,Eff_Freeze,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1276,'Katar_Of_Thornbush_','Katar of Quaking',5,45000,NULL,1200,'105',NULL,1,3,0x00001000,63,2,34,3,'55',1,16,'bonus bAtkEle,Ele_Earth; bonus2 bAddEff,Eff_Blind,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1277,'Katar_Of_Raging_Blaze_','Katar of Raging Blaze',5,45000,NULL,1200,'105',NULL,1,3,0x00001000,63,2,34,3,'55',1,16,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Silence,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1278,'Katar_Of_Piercing_Wind_','Katar of Piercing Wind',5,45000,NULL,1200,'105',NULL,1,3,0x00001000,63,2,34,3,'55',1,16,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Sleep,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,'140',NULL,1,0,0x00001000,63,2,34,4,'80',1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,'140',NULL,1,0,0x00001000,63,2,34,4,'80',1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1279,'BF_Katar1','Brave Carnage Katar',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1280,'BF_Katar2','Valorous Carnage Katar',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus bCritAtkRate,20; bonus bAspdRate,5; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1281,'Krieger_Katar1','Glorious Bloody Roar',5,20,NULL,0,'140',NULL,1,0,0x00001000,63,2,34,4,'80',1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1282,'Krieger_Katar2','Glorious Jamadhar',5,20,NULL,0,'140',NULL,1,0,0x00001000,63,2,34,4,'80',1,16,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bCriticalAddRace,RC_DemiHuman,5; bonus2 bCriticalAddRace,RC_Player,5; } if(.@r>8) autobonus "{ bonus bAspdRate,100; }",70,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1283,'Katar_Of_Speed','Katar Of Speed',5,20,NULL,0,'175',NULL,1,0,0x00001000,63,2,34,4,'0',0,16,'bonus2 bSkillAtk,"AS_SONICBLOW",25; bonus bAspdRate,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1284,'Krishna','Krishna',5,20,NULL,1200,'120',NULL,1,2,0x00001000,18,2,34,3,'50',1,16,'bonus2 bSkillAtk,"AS_GRIMTOOTH",10; bonus3 bAutoSpell,"AS_SONICBLOW",max(getskilllv("AS_SONICBLOW"),1),5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1285,'Cakram','Chakram',5,20,NULL,1000,'130',NULL,1,2,0x00001000,18,2,34,3,'50',1,16,'if(getskilllv("AS_KATAR")==10) { bonus bHit,10; } bonus2 bSkillAtk,"ASC_METEORASSAULT",20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1286,'Jamadhar_C','Jamadhar',5,0,NULL,0,'200',NULL,1,0,0x00001000,63,2,34,3,'1',0,16,'bonus bUnbreakableWeapon,1; bonus2 bAddSize,Size_All,40;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1286,'Jamadhar_C','Jamadhar',5,0,NULL,0,'200',NULL,1,0,0x00001000,63,2,34,3,'1',0,16,'bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1287,'Durga','Durga',5,20,NULL,1200,'190',NULL,1,1,0x00001000,63,2,34,3,'100',1,16,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1288,'Bloody_Fear_C','Bloody Fear',5,1,NULL,0,'145',NULL,1,0,0x00001000,63,2,34,4,'1',0,16,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1289,'P_Katar1','Eden Katar I',5,0,NULL,0,'155',NULL,1,0,0x00001000,63,2,34,3,'60',0,16,NULL,NULL,NULL); @@ -704,17 +704,17 @@ REPLACE INTO `item_db_re` VALUES (1306,'War_Axe','War Axe',5,20,NULL,4200,'140', REPLACE INTO `item_db_re` VALUES (1307,'Windhawk','Windhawk',5,18000,NULL,1500,'115',NULL,1,0,0x000654E2,63,2,2,2,'14',1,6,'bonus bAtkEle,Ele_Wind; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1308,'Golden_Axe','Golden Axe',5,20,NULL,3000,'170',NULL,1,0,0x00000001,63,2,2,4,'45',1,6,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1309,'Orcish_Axe_','Orcish Axe',5,20,NULL,1500,'75',NULL,1,4,0x000654E3,63,2,2,3,'3',1,6,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,'130',NULL,1,0,0x000444A2,63,2,2,4,'80',1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1310,'Krieger_Onehand_Axe1','Glorious Cleaver',5,20,NULL,0,'130',NULL,1,0,0x000444A2,63,2,2,4,'80',1,6,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus bAspdRate,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1311,'Vecer_Axe','Vecer Axe',5,20,NULL,1500,'140',NULL,1,2,0x000444A2,18,2,2,3,'50',1,6,'if(readparam(bLuk)>=90) { bonus bBaseAtk,20; } if(readparam(bDex)>=90) { bonus bCritical,5; } if(readparam(bDex)>=90&&readparam(bLuk)>=90) { bonus2 bSkillAtk,"MC_MAMMONITE",15; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1312,'Orcish_Axe_C','Orcish Axe',5,0,NULL,0,'110',NULL,1,0,0x000654E3,63,2,2,3,'1',0,6,'bonus2 bAddSize,Size_All,70;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1313,'Tourist_Axe','Tourist Axe',5,0,NULL,500,'77',NULL,1,0,0x000654E3,63,2,2,1,'1',0,6,'bonus bStr,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1314,'F_Tomahawk_C','Tomahawk',5,2,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,4,'0',0,7,'bonus bAtkEle,Ele_Wind;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1315,'F_Right_Epsilon_C','Light Epsilon',5,1,NULL,0,'229',NULL,1,0,0x000444A2,63,2,34,4,'1',0,7,'bonus bAtkEle,Ele_Holy; bonus bStr,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1316,'Adventure_Axe','Adventure Axe',5,0,NULL,0,'100',NULL,1,0,0x00040420,63,2,2,1,'1',0,6,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1317,'Academy_Axe','Academy Axe',5,0,NULL,1600,'130',NULL,1,1,0x00040420,63,2,2,1,'1',1,6,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1318,'Dofle_Axe','Deflation Axe',5,50000,NULL,1800,'180',NULL,1,2,0x000654E2,63,2,2,4,'105',1,6,'bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1319,'TE_Woe_Axe','TE Woe Axe',5,0,NULL,0,'100',NULL,1,0,0x000654E3,63,2,2,3,'40',1,6,'bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1321,'Dofle_Axe_','Deflation Axe',5,50000,NULL,1800,'180',NULL,1,3,0x000654E2,63,2,2,4,'105',1,6,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1317,'Academy_Axe','Academy Axe',5,0,NULL,1600,'130',NULL,1,1,0x00040420,63,2,2,1,'30',1,6,'bonus bUnbreakableWeapon; bonus bAspdRate,5-(BaseLevel/10); bonus bMaxHP,200-(40*(BaseLevel/10));',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1318,'Dofle_Axe','Deflation Axe',5,50000,NULL,1800,'180',NULL,1,2,0x000654E2,63,2,2,4,'105',1,6,'bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1319,'TE_Woe_Axe','TE Woe Axe',5,0,NULL,0,'100',NULL,1,0,0x000654E3,63,2,2,3,'40',1,6,'bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1321,'Dofle_Axe_','Deflation Axe',5,50000,NULL,1800,'180',NULL,1,3,0x000654E2,63,2,2,4,'105',1,6,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1322,'Ru_Blue_Axe','Blue Axe',5,10,NULL,1800,'180',NULL,1,1,0xFFFFFFFF,63,2,2,1,'1',1,6,'bonus bStr,5; bonus bVit,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1323,'Ru_Gold_Axe','Ru Gold Axe',5,0,NULL,1800,'180',NULL,1,2,0x00040000,56,2,2,3,'120',1,6,'bonus bStr,8; bonus bInt,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1324,'War_Axe_','War Axe',5,20,NULL,4200,'140',NULL,1,3,0x00040400,63,2,2,3,'76',1,6,'bonus bDex,2; bonus bLuk,2;',NULL,NULL); @@ -749,10 +749,10 @@ REPLACE INTO `item_db_re` VALUES (1375,'Berdysz','Berdysz',5,20,NULL,2500,'200', REPLACE INTO `item_db_re` VALUES (1376,'Heart_Breaker','Heart Breaker',5,20,NULL,2000,'175',NULL,1,1,0x000444A2,18,2,34,4,'70',1,7,'bonus bCritical,20+getrefine(); bonus bAspdRate,5; if((Class==Job_Whitesmith)||(Class==Job_Creator)||(Class==Job_Mechanic)||(Class==Job_Mechanic_T)||(Class==Job_Genetic)||(Class==Job_Genetic_T)) bonus3 bAutoSpell,"BS_HAMMERFALL",3,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1377,'Hurricane_Fury','Hurricane\'s Fury',5,20,NULL,3500,'332',NULL,1,1,0x000444A2,18,2,34,4,'80',1,7,'.@r = getrefine(); bonus2 bSubSize,Size_Medium,10+.@r; bonus bAspdRate,.@r; bonus3 bAutoSpell,"NPC_PULSESTRIKE",5,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1378,'Great_Axe_C','Refined Great Axe',5,1,NULL,0,'215',NULL,1,0,0x000444A2,63,2,34,4,'0',0,7,'bonus bStr,5; bonus bHit,20; bonus2 bAddSkillBlow,"MC_MAMMONITE",5; bonus2 bAddEff,Eff_Stun,2000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1379,'BF_Two_Handed_Axe1','Valorous Insane Battle Axe',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1380,'BF_Two_Handed_Axe2','Brave Insane Battle Axe',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; autobonus "{ bonus bBreakArmorRate,10000; }",20,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1381,'N_Battle_Axe','Novice Battle Axe',5,0,NULL,0,'100',NULL,1,3,0x000444A2,63,2,34,1,'3',0,7,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,'220',NULL,1,0,0x000444A2,63,2,34,4,'80',1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(.@r>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1382,'Krieger_Twohand_Axe1','Glorious Two-Handed Axe',5,20,NULL,0,'220',NULL,1,0,0x000444A2,63,2,34,4,'80',1,7,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50; } if(.@r>8) { bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"MC_MAMMONITE","NPC_CRITICALWOUND",2,200; bonus4 bAutoSpellOnSkill,"WS_CARTTERMINATION","NPC_CRITICALWOUND",2,200; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1383,'Holy_Celestial_Axe','Celestial Axe',5,20,NULL,1500,'200',NULL,1,0,0x000444A2,63,2,34,4,'60',1,7,'bonus bAtkEle,Ele_Holy; bonus bVit,10; bonus2 bAddRace,RC_Undead,10; bonus3 bAutoSpell,"AL_BLESSING",5,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1384,'Veteran_Axe','Veteran Axe',5,10000,NULL,3000,'250',NULL,1,2,0x000444A2,63,2,34,3,'80',1,7,'if(getskilllv("BS_DAGGER")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_TWOHANDSWORD")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_KNUCKLE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_SPEAR")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_AXE")==3) { bonus bBaseAtk,10; } if(getskilllv("BS_MACE")==3) { bonus bBaseAtk,10; } bonus bVit,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1385,'Bradium_Stonehammer','Bradium Stone Hammer',5,20,NULL,2700,'210',NULL,1,0,0x000444A2,18,2,34,4,'75',1,7,'bonus3 bAddEffOnSkill,"BS_HAMMERFALL",Eff_Stun,500+(200*getrefine());',NULL,NULL); @@ -762,14 +762,14 @@ REPLACE INTO `item_db_re` VALUES (1388,'Two_Handed_Axe_C','Two-Handed Axe',5,0,N REPLACE INTO `item_db_re` VALUES (1389,'E_Tomahawk_C','Tomahawk',5,2,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,4,'0',0,7,'bonus bAtkEle,Ele_Wind;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1390,'E_Right_Epsilon_C','Light Epsilon',5,1,NULL,0,'229',NULL,1,0,0x000444A2,63,2,34,4,'1',0,7,'bonus bAtkEle,Ele_Holy; bonus bStr,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1391,'P_Two_Handed_Axe1','Eden Two-Handed Axe I',5,0,NULL,0,'195',NULL,1,0,0x000444A2,63,2,34,3,'60',0,7,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1392,'Ygnus_Stale','Ignus Steel',5,56000,NULL,1900,'250',NULL,1,1,0x000444A2,63,2,34,4,'95',1,7,'bonus bAtkEle,Ele_Fire; bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Burning,300; bonus2 bAddEff2,Eff_Burning,300;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1393,'End_Sektura','End Sectora',5,56000,NULL,1900,'250',NULL,1,1,0x000444A2,63,2,34,4,'95',1,7,'bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Freeze,300; bonus2 bAddEff2,Eff_Freeze,300;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1392,'Ygnus_Stale','Ignus Steel',5,56000,NULL,1900,'250',NULL,1,1,0x000444A2,63,2,34,4,'95',1,7,'bonus bAtkEle,Ele_Fire; bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Burning,300; bonus2 bAddEff2,Eff_Burning,300;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1393,'End_Sektura','End Sectora',5,56000,NULL,1900,'250',NULL,1,1,0x000444A2,63,2,34,4,'95',1,7,'bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Freeze,300; bonus2 bAddEff2,Eff_Freeze,300;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1394,'Upg_Two_Handed_Axe','Upg Two Handed Axe',5,20,NULL,2000,'110',NULL,1,1,0x000444A2,63,2,34,3,'1',1,7,'bonus bBaseAtk,(getrefine()*14); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1395,'Velum_Buster','Vellum Buster',5,20,NULL,2500,'50',NULL,1,0,0x000444A2,63,2,34,4,'95',1,7,'bonus bUnbreakableWeapon,1; bonus3 bSPVanishRaceRate,RC_Player,10000,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1396,'Velum_Guillotine','Vellum Guillotine',5,20,NULL,5500,'300',NULL,1,0,0x000444A2,63,2,34,4,'95',1,7,'bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bIgnoreDefRaceRate,RC_Player,30; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"NC_AXEBOOMERANG",80; bonus2 bSkillAtk,"NC_POWERSWING",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,60; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1397,'Bradium_Stonehammer_','Bradium Stonehammer',5,20,NULL,2700,'210',NULL,1,2,0x000444A2,63,2,34,4,'75',1,7,'bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1398,'Metal_Two_Handed_Axe','Metal Two Handed Axe',5,20,NULL,0,'105',NULL,1,1,0x000444A2,63,2,34,3,'1',1,7,'bonus bUnbreakableWeapon,1; bonus bBaseAtk,(getrefine()*7); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1399,'TE_Woe_Two_Handed_Axe','TE Woe Two Handed Axe',5,0,NULL,0,'150',NULL,1,0,0x000444A2,63,2,34,3,'40',1,7,'bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,3000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1395,'Velum_Buster','Vellum Buster',5,20,NULL,2500,'50',NULL,1,0,0x000444A2,63,2,34,4,'95',1,7,'bonus bUnbreakableWeapon; bonus3 bSPVanishRaceRate,RC_Player,10000,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1396,'Velum_Guillotine','Vellum Guillotine',5,20,NULL,5500,'300',NULL,1,0,0x000444A2,63,2,34,4,'95',1,7,'bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bIgnoreDefRaceRate,RC_Player,30; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"NC_AXEBOOMERANG",80; bonus2 bSkillAtk,"NC_POWERSWING",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,60; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1397,'Bradium_Stonehammer_','Bradium Stonehammer',5,20,NULL,2700,'210',NULL,1,2,0x000444A2,63,2,34,4,'75',1,7,'bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1398,'Metal_Two_Handed_Axe','Metal Two Handed Axe',5,20,NULL,0,'105',NULL,1,1,0x000444A2,63,2,34,3,'1',1,7,'bonus bUnbreakableWeapon; bonus bBaseAtk,(getrefine()*7); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1399,'TE_Woe_Two_Handed_Axe','TE Woe Two Handed Axe',5,0,NULL,0,'150',NULL,1,0,0x000444A2,63,2,34,3,'40',1,7,'bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Stun,3000;',NULL,NULL); #=================================================================== # 1-Handed Spears #=================================================================== @@ -793,15 +793,15 @@ REPLACE INTO `item_db_re` VALUES (1416,'Tjungkuletti','Tjungkuletti',5,20,NULL,1 REPLACE INTO `item_db_re` VALUES (1417,'Pole_Axe','Pole Axe',5,20,NULL,3800,'160',NULL,3,1,0x00004082,63,2,2,3,'71',1,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1418,'Gungnir_','Gungnir',5,20,NULL,500,'120',NULL,3,2,0x00004082,63,2,2,4,'4',1,4,'bonus bAtkEle,Ele_Wind; bonus bPerfectHitRate,25; bonus bHit,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1419,'Pole_Axe_C','Pole Axe',5,1,NULL,4800,'195',NULL,3,0,0x00004082,63,2,2,3,'1',0,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1420,'Long_Horn','Long Horn',5,20,NULL,1000,'150',NULL,3,1,0x00004082,18,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1420,'Long_Horn','Long Horn',5,20,NULL,1000,'150',NULL,3,1,0x00004082,18,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1421,'Battle_Hook','Battle Hook',5,20,NULL,900,'140',NULL,3,1,0x00004082,18,2,2,4,'65',1,4,'bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1422,'Hunting_Spear','Hunting Spear',5,20,NULL,4200,'180',NULL,3,1,0x00004082,18,2,2,4,'60',1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1423,'Pole_XO','Pole XO',5,20,NULL,0,'120',NULL,3,0,0x00004082,63,2,2,1,'0',0,4,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1424,'Skewer_C','Refined Brocca',5,1,NULL,0,'149',NULL,3,0,0x00004082,63,2,2,4,'0',0,4,'bonus bIgnoreDefClass,Class_Normal; bonus2 bAddSize,Size_Medium,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,'60',NULL,3,0,0x00004082,63,2,2,3,'80',1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,'130',NULL,3,0,0x00004082,63,2,2,4,'80',1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1425,'BF_Spear1','Assaulter Spear',5,20,NULL,0,'60',NULL,3,0,0x00004082,63,2,2,3,'80',1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1426,'Krieger_Onehand_Spear1','Glorious Spear',5,20,NULL,0,'130',NULL,3,0,0x00004082,63,2,2,4,'80',1,4,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,10; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,100; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1427,'Spear_Of_Excellent','Spear Of Excellent',5,20,NULL,0,'160',NULL,3,0,0x00004082,63,2,2,3,'0',0,4,'bonus2 bSkillAtk,"SM_MAGNUM",25; bonus bStr,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1428,'Long_Horn_M','Long Horn',5,20,NULL,1000,'150',NULL,3,1,0x00004082,18,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1428,'Long_Horn_M','Long Horn',5,20,NULL,1000,'150',NULL,3,1,0x00004082,18,2,2,4,'65',1,4,'bonus bAtkEle,Ele_Holy; bonus2 bAddEff,Eff_Bleeding,500; skill "TF_DETOXIFY",1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1429,'Hunting_Spear_M','Hunting Spear',5,20,NULL,4200,'180',NULL,3,1,0x00004082,18,2,2,4,'60',1,4,'bonus bIgnoreDefRace,RC_Brute; bonus3 bAddMonsterDropItem,517,RC_Brute,1000; bonus3 bAutoSpell,"LK_JOINTBEAT",3,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1430,'Pike_C','Pike',5,0,NULL,0,'74',NULL,3,0,0x00004082,63,2,2,1,'1',0,4,'bonus2 bAddSize,Size_All,70;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1431,'F_Pole_Axe_C','Pole Axe',5,1,NULL,4800,'195',NULL,3,0,0x00004082,63,2,2,3,'1',0,4,'bonus bStr,1; bonus bInt,2; bonus bDex,1;',NULL,NULL); @@ -812,12 +812,12 @@ REPLACE INTO `item_db_re` VALUES (1435,'Cannon_Spear','Cannon Spear',5,56000,NUL REPLACE INTO `item_db_re` VALUES (1436,'Velum_Spear','Vellum Spear',5,20,NULL,850,'150',NULL,3,0,0x00004082,63,2,2,4,'95',1,4,'bonus2 bAddRace,RC_Player,60; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"RK_HUNDREDSPEAR",80; bonus2 bSkillAtk,"LG_PINPOINTATTACK",80; } if(.@r>=9) { bonus2 bAddRace,RC_Player,30; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1437,'TE_Woe_Pike','TE Woe Pike',5,0,NULL,0,'100',NULL,3,0,0x00004082,63,2,2,3,'40',1,4,'bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,3000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1438,'Thanos_Spear','Thanatos Spear',5,10,NULL,3000,'150:100',NULL,3,1,0x00004082,56,2,2,4,'120',1,4,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); -REPLACE INTO `item_db_re` VALUES (1439,'Half_BF_Spear1','Half BF Spear1',5,20,NULL,0,'60',NULL,3,0,0x00004082,63,2,2,3,'80',1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,45; bonus2 bAddRace,RC_Player,45; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1439,'Half_BF_Spear1','Half BF Spear1',5,20,NULL,0,'60',NULL,3,0,0x00004082,63,2,2,3,'80',1,4,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,45; bonus2 bAddRace,RC_Player,45; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; if(BaseJob==Job_Crusader) bonus bAspdRate,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1440,'Battle_Hook_','Battle Hook',5,20,NULL,900,'140',NULL,3,3,0x00004082,18,2,2,4,'65',1,4,'bonus2 bAddEff,Eff_Stun,500; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; skill "KN_PIERCE",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1441,'Ru_Blue_Spear','Blue Spear',5,10,NULL,1200,'180:170',NULL,3,1,0x00004000,56,2,2,3,'100',1,4,'bonus bDex,5; bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1442,'Ru_Gold_Spear','Ru Gold Spear',5,0,NULL,1200,'180',NULL,3,2,0x00004000,56,2,2,3,'120',1,4,'bonus bStr,8; bonus bAgi,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1443,'Crimson_Spear','Crimson Spear',5,20,NULL,900,'90',NULL,3,2,0x00004082,63,2,2,3,'70',1,4,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1446,'Requiem_Spear','Requiem Spear',5,20,NULL,1000,'130',NULL,3,NULL,0x00004080,63,2,2,4,'100',1,4,'.@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1446,'Requiem_Spear','Requiem Spear',5,20,NULL,1000,'130',NULL,3,NULL,0x00004080,63,2,2,4,'100',1,4,'.@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b;',NULL,NULL); #=================================================================== # 2-Handed Spears #=================================================================== @@ -859,14 +859,14 @@ REPLACE INTO `item_db_re` VALUES (1478,'Ahlspiess','Ahlspiess',5,20,NULL,1000,'1 REPLACE INTO `item_db_re` VALUES (1479,'Spectral_Spear_','Spectral Spear',5,20,NULL,2000,'170',NULL,3,1,0x00004082,63,2,34,4,'75',1,5,'bonus2 bAddEle,Ele_Dark,20; bonus2 bAddRace,RC_Demon,20; bonus2 bAddRace,RC_Undead,20; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubRace,RC_Demon,10; bonus2 bSubRace,RC_Undead,10; bonus2 bAddEff2,Eff_Confusion,1000; bonus bHPGainValue,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1480,'Gae_Bolg_','Gae Bolg',5,20,NULL,2000,'160',NULL,3,2,0x00004082,63,2,34,4,'60',1,5,'bonus bIgnoreDefRace,RC_Dragon; bonus2 bAddClass,Class_Boss,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1481,'Zephyrus_','Zephyrus',5,20,NULL,2000,'170',NULL,3,3,0x00004082,63,2,34,4,'48',1,5,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Silence,200; bonus3 bAutoSpell,"MG_THUNDERSTORM",3,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1482,'BF_Lance1','Assaulter Lance',5,20,NULL,0,'160',NULL,3,0,0x00004082,63,2,34,3,'80',1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1482,'BF_Lance1','Assaulter Lance',5,20,NULL,0,'160',NULL,3,0,0x00004082,63,2,34,3,'80',1,5,'bonus bStr,2; bonus2 bAddRace,RC_DemiHuman,25; bonus2 bAddRace,RC_Player,25; bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1483,'Ivory_Lance','Ivory Lance',5,20,NULL,1000,'160',NULL,3,1,0x00004082,18,2,34,3,'50',1,5,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30; skill "KN_SPEARSTAB",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1484,'Cardo','Cardo',5,20,NULL,5600,'150',NULL,3,1,0x00000080,18,2,34,4,'70',1,5,'bonus bAspdRate,-10; bonus bDef,getrefine()/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1485,'Battle_Fork','Battle Fork',5,20,NULL,700,'112',NULL,3,4,0x00004082,18,2,34,2,'50',1,5,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,'220',NULL,3,0,0x00004082,63,2,34,4,'80',1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1486,'Krieger_Twohand_Spear1','Glorious Lance',5,20,NULL,0,'220',NULL,3,0,0x00004082,63,2,34,4,'80',1,5,'bonus2 bAddRace,RC_DemiHuman,70; bonus2 bAddRace,RC_Player,70; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { if(BaseJob==Job_Knight) bonus4 bAutoSpellOnSkill,"KN_PIERCE","NPC_CRITICALWOUND",2,200; else if(BaseJob==Job_Crusader) bonus3 bAutoSpell,"PA_PRESSURE",5,200; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1487,'Lance_C','Lance',5,0,NULL,0,'220',NULL,3,0,0x00004082,63,2,34,3,'1',0,5,'bonus2 bAddSize,Size_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1488,'Ahlspiess_C','Ahlspiess',5,20,NULL,0,'135',NULL,3,0,0x00004080,63,2,34,4,'1',1,5,'bonus bIgnoreDefClass,Class_Normal; bonus bIgnoreDefClass,Class_Boss; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus3 bAutoSpell,"KN_PIERCE",5,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1489,'Spearfish_','Marlin',5,0,NULL,0,'220',NULL,3,0,0x00004082,18,2,34,1,'50',0,5,'bonus bUnbreakableWeapon,1; bonus3 bAddEffOnSkill,"KN_PIERCE",Eff_Bleeding,1000; bonus3 bAddEffOnSkill,"LK_SPIRALPIERCE",Eff_Bleeding,1000; bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_INSPIRATION",50; if(BaseLevel>99) { bonus bBaseAtk,30; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1489,'Spearfish_','Marlin',5,0,NULL,0,'220',NULL,3,0,0x00004082,18,2,34,1,'50',0,5,'bonus bUnbreakableWeapon; bonus3 bAddEffOnSkill,"KN_PIERCE",Eff_Bleeding,1000; bonus3 bAddEffOnSkill,"LK_SPIRALPIERCE",Eff_Bleeding,1000; bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_INSPIRATION",50; if(BaseLevel>99) { bonus bBaseAtk,30; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1490,'Giant_Lance','Gigantic Lance',5,20,NULL,20000,'20',NULL,3,0,0x00000080,63,2,34,4,'140',1,5,'bonus bAspd,-10; bonus2 bSkillCooldown,"LK_SPIRALPIERCE",20000; if(readparam(bStr)>=120){ bonus bBaseAtk,300; }',NULL,'heal 0,-600;'); REPLACE INTO `item_db_re` VALUES (1491,'Upg_Lance','Upg Lance',5,20,NULL,1500,'105',NULL,3,1,0x00004082,63,2,34,3,'1',1,5,'bonus bBaseAtk,(getrefine()*12); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1492,'Velum_Glaive','Vellum Glaive',5,20,NULL,4500,'250',NULL,3,0,0x00004082,63,2,34,4,'95',1,5,'bonus2 bAddRace,RC_Player,80; .@r = getrefine(); if(.@r>=6) { bonus2 bSkillAtk,"LK_SPIRALPIERCE",100; bonus2 bSkillAtk,"LG_OVERBRAND",50; } if(.@r>=9) { autobonus2 "{ bonus bShortWeaponDamageReturn,20; bonus bMagicDamageReturn,20; }",100,2000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_REFLECTSHIELD; }"; }',NULL,NULL); @@ -876,7 +876,7 @@ REPLACE INTO `item_db_re` VALUES (1495,'TE_Woe_Lance','TE Woe Lance',5,0,NULL,0, REPLACE INTO `item_db_re` VALUES (1496,'Thanos_Long_Spear','Thanatos Long Spear',5,10,NULL,3750,'250:50',NULL,3,1,0x00004082,56,2,34,4,'120',1,5,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (1497,'Hell_Fire_','Hellfire',5,20,NULL,3500,'200',NULL,3,3,0x00004082,63,2,34,4,'48',1,5,'bonus bAtkEle,Ele_Fire; bonus3 bAutoSpell,"MG_FIREBALL",5,100; bonus bStr,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1498,'Crimson_Lance','Crimson Lance',5,20,NULL,1750,'175',NULL,1,2,0x00004082,63,2,34,3,'70',1,5,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1499,'Requiem_Lance','Requiem Lance',5,20,NULL,1500,'220',NULL,3,NULL,0x00004080,63,2,34,4,'100',1,5,'.@r = getrefine(); .@b = 40; .@c = 5; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+30; .@c += (.@r-5); } bonus2 bAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1499,'Requiem_Lance','Requiem Lance',5,20,NULL,1500,'220',NULL,3,NULL,0x00004080,63,2,34,4,'100',1,5,'.@r = getrefine(); .@b = 40; .@c = 5; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+30; .@c += (.@r-5); } bonus2 bAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c;',NULL,NULL); #=================================================================== # Maces #=================================================================== @@ -903,7 +903,7 @@ REPLACE INTO `item_db_re` VALUES (1520,'Chain_','Chain',5,23000,NULL,800,'84',NU REPLACE INTO `item_db_re` VALUES (1521,'Chain__','Chain',5,23000,NULL,800,'84',NULL,1,3,0x0004C5B2,63,2,2,2,'14',1,8,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1522,'Stunner','Stunner',5,60000,NULL,2000,'140',NULL,1,0,0x00008110,63,2,2,3,'27',1,8,'bonus2 bAddEff,Eff_Stun,1000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1523,'Spike','Spike',5,20,NULL,700,'85',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,'110',NULL,1,1,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1524,'Golden_Mace','Golden Mace',5,20,NULL,800,'110',NULL,1,1,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1525,'Long_Mace','Long Mace',5,20,NULL,800,'135',NULL,3,0,0x00008110,63,2,2,4,'40',1,8,'bonus bLongAtkDef,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1526,'Slash','Slash',5,20,NULL,1000,'145',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,15; bonus2 bComaRace,RC_Undead,10; bonus2 bExpAddRace,RC_Undead,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1527,'Quadrille','Quadrille',5,20,NULL,900,'165',NULL,1,0,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL); @@ -918,14 +918,14 @@ REPLACE INTO `item_db_re` VALUES (1535,'Hollgrehenn_Hammer','Hollgrehenn\'s Hamm REPLACE INTO `item_db_re` VALUES (1536,'Good_Morning_Star','Good Morning Star',5,20,NULL,0,'120',NULL,1,0,0x0004C5B2,63,2,2,1,'0',0,8,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1537,'Quadrille_C','Refined Quadrille',5,1,NULL,0,'193',NULL,1,0,0x00008110,63,2,2,4,'0',0,8,'bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bAddRace,RC_Demon,40; bonus2 bAddRace,RC_Undead,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1538,'Spike_','Spike',5,20,NULL,700,'85',NULL,1,2,0x00008110,63,2,2,4,'40',1,8,'bonus bCritical,40; bonus bDefRate,-67; bonus bDef2Rate,-67;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1539,'Golden_Mace_','Golden Mace',5,20,NULL,800,'110',NULL,1,2,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1539,'Golden_Mace_','Golden Mace',5,20,NULL,800,'110',NULL,1,2,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1540,'Grand_Cross_','Grand Cross',5,20,NULL,1500,'140',NULL,1,1,0x00008110,63,2,2,4,'40',1,8,'bonus bAtkEle,Ele_Holy; skill "PR_TURNUNDEAD",3; bonus3 bAutoSpell,"PR_TURNUNDEAD",3,100; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1541,'Nemesis','Nemesis',5,20,NULL,900,'120',NULL,1,0,0x00008110,63,2,2,4,'60',1,8,'bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus3 bAutoSpell,"AL_CRUCIS",1+getrefine(),100; autobonus "{ bonus bBaseAtk,50; }",10,20000,BF_WEAPON,"{ specialeffect2 EF_BLOODDRAIN; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,1; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1542,'BF_Morning_Star1','Valorous Battlefield Morning Star',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1543,'BF_Morning_Star2','Brave Battlefield Morning Star',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus2 bAddEff,Eff_Stun,5000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1544,'Lunakaligo','Lunakaligo',5,20,NULL,700,'110',NULL,1,3,0x00008110,18,2,2,3,'50',1,8,'if(readparam(bStr)>=77) { bonus bAspdRate,4; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAddMonsterDropItem,12065,RC_Plant,500; bonus3 bAddMonsterDropItem,12043,RC_Brute,500; bonus3 bAddMonsterDropItem,12069,RC_Fish,500; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1545,'N_Mace','Novice Mace',5,0,NULL,0,'57',NULL,1,3,0x0004C5B3,63,2,2,1,'2',0,8,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,'130',NULL,1,0,0x0004C5B3,63,2,2,4,'80',1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1546,'Krieger_Onehand_Mace1','Glorious Morning Star',5,20,NULL,0,'130',NULL,1,0,0x0004C5B3,63,2,2,4,'80',1,8,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; bonus bAspdRate,5; } if(.@r>8) { bonus2 bAddEff,Eff_Stun,2000; bonus bAspdRate,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1547,'Mace_Of_Madness','Mace Of Madness',5,20,NULL,0,'150',NULL,1,0,0x0004C5B2,63,2,2,3,'0',0,8,'bonus2 bSkillAtk,"MC_CARTREVOLUTION",25; bonus bStr,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1548,'Veteran_Hammer','Veteran Hammer',5,10000,NULL,1800,'160',NULL,1,2,0x00008110,63,2,2,3,'80',1,8,'bonus bHealPower,getskilllv("AL_DP"); bonus bCritical,getskilllv("PR_MACEMASTERY")*2; bonus bInt,1; bonus bLuk,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1549,'Pilebuncker','Pile Bunker',5,10000,NULL,3500,'450',NULL,1,0,0x00000400,56,2,2,3,'99',1,8,NULL,NULL,NULL); @@ -956,32 +956,32 @@ REPLACE INTO `item_db_re` VALUES (1570,'Book_Of_Blazing_Sun_','Book of Blazing S REPLACE INTO `item_db_re` VALUES (1571,'Book_Of_Gust_Of_Wind_','Book of Gust of Wind',5,35000,NULL,750,'90',NULL,1,3,0x00410100,63,2,2,3,'27',1,15,'bonus bAtkEle,Ele_Wind;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1572,'Principles_Of_Magic','Principles of Magic',5,20,NULL,300,'60:160',NULL,1,2,0x00410100,63,2,2,3,'60',1,15,'bonus bInt,3; bonus bSPrecovRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1573,'Ancient_Magic','Ancient Magic',5,20,NULL,700,'30:140',NULL,1,2,0x00410100,63,2,2,3,'70',1,15,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1574,'BF_Book1','Brave Battle Strategy Book',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1575,'BF_Book2','Valorous Battle Strategy Book',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1576,'Krieger_Book1','Glorious Tablet',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus bMatkRate,15; bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) autobonus "{ bonus bBaseAtk,200; }",30,3000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1577,'Krieger_Book2','Glorious Apocalypse',5,20,NULL,0,'90:115',NULL,1,0,0x00410100,63,2,2,4,'80',1,15,'bonus2 bAddRace,RC_DemiHuman,80; bonus2 bAddRace,RC_Player,80; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreDefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; if(.@r>8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1578,'Book_Of_Prayer','Book Of Prayer',5,20,NULL,0,'140',NULL,1,0,0x00410100,63,2,2,3,'0',0,15,'bonus bVit,2; bonus bMdef,2; bonus bMaxSPrate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1579,'Death_Note_M','Book of the Dead',5,20,NULL,1000,'137',NULL,1,2,0x00410100,63,2,2,4,'85',1,15,'bonus bMatkRate,15; bonus bStr,3; bonus bInt,3; bonus bLuk,-20; bonus2 bComaRace,RC_DemiHuman,10; bonus2 bComaRace,RC_Player,10; bonus bAspdRate,getrefine(); if(BaseJob==Job_Sage) bonus3 bAutoSpell,"NPC_HELLJUDGEMENT",5,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1580,'Encyclopedia_C','Giant Encyclopedia',5,0,NULL,0,'145:100',NULL,1,0,0x00410100,63,2,2,3,'0',0,15,'bonus bMatkRate,15; bonus bInt,3; bonus bDex,2; bonus bCritical,20+((readparam(bLuk)*2)/10); bonus2 bAddSize,Size_All,40;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1581,'F_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,'135',NULL,1,2,0x00410100,63,2,2,3,'1',0,15,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1581,'F_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,'135',NULL,1,2,0x00410100,63,2,2,3,'1',0,15,'bonus bMatkRate,20; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1582,'E_Diary_Of_Great_Sage_C','Diary Of Great Sage',5,1,NULL,0,'135',NULL,1,2,0x00410100,63,2,2,3,'1',0,15,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1583,'P_Dic1','Eden Book I',5,0,NULL,0,'135:110',NULL,1,0,0x00410100,63,2,2,3,'60',0,15,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1584,'Chilly_Spell_Book','Cold Magic Book',5,56000,NULL,1000,'100:160',NULL,1,2,0x00010000,63,2,2,4,'100',1,15,'bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon,1; bonus bDex,1; .@r = getrefine(); bonus2 bSkillAtk,"MG_COLDBOLT",(.@r*3); bonus2 bSkillAtk,"SO_DIAMONDDUST",(.@r*3); bonus2 bSkillUseSP,"MG_COLDBOLT",-(.@r*5); bonus2 bSkillUseSP,"SO_DIAMONDDUST",-(.@r*5);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1584,'Chilly_Spell_Book','Cold Magic Book',5,56000,NULL,1000,'100:160',NULL,1,2,0x00010000,63,2,2,4,'100',1,15,'bonus bAtkEle,Ele_Water; bonus bUnbreakableWeapon; bonus bDex,1; .@r = getrefine(); bonus2 bSkillAtk,"MG_COLDBOLT",(.@r*3); bonus2 bSkillAtk,"SO_DIAMONDDUST",(.@r*3); bonus2 bSkillUseSP,"MG_COLDBOLT",-(.@r*5); bonus2 bSkillUseSP,"SO_DIAMONDDUST",-(.@r*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1585,'Upg_Book','Upg Book',5,20,NULL,600,'45:20',NULL,1,1,0x00410100,63,2,2,3,'1',1,15,'.@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1586,'Velum_Bible','Vellum Bible',5,20,NULL,600,'110:125',NULL,1,0,0x00410100,63,2,2,4,'95',1,15,'if(BaseLevel>104) { bonus bHealPower,(BaseLevel/5)-20; if(getrefine()>=6) { bonus2 bSkillCooldown,"AB_LAUDAAGNUS",-3000; bonus2 bSkillCooldown,"AB_LAUDARAMUS",-3000; bonus2 bSkillCooldown,"AB_CLEARANCE",-10000; bonus2 bSkillUseSP,"AB_LAUDAAGNUS",-60; bonus2 bSkillUseSP,"AB_LAUDARAMUS",-60; bonus2 bSkillUseSP,"AB_CLEARANCE",-60; } }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1587,'Velum_Encyclopedia','Vellum Great Encyclopedia',5,20,NULL,1000,'130',NULL,1,0,0x00410100,63,2,2,4,'95',1,15,'.@r = getrefine(); bonus2 bAddRace,RC_Player,80+.@r; bonus2 bIgnoreDefRaceRate,RC_Player,30; if(.@r>8) { autobonus "{ bonus bBaseAtk,200; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1588,'Metal_Book','Metal Book',5,20,NULL,0,'45:10',NULL,1,1,0x00410100,63,2,2,3,'1',1,15,'.@r = getrefine(); bonus bUnbreakableWeapon,1; bonus bBaseAtk,(.@r*5); bonus bMatk,(.@r*2); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1588,'Metal_Book','Metal Book',5,20,NULL,0,'45:10',NULL,1,1,0x00410100,63,2,2,3,'1',1,15,'.@r = getrefine(); bonus bUnbreakableWeapon; bonus bBaseAtk,(.@r*5); bonus bMatk,(.@r*2); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1589,'Legacy_Of_Dragon_','Legacy of Dragon',5,20,NULL,700,'130',NULL,1,2,0x00410100,63,2,2,4,'70',1,15,'bonus bInt,3; bonus bIgnoreDefRace,RC_Dragon; bonus2 bSPGainRace,RC_Dragon,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1590,'Snake_Encyclopedia','Daizenshu Dakatsu',5,60000,NULL,1500,'10:110',NULL,1,2,0x00410100,63,2,2,4,'105',1,15,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1590,'Snake_Encyclopedia','Daizenshu Dakatsu',5,60000,NULL,1500,'10:110',NULL,1,2,0x00410100,63,2,2,4,'105',1,15,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1591,'TE_Woe_Book','TE Woe Book',5,0,NULL,0,'120',NULL,1,0,0x00410100,63,2,2,3,'40',1,15,'bonus2 bAddRace,RC_Player,40; bonus2 bMagicAddRace,RC_Player,5; bonus3 bAddEff,Eff_Blind,1000,ATF_MAGIC; bonus bHPRecovRate,5; bonus bSPRecovRate,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1596,'Earth_Pedigree_Book','Earth Pedigree Book',5,10,NULL,400,'90:130',NULL,NULL,2,0x050100,63,2,2,NULL,'27',1,15,'.@r = getrefine(); bonus2 bSkillAtk,"WZ_HEAVENDRIVE",5+.@r; bonus2 bSkillAtk,"WZ_EARTHSPIKE",5+.@r; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1597,'Half_BF_Book2','Half BF Book2',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreMdefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1596,'Earth_Pedigree_Book','Earth Pedigree Book',5,10,NULL,400,'90:130',NULL,NULL,2,0x050100,63,2,2,NULL,'27',1,15,'.@r = getrefine(); bonus2 bSkillAtk,"WZ_HEAVENDRIVE",5+.@r; bonus2 bSkillAtk,"WZ_EARTHSPIKE",5+.@r; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1597,'Half_BF_Book2','Half BF Book2',5,20,NULL,0,'90:125',NULL,1,0,0x00410100,63,2,2,3,'80',1,15,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreMdefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); # GM Weapon REPLACE INTO `item_db_re` VALUES (1599,'Angra_Manyu','Angra Manyu',5,1,NULL,10,'10000:10000',NULL,2,0,0xFFFFFFFF,63,2,2,1,'1',1,8,'bonus bAllStats,50; bonus bBaseAtk,3300; bonus bMatkRate,200; bonus2 bHPDrainRate,1000,100; bonus2 bSPDrainRate,1000,20; bonus bHealPower,200; bonus2 bAddClass,Class_All,100; skill "WZ_STORMGUST",10; Skill "WZ_METEOR",10; Skill "WZ_VERMILION",10; skill "GM_SANDMAN",1; bonus bVariableCastrate,-100; bonus bFixedCastrate,-100;',NULL,NULL); #=================================================================== # 1-Handed Staffs #=================================================================== -REPLACE INTO `item_db_re` VALUES (1600,'Rod_of_Vicious_Mind','Rod of Vicious Mind',5,20,NULL,600,'60:120',NULL,1,1,0x00818315,63,2,2,4,'160',1,10,'bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,5; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1600,'Rod_of_Vicious_Mind','Rod of Vicious Mind',5,20,NULL,600,'60:120',NULL,1,1,0x00818315,63,2,2,4,'160',1,10,'bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,5; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1601,'Rod','Rod',5,50,NULL,400,'15:30',NULL,1,3,0x00818315,63,2,2,1,'1',1,10,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1602,'Rod_','Rod',5,50,NULL,400,'15:30',NULL,1,4,0x00818315,63,2,2,1,'1',1,10,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1603,'Rod__','Rod',5,50,NULL,400,'15:30',NULL,1,0,0x00818315,63,2,2,1,'1',1,10,NULL,NULL,NULL); @@ -1013,16 +1013,16 @@ REPLACE INTO `item_db_re` VALUES (1628,'Survival_Rod_C','Refined Survivor\'s Rod REPLACE INTO `item_db_re` VALUES (1629,'Walking_Stick','Gentleman\'s Staff',5,20,NULL,500,'40:125',NULL,1,1,0x00818314,63,2,2,4,'50',1,10,'bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1630,'Release_Of_Wish','Release of Wish',5,20,NULL,500,'30:125',NULL,1,0,0x00810204,63,2,2,3,'50',1,10,'bonus bInt,3; bonus bHealPower,5; autobonus "{ bonus2 bSPRegenRate,100,2000; bonus2 bHPRegenRate,50,2000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_HEAL; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1631,'Holy_Stick','Holy Stick',5,20,NULL,500,'50:140',NULL,1,1,0x00008100,63,2,2,4,'70',1,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus2 bVariableCastrate,"AL_HOLYLIGHT",-25; bonus2 bVariableCastrate,"PR_TURNUNDEAD",-25; bonus2 bVariableCastrate,"PR_MAGNUS",-25;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1634,'BF_Staff3','Strong Recovery Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1635,'BF_Staff4','Speedy Recovery Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1632,'BF_Staff1','Warlock\'s Magic Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,4; bonus bDex,3; bonus bMatkRate,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1633,'BF_Staff2','Warlock\'s Battle Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,3; bonus bMatkRate,15; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus3 bAddEff,Eff_Stun,500,ATF_MAGIC; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1634,'BF_Staff3','Strong Recovery Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bMatkRate,15; bonus bHealPower,14; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1635,'BF_Staff4','Speedy Recovery Wand',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,2; bonus bMatkRate,15; bonus bDelayRate,-15; bonus2 bSPRegenRate,5,10000; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1636,'Thorn_Staff','Thorn Staff of Darkness',5,20,NULL,700,'60:160',NULL,1,0,0x00018314,18,2,2,4,'75',1,10,'bonus bAtkEle,Ele_Dark; bonus bInt,3; bonus bDex,3; .@r = getrefine(); bonus2 bIgnoreMdefClassRate,Class_Normal,.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,.@r; bonus bDelayRate,-(.@r*3/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1637,'Eraser','Eraser',5,20,NULL,500,'80:170',NULL,1,0,0x00018314,18,2,2,4,'70',1,10,'bonus bInt,3; bonus bDex,2; bonus bSPrecovRate,8; bonus5 bAutoSpell,"NPC_WIDESOULDRAIN",(getrefine()>9?3:1),5,BF_MAGIC,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1638,'Healing_Staff_C','Staff Of Healing',5,20,NULL,0,'10:125',NULL,1,0,0x00008110,63,2,2,3,'1',0,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1638,'Healing_Staff_C','Staff Of Healing',5,20,NULL,0,'10:125',NULL,1,0,0x00008110,63,2,2,3,'1',1,10,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bHealPower,(getrefine()*3/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1639,'N_Rod','Novice Rod',5,0,NULL,0,'15:32',NULL,1,3,0x00818315,63,2,2,1,'1',0,10,'bonus bMatkRate,16;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,'70:135',NULL,1,0,0x00818314,63,2,2,4,'80',1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; .@r = getrefine(); bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((.@r > 5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((.@r > 5) ? 5 : 0); bonus bUnbreakableWeapon,1; if(.@r > 8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,'70:135',NULL,1,0,0x00818314,63,2,2,4,'80',1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r > 5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(min(14,.@r)-5)*2; } if(.@r > 8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(.@r > 9) { bonus bHealPower,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1640,'Krieger_Onehand_Staff1','Glorious Arc Wand',5,20,NULL,0,'70:135',NULL,1,0,0x00818314,63,2,2,4,'80',1,10,'bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; .@r = getrefine(); bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25 + ((.@r > 5) ? 5 : 0); bonus2 bIgnoreMdefRaceRate,RC_Player,25 + ((.@r > 5) ? 5 : 0); bonus bUnbreakableWeapon; if(.@r > 8) { bonus bMatkRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1641,'Krieger_Onehand_Staff2','Glorious Cure Wand',5,20,NULL,0,'70:135',NULL,1,0,0x00818314,63,2,2,4,'80',1,10,'bonus bHealPower,14; bonus bDelayRate,-10; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r > 5) { bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreMdefRaceRate,RC_Player,5; bonus bHealPower,5+(min(14,.@r)-5)*2; } if(.@r > 8) bonus5 bAutoSpellOnSkill,"AL_HEAL","AL_HEAL",10,100,1; if(.@r > 9) { bonus bHealPower,10; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1642,'Staff_Of_Darkness','Staff Of Darkness',5,20,NULL,0,'100:120',NULL,1,0,0x00818314,63,2,2,2,'0',0,10,'bonus bVariableCastrate,-5; bonus bMatkRate,15; bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1643,'Dead_Tree_Cane','Dead Tree Cane',5,20,NULL,100,'100:155',NULL,1,0,0x00818314,63,2,2,4,'70',1,10,'bonus bInt,4; .@r = getrefine(); if (.@r>5) { bonus bInt,.@r-5; bonus bMaxHP,-200; bonus bMaxSP,-100; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1644,'Piercing_Staff_M','Staff of Piercing',5,20,NULL,500,'80:145',NULL,1,0,0x00018314,18,2,2,3,'70',1,10,'bonus bInt,4; bonus bMatkRate,15; .@r = getrefine(); bonus2 bIgnoreMdefClassRate,Class_Normal,10+.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,10+.@r;',NULL,NULL); @@ -1034,15 +1034,15 @@ REPLACE INTO `item_db_re` VALUES (1649,'Rafini_Staff','Laphine Staff',5,20,NULL, REPLACE INTO `item_db_re` VALUES (1650,'P_Staff1','Eden Staff I',5,0,NULL,0,'60:125',NULL,1,0,0x00818314,63,2,2,2,'26',0,10,'bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1651,'P_Staff2','Eden Staff II',5,0,NULL,0,'60:150',NULL,1,0,0x00818314,63,2,2,2,'40',0,10,'bonus bInt,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1652,'Tourist_Staff','Tourist Staff',5,0,NULL,500,'35:0',NULL,1,0,0x00818315,63,2,2,1,'1',0,10,'bonus bMatkRate,15; bonus bInt,2; bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1653,'Staff_Of_Healing_C','Staff of Healing',5,20,NULL,0,'10:100',NULL,1,0,0x00008110,63,2,2,3,'1',0,10,'bonus bAtkEle,Ele_Holy;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1653,'Staff_Of_Healing_C','Staff of Healing',5,20,NULL,0,'10:100',NULL,1,0,0x00008110,63,2,2,3,'1',0,10,'bonus bAtkEle,Ele_Holy; bonus bHealPower,18;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1654,'Mental_Stick','Mental Stick',5,20,NULL,500,'40:170',NULL,1,1,0x00818315,63,2,2,3,'102',1,10,'.@r = getrefine(); if(.@r>5) { bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",(.@r-5)*2; bonus bMaxHPrate,-(.@r-5)*2; } bonus2 bSkillVariableCast,"SO_PSYCHIC_WAVE",-3000; bonus2 bSkillUseSP,"SO_PSYCHIC_WAVE",-60;',NULL,'itemheal 0,-100;'); -REPLACE INTO `item_db_re` VALUES (1655,'Adventure_Staff','Adventure Staff',5,0,NULL,0,'60',NULL,1,0,0x00810204,63,2,2,1,'1',0,10,'bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1656,'Academy_Wand','Academy Wand',5,0,NULL,600,'60',NULL,1,1,0x00810204,63,2,2,1,'1',1,10,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1655,'Adventure_Staff','Adventure Staff',5,0,NULL,0,'60',NULL,1,0,0x00810204,63,2,2,1,'1',0,10,'bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1656,'Academy_Wand','Academy Wand',5,0,NULL,600,'60',NULL,1,1,0x00810204,63,2,2,1,'1',1,10,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1657,'Wand_Of_Affection','Wand Of Affection',5,20,NULL,500,'30:160',NULL,1,2,0x00000100,63,2,2,3,'100',1,10,'bonus bInt,2; bonus bAtkEle,Ele_Holy; bonus bHealPower,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1658,'P_Staff3','Eden Staff III',5,0,NULL,0,'60:170',NULL,1,0,0x00818314,63,2,2,3,'60',0,10,'bonus bInt,4;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1659,'Recovery_Light','Light of Recovery',5,56000,NULL,400,'30:160',NULL,1,1,0x00000100,63,2,2,4,'110',1,10,'bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bHealPower,(.@r*6); bonus2 bSkillUseSP,"AL_HEAL",-(.@r*10); bonus2 bSkillUseSP,"AB_CHEAL",-(.@r*12); bonus2 bSkillUseSP,"AB_HIGHNESSHEAL",-(.@r*14);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1659,'Recovery_Light','Light of Recovery',5,56000,NULL,400,'30:160',NULL,1,1,0x00000100,63,2,2,4,'110',1,10,'bonus bAtkEle,Ele_Holy; bonus bUnbreakableWeapon; .@r = getrefine(); bonus bHealPower,(.@r*6); bonus2 bSkillUseSP,"AL_HEAL",-(.@r*10); bonus2 bSkillUseSP,"AB_CHEAL",-(.@r*12); bonus2 bSkillUseSP,"AB_HIGHNESSHEAL",-(.@r*14);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1660,'Wand_Of_Affection2','Empowered Wand Of Affection',5,20,NULL,500,'30:180',NULL,1,1,0x00000100,63,2,2,3,'130',1,10,'bonus bAtkEle,Ele_Holy; bonus bInt,4; bonus bHealPower,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1661,'Mental_Destroyer','Mental Destroyer',5,20,NULL,1400,'100:50',NULL,1,0,0x00000200,63,2,2,4,'95',1,10,'bonus bInt,10; bonus bUnbreakableWeapon,1; bonus bUseSPrate,100; bonus bMdef,20; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1661,'Mental_Destroyer','Mental Destroyer',5,20,NULL,1400,'100:50',NULL,1,0,0x00000200,63,2,2,4,'95',1,10,'bonus bInt,10; bonus bUnbreakableWeapon; bonus bUseSPrate,100; bonus bMdef,20; bonus2 bSPVanishRate,10000,5; if(getrefine()>5) { bonus2 bSPVanishRate,10000,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1662,'Bone_Wand_','Evil Bone Wand',5,20,NULL,700,'40:110',NULL,1,2,0x00818314,63,2,2,3,'24',1,10,'bonus bInt,4; bonus bAtkEle,Ele_Undead;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1663,'Staff_Of_Bordeaux_','Staff Of Bordeaux',5,20,NULL,500,'30:180',NULL,1,2,0x00010200,18,2,2,4,'50',1,10,'bonus bInt,2; bonus bDex,1; if(getskilllv("SA_DRAGONOLOGY") == 5) { bonus bUseSPrate,-15; bonus bInt,3; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1664,'Thorn_Staff_','Thorn Staff of Darkness',5,10,NULL,700,'60:160',NULL,NULL,1,0x14,50,2,2,4,'75',1,8,'bonus bInt,3; bonus bDex,3; bonus bVariableCastrate,-getrefine(); bonus bAtkEle,Ele_Dark;',NULL,NULL); @@ -1052,15 +1052,15 @@ REPLACE INTO `item_db_re` VALUES (1667,'TE_Woe_Staff','TE Woe Staff',5,0,NULL,0, REPLACE INTO `item_db_re` VALUES (1668,'Sword_Stick','Sword Stick',5,10,NULL,500,'120:150',NULL,NULL,2,0x800200,63,2,2,4,'80',1,10,'bonus bAspdRate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1669,'Thanos_Staff','Thanatos Staff',5,10,NULL,1000,'100:200',NULL,1,1,0x00018314,56,2,2,4,'120',1,10,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus bHealPower,15; bonus bMagicHPGainValue,500; bonus bMagicSPGainValue,50; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (1670,'RWC_Memory_Staff','RWC Memory Staff',5,20,NULL,500,'25:30',NULL,1,1,0x00818315,63,2,2,3,'1',1,10,'.@r = getrefine(); bonus bMatk,30*(.@r/3); if(.@r>=6) bonus2 bMagicAddClass,Class_All,(.@r>=9?10:5); if(.@r>=9) bonus4 bAutoSpell,"HW_MAGICPOWER",1,10,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1671,'Staff_Of_Evil_Slayer','Devil Won Staff',5,10,NULL,800,'30:155',NULL,NULL,1,0x00818315,63,2,2,3,'100',1,10,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus bMatkRate,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1673,'Half_BF_Staff4','Half BF Staff4',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1674,'Half_BF_Staff2','Half BF Staff2',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1671,'Staff_Of_Evil_Slayer','Devil Won Staff',5,10,NULL,800,'30:155',NULL,NULL,1,0x00818315,63,2,2,3,'100',1,10,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_Demon,10; bonus2 bMagicAddRace,RC_Undead,10; bonus2 bMagicAddRace,RC_Demon,10; .@r = getrefine(); if(.@r>=12) bonus bMatkRate,7; else if(.@r>=9) bonus bMatkRate,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1673,'Half_BF_Staff4','Half BF Staff4',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,2; bonus bDelayRate,-10; bonus2 bSPLossRate,5,12000; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1674,'Half_BF_Staff2','Half BF Staff2',5,20,NULL,0,'70:125',NULL,1,0,0x00818314,63,2,2,3,'80',1,10,'bonus bInt,3; bonus bDex,3; bonus2 bMagicAddRace,RC_DemiHuman,10; bonus2 bMagicAddRace,RC_Player,10; bonus3 bAddEff,Eff_Stun,200,ATF_SKILL; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1675,'Walking_Stick_','Gentleman\'s Staff',5,20,NULL,500,'40:125',NULL,1,3,0x00818314,63,2,2,4,'50',1,10,'bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1676,'Baculum_Daemonicum','Baculum Daemonicum',5,20,NULL,1200,'60:150',NULL,1,2,0x00818315,63,2,2,4,'80',1,10,'bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon,1; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1677,'Ru_Blue_Wand','Blue Wand',5,10,NULL,0,'50',NULL,1,1,0x00000200,56,2,2,3,'100',1,10,'bonus bStr,5; bonus bInt,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1676,'Baculum_Daemonicum','Baculum Daemonicum',5,20,NULL,1200,'60:150',NULL,1,2,0x00818315,63,2,2,4,'80',1,10,'bonus bAtkEle,Ele_Dark; bonus bUnbreakableWeapon; bonus bVariableCastrate,-10; if (BaseLevel > 99){ bonus bMatk,30; } if(getrefine() > 8){ bonus2 bResEff,Eff_Blind,3000; bonus bUseSPrate,-10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1677,'Ru_Blue_Wand','Blue Wand',5,10,NULL,0,'50:200',NULL,1,1,0x00000200,56,2,2,3,'100',1,10,'bonus bDex,5; bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1678,'Ru_Gold_Wand','Ru Gold Wand',5,0,NULL,0,'50',NULL,1,2,0x00000200,56,2,2,3,'120',1,10,'bonus bDex,8; bonus bInt,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1679,'Rafini_Staff_S','Laphine Staff',5,20,NULL,500,'30:180',NULL,1,2,0x00818315,63,2,2,3,'100',1,10,'bonus bFixedCastRate,-getrefine();',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1680,'Crimson_One-Handed_Staff','Crimson One-Handed Staff',5,10,NULL,600,'60:70',NULL,1,2,0x00818315,63,2,2,3,'70',1,10,'.@r = getrefine(); bonus bInt,4; bonus bMatk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1680,'Crimson_One-Handed_Staff','Crimson One-Handed Staff',5,10,NULL,600,'60:70',NULL,1,2,0x00818315,63,2,2,3,'70',1,10,'.@r = getrefine(); bonus bInt,4; bonus bMatk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1681,'Short_Foxtail_Staff','Short Foxtail Staff',5,20,NULL,0,'30',NULL,1,0,0x80000000,7,2,2,1,'1',1,10,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1682,'Shadow_Staff','Shadow Staff',5,0,NULL,600,'70:130',NULL,1,2,0x00000200,56,2,2,4,'90',1,10,'.@r = getrefine(); bonus2 bSkillAtk,"WL_HELLINFERNO",(getskilllv("WL_HELLINFERNO") >= 5 ? 100 : 0) + (.@r*10); bonus2 bIgnoreMdefRaceRate,RC_All,5; autobonus "{ bonus2 bVariableCastrate,\\\"WL_HELLINFERNO\\\",-30; }",.@r*20,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1683,'Enriched_Foxtail_Staff','Enriched Foxtail Staff',5,20,NULL,200,'50:70',NULL,1,1,0x80000000,7,2,2,2,'12',1,10,'bonus bMaxSP,50;',NULL,NULL); @@ -1117,12 +1117,12 @@ REPLACE INTO `item_db_re` VALUES (1734,'Orc_Archer_Bow','Orc Archer Bow',5,20,NU REPLACE INTO `item_db_re` VALUES (1735,'Kkakkung','Kkakkung',5,20,NULL,0,'120',NULL,5,0,0x000A0848,63,2,34,1,'1',0,11,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1736,'Double_Bound','Double Bound',5,20,NULL,900,'70',NULL,5,3,0x00000800,18,2,34,3,'70',1,11,'bonus3 bAutoSpell,"AC_DOUBLE",GetSkillLv("AC_DOUBLE"),10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1737,'Ixion_Wing','Ixion Wings',5,20,NULL,300,'135',NULL,5,1,0x00000800,18,2,34,4,'70',1,11,'autobonus "{ bonus bAspdRate,7; }",10+(getrefine()*2),7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; bonus2 bAddSkillBlow,"AC_CHARGEARROW",3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1738,'BF_Bow1','Valorous Battle CrossBow',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1739,'BF_Bow2','Brave Battle CrossBow',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus bInt,10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1740,'Nepenthes_Bow','Nepenthes Bow',5,20,NULL,1000,'105',NULL,5,2,0x00000800,18,2,34,4,'60',1,11,'bonus4 bAutoSpellOnSkill,"AC_DOUBLE","AC_CHARGEARROW",1,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1741,'Cursed_Lyre','Cursed Lyre',5,20,NULL,1250,'125',NULL,5,1,0x00080800,18,2,34,4,'80',1,11,'bonus bLuk,-2; bonus2 bAddEff,Eff_Curse,400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1742,'N_Composite_Bow','Novice Composite Bow',5,1,NULL,0,'49',NULL,5,3,0x000A0848,63,2,34,1,'4',0,11,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,'100',NULL,5,0,0x001A0848,63,2,34,4,'80',1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; .@r = getrefine(); bonus bCritAtkRate,.@r * 2; bonus bUnbreakableWeapon,1; if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1743,'Krieger_Bow1','Glorious Hunter Bow',5,0,NULL,0,'100',NULL,5,0,0x001A0848,63,2,34,4,'80',1,11,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; .@r = getrefine(); bonus bCritAtkRate,.@r * 2; bonus bUnbreakableWeapon; if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus2 bSkillAtk,"AC_DOUBLE",20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1744,'Bow_Of_Evil','Bow Of Evil',5,20,NULL,0,'170',NULL,5,0,0x000A0848,63,2,34,4,'1',0,11,'bonus2 bSkillAtk,"AC_DOUBLE",25; bonus bDex,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1745,'Falken_Blitz','Falken Blitz',5,20,NULL,1000,'100',NULL,5,2,0x00000800,18,2,34,3,'50',1,11,'bonus2 bSkillAtk,"SN_SHARPSHOOTING",10; bonus2 bSkillAtk,"AC_DOUBLE",10; bonus2 bSkillAtk,"AC_CHARGEARROW",10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1746,'Elven_Bow','Elven Bow',5,20,NULL,1500,'160',NULL,5,1,0x00080800,63,2,34,3,'100',1,11,'bonus bDex,2;',NULL,NULL); @@ -1156,7 +1156,7 @@ REPLACE INTO `item_db_re` VALUES (1770,'Iron_Arrow','Iron Arrow',10,2,NULL,1,'30 REPLACE INTO `item_db_re` VALUES (1771,'Venom_Knife','Venom Knife',10,50,NULL,5,'30',NULL,NULL,NULL,0x00001000,63,2,32768,NULL,'1',NULL,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1772,'Holy_Arrow','Holy Arrow',10,3,NULL,2,'50',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'1',NULL,1,'bonus bAtkEle,Ele_Holy; bonus2 bAddRace,RC_Demon,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1773,'Arrow_Of_Elf','Elven Arrow',10,5,NULL,1,'45',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'100',NULL,1,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1774,'Hunting_Arrow','Hunting Arrow',10,5,NULL,1,'35',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'1',NULL,1,'bonus bLongAtkRate,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1774,'Hunting_Arrow','Hunting Arrow',10,5,NULL,1,'35',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'1',NULL,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1775,'Siege_Arrow_S','Siege Arrow S',10,10,NULL,1,'45',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'130',NULL,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1776,'Siege_Arrow_A','Siege Arrow A',10,10,NULL,1,'30',NULL,NULL,NULL,0x000A1848,63,2,32768,NULL,'95',NULL,1,NULL,NULL,NULL); #=================================================================== @@ -1185,11 +1185,11 @@ REPLACE INTO `item_db_re` VALUES (1819,'Icicle_Fist','Icicle Fist',5,20,NULL,650 REPLACE INTO `item_db_re` VALUES (1820,'Electric_Fist','Electric Fist',5,20,NULL,650,'80',NULL,1,3,0x00008100,63,2,2,3,'75',1,12,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",5,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1821,'Seismic_Fist','Seismic Fist',5,20,NULL,650,'80',NULL,1,3,0x00008100,63,2,2,3,'75',1,12,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",5,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1822,'Combo_Battle_Glove','Combo Battle Glove',5,20,NULL,500,'30',NULL,1,4,0x00008100,63,2,2,3,'60',1,12,'bonus2 bSkillAtk,"MO_TRIPLEATTACK",15; bonus2 bSkillAtk,"MO_CHAINCOMBO",15; bonus2 bSkillAtk,"MO_COMBOFINISH",20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bVariableCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1823,'BF_Knuckle1','Valorous Battle Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1824,'BF_Knuckle2','Brave Battle Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bInt,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-25; autobonus "{ bonus2 bVariableCastrate,\\\"MO_EXTREMITYFIST\\\",-100; }",50,6000,BF_WEAPON,"{ specialeffect2 EF_SUFFRAGIUM; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1825,'Horn_Of_Hilthrion','Horn of Hillslion',5,20,NULL,600,'95',NULL,1,3,0x00008000,18,2,2,3,'60',1,12,'bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,100; bonus4 bAutoSpellOnSkill,"CH_PALMSTRIKE","MO_INVESTIGATE",1,100; bonus3 bAutoSpell,"MO_CALLSPIRITS",5,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,4,'80',1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(.@r*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(.@r*10-50); }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,4,'80',1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1826,'Krieger_Knuckle1','Glorious Claw',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,4,'80',1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus3 bAutoSpell,"MO_INVESTIGATE",5,(.@r*10-50); bonus3 bAutoSpell,"AL_DECAGI",1,(.@r*10-50); }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1827,'Krieger_Knuckle2','Glorious Fist',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,4,'80',1,12,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1828,'Monk_Knuckle','Monk Knuckle',5,20,NULL,0,'150',NULL,1,0,0x00008100,63,2,2,4,'0',0,12,'bonus bInt,2; bonus2 bSkillAtk,"MO_FINGEROFFENSIVE",25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1829,'Fist_C','Fist',5,0,NULL,0,'150',NULL,1,0,0x00008100,63,2,2,3,'1',0,12,'bonus2 bAddSize,Size_All,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1830,'Sura_Rampage','Sura Rampage',5,20,NULL,500,'142',NULL,1,1,0x00008100,63,2,2,3,'102',1,12,'bonus2 bSkillAtk,"SR_EARTHSHAKER",20; bonus2 bSkillAtk,"SR_SKYNETBLOW",20; bonus bUseSPrate,5; .@r = getrefine(); if(.@r>6) { bonus bUseSPrate,-1*(.@r-6); }',NULL,NULL); @@ -1197,10 +1197,11 @@ REPLACE INTO `item_db_re` VALUES (1831,'P_Knuckle1','Eden Knuckle I',5,0,NULL,0, REPLACE INTO `item_db_re` VALUES (1832,'Velum_Claw','Vellum Claw',5,20,NULL,650,'160',NULL,1,0,0x00008100,63,2,2,4,'95',1,12,'bonus2 bAddRace,RC_Player,100; .@r = getrefine(); if(.@r>7) { bonus2 bAddRace,RC_Player,20; } if(.@r>9) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus2 bFixedCastrate,"MO_EXTREMITYFIST",-100; bonus4 bAutoSpellOnSkill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,10000; bonus2 bHPLossRate,500,3000; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1833,'Claw_Of_Flash','Claw of Flash',5,60000,NULL,400,'140',NULL,1,2,0x00008100,63,2,2,4,'105',1,12,'bonus bAspd,1; bonus bAspdRate,getrefine(); bonus2 bAddSize,Size_Medium,getrefine();',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1834,'TE_Woe_Fist','TE Woe Fist',5,0,NULL,0,'150',NULL,1,0,0x00008100,63,2,2,3,'40',1,12,'bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1835,'Spartacus','Spartacus',5,0,NULL,600,'100',NULL,1,2,0x00008100,63,2,2,4,'50',1,12,'bonus bUnbreakableWeapon; .@r = getrefine(); bonus2 bAddClass,Class_All,.@r; if(.@r>9) { bonus bNoSizeFix; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1836,'Thanos_Knuckle','Thanatos Knuckle',5,10,NULL,600,'160:100',NULL,1,1,0x00008000,56,2,2,4,'120',1,12,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (1837,'Iron_nail','Iron Nail',5,10,NULL,1500,'100',NULL,NULL,1,0x00008100,63,2,2,3,'50',1,12,'bonus bAspdRate,-5; bonus bAspdRate,((getrefine()+1)/2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1838,'Half_BF_Knuckle1','Half BF Knuckle1',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1839,'Crimson_Knuckles','Crimson Knuckles',5,20,NULL,1000,'100',NULL,1,2,0x00008100,63,2,2,3,'70',1,12,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1838,'Half_BF_Knuckle1','Half BF Knuckle1',5,20,NULL,0,'30',NULL,1,0,0x00008100,63,2,2,3,'80',1,12,'bonus bStr,2; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus4 bAutoSpell,"CH_SOULCOLLECT",1,5,0; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1839,'Crimson_Knuckles','Crimson Knuckles',5,20,NULL,1000,'100',NULL,1,2,0x00008100,63,2,2,3,'70',1,12,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1840,'Requiem_Knuckle','Requiem Knuckle',5,20,NULL,500,'150:100',NULL,1,0,0x00008100,63,2,2,4,'100',1,12,'.@r = getrefine(); .@b = 40; if(.@r>=5){ .@b += (.@r-5)*15+20; } bonus2 bAddRace2,RC2_BioLab,.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1841,'Claw_Of_Flash_','Claw of Flash',5,60000,NULL,400,'140',NULL,1,3,0x00008100,63,2,2,4,'105',1,12,'bonus bAspd,1; bonus bAspdRate,getrefine(); bonus2 bAddSize,Size_Medium,getrefine();',NULL,NULL); #=================================================================== @@ -1219,7 +1220,7 @@ REPLACE INTO `item_db_re` VALUES (1909,'Harp','Harp',5,62000,NULL,900,'114',NULL REPLACE INTO `item_db_re` VALUES (1910,'Harp_','Harp',5,62000,NULL,900,'114',NULL,1,2,0x00080000,63,1,2,3,'27',1,13,'bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1911,'Guh_Moon_Goh','Gumoongoh',5,54000,NULL,1300,'126',NULL,1,1,0x00080000,63,1,2,3,'27',1,13,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (1912,'Guh_Moon_Goh_','Gumoongoh',5,54000,NULL,1300,'126',NULL,1,2,0x00080000,63,1,2,3,'27',1,13,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1913,'Electronic_Guitar','Electric Guitar',5,20,NULL,1800,'110',NULL,1,0,0x00080000,63,1,2,4,'70',1,13,'skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1913,'Electronic_Guitar','Electric Guitar',5,20,NULL,1800,'110',NULL,1,0,0x00080000,63,1,2,4,'70',1,13,'skill "WZ_JUPITEL",1; bonus3 bAutoSpell,"WZ_JUPITEL",1,100; bonus bAtkEle,Ele_Wind; bonus bInt,2; bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1914,'Guitar_Of_Passion','Burning Passion Guitar',5,20,NULL,900,'110',NULL,1,0,0x00080000,63,1,2,3,'27',1,13,'bonus bAtkEle,Ele_Fire;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1915,'Guitar_Of_Blue_Solo','Loner\'s Guitar',5,20,NULL,900,'110',NULL,1,0,0x00080000,63,1,2,3,'27',1,13,'bonus bAtkEle,Ele_Water;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1916,'Guitar_Of_Vast_Land','Green Acre Guitar',5,20,NULL,900,'110',NULL,1,0,0x00080000,63,1,2,3,'27',1,13,'bonus bAtkEle,Ele_Earth;',NULL,NULL); @@ -1229,11 +1230,11 @@ REPLACE INTO `item_db_re` VALUES (1919,'Base_Guitar','Bass Guitar',5,20,NULL,150 REPLACE INTO `item_db_re` VALUES (1920,'Berserk_Guitar','Berserk Guitar',5,20,NULL,1800,'10',NULL,1,0,0x00080000,18,1,2,4,'70',1,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1921,'Guh_Moon_Gom','Gun Moon Gom',5,20,NULL,0,'120',NULL,1,0,0x00080000,63,1,2,1,'0',0,13,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1922,'Oriental_Lute_','Oriental Lute',5,20,NULL,1200,'150',NULL,1,2,0x00080000,63,1,2,4,'65',1,13,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"BA_MUSICALSTRIKE",10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,3,'80',1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,3,'80',1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1923,'BF_Instrument1','Valorous Battlefield Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,3,'80',1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1924,'BF_Instrument2','Brave Battlefield Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,3,'80',1,13,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1925,'Cello','Cello',5,20,NULL,700,'110',NULL,1,3,0x00080000,18,1,2,3,'70',1,13,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"BA_MUSICALSTRIKE",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1926,'Harp_Of_Nepenthes','Harp of Nepenthes',5,20,NULL,1000,'120',NULL,1,2,0x00080000,18,1,2,4,'60',1,13,'bonus bInt,2; bonus3 bAddEffOnSkill,"BA_MUSICALSTRIKE",Eff_Stun,(getrefine()>=9?2000:1000);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,4,'80',1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1927,'Krieger_Instrument1','Glorious Guitar',5,20,NULL,0,'50',NULL,1,0,0x00080000,63,1,2,4,'80',1,13,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1928,'Berserk_Guitar_I','Spirited Guitar',5,0,NULL,0,'40',NULL,1,0,0x00080000,18,1,2,4,'0',0,13,'bonus bAspdRate,100; bonus bHPrecovRate,-100; bonus2 bHPLossRate,50,5000; bonus bDex,-readparam(bDex);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1929,'Guitar_C','Guitar',5,0,NULL,0,'177',NULL,1,0,0x00080000,63,1,2,3,'1',0,13,'bonus2 bAddSize,Size_All,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1930,'Green_Whistle','Green Whistle',5,20,NULL,800,'170:50',NULL,1,1,0x00080000,63,1,2,3,'102',1,13,'.@r = getrefine(); if(.@r>5) { bonus2 bSkillUseSP,"MI_RUSH_WINDMILL",(.@r-5)*4; bonus2 bSkillUseSP,"WM_LULLABY_DEEPSLEEP",(.@r-5)*4; } bonus2 bSkillVariableCast,"MI_RUSH_WINDMILL",-2000; bonus2 bSkillVariableCast,"WM_LULLABY_DEEPSLEEP",-2000;',NULL,NULL); @@ -1248,7 +1249,7 @@ REPLACE INTO `item_db_re` VALUES (1938,'Infinity_Violin','Infinity Violin',5,10, REPLACE INTO `item_db_re` VALUES (1939,'Crimson_Violin','Crimson Violin',5,20,NULL,800,'80',NULL,2,2,0x00080000,63,1,2,3,'70',1,13,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1940,'Trumpet_Shell','Trumpet Shell',5,0,NULL,600,'125',NULL,1,1,0x00080000,56,1,2,4,'130',1,13,'.@r = getrefine(); bonus bDex,.@r; bonus bInt,.@r; .@per = ((.@r > 9) ? 40 : ((.@r > 7) ? 20 : ((.@r > 5) ? 10 : 0))); bonus2 bSkillAtk,"WM_REVERBERATION",.@per; bonus2 bVariableCastrate,"WM_REVERBERATION",-.@per;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1941,'Unity_Violin','Unity Violin',5,20,NULL,400,'76',NULL,2,1,0x00080000,63,1,2,3,'1',1,13,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1942,'Requiem_Violin','Requiem Violin',5,20,NULL,500,'160:120',NULL,1,NULL,0x00080000,63,1,2,4,'100',1,13,'.@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon,1; if(.@r>=5){ .@b += (.@r-5)*15+20; } if(.@r>=7) bonus2 bSkillAtk,"CG_ARROWVULCAN",200; bonus2 bAddRace2,RC2_BioLab,.@b;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1942,'Requiem_Violin','Requiem Violin',5,20,NULL,500,'160:120',NULL,1,NULL,0x00080000,63,1,2,4,'100',1,13,'.@r = getrefine(); .@b = 40; bonus bUnbreakableWeapon; if(.@r>=5){ .@b += (.@r-5)*15+20; } if(.@r>=7) bonus2 bSkillAtk,"CG_ARROWVULCAN",200; bonus2 bAddRace2,RC2_BioLab,.@b;',NULL,NULL); #=================================================================== # Whips #=================================================================== @@ -1279,11 +1280,11 @@ REPLACE INTO `item_db_re` VALUES (1973,'Sea_Witch_Foot','Sea Witch\'s Foot',5,20 REPLACE INTO `item_db_re` VALUES (1974,'Carrot_Whip','Carrot Whip',5,20,NULL,1300,'185',NULL,2,0,0x00080000,18,0,2,4,'70',1,14,'.@r = getrefine(); if(.@r>0) bonus3 bAutoSpell,"AL_INCAGI",min(.@r,10),10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1975,'Queen_Is_Whip','Queen Is Whip',5,20,NULL,0,'120',NULL,2,0,0x00080000,63,0,2,1,'0',0,14,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1976,'Queen\'s_Whip_','Queen\'s Whip',5,20,NULL,1100,'150',NULL,2,2,0x00080000,63,0,2,4,'65',1,14,'bonus2 bSkillAtk,"CG_ARROWVULCAN",10; bonus2 bSkillAtk,"DC_THROWARROW",10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,3,'80',1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,3,'80',1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1977,'BF_Whip1','Valorous Battle Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,3,'80',1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1978,'BF_Whip2','Brave Battle Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,3,'80',1,14,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bSkillAtk,"CG_ARROWVULCAN",20; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1979,'Stem_Of_Nepenthes','Stem of Nepenthes',5,20,NULL,1000,'120',NULL,2,2,0x00080000,18,0,2,4,'60',1,14,'bonus bInt,2; bonus3 bAddEffOnSkill,"DC_THROWARROW",Eff_Freeze,(getrefine()>=9?2000:1000);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1980,'Whip_Of_Balance','Whip of Balance',5,20,NULL,700,'110',NULL,2,3,0x00080000,18,0,2,3,'70',1,14,'bonus bAgi,2; bonus bDex,3; bonus2 bAddSkillBlow,"DC_THROWARROW",2; bonus2 bAddSkillBlow,"CG_ARROWVULCAN",3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,4,'80',1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (1981,'Krieger_Whip1','Glorious Lariat',5,20,NULL,0,'50',NULL,2,0,0x00080000,63,0,2,4,'80',1,14,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"CG_ARROWVULCAN","CG_TAROTCARD",5,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1982,'Phenomena_Whip','Phenomena Whip',5,20,NULL,0,'160',NULL,2,0,0x00080000,63,0,2,4,'0',0,14,'bonus bDex,2; bonus2 bSkillAtk,"DC_THROWARROW",25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1983,'Rante_C','Rante Whip',5,0,NULL,0,'170',NULL,2,0,0x00080000,63,0,2,3,'1',0,14,'bonus2 bAddSize,Size_All,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (1984,'Stem_Whip','Stem Whip',5,20,NULL,800,'170:50',NULL,1,1,0x00080000,63,0,2,3,'102',1,14,'.@r = getrefine(); if(.@r>5) { bonus2 bSkillUseSP,"WA_SWING_DANCE",(.@r-5)*4; bonus2 bSkillUseSP,"WM_LULLABY_DEEPSLEEP",(.@r-5)*4; } bonus2 bSkillVariableCast,"WA_SWING_DANCE",-2000; bonus2 bSkillVariableCast,"WM_LULLABY_DEEPSLEEP",-2000;',NULL,NULL); @@ -1304,7 +1305,7 @@ REPLACE INTO `item_db_re` VALUES (1997,'Unity_Whip','Unity Whip',5,20,NULL,76,'4 #=================================================================== REPLACE INTO `item_db_re` VALUES (2000,'Destruction_Rod','Staff of Destruction',5,20,NULL,2500,'130:280',NULL,1,1,0x00000200,18,2,34,4,'80',1,23,'.@r = getrefine; bonus bMatkRate,.@r/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(.@r*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20); bonus2 bFixedCastrate,"HW_MAGICPOWER",-50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2001,'Divine_Cross','Divine Cross',5,20,NULL,1500,'120:210',NULL,1,0,0x00008100,63,2,34,4,'70',1,23,'bonus bAtkEle,Ele_Holy; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,'70:210',NULL,1,0,0x00018314,63,2,34,4,'80',1,23,'.@r = getrefine(); bonus bMatkRate,.@r; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon,1; if(.@r>5) { bonus2 bMagicAddRace,RC_DemiHuman,(min(14,.@r)-5)*2; bonus2 bMagicAddRace,RC_Player,(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(min(14,.@r)-5)*2; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2002,'Krieger_Twohand_Staff1','Glorious Destruction Staff',5,20,NULL,0,'70:210',NULL,1,0,0x00018314,63,2,34,4,'80',1,23,'.@r = getrefine(); bonus bMatkRate,.@r; bonus2 bMagicAddRace,RC_DemiHuman,15; bonus2 bMagicAddRace,RC_Player,15; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; bonus bUnbreakableWeapon; if(.@r>5) { bonus2 bMagicAddRace,RC_DemiHuman,(min(14,.@r)-5)*2; bonus2 bMagicAddRace,RC_Player,(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_DemiHuman,5+(min(14,.@r)-5)*2; bonus2 bIgnoreMdefRaceRate,RC_Player,5+(min(14,.@r)-5)*2; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"WZ_STORMGUST","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_METEOR","MG_SAFETYWALL",10,200,1; bonus5 bAutoSpellOnSkill,"WZ_VERMILION","MG_SAFETYWALL",10,200,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2003,'Destruction_Rod_M','Staff of Destruction',5,20,NULL,2500,'130:280',NULL,1,1,0x00000200,18,2,34,4,'80',1,23,'.@r = getrefine(); bonus bMatkRate,.@r/2; bonus bInt,3; bonus bAgi,10; bonus bUseSPrate,(.@r*2); bonus3 bAutoSpellWhenHit,"WZ_JUPITEL",5,(.@r*20); bonus2 bVariableCastrate,"HW_MAGICPOWER",-50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2004,'Kronos','Kronos',5,20,NULL,1000,'30:240',NULL,1,0,0x00010204,18,2,34,4,'50',1,23,'.@r = getrefine(); bonus bInt,3+(.@r/2); bonus bMaxHP,300+(50*.@r/2); autobonus "{ bonus bMatkRate,12; bonus buseSPRate,20; }",1,5000,BF_MAGIC,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2005,'Dea_Staff','Dea Staff',5,20,NULL,1000,'30:220',NULL,1,1,0x00008110,18,2,34,3,'50',1,23,'bonus bAtkEle,Ele_Holy; bonus bMatkRate,getrefine()/2; bonus bInt,6; bonus bVit,2; autobonus3 "{ }",20,1000,"AL_HEAL","{ specialeffect2 EF_MAGICALATTHIT; heal 0,200; }";',NULL,NULL); @@ -1318,18 +1319,18 @@ REPLACE INTO `item_db_re` VALUES (2012,'Aqua_Staff2','Empowered Aqua Staff',5,20 REPLACE INTO `item_db_re` VALUES (2013,'Crimson_Staff2','Empowered Crimson Staff',5,20,NULL,900,'30:270',NULL,1,1,0x00000200,63,2,34,4,'130',1,23,'bonus bAtkEle,Ele_Fire; bonus bInt,5; bonus2 bSkillAtk,"MG_FIREBOLT",30; bonus2 bSkillAtk,"MG_FIREBALL",30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2014,'Forest_Staff2','Empowered Forest Staff',5,20,NULL,900,'30:270',NULL,1,1,0x00000200,63,2,34,4,'130',1,23,'bonus bAtkEle,Ele_Earth; bonus bInt,5; bonus2 bSkillAtk,"WZ_EARTHSPIKE",30; bonus2 bSkillAtk,"WZ_HEAVENDRIVE",30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2015,'Upg_Staff','Upg Staff',5,20,NULL,1000,'50:70',NULL,1,1,0x00818314,63,2,34,3,'1',1,23,'.@r = getrefine(); bonus bMatk,(.@r*10); bonus bHealPower,.@r; if(BaseJob==Job_Wizard) bonus bMatk,30; else if(BaseJob==Job_Sage) bonus bMatk,20; if(BaseLevel>70) bonus bMatk,(((BaseLevel-70)/10)*10);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2016,'Velum_Arc_Wand','Vellum Arc Wand',5,20,NULL,800,'110:220',NULL,1,0,0x00818314,63,2,34,4,'95',1,23,'bonus bUnbreakableWeapon,1; bonus2 bMagicAddRace,RC_Player,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; .@r = getrefine(); if(.@r>5) { bonus2 bMagicAddRace,RC_Player,15; } if(.@r>8) { bonus bVariableCastrate,-50; bonus bFixedCast,-200; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2017,'Divine_Cross_','Divine Cross',5,20,NULL,1500,'120:210',NULL,1,1,0x00008100,63,2,34,4,'70',1,23,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy; bonus bDex,4;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2016,'Velum_Arc_Wand','Vellum Arc Wand',5,20,NULL,800,'110:220',NULL,1,0,0x00818314,63,2,34,4,'95',1,23,'bonus bUnbreakableWeapon; bonus2 bMagicAddRace,RC_Player,25; bonus2 bIgnoreMdefRaceRate,RC_Player,25; .@r = getrefine(); if(.@r>5) { bonus2 bMagicAddRace,RC_Player,15; } if(.@r>8) { bonus bVariableCastrate,-50; bonus bFixedCast,-200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2017,'Divine_Cross_','Divine Cross',5,20,NULL,1500,'120:210',NULL,1,1,0x00008100,63,2,34,4,'70',1,23,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy; bonus bDex,4; bonus2 bSubRace,RC_Demon,15; bonus2 bSubRace,RC_Undead,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2018,'Metal_Staff','Metal Staff',5,20,NULL,0,'50:70',NULL,1,1,0x00818315,63,2,34,3,'1',1,23,'if(BaseJob==Job_Wizard) bonus bMatk,15; else if(BaseJob==Job_Sage) bonus bMatk,10; bonus bMatk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bMatk,((.@i-2)*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2019,'TE_Woe_Two_Hand_Staff','TE Woe Two Hand Staff',5,0,NULL,0,'50:130',NULL,1,0,0x00818315,63,2,34,3,'40',1,23,'bonus2 bMagicAddRace,RC_Player,20; bonus3 bAddEff,Eff_Stun,1000,ATF_MAGIC; bonus bHPRecovRate,5; bonus bSPRecovRate,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2020,'Jormungand','Jormungand',5,10,NULL,3000,'200:280',NULL,NULL,0,0x810200,63,2,34,4,'1',0,23,'bonus bInt,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2021,'Ganbantein','Ganbantein',5,0,NULL,2000,'100:320',NULL,1,0,0x00000200,56,2,2,4,'100',1,10,'bonus bInt,25; bonus bDex,25; bonus3 bAddEff,Eff_Poison,1000,ATF_MAGIC; bonus3 bAutoSpell,"AB_SILENTIUM",1,100; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2020,'Jormungand','Jormungand',5,10,NULL,3000,'200:280',NULL,NULL,0,0x810200,63,2,34,4,'1',0,23,'bonus bInt,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2021,'Ganbantein','Ganbantein',5,0,NULL,2000,'100:320',NULL,1,0,0x00000200,56,2,2,4,'100',1,10,'bonus bInt,25; bonus bDex,25; bonus3 bAddEff,Eff_Poison,1000,ATF_MAGIC; bonus3 bAutoSpell,"AB_SILENTIUM",1,100; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2022,'Staff_Of_Geffen','Staff of Geffen',5,20,NULL,1000,'100:300',NULL,1,1,0x00000200,18,2,34,1,'150',1,23,'bonus bInt,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2023,'Thanos_Rod','Thanatos Two-Handed Staff',5,10,NULL,1400,'120:250',NULL,1,1,0x00018314,56,2,34,4,'120',1,23,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus bHealPower,18; bonus bMagicHPGainValue,500; bonus bMagicSPGainValue,50; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (2024,'Infinity_Two-handed_Stick','Infinity Two-handed Stick',5,10,NULL,500,'30:170',NULL,NULL,1,0x810200,56,2,34,4,'100',1,23,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2025,'Crimson_Two-Handed_Staff','Crimson Two-Handed Staff',5,20,NULL,1000,'100',NULL,1,2,0x800200,63,2,34,3,'70',1,23,'.@r = getrefine(); bonus bInt,5; bonus bMatk,150+((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2026,'Staff_of_Vicious_Mind','Staff of Vicious Mind',5,20,NULL,1000,'100:200',NULL,1,1,0x00810204,63,2,34,4,'160',1,23,'bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,6; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2027,'Sunflower_Kid','Sunflower Kid',5,10,NULL,1500,'150:320',NULL,NULL,2,0x00000200,56,2,34,4,'170',1,23,'bonus bInt,5; .@r = getrefine(); bonus bMatkRate,(.@r/2); bonus bDelayrate,(.@r*-1); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2026,'Staff_of_Vicious_Mind','Staff of Vicious Mind',5,20,NULL,1000,'100:200',NULL,1,1,0x00810204,63,2,34,4,'160',1,23,'bonus bMatk,pow(min(getrefine(),15),2); bonus bInt,6; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2027,'Sunflower_Kid','Sunflower Kid',5,10,NULL,1500,'150:320',NULL,NULL,2,0x00000200,56,2,34,4,'170',1,23,'bonus bInt,5; .@r = getrefine(); bonus bMatkRate,(.@r/2); bonus bDelayrate,(.@r*-1); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2030,'Unity_Two-Handed_Staff','Unity Two-Handed Staff',5,20,NULL,500,'95:135',NULL,1,1,0x800200,63,2,34,3,'1',1,23,'bonus bMatk,pow(getrefine(),2)*125/100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2032,'Requiem_Wizardry_Staff','Requiem Wizardry Staff',5,20,NULL,500,'100:230',NULL,1,NULL,0xFFFFFFFF,63,2,2,4,'100',1,10,'.@r = getrefine(); .@b = 40; .@c = 5; if(.@r>=5){ .@b += (.@r-5)*15+20; .@c += .@r-5; } bonus2 bMagicAddRace2,RC2_BioLab,.@b; bonus2 bSubRace2,RC2_BioLab,.@c; bonus2 bIgnoreMdefRace2Rate,RC2_BioLab,(.@r-5)*10;',NULL,NULL); #=================================================================== @@ -1345,7 +1346,7 @@ REPLACE INTO `item_db_re` VALUES (2107,'Mirror_Shield','Mirror Shield',4,60000,N REPLACE INTO `item_db_re` VALUES (2108,'Mirror_Shield_','Mirror Shield',4,60000,NULL,1000,NULL,45,NULL,1,0x00404082,63,2,32,NULL,'0',1,4,'bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2109,'Memorize_Book','Memory Book',4,20,NULL,1000,NULL,25,NULL,0,0x00810204,63,2,32,NULL,'0',1,5,'bonus bInt,1; bonus bMdef,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2110,'Holy_Guard','Holy Guard',4,85000,NULL,1400,NULL,110,NULL,0,0x00004000,63,2,32,NULL,'68',0,4,'bonus bVit,2; bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2111,'Herald_Of_GOD','Sacred Mission',4,128000,NULL,1600,NULL,120,NULL,0,0x00004000,63,2,32,NULL,'83',1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2111,'Herald_Of_GOD','Sacred Mission',4,128000,NULL,1600,NULL,120,NULL,0,0x00004000,63,2,32,NULL,'83',1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2112,'Novice_Guard','Novice Guard',4,1,NULL,1,NULL,20,NULL,0,0x00000001,63,2,32,NULL,'0',0,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2113,'Novice_Shield','Novice Shield',4,5000,NULL,1000,NULL,20,NULL,1,0x00000001,63,2,32,NULL,'40',1,3,'bonus2 bSubEle,Ele_All,20; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Dark,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2114,'Stone_Buckler','Stone Buckler',4,30000,NULL,1500,NULL,45,NULL,1,0xFFFFFFFE,63,2,32,NULL,'65',1,2,'bonus2 bSubSize,Size_Large,5;',NULL,NULL); @@ -1359,16 +1360,16 @@ REPLACE INTO `item_db_re` VALUES (2121,'Memorize_Book_','Memory Book',4,20,NULL, REPLACE INTO `item_db_re` VALUES (2122,'Platinum_Shield','Platinum Shield',4,20,NULL,1200,NULL,95,NULL,0,0xFFFFFFFE,18,2,32,NULL,'68',1,4,'bonus bMdef,5; bonus2 bSubSize,Size_Medium,15; bonus2 bSubSize,Size_Large,15; bonus2 bSubRace,RC_Undead,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2123,'Orleans_Server','Orleans\'s Server',4,20,NULL,1000,NULL,75,NULL,1,0xFFFFFFFE,18,2,32,NULL,'55',1,4,'bonus bMdef,2; bonus bMagicDamageReturn,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2124,'Thorny_Buckler','Thorny Buckler',4,20,NULL,1000,NULL,85,NULL,1,0xFFFFFFFE,18,2,32,NULL,'55',1,2,'bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2125,'Strong_Shield','Strong Shield',4,20,NULL,2500,NULL,90,NULL,1,0xFFFFFFFE,18,2,32,NULL,'75',1,4,'bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2125,'Strong_Shield','Strong Shield',4,20,NULL,2500,NULL,90,NULL,1,0xFFFFFFFE,18,2,32,NULL,'75',1,4,'bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2126,'Guyak_Shield','Guyak Shield',4,20,NULL,700,NULL,3,NULL,0,0xFFFFFFFE,63,2,32,NULL,'1',1,2,'bonus bMdef,2; bonus bMagicDamageReturn,2; autobonus2 "{ bonus bShortWeaponDamageReturn,5; }",20,1000,BF_WEAPON,"{ specialeffect2 EF_REFLECTSHIELD; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2127,'Secular_Mission','Secular Mission',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,32,NULL,'0',0,4,'bonus2 bSubClass,Class_All,25;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2128,'Herald_Of_GOD_','Sacred Mission',4,128000,NULL,1600,NULL,120,NULL,1,0x00004000,63,2,32,NULL,'83',1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2128,'Herald_Of_GOD_','Sacred Mission',4,128000,NULL,1600,NULL,120,NULL,1,0x00004000,63,2,32,NULL,'83',1,4,'bonus bVit,3; bonus bInt,2; bonus bMdef,3; bonus bUnbreakableShield;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2129,'Exorcism_Bible','Exorcism Bible',4,20,NULL,600,NULL,80,NULL,0,0x00008100,63,2,32,NULL,'50',1,5,'bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bInt,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2130,'Cross_Shield','Cross Shield',4,20,NULL,2000,NULL,130,NULL,1,0x00004000,63,2,32,NULL,'80',1,4,'bonus bStr,1; bonus2 bSkillAtk,"PA_SHIELDCHAIN",30; bonus2 bSkillAtk,"CR_SHIELDBOOMERANG",30; bonus bUseSPrate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2131,'Magic_Study_Vol1','Magic Bible Vol1',4,20,NULL,1000,NULL,18,NULL,1,0x00810204,18,2,32,NULL,'70',1,5,'bonus bMdef,3; bonus bInt,2; bonus2 bAddEffWhenHit,Eff_Stun,1000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2132,'Shelter_Resistance','Shell Of Resistance',4,20,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,18,2,32,NULL,'0',0,2,'bonus2 bSubEle,Ele_Neutral,20; bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20; bonus bShortWeaponDamageReturn,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2133,'Tournament_Shield','Tournament Shield',4,20,NULL,1000,NULL,105,NULL,1,0x00004082,18,2,32,NULL,'50',1,4,'bonus2 bAddClass,Class_All,1; if( Class == Job_Lord_Knight ) bonus bAspdRate,-5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2134,'Shield_Of_Naga','Shield of Naga',4,20,NULL,500,NULL,35,NULL,1,0x00CFFF80,18,2,32,NULL,'70',1,2,'bonus bMdef,3; autobonus2 "{ bonus bShortWeaponDamageReturn,(getrefine()*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2134,'Shield_Of_Naga','Shield of Naga',4,20,NULL,500,NULL,35,NULL,1,0x00CFFF80,18,2,32,NULL,'70',1,2,'.@r = getrefine(); bonus bMdef,3; if(.@r<11) { autobonus2 "{ bonus bShortWeaponDamageReturn,(.@r*3); }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; } else { autobonus2 "{ bonus bShortWeaponDamageReturn,(.@r*3); }",10,5000+(.@r/2*1000),BF_WEAPON,"{ specialeffect2 EF_GUARD; }"; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2135,'Shadow_Guard','Shadow Guard',4,20,NULL,800,NULL,52,NULL,1,0x00020000,18,2,32,NULL,'70',1,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2136,'Cracked_Buckler','Cracked Buckler',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,63,2,32,NULL,'0',0,2,'bonus bAgi,2; bonus2 bSubEle,Ele_Neutral,10; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,10; bonus bMdef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2137,'Valkyrja\'s_Shield_C','Neo Valkyrja\'s Shield',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,18,2,32,NULL,'95',0,4,'bonus2 bSubEle,Ele_Water,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Undead,20; bonus bMdef,5;',NULL,NULL); @@ -1415,8 +1416,8 @@ REPLACE INTO `item_db_re` VALUES (2177,'Shield_Of_Death','Shield Of Death',4,20, REPLACE INTO `item_db_re` VALUES (2178,'TE_Woe_Buckler','TE Woe Buckler',4,0,NULL,0,NULL,15,NULL,0,0xFFFFFFFF,63,2,32,NULL,'40',1,2,'bonus bMdef,15; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Player,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2179,'TE_Woe_Shield','TE Woe Shield',4,0,NULL,0,NULL,25,NULL,0,0x000444A2,63,2,32,NULL,'40',1,3,'bonus bMdef,5; bonus bMaxHP,200; bonus2 bSubRace,RC_Player,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2180,'TE_Woe_Magic_Guard','TE Woe Magic Guard',4,0,NULL,0,NULL,5,NULL,0,0x00818315,63,2,32,NULL,'40',1,1,'bonus bMdef,25; bonus bMaxSP,200; bonus2 bSubRace,RC_Player,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2181,'Hervor','Hervor',4,10,NULL,1500,NULL,100,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',NULL,2,'bonus bMdef,5; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2182,'Hervor_Alvitr','Hervor Alvitr',4,0,NULL,3000,NULL,150,NULL,0,0x000FDF80,56,2,32,NULL,'100',0,2,'bonus bMdef,10; bonus bVit,20; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield,1; 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; }",10,60000,BF_SHORT;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2181,'Hervor','Hervor',4,10,NULL,1500,NULL,100,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',NULL,2,'bonus bMdef,5; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2182,'Hervor_Alvitr','Hervor Alvitr',4,0,NULL,3000,NULL,150,NULL,0,0x000FDF80,56,2,32,NULL,'100',0,2,'bonus bMdef,10; bonus bVit,20; bonus2 bSubRace,RC_All,30; bonus bUnbreakableShield; 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; }",10,60000,BF_SHORT;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2183,'Impr_Angel\'s_Safeguard','Advanced Angelic Guard',4,10000,NULL,400,NULL,30,NULL,1,0x00000001,63,2,32,NULL,'99',1,1,'bonus2 bSubRace,RC_Demon,5; bonus2 bSubEle,Ele_All,5; bonus2 bSubEle,Ele_Neutral,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2185,'Magic_Reflector','Magic Reflect',4,10,NULL,1000,NULL,50,NULL,1,0xFFFFFFFF,63,2,32,NULL,'99',1,3,'bonus bMdef,10; bonus bMagicDamageReturn,3+((getrefine()>=9) ? 3 : 0);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2186,'Encyclopedia_Revision','Great Encyclopedia Revision',4,10,NULL,200,'0:5',50,NULL,1,0x00810100,63,2,32,NULL,'99',1,4,'bonus bInt,3; bonus bDex,2; .@r = getrefine(); bonus bCritical,3+((.@r >= 7) ? 2 : 0); if(.@r >= 9) bonus bMatk,5;',NULL,NULL); @@ -1428,7 +1429,7 @@ REPLACE INTO `item_db_re` VALUES (2195,'Lian_Shield','Lian Shield',4,0,NULL,1300 REPLACE INTO `item_db_re` VALUES (2196,'White_Gold_Shield','White Gold Shield',4,0,NULL,1800,NULL,140,NULL,1,0xFFFFFFFF,63,2,32,NULL,NULL,1,4,'autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2198,'Lapine_Shield','Lapine Shield',4,0,NULL,1000,NULL,25,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,3,'bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; }',NULL,NULL); # GM Shield -REPLACE INTO `item_db_re` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,10000,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback,0; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision,1;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;'); +REPLACE INTO `item_db_re` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,10000,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;'); #=================================================================== # Headgears #=================================================================== @@ -1477,7 +1478,7 @@ REPLACE INTO `item_db_re` VALUES (2242,'Luxury_Sunglasses','Purple Glasses',4,24 REPLACE INTO `item_db_re` VALUES (2243,'Spinning_Eyes','Geek Glasses',4,20000,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,27,'bonus2 bResEff,Eff_Blind,1500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2244,'Big_Sis\'_Ribbon','Big Ribbon',4,15000,NULL,200,NULL,3,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,28,'bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2245,'Sweet_Gents','Sweet Gent',4,15000,NULL,400,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,29,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2246,'Golden_Gear','Golden Gear',4,20,NULL,900,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'40',1,30,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2246,'Golden_Gear','Golden Gear',4,20,NULL,900,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'40',1,30,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2247,'Oldman\'s_Romance','Romantic Gent',4,15000,NULL,400,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,31,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2248,'Western_Grace','Western Grace',4,15000,NULL,400,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,32,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2249,'Coronet','Coronet',4,20,NULL,300,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,33,'bonus bInt,1;',NULL,NULL); @@ -1590,7 +1591,7 @@ REPLACE INTO `item_db_re` VALUES (2353,'Odin\'s_Blessing','Odin\'s Blessing',4,3 REPLACE INTO `item_db_re` VALUES (2354,'Goibne\'s_Armor','Goibne\'s Armor',4,50000,NULL,3500,NULL,58,NULL,0,0xFFFFFFFE,63,2,16,NULL,'54',1,0,'bonus bVit,2; bonus bMaxHPrate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2355,'Angel\'s_Protection','Angelic Protection',4,10000,NULL,600,NULL,25,NULL,1,0x00000001,63,2,16,NULL,'40',1,0,'bonus bMdef,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2356,'Vestment_Of_Grace','Blessed Holy Robe',4,20,NULL,2500,NULL,45,NULL,1,0x00008100,63,2,16,NULL,'70',1,0,'bonus bMdef,5; bonus2 bResEff,Eff_Blind,8000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2357,'Valkyrie_Armor','Valkyrian Armor',4,0,NULL,2800,NULL,55,NULL,1,0xFFFFFFFE,18,2,16,NULL,'1',1,0,'bonus bAllStats,1; bonus bUnbreakableArmor,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2357,'Valkyrie_Armor','Valkyrian Armor',4,0,NULL,2800,NULL,55,NULL,1,0xFFFFFFFE,18,2,16,NULL,'1',1,0,'bonus bAllStats,1; bonus bUnbreakableArmor; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2358,'Dress_Of_Angel','Angel\'s Dress',4,20,NULL,1000,NULL,5,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',0,0,'bonus bLuk,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2359,'Ninja_Suit_','Ninja Suit',4,20,NULL,1500,NULL,58,NULL,1,0x02021040,63,2,16,NULL,'50',1,0,'bonus bAgi,1; bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2360,'Robe_Of_Casting_','Robe of Cast',4,124800,NULL,1100,NULL,40,NULL,1,0x00810200,63,2,16,NULL,'75',1,0,'bonus bVariableCastrate,-3; bonus bMdef,4;',NULL,NULL); @@ -1598,11 +1599,11 @@ REPLACE INTO `item_db_re` VALUES (2361,'Blue_Aodai','Blue Robe',4,20,NULL,500,NU REPLACE INTO `item_db_re` VALUES (2362,'Red_Aodai','Red Robe',4,20,NULL,500,NULL,0,NULL,0,0xFFFFFFFE,63,2,16,NULL,'1',1,0,'bonus bAllStats,3; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2363,'White_Aodai','White Robe',4,20,NULL,500,NULL,0,NULL,0,0x00000001,63,2,16,NULL,'1',1,0,'bonus bAllStats,3; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2364,'Meteo_Plate_Armor','Meteo Plate Armor',4,20,NULL,3000,NULL,85,NULL,1,0x000444A2,18,2,16,NULL,'55',1,0,'bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Freeze,3000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2365,'Orleans_Gown','Orleans\'s Gown',4,20,NULL,300,NULL,15,NULL,1,0xFFFFFFFE,18,2,16,NULL,'55',1,0,'bonus bVariableCastrate,15; bonus bNoCastCancel,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2365,'Orleans_Gown','Orleans\'s Gown',4,20,NULL,300,NULL,15,NULL,1,0xFFFFFFFE,18,2,16,NULL,'55',1,0,'bonus bVariableCastrate,15; bonus bNoCastCancel;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2366,'Divine_Cloth','Divine Cloth',4,20,NULL,1500,NULL,50,NULL,1,0xFFFFFFFE,18,2,16,NULL,'55',1,0,'bonus2 bResEff,Eff_Curse,500; bonus2 bResEff,Eff_Silence,500; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Stone,500; bonus2 bResEff,Eff_Sleep,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2367,'Sniping_Suit','Sniping Suit',4,20,NULL,750,NULL,42,NULL,1,0x00000800,18,2,16,NULL,'50',1,0,'bonus bMdef,5; bonus bCritical,6+(readparam(bLuk)/10); bonus bDelayRate,-23;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2368,'Golden_Armor','Golden Armor',4,20,NULL,2000,NULL,4,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',0,0,'bonus bMdef,4;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,63,2,16,NULL,'0',0,0,'bonus bUnbreakableArmor,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2369,'Freyja_Overcoat','Freyja Overcoat',4,0,NULL,500,NULL,12,NULL,0,0xFFFFFFFE,63,2,16,NULL,'0',0,0,'bonus bUnbreakableArmor; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2370,'Used_Mage_Coat','Used Mage Coat',4,0,NULL,0,NULL,15,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',0,0,'bonus bMaxHP,300; bonus bMaxSP,30; bonus bBaseAtk,10; bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2371,'G_Strings_','Pantie',4,1000,NULL,100,NULL,22,NULL,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2372,'Mage_Coat_','Mage Coat',4,20,NULL,600,NULL,40,NULL,1,0x00810204,63,2,16,NULL,'50',1,0,'bonus bMdef,5; bonus bInt,1;',NULL,NULL); @@ -1616,7 +1617,7 @@ REPLACE INTO `item_db_re` VALUES (2379,'Warlock_Battle_Robe','Warlock\'s Battle REPLACE INTO `item_db_re` VALUES (2380,'Medic_Robe','Medic\'s Robe',4,10,NULL,0,NULL,25,NULL,1,0x00008110,63,2,16,NULL,'80',1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2381,'Elite_Archer_Suit','Elite Archer Suit',4,10,NULL,0,NULL,35,NULL,1,0x00080808,63,2,16,NULL,'80',1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2382,'Elite_Shooter_Suit','Elite Shooter Suit',4,10,NULL,0,NULL,25,NULL,1,0x41000000,63,2,16,NULL,'80',1,0,'bonus bMaxHP,150; bonus bMdef,2; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2383,'Brynhild','Brynhild',4,20,NULL,400,NULL,120,NULL,0,0xFFFFFFFF,63,2,16,NULL,'94',0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor,1; bonus bNoKnockback,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2383,'Brynhild','Brynhild',4,20,NULL,400,NULL,120,NULL,0,0xFFFFFFFF,63,2,16,NULL,'94',0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bUnbreakableArmor; bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2384,'Spritual_Tunic','Spiritual Tunic',4,20,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',0,0,'bonus bMdef,5; bonus bMaxHP,800; bonus2 bResEff,Eff_Freeze,10000; bonus2 bSubEle,Ele_Earth,20; bonus2 bSubEle,Ele_Fire,20; bonus2 bSubEle,Ele_Wind,20; bonus2 bSubEle,Ele_Poison,20; bonus2 bSubEle,Ele_Holy,20; bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Ghost,20; bonus2 bSubEle,Ele_Undead,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2385,'Recuperative_Armor','Recuperative Armor',4,20,NULL,0,NULL,12,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',0,0,'bonus bNoRegen,1; bonus bNoRegen,2; bonus bHPGainValue,60; bonus bSPGainValue,6; bonus bMagicHPGainValue,60; bonus bMagicSPGainValue,6;',NULL,'heal 0,-100;'); REPLACE INTO `item_db_re` VALUES (2386,'Chameleon_Armor','Chameleon Armor',4,20,NULL,1700,NULL,55,NULL,0,0x00CFFF80,18,2,16,NULL,'70',1,0,'bonus bMaxHP,(BaseLevel*7); bonus bMaxSP,(BaseLevel/2); autobonus2 "{ bonus bNoMagicDamage,100; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; }"; if( BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte ) bonus bMdef,5; else if( BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief ) bonus bDef,3;',NULL,NULL); @@ -1656,7 +1657,7 @@ REPLACE INTO `item_db_re` VALUES (2417,'Fricco_Shoes','Fricco\'s Shoes',4,30000, REPLACE INTO `item_db_re` VALUES (2418,'Vidar\'s_Boots','Vidar\'s Boots',4,30000,NULL,650,NULL,13,NULL,0,0xFFFFFFFE,63,2,64,NULL,'65',1,0,'bonus bMaxHPrate,9; bonus bMaxSPrate,9;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2419,'Goibne\'s_Combat_Boots','Goibne\'s Greaves',4,30000,NULL,700,NULL,13,NULL,0,0xFFFFFFFE,63,2,64,NULL,'54',1,0,'bonus bMdef,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2420,'Angel\'s_Arrival','Angel\'s Reincarnation',4,10000,NULL,300,NULL,8,NULL,1,0x00000001,63,2,64,NULL,'25',1,0,'bonus bMaxHP,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2421,'Valkyrie_Shoes','Valkyrian Shoes',4,0,NULL,500,NULL,13,NULL,1,0xFFFFFFFE,18,2,64,NULL,'1',1,0,'bonus bUnbreakableShoes,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2421,'Valkyrie_Shoes','Valkyrian Shoes',4,0,NULL,500,NULL,13,NULL,1,0xFFFFFFFE,18,2,64,NULL,'1',1,0,'bonus bUnbreakableShoes; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bMaxHP,(BaseLevel*5); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bMaxSP,(JobLevel*2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2422,'High_Fashion_Sandals','High Fashion Sandals',4,24000,NULL,200,NULL,7,NULL,1,0x00818314,63,2,64,NULL,'40',1,0,'bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2423,'Variant_Shoes','Variant Shoes',4,20,NULL,500,NULL,13,NULL,0,0xFFFFFFFE,18,2,64,NULL,'85',1,0,'.@r = getrefine(); bonus bMaxHPrate,20-.@r; bonus bMaxSPrate,20-.@r; bonus bDef,.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2424,'Tidal_Shoes','Tidal Shoes',4,20,NULL,300,NULL,13,NULL,1,0xFFFFFFFE,18,2,64,NULL,'55',1,0,'bonus2 bSubEle,Ele_Water,5;',NULL,NULL); @@ -1744,7 +1745,7 @@ REPLACE INTO `item_db_re` VALUES (2504,'Muffler_','Muffler',4,5000,NULL,400,NULL REPLACE INTO `item_db_re` VALUES (2505,'Manteau','Manteau',4,32000,NULL,600,NULL,13,NULL,0,0x006654E2,63,2,4,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2506,'Manteau_','Manteau',4,32000,NULL,600,NULL,13,NULL,1,0x006654E2,63,2,4,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2507,'Cape_Of_Ancient_Lord','Ancient Cape',4,82000,NULL,600,NULL,9,NULL,0,0xFFFFFFFE,63,2,4,NULL,'40',1,0,'bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2508,'Ragamuffin_Cape','Ragamuffin Manteau',4,56000,NULL,500,NULL,4,NULL,0,0xFFFFFFFE,63,2,4,NULL,'0',1,0,'bonus bUnbreakableGarment,1; bonus bMdef,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2508,'Ragamuffin_Cape','Ragamuffin Manteau',4,56000,NULL,500,NULL,4,NULL,0,0xFFFFFFFE,63,2,4,NULL,'0',1,0,'bonus bUnbreakableGarment; bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2509,'Clack_Of_Servival','Survivor\'s Manteau',4,20000,NULL,550,NULL,10,NULL,0,0x00810204,63,2,4,NULL,'75',1,0,'bonus bMdef,5; bonus bVit,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2510,'Novice_Hood','Somber Novice Hood',4,1,NULL,1,NULL,4,NULL,0,0x00000001,63,2,4,NULL,'0',0,0,'bonus2 bSubEle,Ele_Neutral,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2511,'Skeleton\'s_Cape','Skeleton Manteau',4,5000,NULL,700,NULL,1,NULL,0,0xFFFFFFFE,63,2,4,NULL,'75',1,0,'bonus bStr,2; bonus bInt,-3; bonus bDex,2; bonus bVit,-3; bonus bLuk,2; bonus bAgi,-4;',NULL,NULL); @@ -1760,7 +1761,7 @@ REPLACE INTO `item_db_re` VALUES (2520,'Goibne\'s_Shoulder_Arms','Goibne\'s Spau REPLACE INTO `item_db_re` VALUES (2521,'Angel\'s_Warmth','Angelic Cardigan',4,10000,NULL,400,NULL,5,NULL,1,0x00000001,63,2,4,NULL,'20',1,0,'bonus bHPrecovRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2522,'Undershirt','Undershirt',4,20000,NULL,150,NULL,5,NULL,0,0xFFFFFFFF,63,2,4,NULL,'0',1,0,'bonus bMdef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2523,'Undershirt_','Undershirt',4,20000,NULL,150,NULL,5,NULL,1,0xFFFFFFFF,63,2,4,NULL,'0',1,0,'bonus bMdef,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2524,'Valkyrie_Manteau','Valkyrian Manteau',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFE,18,2,4,NULL,'0',1,0,'bonus bUnbreakableGarment,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2524,'Valkyrie_Manteau','Valkyrian Manteau',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFE,18,2,4,NULL,'0',1,0,'bonus bUnbreakableGarment; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus bFlee2,5+(getequiprefinerycnt(EQI_GARMENT)*2); else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus bShortWeaponDamageReturn,5+(getequiprefinerycnt(EQI_GARMENT)*2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2525,'Cape_Of_Ancient_Lord_','Ancient Cape',4,82000,NULL,600,NULL,9,NULL,1,0xFFFFFFFE,63,2,4,NULL,'40',1,0,'bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2526,'Dragon_Scale_Coat','Coat of Dragon Scale',4,20,NULL,10,NULL,14,NULL,0,0xFFFFFFFF,63,2,4,NULL,'50',1,0,'bonus bMaxHP,300;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2527,'Dragon_Breath','Dragon Breath',4,20,NULL,600,NULL,16,NULL,1,0xFFFFFFFE,18,2,4,NULL,'48',1,0,'bonus2 bSubRace,RC_Dragon,15;',NULL,NULL); @@ -1777,7 +1778,7 @@ REPLACE INTO `item_db_re` VALUES (2537,'Diabolus_Manteau','Diabolus Manteau',4,2 REPLACE INTO `item_db_re` VALUES (2538,'Commander_Manteau','Captain\'s Manteau',4,10,NULL,0,NULL,28,NULL,1,0x026654E2,63,2,4,NULL,'80',1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2539,'Commander_Manteau_','Commander\'s Manteau',4,10,NULL,0,NULL,20,NULL,1,0x00898B1C,63,2,4,NULL,'80',1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2540,'Sheriff_Manteau','Sheriff\'s Manteau',4,10,NULL,0,NULL,20,NULL,1,0x41000000,63,2,4,NULL,'80',1,0,'bonus bMaxHP,50; bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; bonus2 bSubRace,RC_Player,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2541,'Asprika','Asprika',4,20,NULL,400,NULL,40,NULL,0,0xFFFFFFFF,63,2,4,NULL,'94',0,0,'bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2541,'Asprika','Asprika',4,20,NULL,400,NULL,40,NULL,0,0xFFFFFFFF,63,2,4,NULL,'94',0,0,'bonus bMdef,5; bonus3 bSubEle,Ele_Neutral,30,BF_SHORT; bonus3 bSubEle,Ele_Water,30,BF_SHORT; bonus3 bSubEle,Ele_Earth,30,BF_SHORT; bonus3 bSubEle,Ele_Fire,30,BF_SHORT; bonus3 bSubEle,Ele_Wind,30,BF_SHORT; bonus3 bSubEle,Ele_Poison,30,BF_SHORT; bonus3 bSubEle,Ele_Holy,30,BF_SHORT; bonus3 bSubEle,Ele_Dark,30,BF_SHORT; bonus3 bSubEle,Ele_Ghost,30,BF_SHORT; bonus3 bSubEle,Ele_Undead,30,BF_SHORT; bonus bFlee,30; skill "AL_TELEPORT",1; bonus bUnbreakableGarment;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2542,'Flame_Manteau','Flame Manteau of Naght Sieger',4,20,NULL,700,NULL,16,NULL,1,0xFFFFFFFE,18,2,4,NULL,'70',1,0,'bonus bMaxHPrate,5; bonus bMdef,2; bonus bMatkRate,1; bonus2 bAddEle,Ele_Fire,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2543,'Sylphid_Manteau','Sylphid Manteau',4,20,NULL,0,NULL,9,NULL,0,0xFFFFFFFF,63,2,4,NULL,'0',0,0,'bonus bFlee,13; bonus2 bSubEle,Ele_Neutral,13; bonus bFlee2,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2544,'Leather_Of_Tendrilion','Leather of Tendrilion',4,20,NULL,300,NULL,14,NULL,1,0x00CFDF80,18,2,4,NULL,'0',1,0,'bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5;',NULL,NULL); @@ -1802,7 +1803,7 @@ REPLACE INTO `item_db_re` VALUES (2562,'Upg_Muffler','Upg Muffler',4,20,NULL,200 REPLACE INTO `item_db_re` VALUES (2563,'Upg_Manteau','Upg Manteau',4,20,NULL,300,NULL,18,NULL,1,0x006654E2,63,2,4,NULL,'0',1,0,'bonus bMaxHPrate,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2564,'Feral_Tail','Feral Tail',4,20,NULL,0,NULL,16,NULL,0,0xFFFFFFFF,63,2,4,NULL,'75',0,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2565,'Beach_Towel','Beach Towel',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,4,NULL,'0',1,0,'bonus bMdef,3; bonus bFlee,7;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2566,'Half_Asprika','Half Asprika',4,20,NULL,0,NULL,20,NULL,0,0xFFFFFFFF,63,2,4,NULL,'47',0,0,'bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2566,'Half_Asprika','Half Asprika',4,20,NULL,0,NULL,20,NULL,0,0xFFFFFFFF,63,2,4,NULL,'47',0,0,'bonus bMdef,2; bonus3 bSubEle,Ele_Neutral,15,BF_SHORT; bonus3 bSubEle,Ele_Water,15,BF_SHORT; bonus3 bSubEle,Ele_Earth,15,BF_SHORT; bonus3 bSubEle,Ele_Fire,15,BF_SHORT; bonus3 bSubEle,Ele_Wind,15,BF_SHORT; bonus3 bSubEle,Ele_Poison,15,BF_SHORT; bonus3 bSubEle,Ele_Holy,15,BF_SHORT; bonus3 bSubEle,Ele_Dark,15,BF_SHORT; bonus3 bSubEle,Ele_Ghost,15,BF_SHORT; bonus3 bSubEle,Ele_Undead,15,BF_SHORT; bonus bFlee,15; skill "AL_TELEPORT",1; bonus bUnbreakableGarment;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2567,'Academy_Manteau','Academy Manteau',4,0,NULL,600,NULL,3,NULL,1,73,7,2,4,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2568,'Muffler_Of_Roki','Loki\'s Muffler',4,20,NULL,400,NULL,10,NULL,0,0xFFFFFFFF,63,2,4,NULL,'100',0,0,'bonus bAgi,1; bonus2 bSkillAtk,"ASC_BREAKER",5; bonus2 bSkillAtk,"GC_CROSSIMPACT",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2569,'Shawl_Of_Affection','Shawl Of Affection',4,20,NULL,400,NULL,12,NULL,0,0x00000100,63,2,4,NULL,'100',1,0,'bonus bFlee2,5; bonus5 bAutoSpellWhenHit,"AB_RENOVATIO",1,30,BF_WEAPON,0; bonus5 bAutoSpellWhenHit,"AB_RENOVATIO",1,40,BF_MAGIC,0;',NULL,NULL); @@ -1976,7 +1977,7 @@ REPLACE INTO `item_db_re` VALUES (2737,'Foot_Ring','Foot Ring',4,20,NULL,150,NUL REPLACE INTO `item_db_re` VALUES (2738,'Shiny_Coin','Shiny Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bAddClass,Class_All,6; bonus bMatkRate,6;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2739,'Ordinary_Coin','Ordinary Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bAddClass,Class_All,5; bonus bMatkRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2740,'Rusty_Coin','Rusty Coin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bAddClass,Class_All,3; bonus bMatkRate,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2741,'All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bAllStats,1; bonus bNoCastCancel,0; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2741,'All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bAllStats,1; bonus bNoCastCancel; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2742,'Lucky_Clip','Lucky Clip',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bDropAddRace,RC_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2743,'Angelic_Ring','Angelic Ring',4,20,NULL,100,NULL,0,NULL,0,0x00CFFF80,18,2,136,NULL,'70',0,0,'bonus bInt,2; bonus bDex,1; bonus bMdef,2; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AL_HEAL","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"AM_POTIONPITCHER","{ specialeffect2 EF_HEAL3; }"; autobonus3 "{ bonus bHealPower,20; }",100,3000,"PR_SANCTUARY","{ specialeffect2 EF_HEAL3; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2744,'Sprint_Ring','Sprint Ring',4,20,NULL,100,NULL,0,NULL,0,0x00CFFF80,18,2,136,NULL,'70',0,0,'bonus bVariableCastrate,-10; bonus bDelayRate,5;',NULL,NULL); @@ -1995,7 +1996,7 @@ REPLACE INTO `item_db_re` VALUES (2756,'Chemical_Ring','Chemical Ring',4,0,NULL, REPLACE INTO `item_db_re` VALUES (2757,'Insecticide_Ring','Insecticide Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_Insect,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2758,'Fisher_Ring','Fischer Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_Fish,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2759,'Decussate_Ring','Decussate Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_Demon,15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_DemiHuman,15; bonus2 bExpAddRace,RC_Player,15;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2760,'Bloody_Ring','Bloody Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_DemiHuman,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2761,'Satanic_Ring','Satanic Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_Angel,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2762,'Dragoon_Ring','Dragon Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus2 bExpAddRace,RC_Dragon,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2763,'Skul_Ring_C','Neo Skull Ring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,18,2,136,NULL,'95',0,0,'bonus2 bAddClass,Class_All,5; bonus bMatkrate,5; bonus bMaxHPrate,5; skill "MG_SIGHT",1;',NULL,NULL); @@ -2069,7 +2070,7 @@ REPLACE INTO `item_db_re` VALUES (2830,'Magingiorde_C','Megingjard',4,20,NULL,0, REPLACE INTO `item_db_re` VALUES (2831,'Brysinggamen_C','Brisingamen',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,136,NULL,'94',0,0,'bonus bStr,6; bonus bInt,6; bonus bVit,6; bonus bAgi,6; bonus bLuk,10; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2832,'Freyja_Ring','Freyja\'s Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (2833,'Odin\'s_Recall','Odin\'s Recall',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',0,0,'bonus bAllStats,1; skill "ALL_ODINS_RECALL",1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2834,'F_All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bAllStats,1; bonus bNoCastCancel,0; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2834,'F_All_In_One_Ring','All In One Ring',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bAllStats,1; bonus bNoCastCancel; bonus bVariableCastrate,10; skill "AL_HEAL",1; skill "AL_TELEPORT",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2835,'F_Critical_Ring_C','Critical Ring',4,1,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,63,2,136,NULL,'1',0,0,'bonus bCritical,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2836,'F_Glove_C','Glove',4,1,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,63,2,136,NULL,'1',0,0,'bonus bDex,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2837,'F_Safety_Ring_C','Safety Ring',4,1,NULL,0,NULL,5,NULL,0,0xFFFFFFFE,63,2,136,NULL,'1',0,0,'bonus bMdef,5;',NULL,NULL); @@ -2182,7 +2183,7 @@ REPLACE INTO `item_db_re` VALUES (2954,'Kvasir_Ring_Brown','Kvasir Ring Brown',4 REPLACE INTO `item_db_re` VALUES (2956,'Safety_Ring_','Advanced Safety Ring',4,75000,NULL,100,NULL,10,NULL,1,0xFFFFFFFE,63,2,136,NULL,'50',0,0,'bonus bMdef,5; bonus bAllStats,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2957,'Good_Ring_Of_Flame_Lord','Advanced Ring Of Flame Lord',4,20,NULL,100,NULL,0,NULL,0,0x7CCFDF80,63,2,136,NULL,'85',0,0,'bonus bStr,3; bonus bVit,2; bonus bBaseAtk,20; bonus2 bSubEle,Ele_Fire,10; bonus3 bAutoSpell,"CH_SOULCOLLECT",1,30; bonus3 bAutoSpell,"MO_EXPLOSIONSPIRITS",1,10; bonus3 bAutoSpell,"PA_PRESSURE",2,30; bonus3 bAutoSpell,"MG_FIREBALL",1,150; bonus3 bAutoSpell,"KN_BOWLINGBASH",5,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2958,'Good_Ring_Of_Resonance','Advanced Ring Of Resonance',4,20,NULL,100,NULL,2,NULL,0,0x7CCFDF80,63,2,136,NULL,'85',0,0,'bonus bAgi,3; bonus bVit,1; bonus bMdef,2; bonus bMatk,10; bonus4 bAutoSpellWhenHit,"WZ_QUAGMIRE",1,50,0; bonus3 bAutoSpellWhenHit,"AS_SPLASHER",10,20; bonus3 bAutoSpellWhenHit,"AL_HEAL",10,30; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,20; bonus3 bAutoSpellWhenHit,"CG_TAROTCARD",5,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (2959,'Fidelity_Necklace','Fidelity Necklace',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'50',0,0,'bonus bAgi,2; bonus2 bSubRace,RC_Brute,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (2959,'Fidelity_Necklace','Fidelity Necklace',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'50',0,0,'bonus bAgi,2; bonus2 bSubRace,RC_Brute,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2960,'Badge_Of_Manny','Badge Of Manny',4,20,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bAllStats,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2963,'Body_Power_Up_Ring','Physical Enhancer Ring',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'90',0,0,'bonus2 bAddClass,Class_All,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (2964,'Ring_Of_Spell_Explosion','Magic Intensifier Ring',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'90',0,0,'bonus bMatkRate,5;',NULL,NULL); @@ -2275,7 +2276,7 @@ REPLACE INTO `item_db_re` VALUES (4057,'Metaller_Card','Metaller Card',6,20,NULL REPLACE INTO `item_db_re` VALUES (4058,'Thara_Frog_Card','Thara Frog Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,30; bonus2 bSubRace,RC_Player,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4059,'Soldier_Andre_Card','Soldier Andre Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4060,'Goblin_Card','Goblin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Brute,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4061,'Cornutus_Card','Cornutus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bUnbreakableArmor,1; bonus bDef,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4061,'Cornutus_Card','Cornutus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bUnbreakableArmor; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4062,'Anacondaq_Card','Anacondaq Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Poison,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4063,'Caramel_Card','Caramel Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Insect,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4064,'Zerom_Card','Zerom Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bDex,3;',NULL,NULL); @@ -2286,12 +2287,12 @@ REPLACE INTO `item_db_re` VALUES (4068,'Scorpion_Card','Scorpion Card',6,20,NULL REPLACE INTO `item_db_re` VALUES (4069,'Drainliar_Card','Drainliar Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Water,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4070,'Eggyra_Card','Eggyra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4071,'Orc_Zombie_Card','Orc Zombie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Undead,30; bonus bFlee,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4072,'Golem_Card','Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon,1; bonus bBaseAtk,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4072,'Golem_Card','Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon; bonus bBaseAtk,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4073,'Pirate_Skel_Card','Pirate Skeleton Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'skill "MC_DISCOUNT",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4074,'BigFoot_Card','Bigfoot Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Insect,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4075,'Argos_Card','Argos Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bResEff,Eff_Stone,2000; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4076,'Magnolia_Card','Magnolia Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4077,'Phen_Card','Phen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bNoCastCancel,0; bonus bVariableCastrate,25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4077,'Phen_Card','Phen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bNoCastCancel; bonus bVariableCastrate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4078,'Savage_Card','Savage Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4079,'Mantis_Card','Mantis Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bStr,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4080,'Flora_Card','Flora Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_Fish,20;',NULL,NULL); @@ -2346,19 +2347,19 @@ REPLACE INTO `item_db_re` VALUES (4128,'Golden_Bug_Card','Golden Thief Bug Card' REPLACE INTO `item_db_re` VALUES (4129,'Baphomet__Card','Bapho Jr. Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bAgi,3; bonus bCritical,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4130,'Scorpion_King_Card','Scorpion King Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Undead,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4131,'Moonlight_Flower_Card','Moonlight Flower Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSpeedRate,25;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4132,'Mistress_Card','Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone,1; bonus bUseSPrate,25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4132,'Mistress_Card','Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone; bonus bUseSPrate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4133,'Daydric_Card','Raydric Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4134,'Dracula_Card','Dracula Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPDrainRate,100,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4135,'Orc_Load_Card','Orc Lord Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bShortWeaponDamageReturn,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4136,'Khalitzburg_Card','Khalitzburg Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Demon,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4137,'Drake_Card','Drake Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bNoSizeFix,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4137,'Drake_Card','Drake Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bNoSizeFix;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4138,'Anubis_Card','Anubis Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Angel,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4139,'Joker_Card','Joker Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'skill "TF_STEAL",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4140,'Knight_Of_Abyss_Card','Abysmal Knight Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_Boss,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4141,'Evil_Druid_Card','Evil Druid Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Undead; bonus bInt,1; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4142,'Doppelganger_Card','Doppelganger Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAspdRate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4143,'Orc_Hero_Card','Orc Hero Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus2 bResEff,Eff_Stun,10000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4144,'Osiris_Card','Osiris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bRestartFullRecover,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4144,'Osiris_Card','Osiris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bRestartFullRecover;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4145,'Berzebub_Card','Berzebub Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bVariableCastrate,-30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4146,'Maya_Card','Maya Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bMagicDamageReturn,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4147,'Baphomet_Card','Baphomet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bHit,-10; bonus bSplashRange,1;',NULL,NULL); @@ -2368,7 +2369,7 @@ REPLACE INTO `item_db_re` VALUES (4150,'Goat_Card','Goat Card',6,20,NULL,10,NULL REPLACE INTO `item_db_re` VALUES (4151,'Gajomart_Card','Gajomart Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Plant,-20; bonus2 bExpAddRace,RC_Plant,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4152,'Galapago_Card','Galapago Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Juice,50; bonus3 bAddMonsterDropItem,531,RC_Insect,300; bonus3 bAddMonsterDropItem,532,RC_Insect,300; bonus3 bAddMonsterDropItem,534,RC_Insect,300;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4153,'Crab_Card','Crab Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1266,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,529,RC_Player,300; bonus3 bAddMonsterDropItem,530,RC_Player,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4154,'Rice_Cake_Boy_Card','Dumpling Child Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Candy,50; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,300; bonus3 bAddMonsterDropItem,530,RC_DemiHuman,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4155,'Goblin_Leader_Card','Goblin Leader Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,RC2_Goblin,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4156,'Steam_Goblin_Card','Goblin Steamrider Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Formless,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4157,'Goblin_Archer_Card','Goblin Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Undead,7;',NULL,NULL); @@ -2412,7 +2413,7 @@ REPLACE INTO `item_db_re` VALUES (4194,'Rybio_Card','Rybio Card',6,20,NULL,10,NU REPLACE INTO `item_db_re` VALUES (4195,'Leaf_Cat_Card','Leaf Cat Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Water,10; bonus3 bAddMonsterDropItem,991,RC_Fish,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4196,'Marin_Card','Marin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItem,909,2000; bonus2 bAddMonsterDropItem,7126,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4197,'Mastering_Card','Mastering Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4198,'Maya_Puple_Card','Maya Purple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4198,'Maya_Puple_Card','Maya Purple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4199,'Merman_Card','Merman Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bHPrecovRate,10; bonus bSPrecovRate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4200,'Megalith_Card','Megalith Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4201,'Majoruros_Card','Majoruros Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Stun,600;',NULL,NULL); @@ -2447,7 +2448,7 @@ REPLACE INTO `item_db_re` VALUES (4229,'C_Tower_Manager_Card','Tower Keeper Card REPLACE INTO `item_db_re` VALUES (4230,'Shinobi_Card','Shinobi Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bAgi,1; bonus3 bAutoSpellWhenHit,"AS_CLOAKING",5,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4231,'Increase_Soil_Card','Mi Gao Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace2,RC2_Guardian,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4232,'Wild_Ginseng_Card','Hermit Plant Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Herb,50; bonus3 bAddMonsterDropItem,507,RC_Plant,300; bonus3 bAddMonsterDropItem,508,RC_Plant,200; bonus3 bAddMonsterDropItem,509,RC_Plant,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4233,'Baby_Leopard_Card','Baby Leopard Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4233,'Baby_Leopard_Card','Baby Leopard Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bLuk,3; if(BaseClass==Job_Merchant) bonus bUnbreakableArmor;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4234,'Anolian_Card','Anolian Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AC_CONCENTRATION",1+9*(getskilllv("AC_CONCENTRATION")==10),30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4235,'Cookie_XMAS_Card','Christmas Cookie Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Angel,-20; bonus2 bExpAddRace,RC_Angel,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4236,'Amon_Ra_Card','Amon Ra Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"PR_KYRIE",10,(30+70*(readparam(bInt)>=99));',NULL,NULL); @@ -2459,7 +2460,7 @@ REPLACE INTO `item_db_re` VALUES (4241,'Archangeling_Card','Arc Angeling Card',6 REPLACE INTO `item_db_re` VALUES (4242,'Apocalips_Card','Apocalipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,2; if(getrefine()>8) bonus bMaxHP,800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4243,'Antonio_Card','Antonio Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_TELEPORT",1,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4244,'Alarm_Card','Alarm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,200; bonus bMaxHP,300; bonus bVit,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10; bonus2 bExpAddRace,RC_Player,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4245,'Am_Mut_Card','Am Mut Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_DemiHuman,-20; bonus2 bSubRace,RC_Player,-20; bonus2 bExpAddRace,RC_DemiHuman,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4246,'Assulter_Card','Assaulter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_DemiHuman,7; bonus2 bCriticalAddRace,RC_Player,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4247,'Aster_Card','Aster Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,5; bonus2 bAddDamageClass,1074,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4248,'Ancient_Mummy_Card','Ancient Mummy Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_CRUCIS",5,30;',NULL,NULL); @@ -2470,7 +2471,7 @@ REPLACE INTO `item_db_re` VALUES (4252,'Alligator_Card','Alligator Card',6,20,NU REPLACE INTO `item_db_re` VALUES (4253,'Alice_Card','Alice Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubClass,Class_Boss,40; bonus2 bSubClass,Class_Normal,-40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4254,'Tirfing_Card','Ogretooth Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubSize,Size_Medium,25; bonus bDef,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4255,'Orc_Lady_Card','Orc Lady Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddRace2,RC2_Orc,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100; bonus3 bAddMonsterDropItem,12034,RC_Player,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4256,'Orc_Archer_Card','Orc Archer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12034,RC_DemiHuman,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4257,'Wild_Rose_Card','Wild Rose Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAgi,1; if(BaseClass==Job_Thief) bonus bFlee2,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4258,'Wicked_Nymph_Card','Evil Nymph Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMaxSP,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus bHPrecovRate,30;',NULL,NULL); @@ -2495,7 +2496,7 @@ REPLACE INTO `item_db_re` VALUES (4277,'Zherlthsh_Card','Zealotus Card',6,20,NUL REPLACE INTO `item_db_re` VALUES (4278,'Gibbet_Card','Gibbet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'if(getrefine()<6) bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4279,'Deleter_Card','Earth Deleter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,-100; bonus bSPGainValue,10;',NULL,'heal 0,-100;'); REPLACE INTO `item_db_re` VALUES (4280,'Geographer_Card','Geographer Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAutoSpellWhenHit,"AL_BLESSING",2+8*(getskilllv("AL_BLESSING")==10),30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4281,'Zipper_Bear_Card','Zipper Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,30; bonus bSPDrainValue,-1; if(BaseClass==Job_Merchant) bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4282,'Tengu_Card','Tengu Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItemGroup,IG_Recovery,600;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4283,'Greatest_General_Card','Greatest General Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"MO_CALLSPIRITS",5,2+18*(BaseClass==Job_Acolyte);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4284,'Chepet_Card','Chepet Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus4 bAutoSpell,"AL_HEAL",5,50,1;',NULL,NULL); @@ -2523,7 +2524,7 @@ REPLACE INTO `item_db_re` VALUES (4305,'Turtle_General_Card','Turtle General Car REPLACE INTO `item_db_re` VALUES (4306,'Toad_Card','Toad Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bFlee2,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4307,'Kind_Of_Beetle_Card','Beetle King Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Fish,5;',NULL,'heal 0,-5;'); REPLACE INTO `item_db_re` VALUES (4308,'Tri_Joint_Card','Tri Joint Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_Formless,5;',NULL,'heal 0,-5;'); -REPLACE INTO `item_db_re` VALUES (4309,'Parasite_Card','Parasite Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bSubEle,Ele_Neutral,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4309,'Parasite_Card','Parasite Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bSubRace,RC_Formless,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4310,'Panzer_Goblin_Card','Panzer Goblin Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,10; bonus2 bCriticalAddRace,RC_Demon,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4311,'Permeter_Card','Permeter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,15; bonus2 bSubEle,Ele_Undead,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4312,'Fur_Seal_Card','Seal Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bFlee,3; bonus bHit,10; if(BaseClass==Job_Acolyte) { bonus2 bCriticalAddRace,RC_Undead,9; bonus2 bCriticalAddRace,RC_Demon,9; }',NULL,NULL); @@ -2541,7 +2542,7 @@ REPLACE INTO `item_db_re` VALUES (4323,'Garm_Baby_Card','Hatii Babe Card',6,20,N REPLACE INTO `item_db_re` VALUES (4324,'Garm_Card','Hatii Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEffWhenHit,Eff_Freeze,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4325,'Harpy_Card','Harpy Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bSkillAtk,"MG_NAPALMBEAT",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4326,'See_Otter_Card','Sea-Otter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bAddItemGroupHealRate,IG_Fish,50; bonus3 bAddMonsterDropItem,551,RC_Fish,300; bonus3 bAddMonsterDropItem,544,RC_Fish,300;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4327,'Blood_Butterfly_Card','Bloody Butterfly Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bVariableCastrate,30; bonus bNoCastCancel,0; bonus2 bSkillAtk,"MG_FIREWALL",5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4327,'Blood_Butterfly_Card','Bloody Butterfly Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bVariableCastrate,30; bonus bNoCastCancel; bonus2 bSkillAtk,"MG_FIREWALL",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4328,'Hyegun_Card','Yao Jun Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bFlee,15; bonus bCritical,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4329,'Phendark_Card','Phendark Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPGainRace,RC_DemiHuman,5; bonus2 bSPGainRace,RC_Player,5;',NULL,'heal 0,-5;'); REPLACE INTO `item_db_re` VALUES (4330,'Dark_Snake_Lord_Card','Evil Snake Lord Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bInt,3; bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Curse,10000;',NULL,NULL); @@ -2556,7 +2557,7 @@ REPLACE INTO `item_db_re` VALUES (4338,'Obsidian_Card','Obsidian Card',6,20,NULL REPLACE INTO `item_db_re` VALUES (4339,'Mineral_Card','Mineral Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,-25; bonus bDef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4340,'Teddy_Bear_Card','Teddy Bear Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubRace,RC_Undead,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4341,'Metaling_Card','Metaling Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"RG_STRIPWEAPON",1,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4342,'Rsx_0806_Card','RSX-0806 Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus bUnbreakableArmor,1; bonus bNoKnockback,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4342,'Rsx_0806_Card','RSX-0806 Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bVit,3; bonus bUnbreakableArmor; bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4343,'Mole_Card','Holden Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bLuk,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4344,'Anopheles_Card','Anopheles Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12058,RC_Insect,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4345,'Hill_Wind_Card','Hill Wind Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSkillAtk,"MG_THUNDERSTORM",5; bonus2 bSkillAtk,"WZ_JUPITEL",5; bonus2 bSkillAtk,"WZ_VERMILION",5;',NULL,'heal 0,-50;'); @@ -2621,7 +2622,7 @@ REPLACE INTO `item_db_re` VALUES (4403,'Kiel_Card','Kiel-D-01 Card',6,20,NULL,10 REPLACE INTO `item_db_re` VALUES (4404,'Skogul_Card','Skogul Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus3 bAddEffWhenHit,Eff_Bleeding,3000,ATF_TARGET|ATF_SELF;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4405,'Frus_Card','Frus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMagicDamageReturn,getrefine()*2; if(BaseClass==Job_Mage) bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4406,'Skeggiold_Card','Skeggiold Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_Demon,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4407,'Randgris_Card','Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon,1; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4407,'Randgris_Card','Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bUnbreakableWeapon; bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"SA_DISPELL",1,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4408,'Gloom_Under_Night_Card','Gloom Under Night Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Holy,40; bonus2 bAddEle,Ele_Dark,40; bonus2 bAddRace,RC_Angel,40; bonus2 bAddRace,RC_Demon,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4409,'Agav_Card','Agav Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatkRate,5; bonus bDef,-10; if(BaseClass==Job_Mage) bonus bMaxSP,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4410,'Echio_Card','Echio Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bBaseAtk,15; if(BaseClass==Job_Swordman) bonus bMaxHP,500;',NULL,NULL); @@ -2698,7 +2699,7 @@ REPLACE INTO `item_db_re` VALUES (4480,'Sealed_Kiel_Card','Sealed Kiel Card',6,2 REPLACE INTO `item_db_re` VALUES (4481,'Sealed_Ktullanux_Card','Sealed Ktullanux Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Fire,((getrefine()>14)?35:25); bonus5 bAutoSpellWhenHit,"WZ_FROSTNOVA",10,10,BF_WEAPON|BF_MAGIC,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4482,'Sealed_B_Ygnizem_Card','Sealed General Egnigem Cenia Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'.@rate = ((getrefine()>14)?7:5); bonus bMaxHPrate,.@rate; bonus bMaxSPrate,.@rate; bonus2 bHPRegenRate,50,10000; bonus2 bSPRegenRate,10,10000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4483,'Sealed_Dracula_Card','Sealed Dracula Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bSPDrainRate,((getrefine()>14)?70:50),5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4484,'Sealed_Mistress_Card','Sealed Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone,1; bonus bUseSPrate,((getrefine()>14)?35:50);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4484,'Sealed_Mistress_Card','Sealed Mistress Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bNoGemStone; bonus bUseSPrate,((getrefine()>14)?35:50);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4485,'Sealed_Gloom_Card','Sealed Gloom Under Night Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'.@rate = ((getrefine()>14)?30:20); bonus2 bAddEle,Ele_Holy,.@rate; bonus2 bAddEle,Ele_Dark,.@rate; bonus2 bAddRace,RC_Angel,.@rate; bonus2 bAddRace,RC_Demon,.@rate;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4486,'Sealed_Berz_Card','Sealed Berzebub Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bVariableCastrate,-15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4487,'Sealed_Ifrit_Card','Sealed Ifrit Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bBaseAtk,(JobLevel/20); bonus bCritical,(JobLevel/20); bonus bHit,(JobLevel/20); bonus3 bAutoSpellWhenHit,"NPC_EARTHQUAKE",5,1;',NULL,NULL); @@ -2749,7 +2750,7 @@ REPLACE INTO `item_db_re` VALUES (4531,'Red_Eruma_Card','Red Eruma Card',6,20,NU REPLACE INTO `item_db_re` VALUES (4532,'Wild_Rider_Card','Wild Rider Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAgi,1; bonus3 bAutoSpell,"AL_INCAGI",1,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4533,'Mini_Octopus_Card','Octopus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus3 bAddEff,Eff_Blind,100,ATF_MAGIC;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4534,'Giant_Octopus_Card','Giant Octopus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,12; skill "WZ_WATERBALL",5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4535,'Sealed_Rand_Card','Sealed Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_All,(getrefine()>=15?8:5); bonus5 bAutoSpell,"SA_DISPELL",1,1,BF_NORMAL,1; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4535,'Sealed_Rand_Card','Sealed Randgris Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_All,(getrefine()>=15?8:5); bonus5 bAutoSpell,"SA_DISPELL",1,1,BF_NORMAL,1; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4536,'Sealed_Atroce_Card','Sealed Atroce Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bBaseAtk,((.@r>14)?25:15); autobonus "{ bonus bAspdRate,((.@r>14)?75:50); }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4537,'Sealed_Phreeoni_Card','Sealed Phreeoni Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bHit,((getrefine()>14)?75:50);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4538,'Sealed_Bacsojin_Card','Sealed White Lady Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bHealPower,(.@r>14?25:15); bonus bUseSPrate,(.@r>14?20:30);',NULL,NULL); @@ -2763,7 +2764,7 @@ REPLACE INTO `item_db_re` VALUES (4545,'Novice_Poring_Card','Novice Poring Card' REPLACE INTO `item_db_re` VALUES (4546,'Val\'khiri_Card','Val\'khiri Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (4547,'Upd_Byorgue_Card','Enhanced Byorgue Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'if(BaseJob==Job_Rogue) { bonus bMatkRate,10; bonus2 bAddClass,Class_All,10; bonus bMaxHPrate,getrefine()/2; } /* Adds a chance of inflicting Confuse on target when using Body Paint skill. */',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4548,'Upd_Salamander_Card','Enhanced Salamander Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSkillAtk,"WZ_FIREPILLAR",40; bonus2 bSkillAtk,"WZ_METEOR",40;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4549,'Upd_Maya_Puple_Card','Upd Maya Puple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision,1; bonus bAllStats,1; skill "AL_RUWACH",1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4549,'Upd_Maya_Puple_Card','Upd Maya Puple Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bIntravision; bonus bAllStats,1; skill "AL_RUWACH",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4550,'Upd_Bow_Guardian_Card','Upd Bow Guardian Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getiteminfo(getequipid(EQI_HAND_R),11)==W_BOW) { bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bCriticalLong,25+10*(getequiprefinerycnt(EQI_HAND_R)/4); bonus bHit,5; bonus3 bAutoSpell,"HT_PHANTASMIC",1,100; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4552,'Manny_Card','Manny Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bMaxHP,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4553,'Sid_Card','Sid Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMaxHP,100;',NULL,NULL); @@ -2793,7 +2794,7 @@ REPLACE INTO `item_db_re` VALUES (4577,'Elvira_Card','Elvira Card',6,20,NULL,10, REPLACE INTO `item_db_re` VALUES (4578,'Pyuriel_Card','Angry Student Pyuriel Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,30; bonus2 bSubRace,RC_All,-10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4579,'Lora_Card','Warrior Lola Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getiteminfo(getequipid(EQI_HAND_R),11) == W_MACE) { bonus bBaseAtk,20; bonus bCritical,10; } .@r = getrefine(); bonus bBaseAtk,.@r; bonus bCritical,.@r;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4580,'Kades_Card','Dark Guardian Kades Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Water,50; bonus2 bSubEle,Ele_Earth,50; bonus2 bSubEle,Ele_Fire,50; bonus2 bSubEle,Ele_Wind,50; bonus2 bSubEle,Ele_Dark,50; bonus2 bSubEle,Ele_Undead,50; bonus2 bSubEle,Ele_Holy,-100; bonus2 bSubEle,Ele_Ghost,-100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4581,'Rudo_Card','Rudo Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'autobonus "{ sc_start SC_SPEEDUP1,3000,50; bonus bAgi,44; heal 0,-40; }",3,3000,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4581,'Rudo_Card','Rudo Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'autobonus "{ bonus bAgi,44; heal 0,-40; }",500,3000,0,"{ sc_start SC_SPEEDUP1,3000,50; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4582,'Bungisngis_Card','Bungisngis Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,(getrefine()/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4583,'Engkanto_Card','Engkanto Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Poison,30; bonus2 bMagicAddEle,Ele_Poison,30; bonus2 bIgnoreDefRaceRate,RC_Plant,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4584,'Manananggal_Card','Manananggal Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bSPDrainValue,1; bonus bMaxSPrate,-1;',NULL,NULL); @@ -2887,7 +2888,7 @@ REPLACE INTO `item_db_re` VALUES (4685,'V_B_Magaleta_Card','True Margaretha Sori REPLACE INTO `item_db_re` VALUES (4686,'V_B_Katrinn_Card','True Kathryne Keyron Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"WL_CRIMSONROCK",20+.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4687,'V_B_Shecil_Card','True Cecil Damon Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20+.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4688,'V_B_Harword_Card','True Howard Alt-Eisen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"NC_AXETORNADO",20+.@b;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4689,'V_B_Seyren_Card','True Seyren Windsor Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"LK_IGNITIONBREAK",20+.@b;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4689,'V_B_Seyren_Card','True Seyren Windsor Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"RK_IGNITIONBREAK",20+.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4690,'V_B_Randel_Card','True Randel Lawrence Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"LG_EARTHDRIVE",20+.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4691,'V_B_Flamel_Card','True Flamel Emure Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"GN_CART_TORNADO",20+.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4692,'V_B_Celia_Card','True Celia Alde Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'if(getrefine() > 9) .@b+=20; if(getequipweaponlv(-1) == 4) .@b += 20; bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20+.@b;',NULL,NULL); @@ -3078,7 +3079,7 @@ REPLACE INTO `item_db_re` VALUES (4873,'Attack_Delay_3','DelayafterAttack3Lv',6, REPLACE INTO `item_db_re` VALUES (4875,'Bear\'s_Power','Bear\'s Power',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus2 "{ bonus bStr,200; bonus2 bHPLossRate,500,1000; }",20,5000,BF_WEAPON,"{ active_transform 1060,5000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Bigfoot Power !\\\"; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4876,'Runaway_Magic','Runaway Magic',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus "{ bonus bInt,200; bonus2 bSPLossRate,200,1000; }",10,10000,BF_MAGIC,"{ specialeffect2 EF_LAMADAN; }";',NULL,'heal 0,-2000;'); REPLACE INTO `item_db_re` VALUES (4877,'Speed_Of_Light','Speed of Light',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*TODO: Confirm the rate*/ autobonus "{ bonus bAspdRate,100; bonus bFlee,100; bonus2 bHPLossRate,400,1000; bonus2 bSPLossRate,50,1000;}",10,5000,BF_WEAPON,"{ specialeffect2 EF_AGIUP2; }";',NULL,'heal 0,-300;'); -REPLACE INTO `item_db_re` VALUES (4878,'Muscle_Fool','Muscle Fool',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus2 "{ bonus bDef,1000; bonus2 bAddRace,RC_All,-50; bonus bMatkRate,-50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD3; }";',NULL,'heal 0,-300;'); +REPLACE INTO `item_db_re` VALUES (4878,'Muscle_Fool','Muscle Fool',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus2 "{ bonus bVit,200; bonus2 bAddRace,RC_All,-50; bonus bMatkRate,-50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_GUARD3; }";',NULL,'heal 0,-300;'); REPLACE INTO `item_db_re` VALUES (4879,'Hawkeye','Hawkeye',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus "{ bonus bDex,200; bonus2 bSPLossRate,50,1000; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_BASH3D6; }";',NULL,'heal 0,-300;'); REPLACE INTO `item_db_re` VALUES (4880,'Lucky_Day','Lucky Day',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'autobonus "{ bonus bLuk,200; }",10,5000,BF_WEAPON|BF_MAGIC,"{ specialeffect2 EF_DANCE_BLADE_ATK; }";',NULL,'heal 0,-300;'); REPLACE INTO `item_db_re` VALUES (4881,'Attack_Delay_4','Attack Delay 4',6,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bAspdRate,10;',NULL,NULL); @@ -3150,9 +3151,52 @@ REPLACE INTO `item_db_re` VALUES (4947,'Thrift3','Economy Lv3',6,10,NULL,0,NULL, REPLACE INTO `item_db_re` VALUES (4948,'Skill_Delay1','After Skill Delay Lv1',6,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDelayrate,-2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4949,'Skill_Delay2','After Skill Delay Lv2',6,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDelayrate,-4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4950,'Skill_Delay3','After Skill Delay Lv3',6,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDelayrate,-6;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4994,'Rune_of_Strength_Lv_1','Rune of Strength Lv 1',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,5; } if (.@r>=10) { bonus bAtkRate,5; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4995,'Rune_of_Strength_Lv_2','Rune of Strength Lv 2',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,6; } if (.@r>=11) { bonus bStr,1; bonus bAtkRate,7; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (4996,'Rune_of_Strength_Lv_3','Rune of Strength_Lv 3',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,7; } if (.@r>=12) { bonus bStr,1; bonus bAtkRate,8; } if (.@r>=13) { bonus bStr,1; bonus bAtkRate,2; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4951,'Darkness_Drop','Darkness Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Dark,2; bonus2 bMagicAtkEle,Ele_Dark,2; bonus2 bSubEle,Ele_Dark,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4952,'Fire_Drop','Fire Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Fire,2; bonus2 bMagicAtkEle,Ele_Fire,2; bonus2 bSubEle,Ele_Fire,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4953,'Water_Drop','Water Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Water,2; bonus2 bMagicAtkEle,Ele_Water,2; bonus2 bSubEle,Ele_Water,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4954,'Earth_Drop','Earth Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Earth,2; bonus2 bMagicAtkEle,Ele_Earth,2; bonus2 bSubEle,Ele_Earth,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4955,'Holy_Drop','Holy Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Holy,2; bonus2 bMagicAtkEle,Ele_Holy,2; bonus2 bSubEle,Ele_Holy,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4956,'Recovery_Drop','Recovery Drop',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal,.@skills$[.@i],2; bonus2 bSkillHeal2,.@skills$[.@i],2; } /* TODO: Depending on some recovery items HP recovery amount + 2% */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4957,'Famitsus_Power','Famitsu\'s Power',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMaxHP,832;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4958,'Gemini','Gemini',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDelayrate,-1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4959,'Sagittarius','Sagittarius',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bLongAtkRate,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4960,'Aquarius','Aquarius',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bUseSPrate,-2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4961,'Aries','Aries',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatk,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4962,'Cancer','Cancer',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bAtk,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4963,'Taurus','Taurus',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bAtk,4; bonus bHit,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4964,'Capricorn','Capricorn',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bMagicAddRace,RC_All,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4965,'Pisces','Pisces',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bVariableCastrate,-2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4966,'Scorpio','Scorpio',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bAddRace,RC_All,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4967,'Leo','Leo',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bAspdRate,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4968,'Virgo','Virgo',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal,.@skills$[.@i],1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4969,'Libra','Libra',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'setarray .@skills$, "AL_HEAL", "PR_SANCTUARY", "AM_POTIONPITCHER", "AB_HIGHNESSHEAL", "AB_CHEAL"; for( .@i = 0; .@i < getarraysize(.@skills$); .@i++ ){ bonus2 bSkillHeal2,.@skills$[.@i],1; } /* TODO: Depending on some recovery items HP recovery amount + 1% */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4970,'Fire_Property_Reactor','Fire Property Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Fire;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4971,'Water_Property_Reactor','Water Property Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Water;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4972,'Earth_Property_Reactor','Earth Property Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Earth;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4973,'Wind_Property_Reactor','Wind Property Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDefEle,Ele_Wind;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4974,'Fire_Resistance_Reactor','Fire Resistance Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Fire,25; bonus2 bSubEle,Ele_Water,-25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4975,'Water_Resistance_Reactor','Water Resistance Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Water,25; bonus2 bSubEle,Ele_Wind,-25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4976,'Earth_Resistance_Reactor','Earth Resistance Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Earth,25; bonus2 bSubEle,Ele_Fire,-25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4977,'Wind_Resistance_Reactor','Wind Resistance Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Wind,25; bonus2 bSubEle,Ele_Earth,-25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4978,'Recovery_Reactor_101','Recovery Reactor 101',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) bonus2 bHPRegenRate,100,5000; else bonus2 bHPRegenRate,50,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4979,'Recovery_Reactor_102','Recovery Reactor 102',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) bonus2 bSPRegenRate,5,5000; else bonus2 bHPRegenRate,3,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4980,'Recovery_Reactor_201','Recovery Reactor 201',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) bonus2 bRegenPercentHP,100,5000; else bonus2 bRegenPercentHP,50,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4981,'Recovery_Reactor_202','Recovery Reactor 202',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) bonus2 bRegenPercentSP,100,5000; else bonus2 bRegenPercentSP,50,5000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4982,'STR_Supplement_Reactor','STR Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) { .@bonus = 10; } bonus bBaseAtk,.@bonus + 5*(readparam(bStr)/10);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4983,'INT_Supplement_Reactor','INT Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'if (getrefine()>=7) { .@bonus = 10; } bonus bMatk,.@bonus + 5*(readparam(bInt)/10);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4984,'DEF_Supplement_Reactor','DEF SupplementReactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bDef,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4985,'PD_Supplement_Reactor','PD Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bFlee2,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4986,'Attack_Supplement_Reactor','Attack Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bBaseAtk,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4987,'Magic_Supplement_Reactor','Magic Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatk,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4988,'HP_Supplement_Reactor','HP Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4989,'SP_Supplement_Reactor','SP Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMaxSPrate,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4990,'Frozen_Supplement_Reactor','Frozen Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bResEff,Eff_Freeze,10000;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4991,'ASPD_Supplement_Reactor','ASPD Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bAspd,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4992,'HPAbsorb1_Supplement_Reactor','HP Absorb Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bHPDrainRate,10,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4993,'SPAbsorb1_Supplement_Reactor','SP Absorb Supplement Reactor',6,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus2 bSPDrainRate,10,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4994,'Rune_of_Strength_Lv_1','Rune of Strength Lv 1',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,5; } if (.@r>=10) { bonus2 bAddClass,Class_All,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4995,'Rune_of_Strength_Lv_2','Rune of Strength Lv 2',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,6; } if (.@r>=11) { bonus bStr,1; bonus2 bAddClass,Class_All,7; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (4996,'Rune_of_Strength_Lv_3','Rune of Strength_Lv 3',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bStr,7; } if (.@r>=12) { bonus bStr,1; bonus2 bAddClass,Class_All,8; } if (.@r>=13) { bonus bStr,1; bonus2 bAddClass,Class_All,2; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4997,'Rune_of_Agility_Lv_1','Rune of Agility Lv 1',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bAgi,5; } if (.@r>=10) { bonus bFlee2,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4998,'Rune_of_Agility_Lv_2','Rune of Agility Lv 2',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bAgi,6; } if (.@r>=11) { bonus bAgi,1; bonus bFlee2,7; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (4999,'Rune_of_Agility_Lv_3','Rune of Agility Lv 3',6,20,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'.@r = getrefine(); if (.@r>=7) { bonus bAgi,7; } if (.@r>=12) { bonus bAgi,1; bonus bFlee2,5; } if (.@r>=13) { bonus bAgi,1; bonus bFlee2,5; }',NULL,NULL); @@ -3167,7 +3211,7 @@ REPLACE INTO `item_db_re` VALUES (5005,'Gas_Mask','Gas Mask',4,20,NULL,100,NULL, REPLACE INTO `item_db_re` VALUES (5006,'Machoman_Glasses','Machoman\'s Glasses',4,36000,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,63,2,512,NULL,'0',0,92,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5007,'Loard_Circlet','Grand Circlet',4,20,NULL,200,NULL,7,NULL,0,0xFFFFFFFE,63,2,256,NULL,'55',1,93,'bonus bStr,1; bonus bInt,1; bonus bLuk,1; bonus bMdef,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5008,'Puppy_Love','Puppy Love',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',0,94,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5009,'Safety_Helmet','Safety Helmet',4,20,NULL,500,NULL,7,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,95,'bonus bMdef,3; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5009,'Safety_Helmet','Safety Helmet',4,20,NULL,500,NULL,7,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,95,'bonus bMdef,3; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5010,'Indian_Hair_Piece','Indian Fillet',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,96,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5011,'Antenna','Aerial',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,97,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5012,'Ph.D_Hat','Ph.D Hat',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,98,NULL,NULL,NULL); @@ -3239,7 +3283,7 @@ REPLACE INTO `item_db_re` VALUES (5077,'Tulip_Hairpin','Tulip Hairpin',4,20,NULL REPLACE INTO `item_db_re` VALUES (5078,'Sea_Otter_Cap','Sea-Otter Hat',4,20,NULL,800,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',1,162,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5079,'Crossed_Hair_Band','X Hairpin',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,163,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5080,'Headgear_Of_Queen','Crown of Ancient Queen',4,20,NULL,400,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'45',1,164,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5081,'Mistress_Crown','Crown of Mistress',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'75',1,165,'bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5081,'Mistress_Crown','Crown of Mistress',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'75',1,165,'bonus bMaxSP,100; bonus bInt,2; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5082,'Mushroom_Band','Decorative Mushroom',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,166,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5083,'Red_Tailed_Ribbon','Red Ribbon',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'45',1,167,'bonus bMdef,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5084,'Lazy_Raccoon','Lazy Smokie',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,168,'bonus2 bResEff,Eff_Sleep,2000;',NULL,NULL); @@ -3317,7 +3361,7 @@ REPLACE INTO `item_db_re` VALUES (5155,'Granpa_Beard_F','Father\'s White Moustac REPLACE INTO `item_db_re` VALUES (5156,'Flu_Mask_F','Father\'s Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,8,'bonus bMatkRate,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5157,'Viking_Helm_','Orc Helm',4,20,NULL,500,NULL,9,NULL,1,0x000654E2,63,2,256,NULL,'0',1,86,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5158,'Holy_Bonnet_','Monk Hat',4,30000,NULL,100,NULL,10,NULL,1,0x00008110,63,2,256,NULL,'0',1,35,'bonus bMdef,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5159,'Golden_Gear_','Golden Gear',4,20,NULL,900,NULL,9,NULL,1,0xFFFFFFFE,63,2,256,NULL,'40',1,30,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5159,'Golden_Gear_','Golden Gear',4,20,NULL,900,NULL,9,NULL,1,0xFFFFFFFE,63,2,256,NULL,'40',1,30,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5160,'Magestic_Goat_','Majestic Goat',4,20,NULL,800,NULL,9,NULL,1,0x006444A2,63,2,256,NULL,'0',1,41,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5161,'Sharp_Gear_','Spiky Band',4,20,NULL,1000,NULL,12,NULL,1,0x0066D5F2,63,2,256,NULL,'50',1,43,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5162,'Bone_Helm_','Bone Helm',4,20,NULL,800,NULL,15,NULL,1,0x000444A2,63,2,256,NULL,'70',1,103,'bonus2 bSubEle,Ele_Dark,-15;',NULL,NULL); @@ -3360,7 +3404,7 @@ REPLACE INTO `item_db_re` VALUES (5198,'Drooping_Bunny','Drooping Bunny',4,10,NU REPLACE INTO `item_db_re` VALUES (5199,'Baseball_Cap_I','Baseball Cap',4,0,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,216,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5200,'Coppola','Coppola',4,10,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,252,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5201,'Party_Hat_B','Party Hat',4,20,NULL,300,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,144,'bonus bAllStats,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5202,'Pumpkin_Hat_','Fantastic Pumpkin-Head',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,206,'bonus2 bSubRace,RC_Demon,5; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,1500; bonus3 bAddMonsterDropItem,529,RC_Player,1500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5202,'Pumpkin_Hat_','Fantastic Pumpkin-Head',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,206,'bonus2 bSubRace,RC_Demon,5; bonus3 bAddMonsterDropItem,529,RC_DemiHuman,1500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5203,'Tongue_Mask','Smiling Mask',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,513,NULL,'0',0,253,'bonus bSpeedRate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5204,'Event_Pierrot_Nose','Rudolph\'s Nose',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,49,'bonus2 bResEff,Eff_Blind,3000; bonus2 bAddMonsterDropItem,12130,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5205,'Wreath','Emperor\'s Laurel Crown',4,20,NULL,1000,NULL,3,NULL,0,0xFFFFFFFF,63,2,768,NULL,'0',1,261,'bonus bAllStats,1; bonus bMdef,3;',NULL,NULL); @@ -3420,7 +3464,7 @@ REPLACE INTO `item_db_re` VALUES (5258,'Afro_Wig','Afro Wig',4,20,NULL,100,NULL, REPLACE INTO `item_db_re` VALUES (5259,'Elephant_Hat_','Elephant Hat',4,20,NULL,500,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,215,'bonus bVit,1; bonus3 bAutoSpell,"WZ_WATERBALL",3,10; skill "AL_HOLYWATER",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5260,'Cookie_Hat','Cookie Hat',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,217,'bonus bAgi,1; bonus bFlee2,5; bonus bCritAtkRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5261,'Silver_Tiara_','Silver Tiara',4,20,NULL,500,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,218,'bonus bInt,2; if(BaseClass==Job_Mage) bonus bMatkRate,(JobLevel/20); if(Baseclass==Job_Acolyte) bonus bUseSPrate,-(JobLevel/10); if(BaseClass==Job_Archer) bonus bMaxSP,(JobLevel*2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5262,'Gold_Tiara_','Golden Tiara',4,20,NULL,500,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,232,'bonus bStr,2; bonus bUnbreakableHelm,1; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5262,'Gold_Tiara_','Golden Tiara',4,20,NULL,500,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,232,'bonus bStr,2; bonus bUnbreakableHelm; if((readparam(bDex)<56)&&(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief)) bonus bDex,JobLevel/7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5263,'Ati_Atihan_Hat','Pagdayaw',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFE,63,2,769,NULL,'20',1,303,'bonus2 bSubEle,Ele_Water,1; bonus2 bSubEle,Ele_Fire,1; bonus2 bSubEle,Ele_Wind,1; bonus2 bAddEff,Eff_Curse,300;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5264,'Aussie_Flag_Hat','Australian Flag Hat',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,304,'bonus bAllStats,2;','specialeffect2 EF_GHOST; specialeffect2 EF_BAT; specialeffect2 EF_BAT2;',NULL); REPLACE INTO `item_db_re` VALUES (5265,'Apple_Of_Archer_C','Apple of Archer',4,1,NULL,0,NULL,12,NULL,0,0xFFFFFFFE,63,2,256,NULL,'1',0,72,'bonus bDex,4;',NULL,NULL); @@ -3447,7 +3491,7 @@ REPLACE INTO `item_db_re` VALUES (5285,'Vane_Hairpin','Vane Hairpin',4,20,NULL,3 REPLACE INTO `item_db_re` VALUES (5286,'Pecopeco_Hairband','Pecopeco Hairband',4,20,NULL,0,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',0,314,'bonus bSpeedRate,25; bonus bAspdRate,5; bonus bVariableCastrate,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5287,'Vacation_Hat','Vacation Hat',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',0,315,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5288,'Red_Glasses','Red Glasses',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,316,'bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5289,'Vanilmirth_Hat','Vanilmirth Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',0,317,'bonus bUnbreakableHelm,1; bonus3 bAutoSpell,"MG_FIREBOLT",1,50; bonus3 bAutoSpell,"MG_COLDBOLT",1,50; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,50; bonus bMdef,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5289,'Vanilmirth_Hat','Vanilmirth Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',0,317,'bonus bUnbreakableHelm; bonus3 bAutoSpell,"MG_FIREBOLT",1,50; bonus3 bAutoSpell,"MG_COLDBOLT",1,50; bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",1,50; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5290,'Drooping_Bunny_','Drooping Bunny',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,249,'bonus bDex,1; bonus bFlee,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5291,'Kettle_Hat','Kettle Hat',4,20,NULL,600,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,318,'bonus4 bAutoSpell,"SA_DELUGE",2,10,0; bonus3 bAutoSpell,"WZ_WATERBALL",3,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5292,'Dragon_Skull','Dragon Skull',4,20,NULL,800,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',1,319,'bonus2 bSubRace,RC_Dragon,5;',NULL,NULL); @@ -3493,7 +3537,7 @@ REPLACE INTO `item_db_re` VALUES (5331,'Corsair_C','Corsair C',4,1,NULL,0,NULL,1 REPLACE INTO `item_db_re` VALUES (5332,'Loki_Mask','Loki Mask',4,0,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,513,NULL,'20',0,346,'bonus bFlee2,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5333,'Radio_Antenna','Radio Antenna',4,0,NULL,1500,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',1,347,'bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; skill "MG_LIGHTNINGBOLT",1; bonus4 bAutoSpellWhenHit,"MG_THUNDERSTORM",5,30,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5334,'Angeling_Wanna_Fly','Flapping Angeling',4,0,NULL,700,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,348,'bonus bLuk,2; bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5335,'Jumping_Poring','Jumping Poring',4,0,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,349,'bonus bLuk,1; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5335,'Jumping_Poring','Jumping Poring',4,0,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,349,'bonus bLuk,1; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5336,'Guildsman_Recruiter','Guildsman Recruiter Hat',4,NULL,NULL,0,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',1,350,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5337,'Party_Recruiter_Hat','Party Recruiter Hat',4,0,NULL,0,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',1,351,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5338,'Bf_Recruiter_Hat','BF Recruiter Hat',4,0,NULL,0,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',1,352,NULL,NULL,NULL); @@ -3515,8 +3559,8 @@ REPLACE INTO `item_db_re` VALUES (5353,'Helm_Of_Sun_','Hat of the Sun God',4,20, REPLACE INTO `item_db_re` VALUES (5354,'Muslim_Hat_M','Muslim Hat M',4,0,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,1,256,NULL,'0',0,362,'bonus bVariableCastrate,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5355,'Muslim_Hat_F','Selendang',4,0,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,0,256,NULL,'0',0,363,'bonus bVariableCastrate,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5356,'Pumpkin_Hat_H','Festival Pumpkin Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,206,'bonus2 bSubRace,RC_Demon,5; bonus2 bAddRace,RC_Demon,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5357,'Wings_Of_Victory','Wings Of Victory',4,20,NULL,200,NULL,10,NULL,0,0xFFFFFFFF,63,2,768,NULL,'0',0,365,'bonus bMdef,10; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5358,'Pecopeco_Wing_Ears','Peco Ears',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,366,'bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5357,'Wings_Of_Victory','Wings Of Victory',4,20,NULL,200,NULL,10,NULL,0,0xFFFFFFFF,63,2,768,NULL,'0',0,365,'bonus bMdef,10; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5358,'Pecopeco_Wing_Ears','Peco Ears',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,366,'bonus bAgi,1; bonus bMdef,2; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5359,'J_Captain_Hat','Ship Captain Hat',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,367,'bonus bDex,1; bonus bMaxHP,100; bonus bLongAtkRate,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5360,'Whikebain_Ears','Hyuke\'s Black Cat Ears',4,20,NULL,200,NULL,4,NULL,0,0xFFFFFFFE,63,2,256,NULL,'45',1,368,'bonus bFlee,10; bonus bCritAtkRate,10; autobonus "{ bonus2 bIgnoreMdefRaceRate,RC_ALL,25; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_AGIUP; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5361,'Gang_Scarf','Gangster Scarf',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,369,'bonus bBaseAtk,5; if(BaseJob==Job_Rogue) skill "RG_GANGSTER",1;',NULL,NULL); @@ -3555,12 +3599,12 @@ REPLACE INTO `item_db_re` VALUES (5393,'Valentine_Hat','Love Valentine\'s Hat',4 REPLACE INTO `item_db_re` VALUES (5394,'Bubblegum_Lower','Bubblegum',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,572,'bonus2 bExpAddClass,Class_All,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5395,'Tiraya_Bonnet','Striped Hat',4,20,NULL,500,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,398,'bonus bMaxHP,100+(getrefine()*20); bonus bLuk,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5396,'Jasper_Crest','Jasper Crest',4,20,NULL,700,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,399,'bonus bDex,1; bonus2 bAddRace,RC_Undead,5; .@r = getrefine(); if (.@r<6) { bonus2 bAddEff2,Eff_Blind,10; } else if (.@r>8) { bonus bDex,2; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5397,'Scuba_Mask','Scuba Gear',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,400,'bonus2 bSubEle,Ele_Water,10; bonus2 bExpAddRace,RC_Fish,10; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5397,'Scuba_Mask','Scuba Gear',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,400,'bonus2 bSubEle,Ele_Water,10; bonus2 bExpAddRace,RC_Fish,10; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5398,'Bone_Head','Bone Head',4,20,NULL,1200,NULL,10,NULL,1,0x000444A2,18,2,256,NULL,'85',1,401,'bonus bStr,2; bonus bMdef,5; bonus2 bResEff,Eff_Stun,500; bonus2 bResEff,Eff_Bleeding,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5399,'Mandragora_Cap','Mandragora Cap',4,20,NULL,300,NULL,5,NULL,1,0x00CFFF80,18,2,256,NULL,'85',0,402,'bonus bVit,3; bonus3 bAutoSpellWhenHit,"DC_SCREAM",5,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5400,'Fox_Hat','Fox Hat',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,0,769,NULL,'0',0,403,'bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5401,'Black_Glasses','Black Frame Glasses',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,404,'bonus bInt,1; bonus bMdef,2; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5402,'Mischievous_Fairy','Mischievous Fairy',4,10,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,405,'bonus bUnbreakableHelm,1; bonus bFlee2,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5401,'Black_Glasses','Black Frame Glasses',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,404,'bonus bInt,1; bonus bMdef,2; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5402,'Mischievous_Fairy','Mischievous Fairy',4,10,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,405,'bonus bUnbreakableHelm; bonus bFlee2,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5403,'Fish_In_Mouth','Fish In Mouth',4,10,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'30',0,406,'bonus2 bAddMonsterDropItem,579,500; bonus2 bAddItemHealRate,579,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5404,'Blue_Ribbon','Blue Ribbon',4,10,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'45',1,407,'bonus4 bAutoSpellWhenHit,"AC_CONCENTRATION",2,7,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5405,'Filir_Hat','Filir Hat',4,10,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'80',0,408,'bonus bShortWeaponDamageReturn,1;',NULL,NULL); @@ -3570,7 +3614,7 @@ REPLACE INTO `item_db_re` VALUES (5408,'Old_Bandanna','Old Bandana',4,0,NULL,0,N REPLACE INTO `item_db_re` VALUES (5409,'New_Cowboy_Hat','Purple Cowboy Hat',4,20,NULL,500,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,411,'bonus bInt,2; bonus bVit,2; bonus bMaxSP,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5410,'Bread_Bag2','Brown Paperbag Hat',4,20,NULL,200,NULL,6,NULL,0,0xFFFFFFFF,63,2,769,NULL,'0',0,412,'bonus bMaxHP,100; bonus2 bResEff,Eff_Stun,400; bonus2 bSubRace,RC_DemiHuman,4; bonus2 bSubRace,RC_Player,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5411,'White_Snake_Hat','White Snake Hat',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,413,'bonus bDex,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5412,'Sweet_Candy','Sweet Candy',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,414,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5412,'Sweet_Candy','Sweet Candy',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,414,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5413,'Popcorn_Hat','Pop Corn Hat',4,20,NULL,300,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,415,'bonus2 bSubEle,Ele_Wind,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5414,'Campfire_Hat','Camp Fire Hat',4,20,NULL,300,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,416,'bonus2 bSubEle,Ele_Fire,10; bonus4 bAutoSpellWhenHit,"MG_FIREBALL",5,100,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5415,'Poring_Cake_Cap','Poring Cake Hat',4,20,NULL,1000,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'40',1,417,'bonus bMdef,5; bonus bCritical,5; bonus bFlee,5; bonus bFlee2,5; bonus bAspdRate,5; bonus bVariableCastrate,-5; bonus bDelayRate,-5;',NULL,NULL); @@ -3630,7 +3674,7 @@ REPLACE INTO `item_db_re` VALUES (5468,'Parade_Cap','Parade Hat',4,20,NULL,800,N REPLACE INTO `item_db_re` VALUES (5469,'Noble_Hat','Musketeer Hat',4,20,NULL,300,NULL,4,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,466,'bonus bDex,3; bonus bFlee,3; .@r = getrefine(); if(.@r>=7){ bonus bFlee,3; bonus bLongAtkRate,3; } if(.@r>=9){ bonus bFlee,4; bonus bLongAtkRate,2; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5470,'Eyes_Of_Darkness','Eye Of Darkness',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,467,'bonus bDex,1; bonus2 bResEff,Eff_Blind,10000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5471,'Hairband_Of_Reginleif','Hairband Of Reginleif',4,20,NULL,800,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,468,'bonus2 bSubEle,Ele_Water,3; bonus2 bSubEle,Ele_Fire,3; bonus2 bSubEle,Ele_Undead,3; bonus2 bSubEle,Ele_Ghost,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,469,'bonus3 bAddMonsterDropItem,554,RC_DemiHuman,200; bonus3 bAddMonsterDropItem,554,RC_Player,200;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5472,'Red_White_Hat','Red Hat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,469,'bonus3 bAddMonsterDropItem,554,RC_DemiHuman,200;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5473,'Forceps_Hairpin','Nipper Crab Hairpin',4,20,NULL,500,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,470,'bonus3 bAutoSpellWhenHit,"MG_COLDBOLT",1,30; bonus3 bAddMonsterDropItem,991,RC_Fish,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5474,'Notice_Board','AFK Hat',4,20,NULL,700,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,471,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5475,'Cube_Mask','Mask Cube',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,513,NULL,'0',0,472,'bonus bAllStats,1;',NULL,NULL); @@ -3656,7 +3700,7 @@ REPLACE INTO `item_db_re` VALUES (5494,'Spinx_Helm_I','Sphinx Hat',4,0,NULL,0,NU REPLACE INTO `item_db_re` VALUES (5495,'Power_Of_Thor','Power Of Thor',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,493,'bonus bInt,1; bonus bDex,1; bonus bMdef,3; bonus bFlee,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5496,'Dice_Hat','Dice Hat',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'50',0,494,'bonus bLuk,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5497,'King_Tiger_Doll_Hat','King Tiger Doll Hat',4,20,NULL,400,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,495,'bonus bStr,2; bonus bDex,2; bonus2 bAddRace,RC_Brute,10; .@r = getrefine(); autobonus "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*getrefine(); }",3*.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Eddga Power !\\\"; }"; autobonus2 "{ bonus2 bSPLossRate,5,1000; bonus bBaseAtk,25*getrefine(); }",.@r,3000,BF_NORMAL,"{ active_transform 1115,3000; specialeffect2 EF_POTION_BERSERK; showscript \\\"Eddga Power !\\\"; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5498,'Wondering_Wolf_Helm','Wandering Wolf Helm',4,20,NULL,600,NULL,5,NULL,1,0xFFFFFFFE,63,2,768,NULL,'1',0,490,'bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5498,'Wondering_Wolf_Helm','Wandering Wolf Helm',4,20,NULL,600,NULL,5,NULL,1,0xFFFFFFFE,63,2,768,NULL,'1',1,490,'bonus bAgi,5; bonus bFlee,10; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Brute,10; if(getrefine()>=7){ bonus2 bAddEff,Eff_Bleeding,10; } if(getrefine()>=9){ bonus3 bAutoSpellWhenHit,"MC_LOUD",1,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5499,'Pizza_Hat','Pizza Hat',4,20,NULL,600,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,487,'skill "SM_PROVOKE",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5500,'Icecream_Hat','Icecream Hat',4,0,NULL,300,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,488,'bonus bMdef,3; skill "MG_FROSTDIVER",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5501,'Pirate\'s_Pride','Pirate\'s Pride',4,0,NULL,100,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,496,'bonus2 bAddRace2,RC2_Ninja,5; bonus2 bSubRace2,RC2_Ninja,5;',NULL,NULL); @@ -3689,7 +3733,7 @@ REPLACE INTO `item_db_re` VALUES (5527,'Lunatic_Hat','Lunatic Hat',4,20,NULL,300 REPLACE INTO `item_db_re` VALUES (5528,'King_Frog_Hat','Frog King Hat',4,20,NULL,500,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'30',0,522,'bonus bAgi,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5529,'Evil\'s_Bone_Hat','Satanic Bone Helm',4,20,NULL,600,NULL,6,NULL,1,0xFFFFFFFF,63,2,768,NULL,'70',1,523,'bonus bStr,2; bonus bInt,2; bonus bMdef,2; bonus2 bSubEle,Ele_Neutral,5; skill "WZ_FROSTNOVA",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5530,'Raven_Cap','Raven Cap',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,524,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5531,'B_Dragon_Hat','Baby Dragon Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,525,'bonus bDex,2; skill "TF_DOUBLE",max(getskilllv("TF_DOUBLE"),5);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5531,'B_Dragon_Hat','Baby Dragon Hat',4,45000,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,525,'bonus bDex,2; .@bonus = max(getskilllv("TF_DOUBLE"), 5); skill "TF_DOUBLE",.@bonus; bonus bDoubleRate,.@bonus * 5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5532,'Pirate_Dagger_J','Pirate Dagger',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',1,327,'bonus bShortWeaponDamageReturn,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5533,'Emperor_Wreath_J','Emperor Wreath',4,20,NULL,800,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'80',1,261,'bonus bAllStats,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5534,'Fox_Hat_J','Fox Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,513,NULL,'70',0,403,'bonus bAgi,1; bonus bFlee2,2;',NULL,NULL); @@ -3712,13 +3756,13 @@ REPLACE INTO `item_db_re` VALUES (5550,'Taurus_Crown','Taurus Crown',4,20,NULL,3 REPLACE INTO `item_db_re` VALUES (5551,'Holy_Egg_Hat','Holy Egg Hat',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,537,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5552,'Fest_Lord_Circlet','Festival Grand Circlet',4,0,NULL,0,NULL,8,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,93,'bonus bStr,3; bonus bInt,3; bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5553,'Fest_Bunny_Band','Festival Bunny Band',4,0,NULL,0,NULL,7,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,15,'bonus bMdef,4; bonus2 bSubRace,RC_DemiHuman,9; bonus2 bSubRace,RC_Player,9;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5554,'Octopus_Hat','Octopus Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,538,'bonus bMdef,3; bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5554,'Octopus_Hat','Octopus Hat',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,538,'bonus bMdef,3; bonus3 bAutoSpell,"SM_PROVOKE",5,10; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5555,'Leaf_Cat_Hat','Leaf Cat Hat',4,20,NULL,100,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,539,'bonus bAgi,2; bonus3 bAutoSpellWhenHit,"AL_HEAL",3,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5556,'Fur_Seal_Hat','Seal Hat',4,20,NULL,500,NULL,3,NULL,0,0xFFFFFFFF,63,2,769,NULL,'55',1,540,'bonus bInt,1; bonus3 bAutoSpell,"WZ_FROSTNOVA",1,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5557,'Wild_Rose_Hat','Wild Rose Hat',4,20,NULL,500,NULL,6,NULL,1,0xFFFFFFFE,63,2,256,NULL,'20',1,541,'bonus bAgi,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5558,'Saci_Hat','Luxury Hat',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,542,'bonus3 bAddMonsterDropItem,510,RC_Plant,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5559,'Piece_Of_White_Cloth_E','Piece Of White Cloth',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,543,'bonus2 bAddClass,Class_All,6; bonus bMatkRate,6; bonus bLongAtkRate,6; bonus bHealPower,6; bonus bVariableCastrate,-20; bonus bAspd,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5560,'Bullock_Helm_J','Bullock Helm',4,20,NULL,3000,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'75',1,322,'bonus bMaxHP,100; bonus bNoKnockback,0; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5560,'Bullock_Helm_J','Bullock Helm',4,20,NULL,3000,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'75',1,322,'bonus bMaxHP,100; bonus bNoKnockback; bonus2 bSubEle,Ele_Neutral,-20; bonus2 bSubEle,Ele_Fire,-20; bonus2 bSubEle,Ele_Water,-20; bonus2 bSubEle,Ele_Wind,-20; bonus2 bSubEle,Ele_Earth,-20; bonus2 bSubEle,Ele_Dark,-20; bonus2 bSubEle,Ele_Holy,-20; bonus2 bSubEle,Ele_Ghost,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5561,'Rabbit_Magic_Hat_J','Magic Rabbit Hat',4,0,NULL,800,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,497,'bonus bInt,1; bonus bMaxSP,50; bonus4 bAutoSpellWhenHit,"MG_FIREBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_COLDBOLT",3,10,3; bonus4 bAutoSpellWhenHit,"MG_LIGHTNINGBOLT",3,10,3; bonus3 bAutoSpellWhenHit,"AL_HEAL",1,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5562,'Good_Wedding_Veil_J','Luxurious Wedding Veil',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,768,NULL,'45',0,489,'bonus bMdef,10; bonus bVariableCastrate,-3; bonus bUseSPrate,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5563,'Dolor_Hat','Dolor Hat',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',0,547,'bonus3 bAutoSpell,"PR_LEXAETERNA",1,15;',NULL,NULL); @@ -3749,7 +3793,7 @@ REPLACE INTO `item_db_re` VALUES (5587,'Mosquito_Coil_1Use','Mosquito Coil',4,0, REPLACE INTO `item_db_re` VALUES (5588,'Leo_Crown','Leo Crown',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,565,'bonus bStr,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bDef,1; bonus bFlee,10; bonus3 bAutoSpell,"TK_SEVENWIND",4,50; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5589,'Leo_Diadem','Leo Diadem',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,566,'bonus bDex,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bFlee,10; bonus bAspdRate,3; autobonus "{ bonus bSplashRange,1; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5590,'K_Poring_Cake_Cap','Poring Cake Hat',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,417,'bonus bLuk,3; bonus bMdef,5; bonus bMaxHP,BaseLevel*2; bonus bMaxSP,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5591,'Desert_Prince','Desert Prince',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',0,567,'bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5591,'Desert_Prince','Desert Prince',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',0,567,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5592,'Sigrun\'s_Wing','Sigrun\'s Wings',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'80',0,568,'if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bAspd,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||Class==Job_Ninja||Class==Job_Soul_Linker){ bonus bMatk,5; bonus bHealPower,2; } else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bLongAtkRate,2; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,120; bonus bMaxSP,60; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5593,'K_Rabbit_Bonnet','Rabbit Bonnet',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,63,2,768,NULL,'1',1,549,'bonus bBaseAtk,10; bonus bMatk,10; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3; bonus bDelayRate,-3; if(getrefine()>6) { bonus2 bSubDefEle,Ele_All,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5594,'Donut_In_Mouth','Donut In Mouth',4,20,NULL,50,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,569,'bonus2 bHPRegenRate,1,10000; bonus bMaxHP,100;',NULL,NULL); @@ -3814,7 +3858,7 @@ REPLACE INTO `item_db_re` VALUES (5652,'F_Magestic_Goat_C','F Magestic Goat C',4 REPLACE INTO `item_db_re` VALUES (5653,'Darkness_Helm_J','Darkness Helm',4,20,NULL,500,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'70',1,586,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5654,'Holy_Marching_Hat_J','Holy Marching Hat',4,20,NULL,200,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,587,'bonus bInt,1; bonus bMdef,5; bonus bMatkRate,2; .@r = getrefine(); if(.@r>=7) bonus bHealPower,5; if(.@r>=9){ bonus bMatk,5; bonus bHealPower,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5655,'Dark_Snake_Lord_Hat_J','Evil Snake Lord Hat',4,20,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'60',1,372,'bonus bInt,2; bonus bAgi,2; bonus bDex,-2; autobonus "{ bonus bVariableCastrate,-50; bonus bFlee,30; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5656,'Scooter_Hat_J','Scooter Helmet',4,20,NULL,1000,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,588,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5656,'Scooter_Hat_J','Scooter Helmet',4,20,NULL,1000,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,588,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5657,'Antique_Pipe_J','Captain\'s Pipe',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'30',0,383,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5658,'Imp_Hat','Imp Hat',4,20,NULL,400,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,589,'bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5659,'Sleepr_Hat','Sleeper Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL); @@ -3831,14 +3875,14 @@ REPLACE INTO `item_db_re` VALUES (5669,'Poring_Party_Hat_J','Poring Party Hat J' REPLACE INTO `item_db_re` VALUES (5670,'Aniv_Star_Hat','Aniv Star Hat',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,599,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (5671,'Drooping_Morocc_Minion','Drooping Morocc Minion',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'70',0,600,'bonus bSPGainValue,2; bonus3 bAutoSpellWhenHit,"NPC_CRITICALWOUND",2,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5672,'Southern_Cross','Southern Cross',4,20,NULL,600,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,601,'bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5673,'Home_Cherry_Blossom','Home Cherry Blossom',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,602,'bonus bNoCastCancel,0; bonus bVariableCastrate,35;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5673,'Home_Cherry_Blossom','Home Cherry Blossom',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,602,'bonus bNoCastCancel; bonus bVariableCastrate,35;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5674,'Pig_Moneybox','Pig Moneybox',4,20,NULL,1000,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,603,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5675,'Poring_Letter','Poring Letter',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,604,'bonus2 bAddMonsterDropItem,619,10; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5675,'Poring_Letter','Poring Letter',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,604,'bonus2 bAddMonsterDropItem,619,10; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5676,'Scorpio_Crown','Scorpio Crown',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,605,'bonus bAspdRate,3; bonus2 bSubEle,Ele_Water,5; .@r = getrefine(); if (.@r>6) { bonus3 bAutoSpell,"TK_SEVENWIND",3,20; } if (.@r>7) { bonus bAspdRate,2; } if (.@r>8) { bonus3 bAutoSpell,"WZ_FROSTNOVA",5,10; } if (.@r>9) { bonus bAspdRate,2; bonus bBaseAtk,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5677,'Scorpio_Diadem','Scorpio Diadem',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,606,'bonus bDex,2; if (getrefine()>6) { bonus bDex,1; bonus bAtk,5; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5678,'Notation_Hairband','Notation Hairband',4,200,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,607,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5678,'Notation_Hairband','Notation Hairband',4,200,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,607,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5679,'Engineer_Cap','Engineer Cap',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,608,'bonus2 bAddRace,RC_Formless,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5680,'Hawkeyes','Hawkeyes',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,609,'bonus bHit,10; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5680,'Hawkeyes','Hawkeyes',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,609,'bonus bHit,10; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5681,'F_Ribbon_Green','Green Ribbon',4,800,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,0,256,NULL,'0',1,244,'bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5682,'Triangle_Rune_Cap','Triangle Rune Cap',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,610,'bonus bInt,1; bonus bHealPower,2; if (getrefine() > 6) { bonus bMatk,10; bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",8,150,BF_MAGIC,0; } else { bonus5 bAutoSpellWhenHit,"NPC_MAGICMIRROR",7,150,BF_MAGIC,0; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5683,'Majestic_Goat_Repl','Baphomet Horns',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,41,NULL,NULL,NULL); @@ -3849,8 +3893,8 @@ REPLACE INTO `item_db_re` VALUES (5687,'Viking_Helm_Repl','Orc Helm',4,20,NULL,1 REPLACE INTO `item_db_re` VALUES (5688,'2009Love_Daddy','2009 Love Dad',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,611,'bonus bVit,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5689,'Queen_Ant_Diadem','Queen Ant Diadem',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'75',1,612,'bonus3 bAutoSpellWhenHit,"MG_SIGHT",1,5; bonus2 bSubRace,RC_Insect,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5690,'Red_Wing_Hat','Red Wing Hat',4,20,NULL,600,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,613,'bonus bHPrecovRate,20; bonus bSPrecovRate,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5691,'Catain_Bandanna','Sailor\'s Bandana',4,20,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,542,'bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; bonus2 bResEff,Eff_Poison,2000; bonus bUnbreakableHelm,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5692,'Sea_Cat_Hat','Sea Cat Hat',4,20,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,539,'bonus bDex,1; bonus2 bResEff,Eff_Curse,2000; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5691,'Catain_Bandanna','Sailor\'s Bandana',4,20,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,542,'bonus bDex,1; bonus2 bSubEle,Ele_Poison,20; bonus2 bResEff,Eff_Poison,2000; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5692,'Sea_Cat_Hat','Sea Cat Hat',4,20,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,539,'bonus bDex,1; bonus2 bResEff,Eff_Curse,2000; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5693,'No_Fear_Underware','No Fear Underwear',4,0,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'20',0,30,'bonus bStr,1; bonus bInt,1; bonus bDex,1; bonus bMaxHP,700; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5694,'No_Fear_P_Headgear','No Fear P Headgear',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFE,63,2,256,NULL,'20',0,614,'bonus bVit,1; bonus bMaxHP,100; bonus2 bSubRace,RC_DemiHuman,2; bonus2 bSubRace,RC_Player,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5695,'E_Blue_Drooping_Kitty','E Blue Drooping Kitty',4,250000,NULL,500,NULL,1,NULL,0,0,7,2,256,NULL,'0',1,277,'bonus bMdef,15;',NULL,NULL); @@ -3928,7 +3972,7 @@ REPLACE INTO `item_db_re` VALUES (5766,'Amistr_Cap','Amistr Cap',4,20,NULL,500,N REPLACE INTO `item_db_re` VALUES (5767,'Samurai_Mask','Samurai Mask',4,20,NULL,300,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,644,'bonus2 bAddClass,Class_All,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5768,'Sakura_Coronet','Sakura Coronet',4,20,NULL,800,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,645,'bonus bMdef,3; bonus bMaxSP,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5769,'Gold_Angel_Sculpture','Gold Angel Sculpture',4,100,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'70',0,646,'skill "RG_GRAFFITI",1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5770,'Splash_Hat','Splash Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,649,'autobonus "{ sc_start SC_WINDWEAPON,180000,1; }",3,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5770,'Splash_Hat','Splash Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,649,'autobonus "{}",3,180000,BF_WEAPON,"{ sc_start SC_WINDWEAPON,180000,1; specialeffect2 EF_ENHANCE; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5771,'Family_Hat','Family Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,650,'bonus bDex,1; bonus bMdef,1; bonus bMaxHPrate,2; bonus bMaxSPrate,2; skill "PR_MAGNIFICAT",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5772,'Red_Navy_Hat','Red Navy Hat',4,3000,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'95',1,651,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5773,'Navy_Beret','Navy Beret',4,3000,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'95',1,652,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); @@ -3946,7 +3990,7 @@ REPLACE INTO `item_db_re` VALUES (5784,'PinkBunny_Hairband','PinkBunny Hairband' REPLACE INTO `item_db_re` VALUES (5785,'Green_Bunny_Hairband','Green Bunny Hairband',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,664,'bonus bStr,2; bonus bInt,1; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5786,'Ancient_Elven_Ear','Ancient Elven Ear',4,10,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,665,'bonus bLuk,1; bonus bMaxHP,100; bonus bMaxSP,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5787,'Tha_Maero_Mask','Tha Maero Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,513,NULL,'30',0,666,'bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5788,'3D_Glasses','3D Glasses',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,661,'bonus2 bMagicAddRace,RC_Formless,4; bonus2 bSubEle,Ele_Neutral,5; bonus bUnbreakableHelm,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5788,'3D_Glasses','3D Glasses',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,661,'bonus2 bMagicAddRace,RC_Formless,4; bonus2 bSubEle,Ele_Neutral,5; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5789,'Thanatos_Mal_Mask','Thanatos Mal Mask',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,513,NULL,'30',0,667,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5790,'Holy_Mom_Love','TM',4,20,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,768,NULL,'45',1,610,'bonus2 bSubRace,RC_Demon,-5; bonus2 bSubRace,RC_Undead,-5; bonus3 bAutoSpell,"AL_BLESSING",1,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5791,'Tenkaippin_Ramen','Tenkaippin Ramen',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',0,668,'bonus bInt,-1; bonus bDex,4;',NULL,NULL); @@ -4019,13 +4063,13 @@ REPLACE INTO `item_db_re` VALUES (5857,'Cool_FB_Hat','Cool FB Hat',4,20,NULL,600 REPLACE INTO `item_db_re` VALUES (5858,'Victory_FB_Hat','Victory FB Hat',4,20,NULL,600,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,673,'bonus bInt,2; bonus bDex,2; autobonus "{ bonus bMatkRate,5; bonus bDef,-30; }",3,10000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5859,'Glory_FB_Hat','Glory FB Hat',4,20,NULL,600,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,674,'bonus bAllStats,1; bonus bAspd,1; bonus bBaseAtk,BaseLevel/7; bonus bMatk,BaseLevel/7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5864,'Shadow_Booster','Magical Booster',4,10,NULL,300,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',1,873,'bonus bAspd,1; bonus bDelayrate,-1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5868,'Bushy_Moustache','Bushy Moustache',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,1004,'bonus bUnbreakableHelm,1; bonus bBaseAtk,10; bonus bMatk,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5868,'Bushy_Moustache','Bushy Moustache',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,1004,'bonus bUnbreakableHelm; bonus bBaseAtk,10; bonus bMatk,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5869,'Mimic_Egg_Shell','Mimic Egg Shell',4,10,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,999,'bonus2 bAddEffWhenHit,Eff_Stone,600; bonus bSpeedRate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5870,'Bunny_Egg_Shell','Bunny Egg Shell',4,10,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1000,'bonus bAgi,3; bonus bAspd,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5871,'Picky_Egg_Shell','Picky Egg Shell',4,10,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1001,'bonus bVit,3; bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5873,'Helmet_Of_Siegfried','Helmet Of Siegfried',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1055,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5874,'Circlet_Of_Kriemhild','Circlet Of Kriemhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1056,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5875,'Diadem_Of_Bruenhild','Diadem Of Bruenhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1057,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5873,'Helmet_Of_Siegfried','Helmet Of Siegfried',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1055,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",5,5; bonus2 bHPLossRate,600,1000; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5874,'Circlet_Of_Kriemhild','Circlet Of Kriemhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1056,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"PR_KYRIE",9,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5875,'Diadem_Of_Bruenhild','Diadem Of Bruenhild',4,20,NULL,600,NULL,7,NULL,1,0x000444A2,63,2,256,NULL,'60',1,1057,'bonus bAllStats,5; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Dragon,5; bonus3 bAutoSpellWhenHit,"SM_ENDURE",8,5; bonus2 bHPLossRate,400,1000; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5881,'Weissbier_Hat','Weissbier Hat',4,20,NULL,300,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,1079,'bonus bMaxHPrate,3; bonus bMaxSPrate,3; bonus bDex,10; if(getrefine()>6){ bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bDex,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5882,'Red_Wizardry_Hat_C','Red Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,282,'bonus bInt,2; bonus bMaxSP,150;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5883,'White_Wizardry_Hat_C','Gray Mage Hat C',4,20,NULL,300,NULL,1,NULL,0,0x00810204,63,2,256,NULL,'0',1,283,'bonus bInt,2; bonus bMaxSP,150;',NULL,NULL); @@ -4037,24 +4081,31 @@ REPLACE INTO `item_db_re` VALUES (5892,'RCC2013_1ST_CROWN','RCC2013 1ST CROWN',4 REPLACE INTO `item_db_re` VALUES (5893,'RCC2013_2ND_CROWN','RCC2013 2ND CROWN',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1107,'bonus bAllStats,4; skill "AL_TELEPORT",1;','sc_start SC_SPEEDUP0,-1,25;','sc_end SC_SPEEDUP0;'); REPLACE INTO `item_db_re` VALUES (5894,'RCC2013_3RD_CROWN','RCC2013 3RD CROWN',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1108,'bonus bAllStats,3; skill "AL_TELEPORT",1;','sc_start SC_SPEEDUP0,-1,25;','sc_end SC_SPEEDUP0;'); REPLACE INTO `item_db_re` VALUES (5895,'RCC2013_ANV_Hat','RCC2013 ANV Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1109,'bonus bAllStats,1; bonus2 bAddClass,Class_All,2; bonus bMatkRate,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5906,'Oni_Horns_','Oni Horns',4,0,NULL,20,NULL,10,NULL,1,0x00001000,63,2,256,NULL,'100',1,1127,'bonus2 bSkillAtk,"GC_COUNTERSLASH",(10*getskilllv("GC_WEAPONBLOCKING")); .@r = getrefine(); if(.@r > 6){ bonus bAtk,20; bonus bHit,5; } if(.@r > 9){ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5900,'Divine_Guard_Hat','Divine Guard Hat',4,0,NULL,200,NULL,10,NULL,1,0x00004000,56,2,256,NULL,'100',1,1121,'.@r = getrefine(); bonus2 bSubSize,Size_All,5; if(.@r>=7) { .@level = getskilllv("AL_HEAL"); bonus3 bAutoSpellWhenHit,"AL_HEAL",(.@level ? .@level : 5),10; } if(.@r>=9) { bonus2 bSkillAtk,"LG_RAYOFGENESIS",20; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5901,'Focus_Beret','Focus Beret',4,0,NULL,200,NULL,10,NULL,1,0x00008000,56,2,256,NULL,'100',1,1122,'.@r = getrefine(); bonus4 bAutoSpellOnSkill,"SR_DRAGONCOMBO","SR_FALLENEMPIRE",max(getskilllv("SR_FALLENEMPIRE"),1),100; if(.@r>=7) { autobonus "{ bonus bAspd,2; }",30,5000,0,"{ specialeffect2 EF_ENHANCE; }"; } if(.@r>=9) { bonus2 bSkillAtk,"SR_FALLENEMPIRE",30; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5902,'Harvester_Hat','Harvester Hat',4,0,NULL,200,NULL,10,NULL,1,0x00040000,56,2,256,NULL,'100',1,1123,'.@r = getrefine(); bonus2 bAddMonsterDropItem,6211,100; bonus2 bAddMonsterDropItem,6212,100; if(.@r>=7) { bonus2 bAddMonsterDropItem,6210,50; } if(.@r>=9) { bonus2 bSkillAtk,"GN_CARTCANNON",15; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5903,'Deadman_Bandana','Deadman Bandana',4,0,NULL,200,NULL,15,NULL,1,0x00810204,63,2,256,NULL,'99',1,1124,'.@r = getrefine(); .@rate = 1; bonus bCritical,.@r*2; bonus bFixedCastrate,-2; bonus3 bAutoSpellWhenHit,"SL_SWOO",getskilllv("SL_SWOO"),(.@rate*10); if (.@r>=7) { bonus bMatk,20; .@rate += 3; } if(.@r>=9) { bonus bVariableCastrate,-20; bonus2 bSkillUseSP,"SL_STUN",5; bonus2 bSkillUseSP,"SL_SMA",5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5904,'Inconspicuous_Hat','Inconspicuous Hat',4,0,NULL,200,NULL,10,NULL,1,0x00020000,56,2,256,NULL,'100',1,1125,'.@r = getrefine(); if (.@r>=9) { .@matk = 5; } bonus bMatkRate,(7+.@matk); if (.@r>=7) { bonus bMatk,(readparam(bInt)/5)*2; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5905,'Lyrica_Hat','Lyrica Hat',4,0,NULL,200,NULL,10,NULL,1,0x00080000,56,2,256,NULL,'100',1,1126,'.@r = getrefine(); bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",15; if(.@r>=7) { bonus bFixedCastrate,4*(getskilllv("WM_LESSON")); } if(.@r>=9) { bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5906,'Oni_Horns_','Oni Horns',4,0,NULL,20,NULL,10,NULL,1,0x00001000,56,2,256,NULL,'100',1,1127,'bonus2 bSkillAtk,"GC_COUNTERSLASH",(10*getskilllv("GC_WEAPONBLOCKING")); .@r = getrefine(); if(.@r > 6){ bonus bAtk,20; bonus bHit,5; } if(.@r > 9){ bonus3 bAutoSpell,"GC_CROSSIMPACT",1,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5907,'Sea_Captain_Hat','Sea Captain Hat',4,0,NULL,200,NULL,20,NULL,1,0x00000400,56,2,256,NULL,'100',1,1128,'bonus2 bSkillAtk,"NC_AXEBOOMERANG",20; .@dmg = 20; .@r = getrefine(); if (.@r>=7) { .@dmg += getskilllv("BS_WEAPONRESEARCH"); } if (.@r>=9) { .@dmg += getskilllv("NC_TRAININGAXE"); } bonus2 bSkillAtk,"NC_AXETORNADO",.@dmg;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5914,'Earmuff_Flowerform','C Flutter Butterfly',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1378,'hateffect HAT_EF_FLUTTER_BUTTERFLY,true;',NULL,'hateffect HAT_EF_FLUTTER_BUTTERFLY,false;'); REPLACE INTO `item_db_re` VALUES (5917,'Yellow_Scarf','Yellow Scarf',4,0,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'90',0,1170,'bonus bLongAtkDef,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5918,'Gambler_Seal','Gambler Seal',4,0,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,NULL,0,1202,'bonus bCritical,3; bonus bCritAtkRate,3; bonus2 bSubSkill,"RA_ARROWSTORM",10; bonus2 bSubSkill,"SR_GATEOFHELL",10; .@dex = readparam(bDex); .@luk = readparam(bLuk); bonus bCritAtkRate,-(.@dex/10)*2; bonus bCritical,.@luk/10; bonus bBaseAtk,(.@luk/10)*2; bonus bMatk,(.@luk/10)*2; if (.@luk > 120) { bonus bCritical,10; bonus bCritAtkRate,10; bonus2 bSubSkill,"RA_ARROWSTORM",30; bonus2 bSubSkill,"SR_GATEOFHELL",30; } else if (.@luk > 108) { bonus bCritical,5; bonus bCritAtkRate,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5918,'Gambler_Seal','Gambler Seal',4,0,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,1202,'.@dex = readparam(bDex); .@luk = readparam(bLuk); .@critical = 3 + (.@luk / 10); .@critical_dmg = 3 - (.@dex/10) * 2; .@sub_arrowstorm = 10; .@sub_gateofhell = 10; bonus bBaseAtk,(.@luk/10)*2; bonus bMatk,(.@luk / 10) * 2; if (.@luk > 107) { .@critical += 5; .@critical_dmg += 10; } if (.@luk > 119) { .@critical += 10; .@critical_dmg += 17; .@sub_arrowstorm += 30; .@sub_gateofhell += 30; } bonus bCritical,.@critical; bonus bCritAtkRate,.@critical_dmg; bonus2 bSubSkill,"RA_ARROWSTORM",.@sub_arrowstorm; bonus2 bSubSkill,"SR_GATEOFHELL",.@sub_gateofhell;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5919,'Camellia_Hair_Pin','Camellia Hair Pin',4,0,NULL,1000,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,1203,'bonus bMdef,20; bonus3 bAutoSpell,"AL_PNEUMA",1,30+getrefine()*5; /* CONFIRM The Rate*/',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5920,'Medical_Boots','Medical Boots',4,0,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,63,2,64,NULL,'10',1,NULL,'.@r = getrefine(); bonus bHealPower,10+((.@r/2) * 2); bonus2 bSkillUseSP,"AB_CHEAL",(.@r * 5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5943,'Owlviscount_Silk_Hat','Owl Viscount Silk Hat',4,0,NULL,500,NULL,15,NULL,1,0xFFFFFFFF,63,2,256,NULL,'70',1,1323,'bonus bInt,1; bonus bAspdRate,10; .@r = getrefine(); bonus bMatk,7*.@r; autobonus "{ .@r = getrefine(); bonus bAspdRate,(.@r >= 9 ? 40 : ((.@r >= 7) ? 10 : ((.@r >= 5) ? 5 : 1))); }",.@r*20,30000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5966,'KarduiEar','KarduiEar',4,0,NULL,300,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,1357,'.@dex = readparam(bDex); bonus bMatk,(.@dex > 10) ? .@dex/10*2 : 0; if (.@dex > 107) { bonus bVariableCastrate,-10; bonus bMatk,60; } if (.@dex > 119) { bonus bVariableCastrate,-5; bonus bMatk,100; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5967,'FlyingGalapago','Flying Galapago',4,0,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'110',0,1358,'set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus bAgi,1; bonus3 bAutoSpell,"HT_BLITZBEAT",.@bblvl,50 + (.@luk / 3) + (.@bblvl * 2); bonus2 bSkillAtk,"HT_BLITZBEAT",getskilllv("HT_STEELCROW") * 40;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5968,'DVAngelNurseCap','DVAngelNurseCap',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,1359,'if (BaseClass == Job_Acolyte) bonus bHealPower,3; bonus bNoCastCancel,1; .@r = getrefine(); bonus bHealPower,(.@r > 8) ? 12 : ((.@r > 6) ? 9 : ((.@r > 4) ? 6 : 0));',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5969,'QueenAnzRevenge','QueenAnzRevenge',4,0,NULL,400,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1360,'bonus bStr,5; .@r = getrefine(); bonus2 bAddClass,Class_All,7+(.@r > 8 ? 4 : (.@r > 6 ? 3 : (.@r > 4 ? 2 : 0))); bonus bNoSizeFix,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5968,'DVAngelNurseCap','DVAngelNurseCap',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,1359,'if (BaseClass == Job_Acolyte) bonus bHealPower,3; bonus bNoCastCancel; .@r = getrefine(); bonus bHealPower,(.@r > 8) ? 12 : ((.@r > 6) ? 9 : ((.@r > 4) ? 6 : 0));',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5969,'QueenAnzRevenge','QueenAnzRevenge',4,0,NULL,400,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1360,'bonus bStr,5; .@r = getrefine(); bonus2 bAddClass,Class_All,7+(.@r > 8 ? 4 : (.@r > 6 ? 3 : (.@r > 4 ? 2 : 0))); bonus bNoSizeFix;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5971,'Moon_Eyepatch','Moon Eyepatch',4,0,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,512,NULL,'10',0,1370,'bonus2 bSubEle,Ele_Water,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5972,'Chatty_Parrot','Chatty Parrot',4,0,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'80',0,1116,'bonus bMatkRate,BaseLevel/50; bonus bVariableCast,-readparam(bInt)/30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5973,'Ancient_Elven_Ear_J','Ancient Elven Ear J',4,0,NULL,200,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',0,665,'bonus bLuk,10; bonus bMdef,10; bonus bFlee2,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5978,'Syringe_Toy','Toy Syringe',4,0,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,1,NULL,'70',0,842,'bonus bMdef,3; bonus2 bAddItemHealRate,545,150; bonus2 bAddItemHealRate,546,150; bonus2 bAddItemHealRate,547,150;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (5979,'C_Angel_Fluttering','C Angel Fluttering',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1380,'hateffect HAT_EF_ANGEL_FLUTTERING,true;',NULL,'hateffect HAT_EF_ANGEL_FLUTTERING,false;'); REPLACE INTO `item_db_re` VALUES (5980,'C_Classical_Fhat','C Classical Fhat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1381,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (5985,'Noble_Mask','Noble Mask',4,0,NULL,200,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',0,1409,'bonus2 bSkillAtk,"PA_SACRIFICE",BaseLevel*2; bonus2 bSkillVariableCast,"PA_PRESSURE",-2000; bonus2 bSkillVariableCast,"CR_DEVOTION",-2000; if (BaseLevel > 149) { bonus bMaxHPrate,3; bonus bAspdRate,3; } else if (BaseLevel > 99) { bonus bMaxHPrate,2; bonus bAspdRate,2; } else { bonus bMaxHPrate,1; bonus bAspdRate,1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (5985,'Noble_Mask','Noble Mask',4,0,NULL,200,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'30',1,1409,'bonus2 bSkillAtk,"PA_SACRIFICE",BaseLevel*2; bonus2 bSkillVariableCast,"PA_PRESSURE",-2000; bonus2 bSkillVariableCast,"CR_DEVOTION",-2000; if (BaseLevel > 149) { bonus bMaxHPrate,3; bonus bAspdRate,3; } else if (BaseLevel > 99) { bonus bMaxHPrate,2; bonus bAspdRate,2; } else { bonus bMaxHPrate,1; bonus bAspdRate,1; }',NULL,NULL); #=================================================================== # More Etc Items #=================================================================== @@ -4920,6 +4971,30 @@ REPLACE INTO `item_db_re` VALUES (6958,'Lamb_Horns','Lamb Horns',3,10,NULL,0,NUL REPLACE INTO `item_db_re` VALUES (6960,'Key_Air_Fortress','Key Air Fortress',3,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6961,'Huge_Metal_Scrap','Huge Metal Scrap',3,10,0,1000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (6962,'Old_Fuel','Old Fuel',3,10,0,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `item_db_re` VALUES (6965,'Fire_Property_Reactor_Blueprint','Fire Property Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6966,'Water_Property_Reactor_Blueprint','Water Property Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6967,'Earth_Property_Reactor_Blueprint','Earth Property Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6968,'Wind_Property_Reactor_Blueprint','Wind Property Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6969,'Fire_Res_Reactor_Blueprint','Fire Resistance Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6970,'Water_Res_Reactor_Blueprint','Water Resistance Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6971,'Earth_Res_Reactor_Blueprint','Earth Resistance Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6972,'Wind_Res_Reactor_Blueprint','Wind Resistance Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6973,'Recovery101_Reactor_Blueprint','Recovery101 Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6974,'Recovery102_Reactor_Blueprint','Recovery102 Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6975,'Recovery201_Reactor_Blueprint','Recovery201 Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6976,'Recovery202_Reactor_Blueprint','Recovery202 Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6977,'STR_Reactor_Blueprint','STR Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6978,'INT_Reactor_Blueprint','INT Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6979,'DEF_Reactor_Blueprint','DEF Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6980,'PD_Reactor_Blueprint','Perfect Dodge Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6981,'ATK_Reactor_Blueprint','Attack Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6982,'MATK_Reactor_Blueprint','Magical Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6983,'HP_Reactor_Blueprint','HP Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6984,'SP_Reactor_Blueprint','SP Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6985,'Frozen_Reactor_Blueprint','Frozen Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (6986,'ASPD_Reactor_Blueprint','ASPD Reactor Blueprint',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + # REPLACE INTO `item_db_re` VALUES (7001,'Mould_Powder','Mould Powder',3,466,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (7002,'Ogre_Tooth','Ogre Tooth',3,658,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6531,7 +6606,7 @@ REPLACE INTO `item_db_re` VALUES (12350,'Angeling_Potion','Angeling Potion',11,2 REPLACE INTO `item_db_re` VALUES (12351,'Shout_Megaphone','Scream Megaphone',11,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "MC_LOUD",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12352,'Dun_Tele_Scroll3','Dungeon Teleport Scroll 3',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashDungeon",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12353,'Tiny_Waterbottle','Small Bottle',2,800,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_WATERWEAPON,90000,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12354,'Buche_De_Noel','Buche De Noel',2,2,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_ANGELUS; bonus_script "{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bHit,3; bonus bCritical,7; }",600,0,0,SI_BUCHEDENOEL;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12354,'Buche_De_Noel','Buche De Noel',2,2,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_ANGELUS; bonus_script "{ bonus bHPrecovRate,3; bonus bSPrecovRate,3; bonus bHit,3; bonus bCritical,7; }",600,0,0,EFST_BUCHEDENOEL;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12355,'Xmas_Gift','Xmas Gift',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Xmas_Gift,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12356,'Louise_Costume_Box','Louise Costume Box',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Louise_Costume_Box,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12357,'Shiny_Wing_Gown','Shiny Wing Gown',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 1630;',NULL,NULL); @@ -6552,7 +6627,7 @@ REPLACE INTO `item_db_re` VALUES (12371,'Magical_Lithography','Magical Lithograp REPLACE INTO `item_db_re` VALUES (12372,'Hell_Contract','Hell Contract',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 1379;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12373,'Boy\'s_Naivety','Boy\'s Pure Heart',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 1370;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12374,'Flaming_Ice','Ice Fireworks',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 1837;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12375,'Acaraje','Akaraje',2,0,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",120,0,0,SI_ACARAJE;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12375,'Acaraje','Akaraje',2,0,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12376,'Mysterious_Can2','Mysterious Can2',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 3,0; itemskill "PR_GLORIA",2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12377,'Mysterious_PET_Bottle2','Mysterious PET Bottle2',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,3; itemskill "PR_MAGNIFICAT",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12378,'2009_Rice_Cake_Soup','Rice Cake Soup',2,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 50,50;',NULL,NULL); @@ -6581,7 +6656,7 @@ REPLACE INTO `item_db_re` VALUES (12400,'Water_Of_Blessing_','Water Of Blessing' REPLACE INTO `item_db_re` VALUES (12401,'Rune_Kn_Test_Int','Rune Kn Test Int',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCINT,300000,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12402,'29Fruit','29Fruit',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 5,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12403,'Lucky_Egg_C2','Lucky Egg C2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Lucky_Egg_C2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12404,'Acti_Potion','Acti Potion',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; bonus_script "{ bonus2 bAddDamageClass,Class_All,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,3; }",120,0,0,SI_POPECOOKIE;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12404,'Acti_Potion','Acti Potion',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_STEAL; bonus_script "{ bonus2 bAddDamageClass,Class_All,3; bonus bMatkRate,3; bonus2 bSubEle,Ele_All,3; }",120,0,0,EFST_POPECOOKIE;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12405,'Underripe_Yggseed','Underripe Yggseed',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 30,30; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,140000,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12406,'Psychic_ArmorS','Psychic ArmorS',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_ENERGYCOAT; sc_start4 SC_ELEMENTALCHANGE,10000,1,Ele_Ghost,1,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12407,'PCBang_Coupon_Box','PC Cafe Coupon Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6638,10 +6713,10 @@ REPLACE INTO `item_db_re` VALUES (12458,'F_Abrasive','F Abrasive',2,0,NULL,10,NU REPLACE INTO `item_db_re` VALUES (12459,'F_Med_Life_Potion','F Med Life Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HEAL3; sc_start2 SC_L_LIFEPOTION,600000,-7,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12460,'F_Small_Life_Potion','F Small Life Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HEAL3; sc_start2 SC_S_LIFEPOTION,600000,-5,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12461,'F_Regeneration_Potion','F Regeneration Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12462,'F_B_Mdef_Potion','F B Mdef Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",180,0,0,SI_PROTECT_MDEF;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12463,'F_S_Mdef_Potion','F S Mdef Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",60,0,0,SI_PROTECT_MDEF;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12464,'F_B_Def_Potion','F B Def Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",180,0,0,SI_PROTECT_DEF;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12465,'F_S_Def_Potion','F S Def Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",60,0,0,SI_PROTECT_DEF;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12462,'F_B_Mdef_Potion','F B Mdef Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",180,0,0,EFST_PROTECT_MDEF;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12463,'F_S_Mdef_Potion','F S Mdef Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_SPELLBREAKER; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_MAGIC; }",60,0,0,EFST_PROTECT_MDEF;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12464,'F_B_Def_Potion','F B Def Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",180,0,0,EFST_PROTECT_DEF;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12465,'F_S_Def_Potion','F S Def Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect EF_GUARD; bonus_script "{ bonus3 bSubEle,Ele_All,3,BF_SHORT; }",60,0,0,EFST_PROTECT_DEF;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12466,'F_Blessing_10_Scroll','F Blessing 10 Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12467,'F_Inc_Agi_10_Scroll','F Inc Agi 10 Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12468,'F_Aspersio_5_Scroll','F Aspersio 5 Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6704,13 +6779,13 @@ REPLACE INTO `item_db_re` VALUES (12525,'E_Assumptio_5_Scroll','Assumptio Scroll REPLACE INTO `item_db_re` VALUES (12526,'E_Wind_Walk_10_Scroll','Wind Walk Scroll Lv 10',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "SN_WINDWALK",10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12527,'E_Adrenaline_Scroll','Adrenaline Scroll',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "BS_ADRENALINE",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12528,'E_Convex_Mirror','Convex Mirror',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_BOSSMAPINFO,600000,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12529,'White_Slim_Potion_Box','White Slim Potion Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 11573,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12530,'Mastela_Fruit_Box','Mastela Fruit Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12529,'White_Slim_Potion_Box','White Slim Potion Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 547,200;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12530,'Mastela_Fruit_Box','Mastela Fruit Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 522,200;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12531,'White_Potion_Box','White Potion Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 504,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12532,'Royal_Jelly_Box2','Royal Jelly Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 526,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12533,'Blue_Herb_Box2','Blue Herb Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 510,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12534,'Yggdrasil_Seed_Box','Yggdrasil Seed Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12535,'Iggdrasilberry_Box','Iggdrasilberry Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12534,'Yggdrasil_Seed_Box','Yggdrasil Seed Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 608,30;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12535,'Iggdrasilberry_Box','Iggdrasilberry Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 607,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12536,'NY_Rice_Cake_Soup','NY Rice Cake Soup',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12537,'Solo_Gift_Basket','Solo Gift Basket',2,1000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Solo_Gift_Basket);*/ getitem 597,5; getitem 596,3; getitem 561,3; getitem 573,4; getitem 559,10; getitem 560,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12538,'Couple_Event_Basket','Couple Event Basket',2,2000,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getgroupitem(IG_Couple_Event_Basket);*/ getitem 14546,10; getitem 14547,10; getitem 14548,10; getitem 14549,10; getitem 14550,10;',NULL,NULL); @@ -6724,7 +6799,7 @@ REPLACE INTO `item_db_re` VALUES (12545,'Lucky_Egg_C5','Lucky Egg C5',2,20,NULL, REPLACE INTO `item_db_re` VALUES (12546,'Suspicious_Dish','Suspicious Dish',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_POISON,50000,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12547,'Chalcenodny_Box','Chalcenodny Box',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12548,'Buy_Market_Permit2','Shabby Purchase Street Stall License',2,500,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'buyingstore 2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12549,'White_Slim_Pot_Box2','White Slim Pot Box2',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 547,200;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12549,'White_Slim_Pot_Box2','White Slim Pot Box2',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 547,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12550,'Poison_Bottle_Box2','Deadly Poison Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 678,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12551,'MVP_Tele_Scroll','MVP Tele Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12552,'Quest_Tele_Scroll','Quest Tele Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6770,7 +6845,7 @@ REPLACE INTO `item_db_re` VALUES (12592,'Cyclops_Box1','Cyclops Box1',11,20,NULL REPLACE INTO `item_db_re` VALUES (12593,'Cyclops_Box2','Cyclops Box2',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12594,'Cyclops_Box3','Cyclops Box3',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12595,'Lucky_Egg_C7','Lucky Egg C7',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Lucky_Egg_C7);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12596,'Magic_Candy','Magic Candy',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HASTEUP; bonus_script "{ bonus bMatk,30; bonus bFixedCastrate,-70; bonus bNoCastCancel,0; bonus2 bSPLossRate,90,10000; }",60,0,0,SI_MAGIC_CANDY;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12596,'Magic_Candy','Magic Candy',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HASTEUP; bonus_script "{ bonus bMatk,30; bonus bFixedCastrate,-70; bonus bNoCastCancel; bonus2 bSPLossRate,90,10000; }",60,0,0,EFST_MAGIC_CANDY;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12597,'Opor_Ayam','Opor Ayam',11,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12598,'Dendeng_Balado','Dendeng Balado',11,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12599,'Kurma','Kurma',11,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -6805,7 +6880,7 @@ REPLACE INTO `item_db_re` VALUES (12629,'Salamander_Scroll','Salamander Scroll', REPLACE INTO `item_db_re` VALUES (12630,'Teddy_Bear_Scroll','Teddy Bear Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'mercenary_create 2217,1800000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12631,'Macro_Stone_A','Macro Stone A',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12632,'Macro_Stone_B','Macro Stone B',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12633,'Malang_Cat_Can','Malangdo Cat Can',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus2 bExpAddRace,RC_All,10; bonus2 bDropAddRace,RC_All,20; }",1200,1,0,SI_OVERLAPEXPUP;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12633,'Malang_Cat_Can','Malangdo Cat Can',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus2 bExpAddRace,RC_All,10; bonus2 bDropAddRace,RC_All,20; }",1200,1,0,EFST_OVERLAPEXPUP;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12634,'Macro_Stone_A1','Macro Stone A1',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12635,'Macro_Stone_A2','Macro Stone A2',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12636,'Malang_Sp_Can','Malangdo Canned Specialties',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "malangdo",140,114;',NULL,NULL); @@ -6838,10 +6913,10 @@ REPLACE INTO `item_db_re` VALUES (12662,'Trans_Scroll_Banshee','Transformation S REPLACE INTO `item_db_re` VALUES (12663,'Trans_Scroll_Poring','Transformation Scroll(Poring)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1002,1200000,SC_MTF_CRIDAMAGE,25; showscript "Traaaansformation-!! Poring form!!";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12664,'Trans_Scroll_Golem','Transformation Scroll(Golem)',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1040,1200000,SC_MTF_MLEATKED,5,20,2; showscript "Traaaansformation-!! Golem form!!";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12665,'Grovel_Buff','Grovel Buff',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12666,'Thai_Perfume_MATK','Thai Perfume MATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,SI_SKF_MATK;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12667,'Thai_Perfume_ATK','Thai Perfume ATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,SI_SKF_ATK;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12668,'Thai_Perfume_ASPD','Thai Perfume ASPD',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bAspdRate,3; }",600,0,0,SI_SKF_ASPD;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12669,'Thai_Perfume_CAST','Thai Perfume CAST',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bVariableCastrate,-5; }",600,0,0,SI_SKF_CAST;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12666,'Thai_Perfume_MATK','Thai Perfume MATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bMatk,24; }",600,0,0,EFST_SKF_MATK;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12667,'Thai_Perfume_ATK','Thai Perfume ATK',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bBaseAtk,24; }",600,0,0,EFST_SKF_ATK;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12668,'Thai_Perfume_ASPD','Thai Perfume ASPD',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bAspdRate,3; }",600,0,0,EFST_SKF_ASPD;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12669,'Thai_Perfume_CAST','Thai Perfume CAST',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_MAGICALATTHIT; bonus_script "{ bonus bVariableCastrate,-5; }",600,0,0,EFST_SKF_CAST;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12670,'Beast_Powder','Beast Powder',2,20,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12671,'99lv_Battle_Manual','99lv Battle Manual',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12672,'Start_New_Box','Start New Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 617,2; getitem 12263,2; getitem 12329,3; getitem 12330,2;',NULL,NULL); @@ -6868,8 +6943,8 @@ REPLACE INTO `item_db_re` VALUES (12692,'Old_C_Album_Shield','Shield Card Album' REPLACE INTO `item_db_re` VALUES (12693,'Old_C_Album_Garment','Garment Card Album',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_CardAlbum_Garment,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12694,'Old_C_Album_Shoes','Shoes Card Album',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_CardAlbum_Shoes,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12695,'Old_C_Album_Acc','Accessory Card Album',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_CardAlbum_Acc,1);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12696,'RWC_Cele_Fire','RWC Celebration Firecracker',2,0,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,SI_2011RWC;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12697,'RWC_Cele_Fire2','RWC Celebration Firecracker',2,0,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,SI_2011RWC;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12696,'RWC_Cele_Fire','RWC Celebration Firecracker',2,0,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,EFST_2011RWC;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12697,'RWC_Cele_Fire2','RWC Celebration Firecracker',2,0,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'bonus_script "{ bonus bAllStats,3; bonus2 bAddClass,Class_All,5; bonus2 bMagicAddClass,Class_All,5; bonus bMatkRate,5; }",10,0,0,EFST_2011RWC;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12698,'Old_C_Album_Weapon','Weapon Card Album',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_CardAlbum_Weapon,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12699,'Tikbalang_Belt','Tikbalang Harness',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'pet 2313;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12700,'Insideout_Shirt','Inside-out Shirt',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "malaya",242,211;',NULL,NULL); @@ -6924,8 +6999,8 @@ REPLACE INTO `item_db_re` VALUES (12738,'Runstone_Rare','Rare Rune',0,2,NULL,100 # More usable items #=================================================================== REPLACE INTO `item_db_re` VALUES (12739,'Snow_Flower','Snow Flowers',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 10,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12740,'Inc_Str_Scroll','Amplification Scroll',2,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus bStr,20; }",60,0,0,SI_STR_SCROLL;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12741,'Inc_Int_Scroll','Intellect Amplification Scroll',2,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bInt,20; }",60,0,0,SI_INT_SCROLL;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12740,'Inc_Str_Scroll','Amplification Scroll',2,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus bStr,20; }",60,0,0,EFST_STR_SCROLL;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12741,'Inc_Int_Scroll','Intellect Amplification Scroll',2,1,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bInt,20; }",60,0,0,EFST_INT_SCROLL;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12742,'Valentine_Gift_Box1','Valentine Gift Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7946,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12743,'Valentine_Gift_Box2','Valentine Gift Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7947,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12744,'Chocotate_Box','Chocolate Box',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 558,1;',NULL,NULL); @@ -6975,8 +7050,8 @@ REPLACE INTO `item_db_re` VALUES (12787,'Diabolic_Scroll','Diabolic Scroll',2,20 REPLACE INTO `item_db_re` VALUES (12788,'No100_Firecracker','No100 Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12789,'Juicy_Fruit','Juicy Fruit',2,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (12790,'Change_Name_Card','Character Name Change Coupon',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'CharRename++;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12791,'Combat_Pill','Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,SI_GM_BATTLE; /* showscript */',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (12792,'P_Combat_Pill','P Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,SI_GM_BATTLE2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12791,'Combat_Pill','Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,5; bonus bMatkRate,5; bonus bMaxHPrate,3; bonus bMaxSPrate,3; }",60,0,0,EFST_GM_BATTLE; /* showscript */',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (12792,'P_Combat_Pill','P Combat Pill',2,20,NULL,150,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_POTION_BERSERK; bonus_script "{ bonus2 bAddDamageClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; }",60,0,0,EFST_GM_BATTLE;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12793,'Combat_Pill_Box10','Combat Pill Box10',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12791,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12794,'P_Combat_Pill_Box10','P Combat Pill Box10',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12792,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (12795,'2011_RWC_Scroll_Kr','2011 RWC Scroll Kr',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -7185,7 +7260,7 @@ REPLACE INTO `item_db_re` VALUES (13014,'Hakujin','Hakujin',5,20,NULL,800,'120', REPLACE INTO `item_db_re` VALUES (13015,'Hakujin_','Hakujin',5,20,NULL,800,'120',NULL,1,1,0x02000000,63,2,2,3,'42',1,1,'bonus bInt,2; bonus3 bAutoSpell,"AL_HEAL",1,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13016,'Poison_Knife_','Poison Knife',5,20,NULL,800,'64',NULL,1,2,0x028F5EEE,63,2,2,3,'65',1,1,'bonus bAtkEle,Ele_Poison; bonus2 bAddEff,Eff_Poison,3000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13017,'House_Auger_','Ice Pick',5,20,NULL,600,'70',NULL,1,1,0x028F5EEE,63,2,2,4,'36',1,1,'bonus bDefRatioAtkClass,Class_All;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13018,'Sucsamad_','Sucsamad',5,20,NULL,800,'140',NULL,1,1,0x028F5EEE,63,2,2,4,'36',1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13018,'Sucsamad_','Sucsamad',5,20,NULL,800,'140',NULL,1,1,0x028F5EEE,63,2,2,4,'36',1,1,'bonus2 bAddEle,Ele_Earth,10; bonus2 bAddEle,Ele_Wind,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13019,'Ginnungagap_','Ginnungagap',5,20,NULL,700,'148',NULL,1,1,0x3E9F7EEF,63,2,2,4,'70',1,1,'bonus bAtkEle,Ele_Dark; bonus2 bAddEff,Eff_Blind,500; bonus2 bAddEff2,Eff_Blind,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13020,'Warrior_Balmung_','Warrior\'s Balmung',5,20,NULL,1000,'170',NULL,1,0,0x3FFFFFFF,63,2,2,4,'48',1,1,'bonus bAllStats,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13021,'Combat_Knife_C','Combat Knife',5,1,NULL,0,'129',NULL,1,0,0x028F5EEE,63,2,2,4,'1',0,1,'bonus bIgnoreDefRace,RC_DemiHuman; bonus bIgnoreDefRace,RC_Player; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_Demon,-10; bonus bMaxSPrate,10; bonus bSPDrainValue,3; /*Gold PC Room: bonus bBaseAtk,10; bonus bMatk,10;*/',NULL,NULL); @@ -7203,13 +7278,13 @@ REPLACE INTO `item_db_re` VALUES (13032,'Mail_Breaker_','Mailbreaker',5,20,NULL, REPLACE INTO `item_db_re` VALUES (13033,'Assasin_Dagger_','Assassin Dagger',5,20,NULL,600,'140',NULL,1,1,0x00001000,63,2,2,4,'36',1,1,'bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdRate,2; bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13034,'Twilight_Desert','Desert Twilight',5,20,NULL,600,'130',NULL,1,2,0x00001000,18,2,2,2,'70',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13035,'Sandstorm','Sandstorm',5,20,NULL,600,'50',NULL,1,4,0x00001000,18,2,2,2,'70',1,1,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon,1; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13036,'BF_Dagger1','Brave Assassin\'s Damascus',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13037,'BF_Dagger2','Valorous Assassin\'s Damascus',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13038,'Dagger_Of_Hunter','Dagger of Hunter',5,20,NULL,700,'120',NULL,1,3,0x00020000,18,2,2,3,'70',1,1,'bonus bStr,1; bonus bAgi,2; bonus bDex,1; bonus4 bAutoSpellOnSkill,"RG_BACKSTAP","SM_BASH",10,100; bonus2 bSkillAtk,"RG_BACKSTAP",20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13039,'Ivory_Knife','Ivory Knife',5,20,NULL,700,'130',NULL,1,2,0x028F5EEE,18,2,2,3,'50',1,1,'bonus bAgi,2; bonus bAspdRate,3; bonus2 bAddEff,Eff_Bleeding,300; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13040,'N_Cutter','Novice Cutter',5,0,NULL,0,'50',NULL,1,3,0x3E9F7EEF,63,2,2,1,'1',0,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13041,'N_Main_Gauche','Novice Main Gauche',5,0,NULL,0,'63',NULL,1,3,0x3E9F7EEF,63,2,2,1,'1',0,1,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,'120',NULL,1,0,0x3E9F7EEF,63,2,2,4,'80',1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13042,'Krieger_Dagger1','Glorious Gladius',5,20,NULL,0,'120',NULL,1,0,0x3E9F7EEF,63,2,2,4,'80',1,1,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus3 bAutoSpell,"PR_LEXDIVINA",1,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) bonus4 bAutoSpellOnSkill,"RG_RAID","NPC_WIDEBLEEDING",1,250;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13043,'Fortune_Sword_I','Fortune Sword',5,0,NULL,0,'120',NULL,1,0,0x028F5EEE,63,2,2,4,'0',0,1,'bonus bLuk,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13044,'House_Auger_I','Ice Pick',5,0,NULL,0,'105',NULL,1,0,0x028F5EEE,63,2,2,4,'0',0,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13045,'Kamaitachi_I','Kamaitachi',5,0,NULL,0,'155',NULL,2,0,0x02000000,63,2,2,4,'0',0,1,'bonus bAtkEle,Ele_Wind;',NULL,NULL); @@ -7230,12 +7305,12 @@ REPLACE INTO `item_db_re` VALUES (13059,'E_Asura_C','Asura',5,1,NULL,0,'120',NUL REPLACE INTO `item_db_re` VALUES (13060,'E_Counter_Dagger_C','Counter Dagger',5,1,NULL,0,'209',NULL,1,0,0x00810204,63,2,2,4,'1',0,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13061,'Black_Wing','Black Wing',5,20,NULL,600,'142',NULL,1,1,0x00020000,63,2,2,3,'102',1,1,'.@r = getrefine(); bonus2 bSkillAtk,"SC_FATALMENACE",30+(.@r*2); bonus bMatkRate,(.@r*3);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13062,'Ancient_Dagger','Ancient Dagger',5,20,NULL,600,'107:120',NULL,0,0,0x028F5EEE,18,2,2,4,'120',1,1,'bonus bMaxSP,100; bonus bSPrecovRate,5; bonus2 bAddEff2,Eff_Curse,20; bonus3 bAddEff,Eff_Curse,20,ATF_SELF;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13063,'Adventure_Knife','Adventure Knife',5,0,NULL,0,'60',NULL,1,0,0x02021040,63,2,2,1,'1',0,1,'bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13064,'Academy_Knife','Academy Knife',5,0,NULL,700,'110',NULL,1,1,0x02021040,63,2,2,1,'1',1,1,'bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13065,'Academy_Eti_Knife','Academy Eti Knife',5,0,NULL,1200,'120',NULL,1,1,0x00000001,63,2,2,1,'1',1,1,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13063,'Adventure_Knife','Adventure Knife',5,0,NULL,0,'60',NULL,1,0,0x02021040,63,2,2,1,'1',0,1,'bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13064,'Academy_Knife','Academy Knife',5,0,NULL,700,'110',NULL,1,1,0x02021040,63,2,2,1,'1',1,1,'bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13065,'Academy_Eti_Knife','Academy Eti Knife',5,0,NULL,1200,'120',NULL,1,1,0x00000001,63,2,2,1,'1',1,1,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13066,'P_Dagger3','Eden Dagger III',5,0,NULL,0,'165:80',NULL,1,0,0x3E9F7EEF,63,2,2,3,'60',0,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13067,'Caress','Keris',5,20,NULL,700,'107:70',NULL,1,1,0x3E9F7EEF,18,2,2,3,'30',1,1,'bonus2 bHPDrainRate,20,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13068,'Saurel','Pompano',5,0,NULL,0,'160:100',NULL,3,0,0x3E9F7EEF,63,2,2,1,'50',0,1,'bonus bAgi,3; bonus bUnbreakableWeapon,1; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13068,'Saurel','Pompano',5,0,NULL,0,'160:100',NULL,3,0,0x3E9F7EEF,63,2,2,1,'50',0,1,'bonus bAgi,3; bonus bUnbreakableWeapon; autobonus "{ bonus bBaseAtk,30; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,20; }",10,7000,BF_MAGIC,"{ specialeffect2 EF_SUFFRAGIUM; }"; if(BaseLevel>99) { bonus bBaseAtk,10; bonus bMatk,10; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13069,'Aztoe_Nail','As-nail',5,56000,NULL,500,'160:80',NULL,1,0,0x000654E2,63,2,2,4,'110',1,1,'bonus bAtkEle,Ele_Wind; bonus2 bAddEff,Eff_Freeze,100+(getrefine()*50);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13070,'Scarletto_Nail','Scarlet-nail',5,56000,NULL,500,'160:80',NULL,1,0,0x000654E2,63,2,2,4,'110',1,1,'bonus bAtkEle,Ele_Fire; bonus2 bAddEff,Eff_Stone,100+(getrefine()*50);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13071,'Upg_Dagger','Upg Dagger',5,20,NULL,600,'55',NULL,1,1,0x3E9F7EEF,63,2,2,3,'1',1,1,'.@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5);',NULL,NULL); @@ -7250,14 +7325,14 @@ REPLACE INTO `item_db_re` VALUES (13079,'Metal_Dagger','Metal Dagger',5,20,NULL, REPLACE INTO `item_db_re` VALUES (13081,'Octo_kitchen_Knife','Discount knife Octopus',5,200000,NULL,700,'140',0,NULL,3,0x228F5EEE,63,2,2,4,'105',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13083,'TE_Woe_Knife','TE Woe Knife',5,0,NULL,0,'100:100',NULL,1,0,0x3E9F7EEF,63,2,2,3,'40',1,1,'bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Silence,3000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13085,'Volcano_Knife','Volcano Knife',5,10,NULL,200,'80',NULL,NULL,0,0x280002E,63,2,2,4,'60',NULL,1,'bonus bAgi,2; bonus bMaxHPrate,2; bonus2 bSubEle,Ele_Fire,2; bonus2 bSubEle,Ele_Water,-5; .@r = getrefine(); if(.@r==7){ bonus bMaxHPrate,1; bonus2 bSubEle,Ele_Fire,3; } if (.@r>7) { bonus bMaxHPrate,.@r-7; bonus2 bSubEle,Ele_Fire,.@r-7; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13086,'Goldsmithing_Dagger','Goldsmithing Dagger',5,20,NULL,500,'35:25',NULL,1,0,0x02800066,63,2,2,1,'1',1,1,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13086,'Goldsmithing_Dagger','Goldsmithing Dagger',5,20,NULL,500,'35:25',NULL,1,0,0x028756E6,63,2,2,1,'1',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13088,'Greater_Lease','Greater Lease',5,10,NULL,500,'110:50',NULL,NULL,1,0x280006E,63,2,2,4,'30',1,1,'.@r = getrefine(); if (.@r >= 5) bonus bMatk,30; if (.@r >= 7) bonus bMatk,10; if (.@r >= 9) bonus bMatk,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13089,'FaceWorm_Leg','Faceworm Leg',5,20,NULL,500,'110:50',NULL,1,1,0x028F5EEF,63,2,2,3,'24',1,1,'bonus bAtkEle,Ele_Poison; autobonus "{}",30,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2528,5000; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13090,'FaceWormQueen_Leg','Faceworm Queen Leg',5,20,NULL,500,'180:120',NULL,1,2,0x028F5EEF,63,2,2,4,'100',1,1,'bonus bInt,3; autobonus "{ bonus3 bAutoSpell,\\\"NPC_EARTHQUAKE\\\",1,200; }",8,5000,BF_NORMAL,"{ specialeffect2 EF_POTION_BERSERK; active_transform 2529,5000; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13092,'RWC_Memory_Knife','RWC Memory Knife',5,1000,500,650,'50',0,1,1,0x02800075,63,2,2,3,'1',1,1,'.@r = getrefine(); bonus bBaseAtk,20*(.@r/3); bonus bMatk,20*(.@r/3); if(.@r>=9){ .@i = 1; bonus4 bAutoSpell,"BS_WEAPONPERFECT",1,20,0; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,.@rate; bonus2 bMagicAddClass,Class_All,.@rate; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13093,'Thanos_Dagger','Thanatos Dagger',5,10,NULL,800,'100:130',NULL,1,1,0x000E5CEA,56,2,2,4,'120',1,1,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (13094,'Dagger_Of_Evil_Slayer','Evil Slayer Stabber Dagger',5,10,NULL,900,'120',NULL,1,1,0x028F5EEF,63,2,2,3,'100',1,1,'bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0));',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13096,'Half_BF_Dagger2','Half BF Dagger2',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,45;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13096,'Half_BF_Dagger2','Half BF Dagger2',5,20,NULL,0,'120:90',NULL,1,0,0x3E9F7EEF,63,2,2,3,'80',1,1,'bonus bStr,1; bonus bAgi,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon; autobonus "{ bonus bDefRatioAtkClass,Class_All; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(Class==Job_Ninja||Class==Job_Rogue||Class==Job_Stalker) bonus bMatkRate,45;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13097,'Ru_Blue_Dagger','Blue Dagger',5,10,NULL,1000,'160',NULL,1,1,0x00020000,56,2,2,3,'100',1,1,'bonus bStr,5; bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13098,'Ru_Blue_Ashura','Blue Ashura',5,10,NULL,1000,'150:120',NULL,1,1,0x02000000,7,2,2,3,'100',1,1,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13099,'Ru_Blue_Knife','Blue Knife',5,10,NULL,500,'160',NULL,1,1,0x00010000,56,2,2,3,'100',1,1,'bonus bStr,5; bonus bInt,5;',NULL,NULL); @@ -7272,9 +7347,9 @@ REPLACE INTO `item_db_re` VALUES (13104,'The_Garrison','Garrison',5,48000,NULL,5 REPLACE INTO `item_db_re` VALUES (13105,'The_Garrison_','Garrison',5,48000,NULL,500,'70',NULL,7,2,0x41000000,63,2,34,2,'55',1,17,'bonus bHit,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13106,'Gold_Lux','Gold Lux',5,100000,NULL,500,'20',NULL,7,0,0x41000000,63,2,34,3,'12',1,17,'bonus bHit,-10; if(getskilllv("GS_GLITTERING")>0) bonus3 bAutoSpell,"GS_GLITTERING",getskilllv("GS_GLITTERING"),100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13107,'Wasteland_Outlaw','Wasteland\'s Outlaw',5,20,NULL,580,'68',NULL,7,2,0x41000000,63,2,34,3,'70',1,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,'70',NULL,7,0,0x41000000,63,2,34,3,'80',1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13108,'BF_Pistol1','Soldier Revolver',5,0,NULL,0,'70',NULL,7,0,0x41000000,63,2,34,3,'80',1,17,'bonus bDex,2; bonus bHit,-10; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bAspdRate,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13109,'Wasteland_Outlaw_C','Wasteland Outlaw',5,20,NULL,0,'100',NULL,7,0,0x41000000,63,2,34,3,'0',0,17,'bonus bHit,readparam(bAgi)/10; bonus bAspdRate,readparam(bAgi)/14; bonus2 bAddClass,Class_All,40;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,'80',NULL,7,0,0x41000000,63,2,34,4,'80',1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",.@r*2; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13110,'Krieger_Pistol1','Glorious Pistol',5,0,NULL,0,'80',NULL,7,0,0x41000000,63,2,34,4,'80',1,17,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus4 bAutoSpellOnSkill,"GS_RAPIDSHOWER","GS_GLITTERING",1,1000; bonus2 bSkillAtk,"GS_RAPIDSHOWER",.@r*2; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13111,'Sharpshooter_Revolver','Sharpshooter Revolver',5,20,NULL,0,'105',NULL,7,0,0x41000000,63,2,34,4,'1',1,17,'bonus bDex,2; bonus2 bSkillAtk,"GS_DESPERADO",25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13112,'P_Revolver1','Eden Revlover I',5,0,NULL,0,'44',NULL,7,0,0x41000000,63,2,34,1,'26',0,17,'bonus bHit,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13113,'P_Revolver2','Eden Revlover II',5,0,NULL,0,'60',NULL,7,0,0x41000000,63,2,34,1,'40',0,17,'bonus bHit,-5;',NULL,NULL); @@ -7287,7 +7362,7 @@ REPLACE INTO `item_db_re` VALUES (13119,'Freedom_Flame','Freedom Flame',5,1,NULL REPLACE INTO `item_db_re` VALUES (13120,'Heaven\'s_Feather_and_Hell\'s_Fire','Heaven\'s Feather & Hell\'s Fire',5,1250000,NULL,800,'150',NULL,9,1,0x41000000,63,2,34,3,'99',1,17,'bonus2 bSkillAtk,"GS_DESPERADO",20; bonus2 bSkillAtk,"RL_FALLEN_ANGEL",20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13122,'Altea_and_Ares','Altea & Ares',5,1450000,NULL,1000,'200',NULL,9,0,0x40000000,63,2,34,3,'140',1,17,'bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13124,'Altea_and_Ares_','Altea & Ares',5,1450000,NULL,1000,'200',NULL,9,1,0x40000000,63,2,34,3,'140',1,17,'bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13125,'Metal_Revolver','Metal Revolver',5,0,NULL,0,'30',NULL,7,1,0x41000000,63,2,34,3,'1',0,17,'bonus bBaseAtk,getrefine(); bonus bLongAtkRate,1; if (BaseLevel >= 20 && BaseLevel <= 120) { bonus bBaseAtk,3*(BaseLevel/10); }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13125,'Metal_Revolver','Metal Revolver',5,0,NULL,0,'30',NULL,7,1,0x41000000,63,2,34,3,'1',1,17,'bonus bBaseAtk,getrefine(); bonus bLongAtkRate,1; if (BaseLevel >= 20 && BaseLevel <= 120) { bonus bBaseAtk,3*(BaseLevel/10); }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13126,'Infinity_Pistol','Infinity Pistol',5,10,NULL,500,'175',NULL,7,1,0x40000000,63,2,34,4,'100',0,17,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13127,'Crimson_Revolver','Crimson Revolver',5,20,NULL,1000,'100',NULL,7,2,0x41000000,63,2,34,3,'70',1,17,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13128,'Revolver_of_Vicious_Mind','Revolver of Vicious Mind',5,20,NULL,1500,'150',NULL,7,1,0x41000000,63,2,34,4,'160',1,17,'bonus bAtk,pow(min(getrefine(),15),2);',NULL,NULL); @@ -7313,15 +7388,15 @@ REPLACE INTO `item_db_re` VALUES (13167,'Gate_KeeperDD','Gate Keeper-DD',5,72000 REPLACE INTO `item_db_re` VALUES (13168,'Thunder_P','Thunder P',5,76000,NULL,700,'80',NULL,9,1,0x41000000,63,2,34,3,'70',1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13169,'Thunder_P_','Thunder P',5,76000,NULL,700,'80',NULL,9,2,0x41000000,63,2,34,3,'70',1,20,'bonus bSplashRange,1; bonus bHit,-5; bonus bAspdRate,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13170,'Lever_Action_Rifle','Lever Action Rifle',5,20,NULL,770,'138',NULL,9,2,0x41000000,63,2,34,3,'70',1,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,'50',NULL,9,0,0x41000000,63,2,34,3,'80',1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bVariableCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,'80',NULL,9,0,0x41000000,63,2,34,3,'80',1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,'100',NULL,9,0,0x41000000,63,2,34,3,'80',1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,'300',NULL,9,0,0x41000000,63,2,34,3,'80',1,21,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13171,'BF_Rifle1','Soldier Rifle',5,0,NULL,0,'50',NULL,9,0,0x41000000,63,2,34,3,'80',1,18,'bonus bDex,2; bonus bHit,10; bonus bCritical,10; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bVariableCastrate,"GS_TRACKING",-25; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13172,'BF_Gatling_Gun1','Soldier Gatling Gun',5,0,NULL,0,'80',NULL,9,0,0x41000000,63,2,34,3,'80',1,19,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,120,1000; }",10,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13173,'BF_Shotgun1','Soldier Shotgun',5,0,NULL,0,'100',NULL,9,0,0x41000000,63,2,34,3,'80',1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13174,'BF_Launcher1','Soldier Grenade Launcher',5,0,NULL,0,'300',NULL,9,0,0x41000000,63,2,34,3,'80',1,21,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; autobonus "{ bonus bBaseAtk,300; bonus2 bHPLossRate,120,1000; }",30,9000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13175,'Lever_Action_Rifle_C','Lever Action Rifle',5,20,NULL,0,'170',NULL,9,0,0x41000000,63,2,34,3,'1',0,18,'bonus bHit,20; bonus bCritical,50; bonus bAspdRate,-5; bonus2 bAddClass,Class_All,40;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,'90',NULL,9,0,0x41000000,63,2,34,4,'80',1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",.@r * 3; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,'90',NULL,9,0,0x41000000,63,2,34,4,'80',1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bAddClass,Class_All,.@r; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,'110',NULL,9,0,0x41000000,63,2,34,4,'80',1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,'330',NULL,9,0,0x41000000,63,2,34,4,'80',1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13176,'Krieger_Rifle1','Glorious Rifle',5,0,NULL,0,'90',NULL,9,0,0x41000000,63,2,34,4,'80',1,18,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bVariableCastrate,"GS_TRACKING",25; bonus2 bSkillAtk,"GS_TRACKING",.@r * 3; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13177,'Krieger_Gatling1','Glorious Gatling Gun',5,0,NULL,0,'90',NULL,9,0,0x41000000,63,2,34,4,'80',1,19,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bAddClass,Class_All,.@r; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13178,'Krieger_Shotgun1','Glorious Shotgun',5,0,NULL,0,'110',NULL,9,0,0x41000000,63,2,34,4,'80',1,20,'bonus2 bAddRace,RC_DemiHuman,55; bonus2 bAddRace,RC_Player,55; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bSplashRange,1; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_SPREADATTACK",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13179,'Krieger_Launcher1','Glorious Grenade Launcher',5,0,NULL,0,'330',NULL,9,0,0x41000000,63,2,34,4,'80',1,21,'bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus2 bSkillAtk,"GS_TRIPLEACTION",30; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(.@r,10)-4,2); bonus2 bAddRace,RC_Player,pow(min(.@r,10)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus2 bSkillAtk,"GS_GROUNDDRIFT",.@r * 2; bonus3 bAddEffOnSkill,"GS_SPREADATTACK",Eff_Stun,2000; autobonus "{ bonus bAspdRate,20; }",200,20000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13180,'Novice_Rifle','Novice Rifle',5,0,NULL,500,'50',NULL,9,3,0x41000000,1,2,34,4,'1',0,18,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13181,'Novice_Shotgun','Novice Shotgun',5,0,NULL,1000,'80',NULL,9,0,0x41000000,1,2,34,4,'1',0,20,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13182,'Novice_Gatling','Novice Gatling',5,0,NULL,1500,'40',NULL,9,0,0x41000000,1,2,34,4,'1',0,19,NULL,NULL,NULL); @@ -7433,15 +7508,15 @@ REPLACE INTO `item_db_re` VALUES (13295,'Light_Shuriken','Light Shuriken',10,0,N #=================================================================== # Ninja Fuuma Shurikens #=================================================================== -REPLACE INTO `item_db_re` VALUES (13300,'Huuma_Bird_Wing','Huuma Wing Shuriken',5,90000,NULL,3000,'150',NULL,1,0,0x02000000,63,2,34,4,'65',1,22,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,'50',NULL,1,3,0x02000000,63,2,34,4,'42',1,22,'bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13302,'Huuma_Giant_Wheel_','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,'50',NULL,1,4,0x02000000,63,2,34,4,'42',1,22,'bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13303,'Huuma_Blaze','Huuma Blaze Shuriken',5,78000,NULL,1500,'185',NULL,1,0,0x02000000,63,2,34,4,'55',1,22,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13304,'Huuma_Calm_Mind','Huuma Calm Mind',5,20,NULL,1550,'112',NULL,1,2,0x02000000,63,2,34,3,'70',1,22,'bonus bUnbreakableWeapon,1; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,'55:90',NULL,1,0,0x02000000,63,2,34,4,'80',1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',5,0,NULL,0,'230',NULL,1,0,0x02000000,63,2,34,4,'0',0,22,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13300,'Huuma_Bird_Wing','Huuma Wing Shuriken',5,90000,NULL,3000,'150',NULL,1,0,0x02000000,63,2,34,4,'65',1,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Wind; bonus bDex,-2; bonus bAgi,-1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13301,'Huuma_Giant_Wheel','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,'50',NULL,1,3,0x02000000,63,2,34,4,'42',1,22,'bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13302,'Huuma_Giant_Wheel_','Huuma Giant Wheel Shuriken',5,40000,NULL,2500,'50',NULL,1,4,0x02000000,63,2,34,4,'42',1,22,'bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Bleeding,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13303,'Huuma_Blaze','Huuma Blaze Shuriken',5,78000,NULL,1500,'185',NULL,1,0,0x02000000,63,2,34,4,'55',1,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,-2; bonus3 bAutoSpell,"MG_FIREBALL",5,30;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13304,'Huuma_Calm_Mind','Huuma Calm Mind',5,20,NULL,1550,'112',NULL,1,2,0x02000000,63,2,34,3,'70',1,22,'bonus bUnbreakableWeapon; bonus2 bSkillAtk,"NJ_HUUMA",30; bonus bNoCastCancel;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13305,'BF_Huuma_Shuriken1','Brave Huuma Front Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13306,'BF_Huuma_Shuriken2','Valorous Huuma Front Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13307,'Krieger_Huuma_Shuriken1','Glorious Shuriken',5,20,NULL,0,'55:90',NULL,1,0,0x02000000,63,2,34,4,'80',1,22,'bonus2 bAddRace,RC_DemiHuman,95; bonus2 bAddRace,RC_Player,95; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bMatkRate,15; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-3,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-3,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>8) { bonus5 bAutoSpellOnSkill,"NJ_ISSEN","AL_HEAL",10,1000,1; bonus4 bAutoSpellOnSkill,"NJ_HUUMA","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13308,'Huuma_Blaze_I','Huuma Blaze Shuriken',5,0,NULL,0,'230',NULL,1,0,0x02000000,63,2,34,4,'0',0,22,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Fire; bonus bDex,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13309,'Huuma_Giant_Wheel_C','Huuma Giant Wheel Shuriken',5,0,NULL,0,'99',NULL,1,0,0x02000000,63,2,34,4,'1',0,22,'bonus2 bAddSize,Size_All,80;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13310,'P_Huuma_Shuriken1','P.Huuma Suriken I',5,0,NULL,0,'150:50',NULL,1,0,0x02000000,63,2,34,3,'60',0,22,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13311,'Huuma_Shadow','Sword Huuma Shuriken',5,5000,NULL,1500,'170',NULL,1,0,0x02000000,63,2,34,3,'99',1,22,'bonus bStr,3;',NULL,NULL); @@ -7451,11 +7526,11 @@ REPLACE INTO `item_db_re` VALUES (13314,'Huuma_Fluttering_Snow','Wave Huuma Shur REPLACE INTO `item_db_re` VALUES (13315,'Huuma_Thunderstorm','Thunderstorm Huuma Shuriken',5,100000,NULL,1500,'200:50',NULL,1,0,0x02000000,63,2,34,4,'110',1,22,'bonus bAtkEle,Ele_Wind; bonus3 bAutoSpell,"NJ_RAIGEKISAI",max(getskilllv("NJ_RAIGEKISAI"),1),30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13316,'Upg_Huuma_Shuriken','Upg Huuma Shuriken',5,20,NULL,1500,'55',NULL,1,1,0x02000000,63,2,34,3,'1',1,22,'.@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bMatk,(.@r*5); bonus bLongAtkRate,(.@r); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13317,'TE_Woe_Huuma','TE Woe Huuma',5,0,NULL,0,'80:100',NULL,1,0,0x22000000,63,2,2,3,'40',1,22,'bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Bleeding,3000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13321,'Half_BF_Huuma_Shuriken2','Half BF Huuma Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13322,'Huuma_Metal_Shuriken','Huuma Metal Shuriken',5,20,NULL,0,'50',NULL,1,1,0x02000000,63,2,34,3,'1',1,22,'bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bBaseAtk,.@r*5; bonus bMatk,.@r*3; if(.@r>=2) bonus bNearAtkDef,1*.@r/2; if (BaseLevel >= 20 && BaseLevel <= 120) bonus bBaseAtk,3*.@r/10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13321,'Half_BF_Huuma_Shuriken2','Half BF Huuma Shuriken',5,20,NULL,0,'55',NULL,1,0,0x02000000,63,2,34,3,'80',1,22,'bonus bStr,2; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40; autobonus "{ bonus2 bSkillAtk,\\\"NJ_HUUMA\\\",100; bonus2 bSkillAtk,\\\"NJ_ISSEN\\\",100; }",50,10000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13322,'Huuma_Metal_Shuriken','Huuma Metal Shuriken',5,20,NULL,0,'50',NULL,1,1,0x02000000,63,2,34,3,'1',1,22,'bonus bUnbreakableWeapon; .@r = getrefine(); bonus bBaseAtk,.@r*5; bonus bMatk,.@r*3; if(.@r>=2) bonus bNearAtkDef,1*.@r/2; if (BaseLevel >= 20 && BaseLevel <= 120) bonus bBaseAtk,3*.@r/10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13323,'Infinity_Shuriken','Infinity Shuriken',5,0,NULL,500,'150:40',NULL,1,1,0x20000000,63,2,34,4,'100',1,22,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13327,'Crimson_Huuma_Shuriken','Crimson Huuma Shuriken',5,20,NULL,1000,'100',NULL,1,2,0x22000000,63,2,34,3,'70',1,22,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13328,'Huuma_Shuriken_of_Vicious_Mind','Huuma Shuriken of Vicious Mind',5,20,NULL,1500,'150:50',NULL,1,1,0x22000000,63,2,34,4,'160',1,22,'bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13328,'Huuma_Shuriken_of_Vicious_Mind','Huuma Shuriken of Vicious Mind',5,20,NULL,1500,'150:50',NULL,1,1,0x22000000,63,2,34,4,'160',1,22,'bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13329,'Unity_Huuma_Shuriken','Unity Huuma Shuriken',5,20,NULL,500,'95',NULL,1,1,0x22000000,63,2,34,3,'1',1,22,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); #=================================================================== # More 1-Handed Swords @@ -7469,20 +7544,20 @@ REPLACE INTO `item_db_re` VALUES (13405,'Curved_Sword','Curved Sword',5,20,NULL, REPLACE INTO `item_db_re` VALUES (13406,'Edger','Edger',5,20,NULL,0,'120',NULL,1,0,0x000654E2,63,2,2,1,'0',0,2,'bonus2 bAddClass,Class_All,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13407,'Nagan_C','Refined Nagan',5,1,NULL,0,'148',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'skill "TF_DOUBLE",5; bonus bDoubleRate,25; bonus2 bAddRace,RC_DemiHuman,40; bonus2 bAddRace,RC_Player,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13408,'Fire_Brand_C','Refined Fireblend',5,1,NULL,0,'120',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'bonus bAtkEle,Ele_Fire; bonus bInt,2; skill "MG_FIREBOLT",5; bonus3 bAutoSpell,"MG_FIREBOLT",5,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13409,'Immaterial_Sword_C','Refined Immaterial Sword',5,1,NULL,0,'160',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,80,45; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,'115',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,'115:74',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13409,'Immaterial_Sword_C','Refined Immaterial Sword',5,1,NULL,0,'160',NULL,1,0,0x000654E2,63,2,2,4,'0',0,2,'bonus bAtkEle,Ele_Ghost; bonus2 bSPVanishRate,80,45; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13410,'BF_Sword1','Valorous Gladiator Blade',5,20,NULL,0,'115',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13411,'BF_Sword2','Brave Gladiator Blade',5,20,NULL,0,'115:74',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus bMatkRate,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13412,'Twin_Edge_B','Twin Edge of Naght Sieger',5,20,NULL,1500,'150',NULL,1,3,0x000654E2,18,2,2,4,'75',1,2,'bonus bAtkEle,Ele_Water; skill "MG_FROSTDIVER",5; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13413,'Twin_Edge_R','Twin Edge of Naght Sieger',5,20,NULL,1500,'160',NULL,1,3,0x000654E2,18,2,2,4,'75',1,2,'bonus bAtkEle,Ele_Fire; skill "WZ_METEOR",3; autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",50,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13414,'Elemental_Sword','Elemental Sword',5,20,NULL,1200,'105:95',NULL,1,3,0x000654E2,18,2,2,3,'70',1,2,'bonus bStr,2; bonus bInt,4; bonus bDex,1; bonus2 bAddEle,Ele_Neutral,10; bonus3 bAutoSpell,"MG_COLDBOLT",3,50; bonus4 bAutoSpellOnSkill,"MG_COLDBOLT","MG_FIREBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_FIREBOLT","MG_LIGHTNINGBOLT",3,1000; bonus4 bAutoSpellOnSkill,"MG_LIGHTNINGBOLT","WZ_EARTHSPIKE",3,1000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13415,'N_Falchion','Novice Falchion',5,0,NULL,0,'59',NULL,1,3,0x000654E3,63,2,2,1,'2',0,2,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,'130',NULL,1,0,0x000654E3,63,2,2,4,'80',1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon,1; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>6) bonus bAspdRate,5; if(.@r>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',5,20,NULL,0,'130:80',NULL,1,0,0x000654E3,63,2,2,4,'80',1,2,'.@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon,1; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus bInt,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',5,20,NULL,0,'130:80',NULL,1,0,0x000444A2,63,2,2,4,'80',1,2,'.@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon,1; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(.@r>9) bonus bInt,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13416,'Krieger_Onehand_Sword1','Glorious Flamberge',5,20,NULL,0,'130',NULL,1,0,0x000654E3,63,2,2,4,'80',1,2,'bonus2 bAddRace,RC_DemiHuman,75; bonus2 bAddRace,RC_Player,75; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,20; bonus2 bIgnoreDefRaceRate,RC_Player,20; bonus bUnbreakableWeapon; .@r = getrefine(); if(.@r>5) { bonus2 bAddRace,RC_DemiHuman,pow(min(14,.@r)-4,2); bonus2 bAddRace,RC_Player,pow(min(14,.@r)-4,2); bonus2 bIgnoreDefRaceRate,RC_DemiHuman,5; bonus2 bIgnoreDefRaceRate,RC_Player,5; } if(.@r>6) bonus bAspdRate,5; if(.@r>8) { bonus bAspdRate,5; bonus4 bAutoSpellOnSkill,"SM_BASH","NPC_CRITICALWOUND",2,200; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13417,'Krieger_Onehand_Sword2','Glorious Rapier',5,20,NULL,0,'130:80',NULL,1,0,0x000654E3,63,2,2,4,'80',1,2,'.@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus bInt,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13418,'Krieger_Onehand_Sword3','Glorious Holy Avenger',5,20,NULL,0,'130:80',NULL,1,0,0x000444A2,63,2,2,4,'80',1,2,'.@r = getrefine(); bonus bInt,.@r-5; bonus bUnbreakableWeapon; if(.@r>5) bonus bUseSPrate,-10; if(.@r>8) bonus4 bAutoSpellOnSkill,"PA_PRESSURE","PR_LEXAETERNA",1,1000; if(.@r>9) bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13419,'Holy_Saber','Holy saber',5,20,NULL,0,'160',NULL,1,0,0x000654E2,63,2,2,3,'0',0,2,'bonus2 bAtkEle,Ele_Undead,40; bonus2 bMagicAddEle,Ele_Undead,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13420,'Honglyun\'s_Sword','Honglyun\'s Sword',5,20,NULL,1200,'160',NULL,1,1,0x000654E2,63,2,2,4,'70',1,2,'bonus bAtkEle,Ele_Fire; bonus bStr,2; bonus bInt,2; bonus3 bAutoSpell,"WZ_METEOR",1,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13421,'Ruber','Ruber',5,20,NULL,1500,'170',NULL,1,1,0x000444A2,18,2,2,3,'50',1,2,'autobonus "{ bonus2 bSkillAtk,\\\"KN_BOWLINGBASH\\\",20; bonus2 bSkillAtk,\\\"SM_BASH\\\",20; }",5,15000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13422,'Flamberge_C','Flamberge',5,0,NULL,0,'185',NULL,1,0,0x00004080,63,2,2,3,'1',0,2,'bonus bUnbreakableWeapon,1; bonus2 bAddSize,Size_All,40;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13422,'Flamberge_C','Flamberge',5,0,NULL,0,'185',NULL,1,0,0x00004080,63,2,2,3,'1',0,2,'bonus bUnbreakableWeapon; bonus2 bAddSize,Size_All,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13423,'P_Sabre1','Eden Sabre I',5,0,NULL,0,'147',NULL,1,0,0x000654E2,63,2,2,2,'26',0,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13424,'P_Sabre2','Eden Sabre II',5,0,NULL,0,'170',NULL,1,0,0x000654E2,63,2,2,2,'40',0,2,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13425,'Tourist_Sword','Tourist Sword',5,0,NULL,500,'61',NULL,1,0,0x000654E3,63,2,2,1,'1',0,2,'bonus bStr,1; bonus bDex,1;',NULL,NULL); @@ -7501,7 +7576,7 @@ REPLACE INTO `item_db_re` VALUES (13440,'Ceremonial_Sword','Ceremonial Sword',5, REPLACE INTO `item_db_re` VALUES (13441,'Thanos_Sword','Thanatos Sword',5,10,NULL,700,'150:100',NULL,1,1,0x00004082,56,2,2,4,'120',1,2,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (13442,'Old_Parasol','Old Parasol',5,10,NULL,500,'120:80',NULL,NULL,3,0x000654E2,63,2,2,3,'80',1,2,'bonus bMatk,getrefine(); skill "MG_SOULSTRIKE",10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13444,'Pala','Pala',5,20,NULL,700,'190',NULL,0,1,0x000654E2,63,2,2,3,'0',1,2,'bonus bAspdRate,8;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (13445,'Half_BF_Sword1','Half BF Sword1',5,20,NULL,0,'115',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (13445,'Half_BF_Sword1','Half BF Sword1',5,20,NULL,0,'115',NULL,1,0,0x000654E3,63,2,2,3,'80',1,2,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13449,'Gladius_Daemonicus','Gladius Daemonicus',5,20,NULL,1200,'130',NULL,NULL,2,0x000654E2,63,2,2,4,'80',1,2,'bonus bAtkEle,Ele_Dark;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (13450,'Saber__','Saber',5,10,NULL,1000,'115',NULL,NULL,2,0x000654E2,63,2,2,3,'27',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (13451,'Ru_Blue_Sword','Blue Sword',5,10,NULL,1200,'190',NULL,1,1,0x00000080,56,2,2,3,'100',1,2,'bonus bStr,5; bonus bAgi,5;',NULL,NULL); @@ -8231,7 +8306,7 @@ REPLACE INTO `item_db_re` VALUES (14216,'F_Bubble_Gum_Box5','Bubble Gum 5 Box',1 REPLACE INTO `item_db_re` VALUES (14217,'F_Megaphone_Box1','Megaphone Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12221,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14218,'F_Megaphone_Box5','Megaphone 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12221,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14219,'F_Enriched_Elunium_Box5','Enriched Elunium 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7619,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14220,'FEnriched_Oridecon_Box5','Enriched Oridecon 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7620,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14220,'F_Enriched_Oridecon_Box5','Enriched Oridecon 5 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 7620,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14221,'MP_Scroll_Box','Mystical Amplification Scroll 10 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14222,'MP_Scroll_Box30','Mystical Amplification Scroll 30 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14223,'MP_Scroll_Box50','Mystical Amplification Scroll 50 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14593,50;',NULL,NULL); @@ -8435,8 +8510,8 @@ REPLACE INTO `item_db_re` VALUES (14521,'Repair_Scroll','Repair Weapon Scroll',2 REPLACE INTO `item_db_re` VALUES (14522,'Big_Bun','Big Bun',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14523,'Pill_','Pill',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 0,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14524,'Superb_Fish_Slice','Superb Fish Slice',0,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'percentheal 100,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14525,'Chewy_Ricecake','Chewy Ricecake',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ATKPOTION,180000,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14526,'Oriental_Pastry','Oriental Pastry',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MATKPOTION,180000,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14525,'Chewy_Ricecake','Chewy Ricecake',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ATKPOTION,1800000,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14526,'Oriental_Pastry','Oriental Pastry',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MATKPOTION,1800000,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14527,'Dun_Tele_Scroll1','Dungeon Teleport Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashDungeon",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14528,'PVP_Tele_Scroll','PVP Teleport Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "pvp_n_room",52,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14529,'Greed_Scroll','Greed Scroll',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "BS_GREED",1;',NULL,NULL); @@ -8496,7 +8571,7 @@ REPLACE INTO `item_db_re` VALUES (14582,'WOB_Rune','Yellow Butterfly Wing',2,0,N REPLACE INTO `item_db_re` VALUES (14583,'WOB_Schwaltz','Green Butterfly Wing',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashCity",2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14584,'WOB_Rachel','Red Butterfly Wing',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashCity",3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14585,'WOB_Local','Blue Butterfly Wing',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashCity",4;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14586,'Spark_Candy','Jumping Candy',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HASTEUP; bonus_script "{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; /*EFFECTEndure 9999 100*/ }",60,0,0,SI_STEAMPACK; itemskill "SM_ENDURE",10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14586,'Spark_Candy','Jumping Candy',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_HASTEUP; bonus_script "{ bonus2 bHPLossRate,100,10000; bonus bBaseAtk,20; bonus bAspdRate,25; /*EFFECTEndure 9999 100*/ }",60,0,0,EFST_STEAMPACK; itemskill "SM_ENDURE",10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14587,'Repair_Scroll_','Equipment Repair Spell Book',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "BS_REPAIRWEAPON",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14588,'Pty_Blessing_Scroll','Party Blessing 10 Scroll',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "CASH_BLESSING",10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14589,'Pty_Inc_Agi_Scroll','Party Increase Agi 10 Scroll',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "CASH_INCAGI",10;',NULL,NULL); @@ -8507,15 +8582,15 @@ REPLACE INTO `item_db_re` VALUES (14593,'Magic_Power_Scroll','Mystical Amplifica REPLACE INTO `item_db_re` VALUES (14594,'Quagmire_Scroll','Quagmire Scroll',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "WZ_QUAGMIRE",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14595,'Unsealed_Magic_Spell','Unsealed Magic Spell',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "yuno_fild09",255,127;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14596,'Pierre_Treasurebox','Pierre\'s Treasure Box',2,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1); getrandgroupitem(IG_Pierre_Treasurebox,1);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14597,'PhreeoniS','Phreeoni Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4121,SI_FOODHIT;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14598,'GhostringS','Ghostring Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4047,SI_ARMOR_PROPERTY;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14597,'PhreeoniS','Phreeoni Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,180000,4121,EFST_FOOD_BASICHIT;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14598,'GhostringS','Ghostring Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ITEMSCRIPT,60000,4047,EFST_ARMOR_PROPERTY;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14599,'Greed_Scroll_C','Greed Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "BS_GREED",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14600,'Mental_Potion','Mental Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bUseSPrate,-10; bonus bMaxSPrate,10; }",1800;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14601,'Tyr\'s_Blessing','Tyr\'s Blessing',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FLEEFOOD,300000,30; sc_start SC_HITFOOD,300000,30; sc_start SC_ATKPOTION,300000,20; sc_start SC_MATKPOTION,300000,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14602,'TaogunkaS','Tao Gunka Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,0,0,SI_MVPCARD_TAOGUNKA;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14603,'MistressS','Mistress Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bNoGemStone,1; bonus bUseSPrate,25; }",180,0,0,SI_MVPCARD_MISTRESS;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14604,'Orc_HeroS','Orc Hero Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus2 bResEff,Eff_Stun,10000; }",180,0,0,SI_MVPCARD_ORCHERO;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14605,'Orc_LoadS','Orc Lord Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,0,0,SI_MVPCARD_ORCLORD;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14602,'TaogunkaS','Tao Gunka Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,0,0,EFST_MVPCARD_TAOGUNKA;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14603,'MistressS','Mistress Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; bonus_script "{ bonus bNoGemStone; bonus bUseSPrate,25; }",180,0,0,EFST_MVPCARD_MISTRESS;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14604,'Orc_HeroS','Orc Hero Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus2 bResEff,Eff_Stun,10000; }",180,0,0,EFST_MVPCARD_ORCHERO;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14605,'Orc_LoadS','Orc Lord Scroll',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,0,0,EFST_MVPCARD_ORCLORD;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14606,'Job_Manual25','JOB Battle Manual',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (14607,'Luxurious_Dinner_W','Luxurious Western Food',2,10000,NULL,600,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCALLSTATUS,3600000,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14608,'Luxurious_Dinner_E','Manchu-Han Imperial Feast',2,20000,NULL,1200,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCALLSTATUS,3600000,6;',NULL,NULL); @@ -8524,12 +8599,12 @@ REPLACE INTO `item_db_re` VALUES (14611,'M_Def_Potion','M Def Potion',11,0,NULL, REPLACE INTO `item_db_re` VALUES (14612,'M_Mdef_Potion','M Mdef Potion',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_SPELLBREAKER; sc_start SC_MDEF_RATE,120000,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14613,'RWC_Scroll_2012','RWC Scroll 2012',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_RWC_Scroll_2012);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14614,'Ex_Def_Potion','Ex Def Potion',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'specialeffect2 EF_GUARD; sc_start SC_DEF_RATE,1800000,3; sc_start SC_MDEF_RATE,1800000,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14616,'STR_Biscuit_Stick','Bar Cookie Of Strength',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_STRFOOD,1800000,15; sc_start SC_INCATKRATE,600000,rand(11,111);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14617,'VIT_Biscuit_Stick','Bar Cookie Of Vitality',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_VITFOOD,1800000,15; sc_start SC_INCDEFRATE,600000,rand(11,33);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14618,'AGI_Biscuit_Stick','Bar Cookie Of Agility',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_AGIFOOD,1800000,15; sc_start SC_FLEEFOOD,600000,rand(11,33);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14619,'INT_Biscuit_Stick','Bar Cookie Of Intelligence',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INTFOOD,1800000,15; sc_start SC_INCMATKRATE,600000,rand(11,111);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14620,'DEX_Biscuit_Stick','Bar Cookie Of Dexterity',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DEXFOOD,1800000,15; sc_start SC_HITFOOD,600000,rand(11,33);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (14621,'LUK_Biscuit_Stick','Bar Cookie Of Lucky',18,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LUKFOOD,1800000,15; sc_start SC_CRIFOOD,600000,rand(11,33);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14616,'STR_Biscuit_Stick','Bar Cookie Of Strength',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_STR_CASH,1800000,15; sc_start SC_ATKPOTION,600000,rand(11,111);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14617,'VIT_Biscuit_Stick','Bar Cookie Of Vitality',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_VIT_CASH,1800000,15; bonus_script "{ bonus bHPRecovRate,rand(11,33); }",1800,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14618,'AGI_Biscuit_Stick','Bar Cookie Of Agility',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_AGI_CASH,1800000,15; sc_start SC_FLEEFOOD,600000,rand(11,33);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14619,'INT_Biscuit_Stick','Bar Cookie Of Intelligence',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_INT_CASH,1800000,15; sc_start SC_MATKPOTION,600000,rand(11,111);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14620,'DEX_Biscuit_Stick','Bar Cookie Of Dexterity',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_DEX_CASH,1800000,15; sc_start SC_HITFOOD,600000,rand(11,33);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (14621,'LUK_Biscuit_Stick','Bar Cookie Of Lucky',2,1,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FOOD_LUK_CASH,1800000,15; sc_start SC_CRIFOOD,600000,rand(11,33);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14623,'Golden_Treasure_Box_','Golden Treasure Box',18,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*getitem callfunc("F_Rand",Devilring card, Angeling card, 11 weapons smelting ticket, armor smelting 11 ticket , horns of the buffalo, ring of recovery, pink bunny costume hair band)*/',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14624,'Blue_Scroll','Blue Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Blue_Scroll);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (14626,'Indigo_Scroll','Indigo Scroll',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Indigo_Scroll);',NULL,NULL); @@ -8591,7 +8666,7 @@ REPLACE INTO `item_db_re` VALUES (15004,'Freyja_SRobe30','Freyja Soul Robe30',4, REPLACE INTO `item_db_re` VALUES (15005,'Freyja_SRobe60','Freyja Soul Robe60',4,0,NULL,300,NULL,7,NULL,0,0xFFFFFFFF,63,2,16,NULL,'20',0,0,'bonus bMaxHP,700;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15006,'Freyja_SRobe90','Freyja Soul Robe90',4,0,NULL,300,NULL,7,NULL,0,0xFFFFFFFF,63,2,16,NULL,'20',0,0,'bonus bMaxHP,700;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15007,'Time_Keepr_Robe','Time Keeper Robe',4,30000,NULL,0,NULL,62,NULL,0,0xFFFFFFFF,63,2,16,NULL,'1',1,0,'bonus bMdef,1; bonus bStr,2; bonus bMaxHP,200;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15008,'Flame_Sprits_Armor__','Flame Sprits Armor',4,20,NULL,1000,NULL,25,NULL,0,0xFFFFFFFF,63,2,16,NULL,'1',1,0,'bonus bMdef,1; bonus2 bSubDefEle,Ele_Fire,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15008,'Flame_Sprits_Armor__','Flame Sprits Armor',4,20,NULL,1000,NULL,25,NULL,0,0xFFFFFFFF,63,2,16,NULL,'1',1,0,'bonus bMdef,1; bonus bDefEle,Ele_Fire; bonus2 bSubDefEle,Ele_Earth,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15009,'Para_Team_Uniform1','Eden Team Uniform I',4,0,NULL,0,NULL,35,NULL,0,0xFFFFFFFF,63,2,16,NULL,'12',0,0,'bonus bMaxHP,100; bonus bMaxSP,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15010,'Para_Team_Uniform2','Eden Team Uniform II',4,0,NULL,0,NULL,46,NULL,0,0xFFFFFFFF,63,2,16,NULL,'26',0,0,'bonus bMaxHP,200; bonus bMaxSP,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15011,'Para_Team_Uniform3','Eden Team Uniform III',4,0,NULL,0,NULL,58,NULL,0,0xFFFFFFFF,63,2,16,NULL,'40',0,0,'bonus bMaxHP,300; bonus bMaxSP,30; bonus bMdef,5;',NULL,NULL); @@ -8606,7 +8681,7 @@ REPLACE INTO `item_db_re` VALUES (15019,'Upg_Thief_Cloth','Upg Thief Cloth',4,20 REPLACE INTO `item_db_re` VALUES (15020,'Upg_Mail','Upg Mail',4,20,NULL,1650,NULL,60,NULL,1,0x000654E2,63,2,16,NULL,'1',1,0,'bonus bMaxHPrate,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15021,'Upg_Formal_Dress','Upg Formal Dress',4,20,NULL,150,NULL,45,NULL,1,0xFFFFFFFE,63,2,16,NULL,'1',1,0,'bonus bMaxHPrate,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15022,'Brazil_Swimsuit','Brazil Swimsuit',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,16,NULL,'1',1,0,'bonus bStr,4; bonus bInt,4; bonus bMdef,3; bonus2 bSubEle,Ele_Water,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15023,'Half_Brynhild','Half Brynhild',4,20,NULL,0,NULL,60,NULL,0,0xFFFFFFFF,63,2,16,NULL,'47',0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bUnbreakableArmor,1; bonus bNoKnockback,0;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15023,'Half_Brynhild','Half Brynhild',4,20,NULL,0,NULL,60,NULL,0,0xFFFFFFFF,63,2,16,NULL,'47',0,0,'bonus bMdef,10; bonus bMaxHP,20*BaseLevel; bonus bMaxSP,5*BaseLevel; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus bUnbreakableArmor; bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15024,'Army_Padding','Army Padding',4,0,NULL,10,NULL,10,NULL,0,0xFFFFFFFF,63,2,16,NULL,'1',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (15025,'Golden_Rod_Robe','Golden Rod Robe',4,20,NULL,500,NULL,40,NULL,0,0x00000200,63,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Wind; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_VERMILION",-3000; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15026,'Aqua_Robe','Aqua Robe',4,20,NULL,500,NULL,40,NULL,0,0x00000200,63,2,16,NULL,'100',1,0,'bonus bDefEle,Ele_Water; bonus bMdef,10; bonus bInt,1; bonus2 bSkillVariableCast,"WZ_STORMGUST",-3000; if(readparam(bInt)>=120){ bonus bInt,1; }',NULL,NULL); @@ -8643,7 +8718,7 @@ REPLACE INTO `item_db_re` VALUES (15056,'Special_Ninja_Suit_','Special Ninja Sui REPLACE INTO `item_db_re` VALUES (15057,'Pure_White_Apron','Pure White Apron',4,20,NULL,600,'0',50,0,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (15058,'Rider_Suit','Rider Suit',4,20,NULL,1000,'0',40,0,1,75,7,2,16,NULL,'1',1,0,'bonus bAgi,1+(getrefine()/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15059,'2011Love_Daddy','2011Love Daddy',4,20,NULL,100,'0',80,0,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15060,'Sky_Blue_Smock','Sky Blue Smock',4,20,NULL,300,'0',1,0,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15060,'Sky_Blue_Smock','Sky Blue Smock',4,20,NULL,300,'0',1,0,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,'bonus2 bAddClass,Class_All,2; bonus bMatkRate,2; if(BaseLevel<80) { bonus bHealPower,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15061,'Egir_Armor','Egir Armor',4,200000,NULL,2600,NULL,55,NULL,1,0xFFFFFFFF,63,2,16,NULL,'110',1,0,'bonus bAllStats,1; if(BaseClass==Job_Mage||BaseClass==Job_Archer||BaseClass==Job_Acolyte) bonus2 bResEff,Eff_Silence,5000; else if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief) bonus2 bResEff,Eff_Stun,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15062,'TE_Woe_Coat','TE Woe Coat',4,0,NULL,0,NULL,15,NULL,0,0xFFFFFFFF,63,2,16,NULL,'40',1,NULL,'bonus bMdef,15; bonus bMaxHP,250; bonus bMaxSP,250; bonus2 bSubRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15063,'TE_Woe_Chain_Mail','TE Woe Chain Mail',4,0,NULL,0,NULL,25,NULL,0,0x000444A2,63,2,16,NULL,'40',1,NULL,'bonus bMdef,5; bonus bMaxHP,450; bonus bMaxSP,50; bonus2 bSubRace,RC_Player,15; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); @@ -8654,31 +8729,32 @@ REPLACE INTO `item_db_re` VALUES (15068,'Im_Angel\'s_Protection','Advanced Angel REPLACE INTO `item_db_re` VALUES (15069,'Suit_Of_Sid','Suit Of Sid',4,20,NULL,1000,NULL,30,NULL,0,0xFFFFFFFF,63,2,16,NULL,'0',1,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (15070,'Clothes_of_Happiness','Clothes of Happiness',4,10,NULL,1000,NULL,5,NULL,1,0xFFFFFFFF,63,2,16,NULL,'1',1,NULL,'bonus bMdef,5; bonus bLuk,getrefine();',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15073,'Anti_Magic_Suit','Anti-Magic Suits',4,10,NULL,1500,NULL,50,NULL,1,0xFFFFFFFF,63,2,16,NULL,'99',1,0,'.@r = getrefine(); bonus bMaxHPrate,5+((.@r >= 9) ? 2 : 0); bonus bMdef,10+((.@r >= 7) ? 5 : 0);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15074,'Geffen_Mage_Robe','Geffen Magic Robe',4,10,NULL,1000,NULL,40,NULL,1,0xFFFFFFFF,63,2,16,NULL,'99',1,0,'.@r = getrefine(); bonus bUseSPrate,-10-((.@r>=7) ? 5: 0); bonus bVariableCastrate,-15-((.@r>=9) ? 5: 0); bonus bNoCastCancel2,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15074,'Geffen_Mage_Robe','Geffen Magic Robe',4,10,NULL,1000,NULL,40,NULL,1,0xFFFFFFFF,63,2,16,NULL,'99',1,0,'.@r = getrefine(); bonus bUseSPrate,-10-((.@r>=7) ? 5: 0); bonus bVariableCastrate,15-((.@r>=9) ? 5: 0); bonus bNoCastCancel2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15088,'School_Uniform','School Uniform',4,20,NULL,500,NULL,25,NULL,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,'bonus bAgi,1; bonus bLuk,1; bonus bMaxHP,BaseLevel*3; bonus bMaxSP,BaseLevel/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15089,'Menswear','Menswear',4,10,NULL,300,NULL,40,NULL,0,0xFFFFFFFE,63,2,16,NULL,'80',1,NULL,'.@r = getrefine(); bonus bAspdRate,3+((.@r>=7)?2:0); bonus bDelayrate,-3-((.@r>=7)?2:0); bonus bVariableCastrate,-3-((.@r>=7)?2:0);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15090,'Armor_Of_Gray','Armor of Gray',4,10,NULL,2400,NULL,90,NULL,1,0x000654E2,56,2,16,NULL,'120',1,0,'bonus bMdef,10; bonus2 bSubEle,Ele_Holy,10+getrefine()*2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15091,'Gray_Robe','Gray Robe',4,20,NULL,1300,NULL,55,NULL,1,0x00018314,56,2,16,NULL,'120',1,0,'bonus2 bSubEle,Ele_Holy,10+getrefine()*2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15093,'Hero_Plate','Hero Plate',4,10,NULL,4000,NULL,120,NULL,1,0x00004082,63,2,16,NULL,'160',1,NULL,'bonus bMdef,5; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"LG_BANISHINGPOINT",10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",10; .@r = getrefine(); bonus5 bAutoSpell,"AL_HEAL",10,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"WZ_STORMGUST",10,50+.@r,BF_SHORT,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15094,'Hero_Magic_Coat','Hero Magic Coat',4,10,NULL,800,NULL,50,NULL,1,0x00010204,63,2,16,NULL,'160',1,NULL,'bonus bMatk,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bFlee,10; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; .@r = getrefine(); if (.@r) { bonus bFixedCastrate,21-.@r/2; bonus bNoCastCancel2,1; bonus bMdef,.@r/2; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15095,'Hero_Judgement_Shawl','Hero Judgement Shawl',4,10,NULL,500,NULL,77,NULL,1,0x00008110,63,2,16,NULL,'160',1,NULL,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"AB_JUDEX",10; bonus2 bSkillAtk,"AB_ADORAMUS",10; bonus2 bSkillAtk,"SR_DRAGONCOMBO",10; bonus2 bSkillAtk,"SR_SKYNETBLOW",10; bonus2 bSkillAtk,"SR_EARTHSHAKER",10; .@r = getrefine(); bonus5 bAutoSpell,"PR_KYRIE",1,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"PR_LEXAETERNA",10,50+.@r,BF_MAGIC,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15094,'Hero_Magic_Coat','Hero Magic Coat',4,10,NULL,800,NULL,50,NULL,1,0x00010204,63,2,16,NULL,'160',1,NULL,'bonus bMatk,10; bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bFlee,10; bonus2 bSkillAtk,"WL_CRIMSONROCK",10; bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10; .@r = getrefine(); if (.@r) { bonus bFixedCastrate,21-.@r/2; bonus bNoCastCancel2; bonus bMdef,.@r/2; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15095,'Hero_Judgement_Shawl','Hero Judgement Shawl',4,10,NULL,500,NULL,77,NULL,1,0x00008110,63,2,16,NULL,'160',1,NULL,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; bonus bHit,10; bonus bFlee,10; bonus2 bSkillAtk,"AB_JUDEX",10; bonus2 bSkillAtk,"AB_ADORAMUS",10; bonus2 bSkillAtk,"SR_DRAGONCOMBO",10; bonus2 bSkillAtk,"SR_SKYNETBLOW",10; bonus2 bSkillAtk,"SR_EARTHSHAKER",10; .@r = getrefine(); bonus5 bAutoSpell,"PR_KYRIE",10,50+.@r,BF_SHORT,0; bonus5 bAutoSpell,"PR_LEXAETERNA",1,50+.@r,BF_MAGIC,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15096,'Hero_Trade_Mail','Hero Trade Mail',4,10,NULL,500,NULL,100,NULL,1,0x00040420,56,2,16,NULL,'160',1,NULL,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus bMatk,10; bonus bBaseAtk,10; .@r = getrefine(); if(readparam(bStr) >= 90) bonus bStr,.@r/2; if(readparam(bInt) >= 90) bonus bInt,.@r/2; if(readparam(bAgi) >= 90) bonus bAgi,.@r/2; if(readparam(bVit) >= 90) bonus bVit,.@r/2; if(readparam(bDex) >= 90) bonus bDex,.@r/2; if(readparam(bLuk) >= 90) bonus bLuk,.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15097,'Hero_Hidden_Cloth','Hero Hidden Cloth',4,10,NULL,200,NULL,70,NULL,1,0x00021040,63,2,16,NULL,'160',1,0,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; bonus2 bSkillAtk,"SC_FATALMENACE",10; bonus2 bSkillAtk,"SC_TRIANGLESHOT",10; bonus2 bSkillAtk,"GC_CROSSIMPACT",10; bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",10; autobonus "{ bonus bCritical,20; bonus bFlee,20; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; }",(5+getrefine())*10,10000,BF_WEAPON;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15098,'Hero_Taget_Suits','Hero Target Suit',4,10,NULL,200,NULL,60,NULL,1,0x00080808,56,2,16,NULL,'160',1,NULL,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; .@r = getrefine(); bonus bAllStats,1; bonus5 bAutoSpell,"AC_CONCENTRATION",10,(5+.@r)*5,BG_WEAPON,0; bonus5 bAutoSpell,"AC_DOUBLE",10,(5+.@r)*5,BG_WEAPON,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15098,'Hero_Taget_Suits','Hero Target Suit',4,10,NULL,200,NULL,60,NULL,1,0x00080808,56,2,16,NULL,'160',1,NULL,'bonus bMaxHPrate,5; bonus bMaxSPrate,5; .@r = getrefine(); bonus bAllStats,1; bonus5 bAutoSpell,"AC_CONCENTRATION",10,(5+.@r)*5,BF_WEAPON,0; bonus5 bAutoSpell,"AC_DOUBLE",10,(5+.@r)*5,BF_WEAPON,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15100,'Frozen_Breastplate','Frozen Breastplate',4,20,NULL,1500,NULL,20,NULL,1,0xFFFFFFFF,63,2,16,NULL,'130',1,0,'bonus bDefEle,Ele_Water;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15101,'Harden_Breastplate','Hardened Breastplate',4,20,NULL,1500,NULL,20,NULL,1,0xFFFFFFFF,63,2,16,NULL,'130',1,0,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15101,'Harden_Breastplate','Hardened Breastplate',4,20,NULL,1500,NULL,20,NULL,1,0xFFFFFFFF,63,2,16,NULL,'130',1,0,'bonus bDefEle,Ele_Earth;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15103,'Kirin_Armor','Kirin Armor',4,10,NULL,500,NULL,55,NULL,1,0xFFFFFFFF,63,2,16,NULL,'70',NULL,NULL,'bonus bDefEle,Ele_Holy;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15104,'FishingMan_Mail','FishingMan Mail',4,10,NULL,500,NULL,30,NULL,1,0xFFFFFFFF,63,2,16,NULL,'50',NULL,NULL,'bonus2 bAddRace,RC_Fish,10; bonus2 bMagicAddRace,RC_Fish,10; .@r = getrefine(); if(.@r>5){ bonus2 bAddRace,RC_All,.@r; bonus2 bMagicAddRace,RC_All,.@r; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15105,'Kaftan','Kaftan',4,20,NULL,400,NULL,13,NULL,1,0xFFFFFFFF,63,2,16,NULL,'0',1,0,'bonus bMdef,3; bonus2 bSubRace,RC_Demon,5; bonus2 bSubRace,RC_Undead,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15110,'Supplement_Part_Str','Supplement Part Str',4,25000,NULL,2000,NULL,80,NULL,NULL,0x00000400,56,2,16,NULL,'100',1,0,'bonus2 bAddClass,Class_All,5+getrefine()/4;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15111,'Upgrade_Part_Plate','Reinforced Parts - Gloves',4,10,NULL,3000,NULL,110,NULL,NULL,0x00000400,56,2,16,NULL,'100',1,NULL,'bonus bUnbreakableArmor,1; bonus2 bSubSize,0,10; bonus2 bSubSize,1,10; .@r = getrefine(); if(.@r>=7){ bonus2 bSubSize,2,10; }; if(.@r>=9){ bonus2 bSubSize,0,5; bonus2 bSubSize,1,5; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15116,'Airship_Armor','Armor Of Airship',4,10,NULL,700,NULL,100,NULL,0,0xFFFFFFFF,63,2,16,NULL,'125',1,NULL,'bonus bMaxHP,1000; bonus bMaxSP,100; bonus bMdef,10; bonus bAllStats,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15117,'Felock_Armor','Tarlock\'s Armor',4,10,NULL,750,NULL,70,NULL,0,0xFFFFFFFF,63,2,16,NULL,'125',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,50; bonus bMdef,10; bonus bAllStats,1; .@r = getrefine(); if(.@r>=7) { bonus bMaxHP,500; bonus bMaxSP,50; } if(.@r>=9) { bonus bMaxHP,200; bonus bMaxSP,20; } if(.@r>=12) { bonus bMaxHP,300; bonus bMaxSP,30; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15111,'Upgrade_Part_Plate','Reinforced Parts - Gloves',4,10,NULL,3000,NULL,110,NULL,NULL,0x00000400,56,2,16,NULL,'100',1,NULL,'bonus bUnbreakableArmor; bonus2 bSubSize,0,10; bonus2 bSubSize,1,10; .@r = getrefine(); if(.@r>=7){ bonus2 bSubSize,2,10; }; if(.@r>=9){ bonus2 bSubSize,0,5; bonus2 bSubSize,1,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15116,'Airship_Armor','Airship\'s Armor',4,10,NULL,700,NULL,100,NULL,0,0xFFFFFFFF,63,2,16,NULL,'125',0,NULL,'bonus bMaxHP,1000; bonus bMaxSP,100; bonus bMdef,10; bonus bAllStats,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15117,'Felock_Armor','Felrock\'s Armor',4,10,NULL,750,NULL,70,NULL,0,0xFFFFFFFF,63,2,16,NULL,'125',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,50; bonus bMdef,10; bonus bAllStats,1; .@r = getrefine(); if(.@r>=7) { bonus bMaxHP,500; bonus bMaxSP,50; } if(.@r>=9) { bonus bMaxHP,200; bonus bMaxSP,20; } if(.@r>=12) { bonus bMaxHP,300; bonus bMaxSP,30; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15121,'Robe_Of_Sarah','Sarah Combat Robe',4,10,NULL,800,NULL,35,NULL,1,0xFFFFFFFF,63,2,16,NULL,'145',1,NULL,'/*TODO: Confirm the real rate and additional MAtk*/ .@r = getrefine(); autobonus "{ bonus bMatk,20; }",100,(10+((.@r) ? .@r*8 : 0))*1000,BF_MAGIC;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15123,'Whikebain_Suit','Whikebain Suit',4,0,NULL,900,NULL,56,NULL,1,0x00001000,56,2,16,NULL,'105',1,NULL,'.@r = getrefine(); bonus bCritAtkRate,(.@r>=7)?(6):((.@r>=5)?(4):(0)); bonus3 bAutoSpell,"DC_WINKCHARM",1,10; /* Confirm: Success rate */',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15126,'Female_Poring_Balloon','Private Doram Suits',4,20,NULL,700,NULL,80,NULL,1,0x80000000,7,2,16,NULL,'100',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,100; .@r = getrefine()/3; bonus bDex,.@r; bonus bInt,.@r;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15128,'Excelion_Suit','Excelion Suit',4,20,NULL,1000,NULL,100,NULL,0,0xFFFFFFFF,63,2,16,NULL,'99',1,NULL,'bonus bVit,6 + (BaseLevel > 129 ? 4 : 0); bonus bMaxHPrate,(getrefine() / 3) * 4; bonus bUnbreakableArmor;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15129,'Blue_Bellflower_Hat','Luxury Doram Suit',4,20,NULL,800,NULL,100,NULL,1,0x80000000,7,2,16,NULL,'140',1,NULL,'bonus bMaxHPrate,10; bonus bMaxSPrate,10; .@r = getrefine()/2; bonus bDex,.@r; bonus bInt,.@r;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (15138,'Aegir_Armor','Aegir Armor',4,10,NULL,1600,NULL,25,NULL,1,0xFFFFFFFF,63,2,16,NULL,'40',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,50; bonus bUnbreakableArmor,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (15138,'Aegir_Armor','Aegir Armor',4,10,NULL,1600,NULL,25,NULL,1,0xFFFFFFFF,63,2,16,NULL,'40',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,50; bonus bUnbreakableArmor;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15141,'Rift_Ancient_Armor','Rift Ancient Armor',4,10,NULL,500,NULL,30,NULL,1,0xFFFFFFFF,63,2,16,NULL,'100',1,NULL,'.@r = getrefine(); bonus bMaxHP,(.@r >= 9 ? 1500 : .@r >= 7 ? 900 : 500); bonus bMaxSP,-100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15145,'EvilDragon_Armor','Evil Dragon Armor',4,0,NULL,4000,NULL,60,NULL,1,0xFFFFFFFF,63,2,16,NULL,NULL,1,NULL,'.@r = getrefine(); bonus2 bHPDrainRate,100,(.@r>=10)?(3):((.@r>=9)?(4):((.@r>=8)?(6):(0))); bonus2 bSPDrainRate,100,(.@r>=10)?(5):((.@r>=9)?(3):((.@r>=8)?(2):(0))); /* Confirm: Success rate and it says no effect if with Rideword, Vanargandr Helm, or Piece Of Angent Skin */',NULL,NULL); REPLACE INTO `item_db_re` VALUES (15146,'Flattery_Robe','Flattery Robe',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,16,NULL,'100',1,NULL,'skill "SM_ENDURE",1; .@i = BaseLevel; bonus bMatk,(.@i>=140)?(150):((.@i>=120)?(100):(50));',NULL,NULL); @@ -8720,32 +8796,32 @@ REPLACE INTO `item_db_re` VALUES (16012,'Academy_Mace','Academy Mace',5,0,NULL,1 REPLACE INTO `item_db_re` VALUES (16013,'Mace_Of_Judgement','Mace Of Judgement',5,20,NULL,1200,'140:180',NULL,1,2,0x00000100,56,2,2,3,'100',1,8,'bonus bAtkEle,Ele_Holy; bonus bStr,1; bonus bInt,1; autobonus "{ bonus2 bMagicAddRace,RC_Demon,20; }",30,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,20; }",5,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16014,'P_Mace3','Eden Mace III',5,0,NULL,0,'172',NULL,1,0,0x0004C5B3,63,2,2,3,'60',0,8,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (16015,'Cat_Club','Cat Club',5,20,NULL,700,'88',NULL,1,3,0x0004C5B3,63,2,2,1,'1',1,8,'bonus2 bAddRace,RC_Brute,15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16016,'Tuna','Tuna',5,0,NULL,0,'180',NULL,1,0,0x0004C5B3,63,2,2,1,'50',0,8,'bonus bUnbreakableWeapon,1; bonus2 bAddEff,Eff_Stun,150; bonus3 bAutoSpell,"SM_BASH",5,20; if(BaseLevel>99) bonus bBaseAtk,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16016,'Tuna','Tuna',5,0,NULL,0,'180',NULL,1,0,0x0004C5B3,63,2,2,1,'50',0,8,'bonus bUnbreakableWeapon; bonus2 bAddEff,Eff_Stun,1500; bonus3 bAutoSpell,"SM_BASH",max(getskilllv("SM_BASH"),5),20; bonus2 bAddEff2,Eff_Freeze,100; if(BaseLevel>99) bonus bBaseAtk,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16017,'Bloody_Cross','Bloody Cross',5,20,NULL,1500,'170',NULL,1,0,0x00008110,63,2,2,4,'100',1,8,'bonus bAtkEle,Ele_Dark; .@r = getrefine(); bonus3 bAutoSpell,"WL_HELLINFERNO",1,(.@r?.@r*20:20);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16018,'Mace_Of_Judgement2','Empowered Mace Of Judgement',5,20,NULL,1200,'170:180',NULL,1,1,0x00000100,56,2,2,3,'130',1,8,'bonus bAtkEle,Ele_Holy; bonus bStr,2; bonus bInt,2; autobonus "{ bonus2 bMagicAddRace,RC_Demon,40; }",60,7000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }"; autobonus "{ bonus2 bAddRace,RC_Demon,40; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16019,'Upg_Mace','Upg Mace',5,20,NULL,800,'80',NULL,1,1,0x0004C5B3,63,2,2,3,'1',1,8,'.@r = getrefine(); bonus bBaseAtk,(.@r*10); bonus bHealPower,.@r; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16020,'Velum_Stunner','Vellum Stunner',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,2,2,4,'95',1,8,'bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus2 bAddEff,Eff_Stun,1000+.@r; bonus4 bSetDefRace,RC_Player,10000,5000,1; bonus4 bSetMDefRace,RC_Player,10000,5000,1; bonus bAspdRate,.@r;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16021,'Velum_Flail','Vellum Flail',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,2,2,4,'95',1,8,'bonus bUnbreakableWeapon,1; bonus3 bStateNoRecoverRace,RC_DemiHuman,10000,10000; .@r = getrefine(); bonus bHit,.@r; bonus bCritical,.@r;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16022,'Nemesis_','Nemesis',5,20,NULL,900,'120',NULL,1,2,0x00008110,63,2,2,4,'60',1,8,'bonus bUnbreakableWeapon,1; bonus bAtkEle,Ele_Holy;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16023,'Metal_Mace','Metal Mace',5,20,NULL,0,'80',NULL,1,1,0x0004C5B3,63,2,2,3,'1',1,8,'bonus bUnbreakableWeapon,1; bonus bBaseAtk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16020,'Velum_Stunner','Vellum Stunner',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,2,2,4,'95',1,8,'bonus bUnbreakableWeapon; .@r = getrefine(); bonus2 bAddEff,Eff_Stun,1000+.@r; bonus4 bSetDefRace,RC_Player,10000,5000,1; bonus4 bSetMDefRace,RC_Player,10000,5000,1; bonus bAspdRate,.@r;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16021,'Velum_Flail','Vellum Flail',5,20,NULL,1500,'170',NULL,1,0,0x0004C5B3,63,2,2,4,'95',1,8,'bonus bUnbreakableWeapon; bonus3 bStateNoRecoverRace,RC_DemiHuman,10000,10000; .@r = getrefine(); bonus bHit,.@r; bonus bCritical,.@r;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16022,'Nemesis_','Nemesis',5,20,NULL,900,'120',NULL,1,2,0x00008110,63,2,2,4,'60',1,8,'bonus bUnbreakableWeapon; bonus bAtkEle,Ele_Holy;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16023,'Metal_Mace','Metal Mace',5,20,NULL,0,'80',NULL,1,1,0x0004C5B3,63,2,2,3,'1',1,8,'bonus bUnbreakableWeapon; bonus bBaseAtk,(getrefine()*5); .@i = min(BaseLevel/10,12); if(.@i>2) bonus bBaseAtk,((.@i-2)*5);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16024,'Quadrille_','Quadrille',5,10,NULL,900,'165',NULL,NULL,2,0x00008110,63,2,2,4,'40',1,8,'bonus2 bAddRace,RC_Undead,10; bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; bonus2 bAddEle,Ele_Earth,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16025,'TE_Woe_Mace','TE Woe Mace',5,0,NULL,0,'120',NULL,1,0,0x0004C5B3,63,2,2,3,'40',1,8,'bonus bUnbreakableWeapon,1; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; bonus bHPRecovRate,5; bonus bSPRecovRate,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16026,'RWC_Memory_Mace','RWC Memory Mace',5,20,NULL,800,'100',NULL,1,1,0x0004C5B2,63,2,2,3,'1',1,8,'bonus bUnbreakableWeapon,1; .@r = getrefine(); bonus bBaseAtk,(.@r/30)*30; if(.@r>=9){ .@i = 1; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",1,10; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16025,'TE_Woe_Mace','TE Woe Mace',5,0,NULL,0,'120',NULL,1,0,0x0004C5B3,63,2,2,3,'40',1,8,'bonus bUnbreakableWeapon; bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Freeze,3000; bonus bHPRecovRate,5; bonus bSPRecovRate,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16026,'RWC_Memory_Mace','RWC Memory Mace',5,20,NULL,800,'100',NULL,1,1,0x0004C5B2,63,2,2,3,'1',1,8,'bonus bUnbreakableWeapon; .@r = getrefine(); bonus bBaseAtk,(.@r/30)*30; if(.@r>=9){ .@i = 1; bonus3 bAutoSpellWhenHit,"BS_WEAPONPERFECT",1,10; } if(.@r>=6){ .@rate = 5*(.@i+1); bonus2 bAddClass,Class_All,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16027,'Hammer_Of_Evil_Slayer','Evil Slayer Destroyer Hammer',5,10,NULL,1350,'125',NULL,1,1,0x0004C5B3,63,2,2,3,'100',1,8,'bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0));',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16028,'Thanos_Hammer','Thanatos Hammer',5,10,NULL,3000,'180:120',NULL,1,1,0x0004C5B2,56,2,2,4,'120',1,8,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); -REPLACE INTO `item_db_re` VALUES (16029,'Noble_Cross','Noble Cross',5,10,NULL,1500,'195:150',NULL,NULL,1,0x00000010,58,2,2,4,'40',1,8,'bonus3 bAutoSpell,"PR_TURNUNDEAD",6,50; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,12;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16029,'Noble_Cross','Noble Cross',5,10,NULL,1500,'195:150',NULL,NULL,1,0x00000010,58,2,2,4,'40',1,8,'bonus bAtkEle,Ele_Holy; bonus3 bAutoSpell,"PR_TURNUNDEAD",6,50; bonus2 bSPDrainValueRace,RC_Undead,1; bonus2 bSPGainRace,RC_Undead,12;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16030,'Pilebuncker_S','Pile Bunker S',5,20,NULL,3000,'400',NULL,1,1,0x00000400,56,2,2,4,'130',1,8,'bonus bAspdRate,getrefine()/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16031,'Pilebuncker_P','Pile Bunker P',5,20,NULL,4000,'450',NULL,1,NULL,0x00000400,56,2,2,4,'130',1,8,'bonus bBaseAtk,getrefine()*5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16032,'Pilebuncker_T','Pile Bunker T',5,20,NULL,3500,'400',NULL,1,1,0x00000400,56,2,2,4,'130',1,8,'bonus bUseSPrate,getrefine()*-1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16033,'Robot\'s_Arm','Robot\'s Mechanical Arm',5,20,NULL,3000,'195',NULL,1,2,0x00000400,56,2,2,4,'130',1,8,'bonus bUnbreakableWeapon,1; bonus bCritical,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16033,'Robot\'s_Arm','Robot\'s Mechanical Arm',5,20,NULL,3000,'195',NULL,1,2,0x00000400,56,2,2,4,'130',1,8,'bonus bUnbreakableWeapon; bonus bCritical,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16034,'Half_Mjolnir','Half Mjolnir',5,20,NULL,6000,'350',NULL,1,0,0x000444A2,63,2,2,4,'95',0,8,'bonus bAtkEle,Ele_Wind; bonus bDex,50; bonus bStr,20; bonus bAspdRate,10; bonus3 bAutoSpell,"MG_THUNDERSTORM",10,100; autobonus "{ bonus bSplashRange,1; }",50,10000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16035,'Half_BF_Morning_Star1','Half BF Morning Star1',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16035,'Half_BF_Morning_Star1','Half BF Morning Star1',5,20,NULL,0,'105',NULL,1,0,0x0004C5B3,63,2,2,3,'80',1,8,'bonus bStr,1; bonus bDex,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16036,'Ru_Blue_Mace','Blue Mace',5,10,NULL,1500,'170',NULL,1,1,0x00008000,56,2,2,3,'100',1,8,'bonus bVit,5; bonus bInt,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16037,'Ru_Gold_Mace','Ru Gold Mace',5,0,NULL,1500,'170',NULL,1,2,0x00008000,56,2,2,3,'120',1,8,'bonus bVit,8; bonus bInt,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16038,'Infinity_Mace','Infinity Mace',5,10,NULL,500,'155',NULL,1,1,0x0004C780,56,2,2,4,'100',1,8,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (16039,'Spoon','Spoon',5,10,NULL,1000,'80',NULL,1,1,0x0004C5B3,63,2,2,3,'40',1,8,'bonus bAspd,10; bonus2 bAddEff,Eff_Curse,1000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16040,'Crimson_Mace','Crimson Mace',5,20,NULL,800,'80',NULL,1,2,0x0004C5B3,63,2,2,3,'70',1,8,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16041,'Mace_of_Vicious_Mind','Mace of Vicious Mind',5,20,NULL,1300,'130',NULL,1,1,0x0004C5B3,63,2,2,4,'160',1,8,'bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16041,'Mace_of_Vicious_Mind','Mace of Vicious Mind',5,20,NULL,1300,'130',NULL,1,1,0x0004C5B3,63,2,2,4,'160',1,8,'bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16043,'Meteor_Strike','Meteor Strike',5,0,NULL,20000,'1',NULL,1,2,0x00000001,63,2,2,4,'110',1,8,'bonus bBaseAtk,10*getskilllv("BS_WEAPONRESEARCH"); bonus bBaseAtk,30*getskilllv("MO_IRONHAND"); .@s = getskilllv("AM_AXEMASTERY"); bonus bBaseAtk,7*.@s; bonus bHit,5*.@s; bonus bBaseAtk,10*getrefine(); if (getskilllv("MC_PUSHCART") > 9) skill "MC_CARTREVOLUTION",1; if (getskilllv("SM_SWORD") > 0) skill "KN_BOWLINGBASH",1; .@str = readparam(bStr); if (.@str > 119) bonus bUseSPrate,-30; else if (.@str > 107) bonus bUseSPrate,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16048,'Unity_Mace','Unity Mace',5,20,NULL,400,'76',NULL,1,1,0x0004C5B3,63,2,2,3,'1',1,8,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16051,'Valkyrie_Hammer','Valkyrie Hammer',5,0,NULL,100,'50',NULL,1,4,0x0004C3B3,63,2,2,1,'70',1,8,'if ((eaclass()&EAJ_BASEMASK) == EAJ_NOVICE) { bonus bUseSPrate,-5; .@r = getrefine(); bonus bVit,.@r; bonus bMaxHP,200; bonus bFlee2,1; bonus bAspdRate,1; bonus bVariableCast,.@r/2; } else if ((eaclass()&EAJ_BASEMASK) == EAJ_SWORDMAN) { bonus bVit,getrefine(); bonus bMaxHP,500; bonus bMaxSP,100; } else if ((eaclass()&EAJL_2) == EAJ_PRIEST) { bonus bBaseAtk,50; bonus bMatk,100; bonus bAspdRate,getrefine(); } else if ((eaclass()&EAJL_2) == EAJ_MONK) { bonus bMaxSP,200; bonus bUseSPrate,-5; bonus bFlee2,getrefine(); } else if ((eaclass()&EAJ_BASEMASK) == EAJ_MERCHANT) { bonus bBaseAtk,100; bonus bHit,10; bonus bVariableCast,getrefine()/2; }',NULL,NULL); @@ -8916,7 +8992,7 @@ REPLACE INTO `item_db_re` VALUES (16508,'Hwergelmir\'s_Tonic_Box_10','Hwergelmir REPLACE INTO `item_db_re` VALUES (16509,'Cooked_Nine_Tail_Box_10','Cooked Nine Tail Box (10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12505,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16510,'Immortal_Stew_Box_10','Immortal Stew Box (10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12506,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16514,'Blessing_Scroll_Box_10','Blessing Scroll Box (10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12522,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16515,'Increase_Agility_Scroll_Box_10','Increase Agility Scroll Box (10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12522,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16515,'Increase_Agility_Scroll_Box_10','Increase Agility Scroll Box (10)',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12523,10;',NULL,NULL); # REPLACE INTO `item_db_re` VALUES (16542,'Xmas_Bless','Xmas Bless',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Xmas_Bless);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16543,'Snowman_Hat_Box','Snowman Hat Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 5738,1;',NULL,NULL); @@ -8983,7 +9059,7 @@ REPLACE INTO `item_db_re` VALUES (16668,'Kotak_Ketupat_Warna_Warni','Kotak Ketup REPLACE INTO `item_db_re` VALUES (16670,'Field_Manual_Box_A','Field Manual Box A',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 14532,10; if (!rand(10)) getitem callfunc("F_Rand",603,617),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16673,'Libra_Scroll','Libra Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Libra_Scroll);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16675,'Splash_Scroll','Splash Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getgroupitem(IG_Splash_Scroll);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (16676,'Zodiac_Crown_Pack','Zodiac Crown Box',2,20,NULL,1,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",5546,5550,5570,5582,5588,5598,5662,5676,5739,5744,5513,5515),1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (16676,'Zodiac_Crown_Pack','Zodiac Crown Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem callfunc("F_Rand",5546,5550,5570,5582,5588,5598,5662,5676,5739,5744,5513,5515),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16677,'Universal_Catalog_Gold_Box10','Universal Catalog Gold 10 Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16678,'Universal_Catalog_Gold_Box50','Universal Catalog Gold 50 Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (16679,'Universal_Catalog_Gold_Box10_','Universal Catalog Gold 10 Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12581,10;',NULL,NULL); @@ -9203,7 +9279,7 @@ REPLACE INTO `item_db_re` VALUES (17114,'Horn_Of_Ancient_Box','Horn Of Ancient B REPLACE INTO `item_db_re` VALUES (17115,'Sprout_Hat_Box','Sprout Hat Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 18596,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (17116,'Mercury_Helm_Box','Mercury Helm Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 18597,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (17117,'Aries_Scroll','Aries Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (17118,'ASPD_Potion_Box10','ASPD Enhanced Potion Box',18,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12684,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (17118,'ASPD_Potion_Box10','ASPD Enhanced Potion Box',18,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 12684,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (17120,'Taurus_Scroll','Taurus Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (17121,'Starry_Scroll','Starry Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (17122,'Immuned_Shield_Box','Immuned Shield Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 2168,1;',NULL,NULL); @@ -9451,15 +9527,15 @@ REPLACE INTO `item_db_re` VALUES (18100,'Shooting_Star_C','Shooting Star',5,20,N REPLACE INTO `item_db_re` VALUES (18101,'F_Bow_Of_Rudra_C','Rudra Bow',5,2,NULL,0,'185',NULL,5,0,0x000A0848,63,2,34,4,'0',0,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18102,'E_Bow_Of_Rudra_C','Rudra Bow',5,2,NULL,0,'185',NULL,5,0,0x000A0848,63,2,34,4,'0',0,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18103,'Mystic_Bow','Mystic Bow',5,0,NULL,1700,'75:100',NULL,5,0,0x00080800,56,2,34,3,'105',1,11,'bonus bInt,4; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18104,'Adventure_Bow','Adventure Bow',5,0,NULL,0,'60',NULL,1,0,0x00080800,63,2,34,1,'1',0,11,'bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18104,'Adventure_Bow','Adventure Bow',5,0,NULL,0,'60',NULL,1,0,0x00080800,63,2,34,1,'1',0,11,'bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18105,'Academy_Bow','Academy Bow',5,0,NULL,1200,'90',NULL,5,1,0x00080800,63,2,34,1,'1',1,11,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18106,'P_Bow3','Eden Bow III',5,0,NULL,0,'140',NULL,5,0,0x000A0848,63,2,34,3,'60',0,11,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18107,'Malang_Snow_Crab','Malangdo Crab',5,0,NULL,0,'120',NULL,5,0,0x000A0848,63,2,34,1,'50',0,11,'bonus bUnbreakableWeapon,1; bonus bLuk,3; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bLongAtkRate,10; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18108,'Brindle_Eel','Zebra Eel',5,0,NULL,0,'180',NULL,5,0,0x00080800,63,2,34,1,'50',0,11,'bonus bUnbreakableWeapon,1; bonus bAgi,3; autobonus "{ bonus bAspd,2; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(BaseLevel>99) { bonus bLongAtkRate,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18107,'Malang_Snow_Crab','Malangdo Crab',5,0,NULL,0,'120',NULL,5,0,0x000A0848,63,2,34,1,'50',0,11,'bonus bUnbreakableWeapon; bonus bLuk,3; bonus bCritAtkRate,50; if(BaseLevel>99) { bonus bLongAtkRate,10; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18108,'Brindle_Eel','Zebra Eel',5,0,NULL,0,'180',NULL,5,0,0x00080800,63,2,34,1,'50',0,11,'bonus bUnbreakableWeapon; bonus bAgi,3; autobonus "{ bonus bAspd,2; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_HASTEUP; }"; if(BaseLevel>99) { bonus bLongAtkRate,10; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18109,'Catapult','Thief Crossbow',5,56000,NULL,1100,'150',NULL,5,2,0x00020000,63,2,34,4,'100',1,11,'.@r = getrefine(); bonus2 bSkillAtk,"SC_TRIANGLESHOT",(.@r*2); bonus2 bSkillUseSP,"SC_TRIANGLESHOT",(.@r*2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18110,'Big_CrossBow','Giant Crossbow',5,56000,NULL,900,'160',NULL,5,2,0x00000800,63,2,34,4,'110',1,11,'.@r = getrefine(); bonus2 bSkillAtk,"RA_ARROWSTORM",(.@r*5); bonus2 bSkillUseSP,"RA_ARROWSTORM",-(.@r*5); if(readparam(bAgi)>=120){ bonus bAspd,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18111,'Creeper_Bow','Creeper Bow',5,56000,NULL,1500,'150',NULL,5,2,0x00080800,63,2,34,3,'120',1,11,'bonus bDex,1; bonus3 bAutoSpell,"PF_SPIDERWEB",1,200;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18112,'Upg_Bow','Upg Bow',5,20,NULL,600,'60',NULL,5,1,0x000A0848,63,2,34,3,'1',0,11,'.@r = getrefine(); bonus bBaseAtk,(.@r*7); bonus bLongAtkRate,(.@r*2); if(BaseJob==Job_Hunter) bonus bBaseAtk,20; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18112,'Upg_Bow','Upg Bow',5,20,NULL,600,'60',NULL,5,1,0x000A0848,63,2,34,3,'1',1,11,'.@r = getrefine(); bonus bBaseAtk,(.@r*7); bonus bLongAtkRate,(.@r*2); if(BaseJob==Job_Hunter) bonus bBaseAtk,20; if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*10);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18113,'Velum_Arbalest','Vellum Arbalest',5,20,NULL,1100,'50',NULL,5,0,0x000A0848,63,2,34,4,'95',1,11,'bonus3 bSPVanishRaceRate,RC_Player,10000,4; bonus bAspd,-5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18114,'Velum_CrossBow','Vellum CrossBow',5,20,NULL,1100,'110',NULL,5,0,0x000A0848,63,2,34,4,'95',1,11,'bonus2 bAddRace,RC_Player,30+getrefine(); bonus2 bIgnoreDefRaceRate,RC_Player,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18115,'Orc_Archer_Bow_','Orc Archer Bow',5,20,NULL,1600,'120',NULL,5,1,0x000A0848,63,2,34,3,'65',1,11,NULL,NULL,NULL); @@ -9471,7 +9547,7 @@ REPLACE INTO `item_db_re` VALUES (18120,'Bow_Of_Evil_Slayer','Evil Slayer Pierce REPLACE INTO `item_db_re` VALUES (18121,'Bow_of_Vicious_Mind','Bow of Vicious Mind',5,20,NULL,1700,'170',NULL,5,1,0x000A0808,63,2,34,4,'160',1,11,'bonus bAtk,pow(min(getrefine(),15),2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18122,'Gigantic_Bow','Giant Bow',5,20,NULL,3000,'195',NULL,5,1,0x00000800,63,2,34,4,'130',1,11,'bonus bLongAtkRate,40; bonus bAspdRate,-15; bonus bHit,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18123,'Bow_Of_Storm','Bow of Storms',5,20,NULL,1500,'160',NULL,5,1,0x00080800,63,2,34,4,'130',1,11,'bonus bLongAtkRate,30; bonus2 bSkillCooldown,"WM_SEVERE_RAINSTORM",-2000; bonus2 bSkillUseSP,"WM_SEVERE_RAINSTORM",15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18124,'Half_BF_Bow1','Half BF Bow1',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18124,'Half_BF_Bow1','Half BF Bow1',5,20,NULL,0,'100',NULL,5,0,0x000A0848,63,2,34,3,'80',1,11,'bonus bDex,2; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18125,'Arcus_Daemonicus','Arcus Daemonicus',5,20,NULL,1000,'130',NULL,5,2,0x00020008,63,2,34,4,'80',1,11,'/*Fix me: bonus2 bAddClass,Class_All,50; when equipped with shadow arrows*/ if(getrefine()>9){ bonus bAspd,1; bonus bUseSPrate,-20; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18126,'Ru_Blue_Bow','Blue Bow',5,10,NULL,1200,'150',NULL,5,1,0x00000800,56,2,2,3,'100',1,11,'bonus bAgi,5; bonus bDex,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18127,'Ru_Gold_Bow','Ru Gold Bow',5,0,NULL,1200,'150',NULL,5,2,0x00000800,56,2,34,3,'120',1,11,'bonus bAgi,8; bonus bDex,8;',NULL,NULL); @@ -9498,11 +9574,11 @@ REPLACE INTO `item_db_re` VALUES (18509,'RWC2010_Indonesia','RWC2010 Indonesia', REPLACE INTO `item_db_re` VALUES (18510,'Blood_Angel_Hair_Band','Blood Angel Hair Band',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'60',0,679,'bonus2 bSubRace,RC_Player,10; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18511,'Blood_Angel_Wing_Ear','Blood Angel Wing Ear',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'60',0,680,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18512,'Juho_Necktie','Juho Necktie',4,0,NULL,0,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,443,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18513,'Shining_Sunflower','Shining Sunflower',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',0,681,'bonus bLuk,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18513,'Shining_Sunflower','Shining Sunflower',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',0,681,'bonus bLuk,2; bonus3 bAutoSpellWhenHit,"SM_ENDURE",1,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18514,'Para_Team_Hat2','Eden Team Hat II',4,0,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,682,'autobonus "{ bonus bBaseAtk,10; }",70,5000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; autobonus "{ bonus bMatk,10; }",50,5000,BF_MAGIC,"{ specialeffect2 EF_SPELLBREAKER; }";',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18515,'RTC_Winner_Headgear','RTC Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,683,'bonus bAllStats,5; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18516,'RTC_2nd_Headgear','RTC 2nd Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,684,'bonus bAllStats,3; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18517,'RTC_3rd_Headgear','RTC 3rd Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,685,'bonus bAllStats,1; bonus bIntravision,1; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18515,'RTC_Winner_Headgear','RTC Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,683,'bonus bAllStats,5; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,15; bonus2 bSubRace,RC_Player,15; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18516,'RTC_2nd_Headgear','RTC 2nd Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,684,'bonus bAllStats,3; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18517,'RTC_3rd_Headgear','RTC 3rd Winner Hat',4,20,NULL,100,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,685,'bonus bAllStats,1; bonus bIntravision; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus2 bAddEff,Eff_Curse,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18518,'Ear_Of_Angel\'s_Wing_','Angel Wing Ears',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,512,NULL,'70',0,158,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18519,'Ear_Of_Devil\'s_Wing_','Evil Wing Ears',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,512,NULL,'70',0,152,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18520,'Jaty_C','Jaty Crown',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,686,'bonus2 bSubRace,RC_Plant,5; bonus2 bSubRace,RC_Brute,5; bonus2 bAddRace,RC_Plant,5; bonus2 bAddRace,RC_Brute,5;',NULL,NULL); @@ -9515,7 +9591,7 @@ REPLACE INTO `item_db_re` VALUES (18526,'Yummy_Lollipop','Candy Cane In Mouth',4 REPLACE INTO `item_db_re` VALUES (18527,'Gloomy_Pumpkin_Hat','Dark Pumpkin-head',4,20,NULL,500,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'45',1,691,'bonus2 bAddMonsterDropItem,12192,10; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18528,'Tare_Neko_Cru','Drooping Neko Crew',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,692,'bonus bInt,2; bonus bMdef,5; .@r = getrefine(); if(.@r>=7){ .@i = 1; bonus bMatkRate,(.@r>=9)?7:2; } else .@i = 5; bonus2 bIgnoreMdefClassRate,Class_Normal,.@i+.@r; bonus2 bIgnoreMdefClassRate,Class_Boss,.@i+.@r;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18529,'Drooping_Wild_Rose','Accurate Wild Rose',4,20,NULL,500,NULL,5,NULL,1,0xFFFFFFFF,63,2,768,NULL,'30',1,541,'bonus bMaxHPrate,-10; bonus bAspdRate,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18530,'Tha_Despero_Mask','Thanatos Despero Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,513,NULL,'30',0,693,'bonus bUnbreakableHelm,1; bonus bLuk,-5; bonus bFlee,4;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18530,'Tha_Despero_Mask','Thanatos Despero Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,513,NULL,'30',0,693,'bonus bUnbreakableHelm; bonus bLuk,-5; bonus bFlee,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18531,'Drooping_Permeter','Drooping Permeter',4,20,NULL,1000,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,694,'bonus2 bAddDefMonster,1314,-20; bonus2 bAddDefMonster,1316,-20; bonus2 bAddDefMonster,1319,-20; bonus2 bAddDefMonster,1315,-20; bonus2 bAddDefMonster,1318,-20; bonus2 bAddDefMonster,1312,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18532,'Heart_Ribbon_Band','Heart Ribbon Hairband',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,708,'bonus bInt,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18533,'Honeybee_Hat','Honey Bee Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,709,'bonus bMdef,3; bonus2 bAddRace,RC_Insect,5; bonus2 bMagicAddRace,RC_Insect,5; bonus2 bSubRace,RC_Insect,5; bonus3 bAddMonsterDropItem,518,RC_Insect,2;',NULL,NULL); @@ -9523,7 +9599,7 @@ REPLACE INTO `item_db_re` VALUES (18534,'Fancy_Phantom_Mask','Fancy Phantom Mask REPLACE INTO `item_db_re` VALUES (18535,'Pumpkin_Hat_2010','Pumpkin Hat 2010',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,206,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18536,'Foxtail','Foxtail',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,711,'bonus bMatk,10; bonus bFixedCast,-100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18537,'Malangdo_Hat','Malangdo Hat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,726,'bonus bFlee,6;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18538,'Devil_Whisper','Spirit Whispers',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,712,'bonus bUnbreakableHelm,1; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18538,'Devil_Whisper','Spirit Whispers',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,712,'bonus bUnbreakableHelm; bonus bMdef,3; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18539,'Skull_Cap','Skull Cap',4,40,NULL,200,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,713,'bonus bMatkRate,2; .@r = getrefine(); if(.@r >= 5) { bonus bMatkRate,3; } if(.@r >= 7) { bonus bMatkRate,3; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18540,'Evil_Mask','Evil Mask',4,20,NULL,1000,NULL,3,NULL,0,0xFFFFFFFF,63,2,513,NULL,'10',0,714,'bonus2 bSPLossRate,1,2000; bonus bAspdRate,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18541,'Little_Feather_Hat','Little Feather Hat',4,20,NULL,500,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,715,'bonus bDex,2; bonus bCritAtkRate,10;',NULL,NULL); @@ -9549,12 +9625,12 @@ REPLACE INTO `item_db_re` VALUES (18560,'Fafnir_Mask','Fafnir Mask',4,20,NULL,30 REPLACE INTO `item_db_re` VALUES (18561,'B_Feather_Beret','B Feather Beret',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,731,'bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18562,'Bone_Hat','Bone Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,732,'bonus bMdef,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18563,'Heart_Wing_Hairband','Heart Wing Hairband',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,733,'.@r = getrefine()/3; bonus bUseSPrate,-(10+.@r*3); bonus bDelayrate,-(5+.@r*3);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18564,'Love_Piece','Love Piece',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,734,'bonus bNoCastCancel,1; bonus bUseSPrate,15;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18564,'Love_Piece','Love Piece',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,734,'bonus bNoCastCancel; bonus bUseSPrate,15;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18565,'Leprechaun_Hat','St Patrick\'s Hat',4,20,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,735,'bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>7){ bonus2 bAddMonsterDropItem,12135,50; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18566,'Nut_Donut_In_Mouth','Nut Donut In Mouth',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,736,'bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18567,'Stretched_Nose','Stretched Nose',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,737,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18568,'Humming_Bird','Humming Bird',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,702,'bonus bMdef,6;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18569,'Soft_Sheep_Hat','Soft Sheep Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,738,'bonus bMaxHPrate,1+getrefine(); if(getrefine()>9) { bonus2 bExpAddClass,Class_All,5; };',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18569,'Soft_Sheep_Hat','Soft Sheep Hat',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',1,738,'bonus bMaxHPrate,1+getrefine(); if(getrefine()>9) { bonus2 bExpAddClass,Class_All,5; };',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18570,'Ancient_Gold_Deco','Ancient Gold Ornament',4,20,NULL,400,NULL,7,NULL,1,0xFFFFFFFE,63,2,256,NULL,'100',1,739,'if(BaseLevel >= 150) { bonus bAllStats,2; } if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief){ bonus2 bAddClass,Class_All,8; } if(BaseClass==Job_Mage||BaseClass==Job_Acolyte){ bonus bMatkRate,8; bonus bHealPower,7; } if(BaseClass==Job_Archer){ bonus bDex,3; bonus bLongAtkRate,10; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18571,'Lucky_Hat','Lucky Hat',4,20,NULL,1000,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',0,740,'bonus2 bExpAddRace,RC_All,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18572,'Korean_Judge_Hat','Korean Judge Hat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,377,'bonus bMdef,2; bonus bVariableCastrate,-6; bonus bAspdRate,6; .@r = getrefine(); if(.@r>6){ bonus2 bSubRace,RC_DemiHuman,2;bonus2 bSubRace,RC_Player,2; } if(BaseClass==Job_Swordman || BaseClass==Job_Merchant || BaseClass==Job_Thief || Class==Job_Taekwon || Class==Job_Star_Gladiator || Class==Job_Star_Gladiator2 || Class==Job_Monk || Class==Job_Champion || Class==Job_Sura || Class==Job_Sura_T) bonus2 bAddClass,Class_All,(.@r/2);if(BaseClass==Job_Mage || BaseClass==Job_Acolyte || Class==Job_Ninja || Class==Job_Soul_Linker) bonus bMatkRate,(.@r/2); if(BaseClass==Job_Archer || Class==Job_Gunslinger) bonus bBaseAtk,.@r;',NULL,NULL); @@ -9597,8 +9673,8 @@ REPLACE INTO `item_db_re` VALUES (18608,'Pair_Of_Red_Ribbon2','Small Ribbons',4, REPLACE INTO `item_db_re` VALUES (18609,'Dark_Blindfold_','Dark Blinder',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFE,63,2,512,NULL,'0',0,187,'bonus2 bResEff,Eff_Blind,10000; bonus2 bResEff,Eff_Stun,200;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18610,'7th_Anni_Hat_B','7th Anni Hat B',4,20,NULL,500,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,778,'bonus bAllStats,5; bonus bMdef,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18611,'Black_Glasses_','Black Glasses',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,512,NULL,'0',0,404,'bonus bInt,1; bonus bMdef,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,400,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18614,'Grim_Reaper_Hat','Grim Reaper Hat',4,20,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,732,'bonus bFlee,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18615,'Injured_Eyepatch','Injured Eyepatch',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFE,63,2,512,NULL,'20',0,772,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18616,'Long_Tongue','Long Tongue',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFE,63,2,1,NULL,'20',0,773,NULL,NULL,NULL); @@ -9607,12 +9683,12 @@ REPLACE INTO `item_db_re` VALUES (18618,'Airplane_Hat','Airplane Hat',4,20,NULL, REPLACE INTO `item_db_re` VALUES (18619,'Thief_Bandana','Thief Bandana',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFE,63,2,256,NULL,'20',1,776,'bonus3 bAutoSpell,"TF_STEAL",1,20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18620,'Heart_Eyepatch','Heart Eyepatch',4,5,NULL,50,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'20',1,779,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18621,'Gangster_Mask_A','Gangster Mask A',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,52,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18622,'Rocket_Helm1','Rocket Helm 1',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,764,'bonus bAllStats,5; bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18623,'Rocket_Helm2','Rocket Helm 2',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,765,'bonus bAllStats,4; bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18624,'Rocket_Helm3','Rocket Helm 3',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,768,'bonus bAllStats,3; bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18625,'Rocket_Helm_RWC','Rocket Helm RWC',4,10000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,769,'bonus bAllStats,2; bonus bMdef,5; bonus bUnbreakableHelm,1; bonus bSpeedRate,25;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18622,'Rocket_Helm1','Rocket Helm 1',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,764,'bonus bAllStats,5; bonus bMdef,5; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18623,'Rocket_Helm2','Rocket Helm 2',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,765,'bonus bAllStats,4; bonus bMdef,5; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18624,'Rocket_Helm3','Rocket Helm 3',4,20,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,768,'bonus bAllStats,3; bonus bMdef,5; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18625,'Rocket_Helm_RWC','Rocket Helm RWC',4,10000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',1,769,'bonus bAllStats,2; bonus bMdef,5; bonus bUnbreakableHelm; bonus bSpeedRate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18626,'Gelato_Hat','Gelato Hat',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'40',1,777,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18627,'Dried_Leaf','Dried Leaf',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,711,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18627,'Dried_Leaf','Dried Leaf',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,711,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18628,'Tare_Brownie','Tare Brownie',4,20,NULL,500,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',0,781,'bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18629,'B_Desert_Wolf_Hat','Baby Desert Wolf Hat',4,10,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,783,'bonus bMdef,5; bonus bLongAtkDef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18630,'Dep_Alice_Hat','Drooping Alicel',4,20,NULL,500,NULL,6,NULL,0,0xFFFFFFFE,63,2,256,NULL,'70',1,784,'bonus2 bAddRace,RC_DemiHuman,10; bonus2 bAddRace,RC_Player,10; if (getrefine() > 10) { autobonus "{ bonus bAspdRate,100; }",10,7000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }"; }',NULL,NULL); @@ -9641,7 +9717,7 @@ REPLACE INTO `item_db_re` VALUES (18652,'Vanargand_Helm','Vanargandr Helm',4,20, REPLACE INTO `item_db_re` VALUES (18653,'Devi_Headphone','Deviruchi Headphone',4,20,NULL,200,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,805,'bonus bMdef,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18655,'Lupin_One_Eyed_Glasses','Goedo Monocle',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,807,'bonus bAgi,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18656,'Wit_Pumpkin_Hat','Witch\'s Pumpkin Hat',4,20,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'20',1,717,'bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; bonus2 bMagicAddRace,RC_Demon,15;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18657,'Pegasus_Wing_Ears','Pegasus Wing Ears',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'80',0,568,'bonus bUnbreakableHelm,1; .@i = BaseLevel; bonus bAspdRate,(.@i>=150)?(3):((.@i>=100)?(2):((.@i>=50)?(1):(0)));',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18657,'Pegasus_Wing_Ears','Pegasus Wing Ears',4,20,NULL,500,NULL,1,NULL,0,0xFFFFFFFF,63,2,512,NULL,'80',0,568,'bonus bUnbreakableHelm; .@i = BaseLevel; bonus bAspdRate,(.@i>=150)?(3):((.@i>=100)?(2):((.@i>=50)?(1):(0)));',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18658,'Holy_Santa_Beard','Holy Santa Beard',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,25,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18659,'Boitata_Hat','Boitata Hat',4,20,NULL,0,NULL,5,NULL,1,0xFFFFFFFF,63,2,768,NULL,'0',1,808,'autobonus "{ bonus bAtkEle,Ele_Fire; }",10,180000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; bonus3 bAutospell,"AS_SONICBLOW",5,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18660,'Indi_Feather_Band','Indian Feather Headband',4,20,NULL,400,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,809,'bonus bAgi,2;',NULL,NULL); @@ -9656,8 +9732,8 @@ REPLACE INTO `item_db_re` VALUES (18668,'Droopy_Turtle_Hat','Droopy Turtle Hat', REPLACE INTO `item_db_re` VALUES (18669,'Cowhide_Hat','Cowhide Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,819,'bonus bDex,2; bonus bMaxHPrate,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18670,'Hankie_In_Mouth','Hankie In Mouth',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'12',0,818,'bonus bDex,3; bonus2 bSubRace,RC_DemiHuman,3; bonus2 bSubRace,RC_Player,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18671,'Rudolf_Hairband','Rudolf Hairband',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,836,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18672,'Tare_Pope','Drooping Pope',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,817,'bonus bMdef,1; bonus bSPrecovRate,2; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18673,'Tare_Pope_','Drooping Pope',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,817,'bonus bMdef,7; bonus bSPrecovRate,2; bonus bUnbreakableHelm,1; .@r = getrefine(); if (.@r >= 7 ) { bonus bHealPower,1; } if (.@r >= 9 ) {bonus bMatkRate,7; } if (.@r >= 12 ) {bonus bMatkRate,5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18672,'Tare_Pope','Drooping Pope',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,817,'bonus bMdef,1; bonus bSPrecovRate,2; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18673,'Tare_Pope_','Drooping Pope',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,817,'bonus bMdef,7; bonus bSPrecovRate,2; bonus bUnbreakableHelm; .@r = getrefine(); if (.@r >= 7 ) { bonus bHealPower,1; } if (.@r >= 9 ) {bonus bMatkRate,7; } if (.@r >= 12 ) {bonus bMatkRate,5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18674,'Planewing_Hat','Planewing Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,820,'bonus bAgi,3; bonus bAspdRate,1; bonus2 bSPLossRate,5,10000;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18675,'Green_Apple_Hat','Green Apple Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'20',1,821,'bonus bDex,2; bonus bHit,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18676,'Hexagon_Spectacles','Hexagon Spectacles',4,20,NULL,400,NULL,3,NULL,0,0xFFFFFFFE,63,2,512,NULL,'20',0,822,'bonus bFlee,2;',NULL,NULL); @@ -9670,11 +9746,11 @@ REPLACE INTO `item_db_re` VALUES (18682,'Teardrop','Teardrop',4,20,NULL,100,NULL REPLACE INTO `item_db_re` VALUES (18683,'Carrot_In_Mouth','Carrot In Mouth',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,829,'bonus2 bSubRace,RC_Plant,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18684,'Showy_High_Cap','Showy High Cap',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,830,'bonus bStr,3; bonus bInt,2; bonus2 bAddItemHealRate,505,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18685,'Stardust_Hairband','Stardust Hairband',4,20,NULL,1000,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'10',0,831,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18686,'2011_RMSC_1','2011 RMSC 1',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm,1; bonus bAllStats,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18687,'2011_RMSC_2','2011 RMSC 2',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm,1; bonus bAllStats,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18688,'2011_RMSC_3','2011 RMSC 3',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm,1; bonus bAllStats,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18689,'2011_RMSC_4','2011 RMSC 4',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18690,'Sirt_Evil_Eye','Sirt Evil Eye',4,20,NULL,400,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,345,'bonus bUnbreakableHelm,1; bonus bStr,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18686,'2011_RMSC_1','2011 RMSC 1',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm; bonus bAllStats,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18687,'2011_RMSC_2','2011 RMSC 2',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm; bonus bAllStats,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18688,'2011_RMSC_3','2011 RMSC 3',4,20,NULL,2500,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm; bonus bAllStats,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18689,'2011_RMSC_4','2011 RMSC 4',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,832,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18690,'Sirt_Evil_Eye','Sirt Evil Eye',4,20,NULL,400,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,345,'bonus bUnbreakableHelm; bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18691,'Rising_Black_Dragon','Rising Black Dragon',4,20,NULL,100,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,863,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18692,'Mike_Hat','Mike Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'1',1,837,'bonus bDex,2; bonus bLuk,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18693,'Sleeping_Kitty_Cat','Sleeping Kitty Cat',4,20,NULL,200,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'20',1,838,'bonus2 bAddRace,RC_Brute,2;',NULL,NULL); @@ -9703,14 +9779,14 @@ REPLACE INTO `item_db_re` VALUES (18716,'Strawberry_In_Mouth','Strawberry In Mou REPLACE INTO `item_db_re` VALUES (18718,'Rose_Hairband','Rose Hairband',4,20,NULL,200,NULL,3,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',0,864,'bonus bInt,1; bonus bVit,1; bonus bAspdRate,3; bonus bVariableCastrate,-3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18724,'L_Magestic_Goat_','Gigantic Majestic Goat',4,20,NULL,800,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,380,'bonus2 bAddRace,RC_DemiHuman,12; bonus2 bAddRace,RC_Player,12; bonus bBaseAtk,(JobLevel*2)/7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18727,'Sedora_Hat','Sedora Hat',4,20,NULL,300,NULL,13,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,869,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18728,'Egir_Helm','Egir Helm',4,200000,NULL,800,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'110',1,870,'bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18728,'Egir_Helm','Egir Helm',4,200000,NULL,800,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'110',1,870,'bonus bMdef,5; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18729,'MVP_Basketball','MVP Basketball',4,20,NULL,150,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,871,'bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus2 bAddItemHealRate,522,30; .@r = getrefine(); bonus bVariableCastrate,(.@r>=12)?(-5):((.@r>=10)?(-4):(-3));',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18730,'Cryptura_Academy_Hat','Cryptura Academy Hat',4,0,NULL,200,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,872,'bonus bMaxHP,15; bonus bMaxSP,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18732,'TE_Woe_Cap','TE Woe Cap',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'40',1,14,'bonus bMdef,5; bonus bBaseAtk,5; bonus bMatk,5; bonus2 bAddRace,RC_Player,10; bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18733,'TE_Woe_Bone_Helm','TE Woe Bone Helm',4,0,NULL,0,NULL,10,NULL,0,0x000444A2,63,2,256,NULL,'40',1,103,'bonus bBaseAtk,10; bonus2 bAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18734,'TE_Woe_Magic_Eyes','TE Woe Magic Eyes',4,0,NULL,0,NULL,5,NULL,0,0x00818315,63,2,256,NULL,'40',1,209,'bonus bMdef,5; bonus bMatk,10; bonus2 bMagicAddRace,RC_Player,20; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18736,'Censor_Bar_','Censor Bar',4,0,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,229,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18737,'Fortier_Mask','Fortier Masque',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,876,'bonus bUnbreakableHelm,1; bonus2 bMagicAtkEle,Ele_Fire,4;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18737,'Fortier_Mask','Fortier Masque',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,876,'bonus bUnbreakableHelm; bonus2 bMagicAtkEle,Ele_Fire,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18739,'Carnation_Hairband','Carnation Hairband',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,878,'bonus bLuk,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18740,'C_Hair_Of_The_Strong','RMSC2012 Special Costume',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,879,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18741,'C_Will_O_Wisp','Costume Will O Wisp',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',NULL,880,NULL,'sc_start SC_STRANGELIGHTS,-1,0;','sc_end SC_STRANGELIGHTS;'); @@ -9725,11 +9801,11 @@ REPLACE INTO `item_db_re` VALUES (18749,'Majoruros_Horn','Majoruros Horn',4,20,N REPLACE INTO `item_db_re` VALUES (18750,'Poker_Card_In_Mouth','Poker Card In Mouth',4,20,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'10',0,889,'bonus2 bAddRace,RC_DemiHuman,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18752,'Cursed_Book','Cursed Book',4,20,NULL,300,NULL,3,NULL,1,0xFFFFFFFE,63,2,256,NULL,'99',1,890,'.@r = getrefine(); bonus2 bHPLossRate,.@r,5000; bonus2 bHPDrainRate,40,4+(.@r/2); bonus2 bSPDrainRate,10,1+(.@r/3);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18753,'Tw_Rice_Ball','Tw Rice Ball',4,20,NULL,100,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,892,'bonus bLuk,1; bonus2 bAddMonsterDropItem,564,100;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18754,'Blood_Sucker','Blood Sucker',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'40',0,893,'bonus bUnbreakableHelm,1; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18754,'Blood_Sucker','Blood Sucker',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'40',0,893,'bonus bUnbreakableHelm; bonus2 bHPDrainRate,30,5; bonus bHPrecovRate,-100; bonus bSPrecovRate,-100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18755,'Feather_Beret_','Feather Beret',4,0,NULL,600,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,224,'bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18756,'Black_Shiba_Inu_Hat','Black Shiba Inu Hat',4,20,NULL,400,NULL,6,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,894,'bonus bBaseAtk,30; bonus2 bAddRace,RC_Brute,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18758,'Hat_Of_Scrat','Hat Of Scrat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,896,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18759,'Stretched_Nose_M','Wood Goblin\'s Nose',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,737,'bonus bUnbreakableHelm,1; bonus2 bAddMonsterDropItem,1032,400; bonus2 bAddMonsterDropItem,1033,100; bonus3 bAddMonsterDropItem,576,RC_Plant,40;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18759,'Stretched_Nose_M','Wood Goblin\'s Nose',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'50',0,737,'bonus bUnbreakableHelm; bonus2 bAddMonsterDropItem,1032,400; bonus2 bAddMonsterDropItem,1033,100; bonus3 bAddMonsterDropItem,576,RC_Plant,40;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18760,'Remodel_Wizardry_Hat','Improved Mage Hat',4,20,NULL,300,NULL,2,NULL,1,0x00810204,63,2,256,NULL,'0',1,112,'bonus bInt,2; bonus bMaxSP,150; .@r = getrefine(); bonus bMatk,.@r; if(.@r>=7) bonus bInt,.@r-6;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18761,'Remodel_Magician_Hat','Improved Magician Hat',4,20,NULL,500,NULL,6,NULL,1,0x00818314,63,2,256,NULL,'50',1,130,'bonus bDex,1; bonus bAgi,1; bonus bMaxSP,50; .@r = getrefine(); bonus bMaxSP,.@r*5; if(.@r>=7) bonus bDex,.@r-6;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18762,'Remodel_Mask_Of_Fox','Improved Kitsune Mask',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFE,63,2,256,NULL,'0',1,153,'bonus bAgi,2; bonus bLuk,2; if(getrefine()>=7) bonus bFlee2,4;',NULL,NULL); @@ -9739,25 +9815,25 @@ REPLACE INTO `item_db_re` VALUES (18765,'Enhanced_Corsair','Enhanced Corsair',4, REPLACE INTO `item_db_re` VALUES (18766,'Enhanced_Helm_Of_Angel','Enhanced Helm of Angel',4,20,NULL,1600,NULL,10,NULL,1,0x00CFDF80,63,2,256,NULL,'99',1,110,'bonus bAgi,1; bonus bLuk,1; bonus bMdef,3; .@r = getrefine(); if(.@r>=7){ bonus bAgi,2; bonus bLuk,2; } if(.@r>=9) bonus bAspd,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18767,'Enhanced_Helm_Of_Sun','Enhanced Hat of the Sun God',4,20,NULL,2400,NULL,4,NULL,1,0x00CFDF80,63,2,768,NULL,'99',1,138,'bonus bStr,3; bonus bInt,2; .@j = getrefine(); if(.@j>=7) .@i = 1; if(.@j>=9) .@i = 2; bonus bBaseAtk,10+(15*.@i); bonus bMatk,10+(15*.@i);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18768,'Enhanced_Bone_Helm','Enhanced Bone Helm',4,20,NULL,800,NULL,15,NULL,1,0x000444A2,63,2,256,NULL,'70',1,103,'bonus2 bSubEle,Ele_Dark,-15; .@j = getrefine(); if(.@j>=7) .@i = 1; if(.@j>=9) .@i = 2; bonus2 bSubEle,Ele_Neutral,2+(2*.@i);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18769,'Remodel_Munak_Turban','Improved Munak Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,769,NULL,'0',0,51,'bonus2 bSubRace,RC_Undead,10; if(getrefine()>=7) bonus2 bAddRace,RC_Undead,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18770,'Remodel_Bongun_Hat','Improved Bongun Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,769,NULL,'0',0,139,'bonus2 bSubRace,RC_Demon,10; if(getrefine()>=7) bonus2 bAddRace,RC_Demon,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18769,'Remodel_Munak_Turban','Improved Munak Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,769,NULL,'0',1,51,'bonus2 bSubRace,RC_Undead,10; if(getrefine()>=7) bonus2 bAddRace,RC_Undead,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18770,'Remodel_Bongun_Hat','Improved Bongun Hat',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,769,NULL,'0',1,139,'bonus2 bSubRace,RC_Demon,10; if(getrefine()>=7) bonus2 bAddRace,RC_Demon,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18771,'Remodel_Opera_Mask','Improved Opera Phantom Mask',4,20,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'20',0,128,'bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18772,'Improved_Binoculars','Advanced Binoculars',4,20,NULL,100,NULL,2,NULL,0,0x00080808,63,2,512,NULL,'50',0,83,'bonus bDex,1; bonus bLongAtkRate,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18773,'Improved_Fin_Helm','Advanced Fin Helm',4,20,NULL,300,NULL,5,NULL,0,0x00004082,63,2,512,NULL,'65',0,100,'bonus bMaxHP,300+BaseLevel; /* unconfirmed */',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18774,'Improved_Assassin_Mask','Advanced Assassin Mask',4,20,NULL,100,NULL,1,NULL,0,0x00001100,63,2,1,NULL,'70',0,180,'bonus bCritical,1; bonus bCritAtkRate,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18775,'Improved_Welding_Mask','Advanced Welding Mask',4,20,NULL,300,NULL,2,NULL,0,0x00040420,63,2,513,NULL,'50',0,79,'bonus2 bSubEle,Ele_Fire,10; bonus bDex,5; bonus bLuk,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18776,'Improved_Kiss_Of_Angel','Advanced Angel\'s Kiss',4,10000,NULL,300,NULL,6,NULL,1,0x00000001,63,2,256,NULL,'99',1,255,'bonus bSPrecovRate,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18779,'RWC_Champ_Crown_Red','RWC Champ Crown First Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,902,'bonus2 bResEff,Eff_Stun,10000; bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,7; bonus bMdef,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18780,'RWC_Champ_Crown_Blue','RWC Champ Crown Second Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,903,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,7; bonus bMdef,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18781,'RWC_Champ_Crown_Black','RWC Champ Crown Third Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,904,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,3; bonus bMdef,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18782,'Butterfly_Wing_Ear_J','Butterfly Wing Ear',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,695,'bonus bDex,2; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18779,'RWC_Champ_Crown_Red','RWC Champ Crown First Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,902,'bonus2 bResEff,Eff_Stun,10000; bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,7; bonus bMdef,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18780,'RWC_Champ_Crown_Blue','RWC Champ Crown Second Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,903,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,7; bonus bMdef,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18781,'RWC_Champ_Crown_Black','RWC Champ Crown Third Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,904,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,3; bonus bMdef,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18782,'Butterfly_Wing_Ear_J','Butterfly Wing Ear',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',0,695,'bonus bDex,2; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18785,'King_Poring_Hat','King Poring Hat',4,20,NULL,600,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,905,'bonus bDex,1; bonus bLuk,1; .@r = getrefine(); if(.@r>=3){ bonus bDex,(.@r-4); bonus bLuk,(.@r-4); }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18786,'Anemos_Mask','Anemos Mask',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,906,'bonus bUnbreakableHelm,1; bonus2 bMagicAtkEle,Ele_Wind,4;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18786,'Anemos_Mask','Anemos Mask',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,906,'bonus bUnbreakableHelm; bonus2 bMagicAtkEle,Ele_Wind,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18790,'Rainbow_Poring_Hat','Rainbow Poring Hat',4,20,NULL,100,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,900,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18791,'Shrine_Maiden_Hat','Shrine Maiden Hat',4,20,NULL,200,NULL,30,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,NULL,908,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18792,'Idn_Sakkat','Indonesian Independence Sakkat',4,10,NULL,400,NULL,NULL,NULL,0,0xFFFFFFFE,63,2,256,NULL,'45',1,901,'bonus bVit,10; bonus2 bAddClass,Class_All,5; bonus bMatkRate,5; bonus2 bSubRace,RC_DemiHuman,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18793,'Sorc_Night_Cap','Sorcerer\'s Night Cap',4,20,NULL,200,NULL,25,NULL,1,0x00010000,56,2,256,NULL,'100',1,911,'.@r = getrefine(); bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",50; bonus2 bSkillAtk,"MG_FIREBOLT",50; bonus2 bSkillAtk,"MG_COLDBOLT",50; bonus bMdef,10; if(.@r>6) bonus2 bSkillAtk,"SC_SPELLFIST",25; if(.@r>8) bonus bAspd,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18796,'RWC_Champ_Crown_QF','RWC Champ Crown Fourth Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,914,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm,1; bonus bAllStats,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18796,'RWC_Champ_Crown_QF','RWC Champ Crown Fourth Place',4,20,NULL,500,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',NULL,914,'bonus2 bResEff,Eff_Curse,10000; bonus bUnbreakableHelm; bonus bAllStats,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18803,'Rose_Cascade','Rose Cascade',4,0,NULL,500,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,920,'.@dex = readparam(bDex); bonus bUseSPrate,-5-((.@dex >= 120)?5:0)-((.@dex >= 100)?5:0);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18805,'Eclipse_Hat','Eclipse Hat',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,922,'bonus bLuk,3; bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18806,'Black_Rabbit_Hat','Black Rabbit Hat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,923,'bonus bDex,2; bonus bAgi,3; bonus3 bAutoSpellWhenHit,"AL_INCAGI",5,10;',NULL,NULL); @@ -9769,28 +9845,28 @@ REPLACE INTO `item_db_re` VALUES (18814,'Angel_School_Cap','Angel School Cap',4, REPLACE INTO `item_db_re` VALUES (18815,'Devil_School_Cap','Devil School Cap',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,928,'bonus bStr,2; bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18816,'Adv_Angel_School_Cap','Evoked Angel School Cap',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,929,'bonus bInt,2; bonus bVit,2; bonus bLuk,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18817,'Adv_Devil_School_Cap','Evoked Devil School Cap',4,20,NULL,100,NULL,4,NULL,1,0xFFFFFFFE,63,2,256,NULL,'0',1,930,'bonus bStr,2; bonus bVit,2; bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18818,'Red_Pencil_In_Mouth','Red Pencil In Mouth',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,931,'bonus bUnbreakableHelm,1; bonus bHit,3;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18819,'Blue_Pencil_In_Mouth','Blue Pencil In Mouth',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,932,'bonus bUnbreakableHelm,1; bonus bHit,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18818,'Red_Pencil_In_Mouth','Red Pencil In Mouth',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,931,'bonus bUnbreakableHelm; bonus bHit,3;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18819,'Blue_Pencil_In_Mouth','Blue Pencil In Mouth',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,932,'bonus bUnbreakableHelm; bonus bHit,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18820,'Gray_Helmet','Gray Helmet',4,20,NULL,450,NULL,35,NULL,1,0xFFFFFFFF,56,2,256,NULL,'120',1,941,'bonus2 bSubEle,Ele_Holy,3+getrefine()/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18821,'Rainbow_Feather_Deco','Rainbow Feather Deco',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,934,'bonus2 bAddClass,Class_All,1; bonus bMatkRate,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18823,'Imperial_Feather','Imperial Feather',4,10,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',1,935,'bonus bAspdRate,1; bonus2 bSubEle,Ele_Wind,5; if(readparam(bAgi)>108){ bonus bAspd,1; bonus bAspdRate,1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18823,'Imperial_Feather','Imperial Feather',4,10,NULL,500,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'70',1,935,'bonus bAspdRate,1; bonus2 bSubEle,Ele_Wind,5; if(readparam(bAgi)>107){ bonus bAspd,1; bonus bAspdRate,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18827,'Valkyrie_Circlet','Valkyrie Circlet',4,0,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,940,'bonus bStr,3; bonus2 bAddEle,Ele_Dark,10; bonus2 bAddRace,RC_Demon,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18828,'2012RMSCNO1','2012 RWC Winners Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,942,'bonus bAllStats,5; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18829,'2012RMSCNO2','2012 RWC Runners-Up Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,943,'bonus bAllStats,4; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18830,'2012RMSCNO3','2012 RWC 2nd Runner Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,944,'bonus bAllStats,3; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18828,'2012RMSCNO1','2012 RWC Winners Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,942,'bonus bAllStats,5; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18829,'2012RMSCNO2','2012 RWC Runners-Up Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,943,'bonus bAllStats,4; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18830,'2012RMSCNO3','2012 RWC 2nd Runner Helmet',4,1000,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'60',1,944,'bonus bAllStats,3; bonus bMdef,5; bonus bSpeedAddRate,10; skill "AL_TELEPORT",1; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18831,'2012RMSCNO4','2012 RWC Special Helmet',4,0,NULL,1000,NULL,20,NULL,1,0xFFFFFFFF,63,2,256,NULL,'95',0,945,'bonus bAllStats,2; bonus bMdef,5; bonus bSpeedAddRate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18832,'Rolf_Von_Gigue_666','Rolf Von Gigue 666',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,946,'bonus3 bAutoSpell,"BS_ADRENALINE",2,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18839,'Poring_Sunglasses','Poring Sunglasses',4,0,NULL,100,NULL,10,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',0,954,'bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18841,'Small_Poring_Band','Small Poring Band',4,20,NULL,350,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,955,'.@r = getrefine(); bonus bAspdRate,2*(.@r/3); if(.@r>9) bonus bAspd,1; bonus2 bExpAddRace,RC_All,3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18842,'Hat_Of_Girl','Hat Of Girl',4,20,NULL,350,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,956,'.@r = getrefine(); bonus bInt,2*(.@r/3); bonus2 bSubRace,RC_DemiHuman,7; bonus bMaxHPrate,-3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18843,'Small_Deviling_Hat','Small Deviling Hat',4,20,NULL,350,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,957,'.@r = getrefine(); if(.@r>7) bonus bMaxHPrate,.@r-7; bonus2 bSubRace,RC_DemiHuman,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18844,'Blue_Poring_Bubble','Blue Poring Bubble',4,20,NULL,50,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,958,'bonus bAllStats,2; bonus bUnbreakableHelm,1; bonus bFlee,20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18845,'Banshee_Master_Kiss','Banshee Master Kiss',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,959,'bonus bUnbreakableHelm,1; bonus bMaxSPrate,3; autobonus2 "{ bonus2 bSubRace,RC_DemiHuman,100; bonus2 bSubRace,RC_Player,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18844,'Blue_Poring_Bubble','Blue Poring Bubble',4,20,NULL,50,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,958,'bonus bAllStats,2; bonus bUnbreakableHelm; bonus bFlee,20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18845,'Banshee_Master_Kiss','Banshee Master Kiss',4,20,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,959,'bonus bUnbreakableHelm; bonus bMaxSPrate,3; autobonus2 "{ bonus2 bSubRace,RC_DemiHuman,100; bonus2 bSubRace,RC_Player,100; }",10,3000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18846,'Seagod_Protector','Seagod Protector',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'10',0,960,'bonus2 bSubDefEle,Ele_Water,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18847,'Jolly_Roger','Jolly Roger',4,20,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,962,'bonus bVit,1; bonus2 bSubDefEle,Ele_Water,2; bonus2 bAddEle,Ele_Water,2; .@r = getrefine(); if(.@r>6) { bonus2 bAddEle,Ele_Water,3; } if(.@r>8) { bonus2 bSubDefEle,Ele_Water,3; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18847,'Jolly_Roger','Jolly Roger',4,20,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,962,'bonus bVit,1; bonus2 bSubDefEle,Ele_Water,2; bonus2 bAddEle,Ele_Water,2; .@r = getrefine(); if(.@r>6) { bonus2 bAddEle,Ele_Water,3; } if(.@r>8) { bonus2 bSubDefEle,Ele_Water,3; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18848,'Lush_Rose','Lush Rose',4,10,NULL,200,'0:20',0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,963,'bonus bMagicHPGainValue,100; bonus bMagicSPGainValue,100;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18849,'Celines_Ribbon','Celines Ribbon',4,10,NULL,200,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,967,'bonus bDex,3; bonus bMatk,40+getrefine(); bonus bMagicHPGainValue,200; bonus2 bHPLossRate,50,5000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18850,'Polar_Bear_Cap','Polar Bear Cap',4,20,NULL,300,NULL,7,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,966,'bonus bUnbreakableHelm,1; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18850,'Polar_Bear_Cap','Polar Bear Cap',4,20,NULL,300,NULL,7,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',0,966,'bonus bUnbreakableHelm; bonus bDex,1; bonus bAgi,1; bonus bMdef,3; bonus bHPrecovRate,5; bonus bSPrecovRate,3; bonus2 bAddMonsterDropItem,12354,100;',NULL,NULL); #REPLACE INTO `item_db_re` VALUES (18851,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,966,'/*Is this correct item?*/',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18851,'ValentineHeart','Valentine Heart',4,20,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,397,'bonus bMaxHPrate,5+(getrefine()/2); bonus bAllStats,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18852,'Berry_Hat_Decoration','Tasty Strawberry Hat',4,20,NULL,150,NULL,4,NULL,NULL,0xFFFFFFFF,63,2,256,NULL,'30',1,968,'bonus bAllStats,1; if(getrefine()>11) bonus bAspd,2;',NULL,NULL); @@ -9810,11 +9886,11 @@ REPLACE INTO `item_db_re` VALUES (18867,'Vajra','Vajra',4,0,NULL,300,NULL,NULL,N REPLACE INTO `item_db_re` VALUES (18868,'Assassin_Skull_Mask','Assassin Skull Mask',4,10,NULL,500,NULL,2,NULL,0,0xFFFFFFFF,63,2,513,NULL,'70',NULL,984,'bonus bCritical,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18870,'Very_Sweet_Candy_Bar','Very Sweet Candy Bar',4,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',1,446,'bonus bAllStats,2; bonus bBaseAtk,10; bonus bMatk,10; bonus2 bExpAddClass,Class_All,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18871,'Very_Sweet_Candy','Very Sweet Candy',4,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',1,446,'bonus bAllStats,1; bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18872,'Snake_Hat','Snake Hat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,986,'bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18872,'Snake_Hat','Snake Hat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,986,'bonus bStr,3; bonus bInt,3; bonus bMdef,5; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18873,'Sweet_Valentine_Out','Sweet Valentine Out',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,865,'bonus bMaxHPrate,7; bonus bMaxSPrate,7;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18874,'One_Eyed_Glass_','Cyclops Glasses',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,512,NULL,'1',NULL,23,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (18877,'Baron_Evil_Eye','Baron\'s Evil Eye',4,10,NULL,300,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,512,NULL,'30',NULL,989,'bonus bDelayrate,-5; bonus bUseSPrate,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18878,'Palace_Guard_Cap','Palace Guard Cap',4,10,NULL,1000,NULL,15,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,991,'.@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18878,'Palace_Guard_Cap','Palace Guard Cap',4,10,NULL,1000,NULL,15,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,991,'.@r = getrefine(); bonus2 bAddEle,Ele_Neutral,4+.@r/6; bonus bLongAtkRate,4+.@r; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18879,'Angry_Scorpion_Hat','Angry Scorpion Hat',4,10,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,995,'bonus bMdef,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18880,'Advanced_Jao_King_Hat','Advanced Jao King Hat',4,10,NULL,1500,NULL,4,NULL,1,0xFFFFFFFF,63,2,256,NULL,'175',1,996,'bonus bAllStats,3; bonus bMaxHPrate,5; bonus bMaxSPrate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18882,'Kannam_On_Head','Kannam On Head',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,256,NULL,'20',1,1003,'bonus3 bAutoSpellWhenHit,"SA_DELUGE",1,50; .@r = getrefine(); if (.@r > 3) bonus3 bAutoSpellWhenHit,"WZ_WATERBALL",.@r/3,50;',NULL,NULL); @@ -9837,10 +9913,10 @@ REPLACE INTO `item_db_re` VALUES (18902,'Shovel_Hat','Shovel Hat',4,0,NULL,500,N REPLACE INTO `item_db_re` VALUES (18908,'Isabella_Red_Ear','Isabella Red Ear',4,10,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1030,'bonus bStr,5; bonus bMaxHPrate,5; bonus2 bSubDefEle,Ele_Fire,10; .@r = getrefine(); if (.@r >= 9) bonus bAspd,.@r-8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18909,'Isabella_Brown_Ear','Isabella Brown Ear',4,10,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1031,'bonus bMaxHPrate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bSubRace,RC_Player,5; bonus bMatk,getrefine()*2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18910,'Isabella_Blue_Ear','Isabella Blue Ear',4,10,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1032,'bonus bMaxHPrate,10; bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddSize,Size_Medium,10; if(getrefine()>=12){ bonus bShortWeaponDamageReturn,5; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18917,'LoveLove_Balloon','LoveLove Balloon',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,1039,'bonus bAllStats,1; bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18918,'Long_Octopus_Balloon','Long Octopus Balloon',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',NULL,1040,'bonus bVit,1; bonus bInt,1; bonus bMaxSP,30; bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18917,'LoveLove_Balloon','LoveLove Balloon',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,1039,'bonus bAllStats,1; bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18918,'Long_Octopus_Balloon','Long Octopus Balloon',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',NULL,1040,'bonus bVit,1; bonus bInt,1; bonus bMaxSP,30; bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18925,'GodOfWinds_Fan','GodOfWinds Fan',4,0,NULL,300,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1,NULL,NULL,0,1051,'bonus2 bSkillAtk,"WZ_VERMILION",3; bonus2 bSkillAtk,"WL_CHAINLIGHTNING",3; bonus bUseSPrate,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18929,'Elephant_Model_Hat','Elephant Model Hat',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',0,1065,'.@r = getrefine(); bonus bDex,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_STORMGUST",5,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18929,'Elephant_Model_Hat','Elephant Model Hat',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,1065,'.@r = getrefine(); bonus bDex,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_STORMGUST",5,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18930,'Gorilla_Model_Hat','Gorilla Model Hat',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,1066,'bonus bStr,2+((getrefine()>=11) ? 3 : 0); bonus3 bAutoSpell,"KN_BOWLINGBASH",1,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18931,'Lion_Model_Hat','Lion Model Hat',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,1067,'.@r = getrefine(); bonus bInt,2+((.@r >= 2 && .@r <= 8) ? 1 : ((.@r > 8) ? (.@r/8): 0)); bonus3 bAutoSpellWhenHit,"WZ_METEOR",5,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18932,'Rhino_Model_Hat','Rhino Model Hat',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'30',1,1068,'.@r = getrefine(); bonus bVit,2+((.@r >= 11) ? (.@r/11) : 0); bonus3 bAutoSpellWhenHit,"WZ_VERMILION",1,50;',NULL,NULL); @@ -9864,13 +9940,13 @@ REPLACE INTO `item_db_re` VALUES (18976,'Old_Minstrel_Song_Hat','Old Minstrel So REPLACE INTO `item_db_re` VALUES (18977,'Old_Midas_Whisper','Old Midas Whisper',4,10,NULL,100,NULL,10,NULL,1,0x00040000,56,2,256,NULL,'170',1,629,'bonus bAllStats,1; .@r = getrefine(); bonus bBaseAtk,4*.@r; bonus bLongAtkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"GN_CARTCANNON",15*.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18978,'Old_Magic_Stone_Hat','Old Magic Stone Hat',4,10,NULL,100,NULL,10,NULL,1,0x00000200,56,2,256,NULL,'170',1,630,'bonus bAllStats,1; .@r = getrefine(); bonus bMdef,5; bonus bMatkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"WL_SOULEXPANSION",5*.@r/2; bonus2 bSkillCooldown,"WL_CRIMSONROCK",-1000-(.@r*100);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18979,'Old_Blazing_Soul','Old Blazing Soul',4,10,NULL,100,NULL,10,NULL,1,0x00008000,56,2,256,NULL,'170',1,631,'bonus bAllStats,1; .@r = getrefine(); bonus bBaseAtk,4*.@r; bonus bCritical,2*.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"SR_RAMPAGEBLASTER",15*.@r/2; bonus2 bSkillAtk,"SR_RIDEINLIGHTNING",20*.@r/2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18980,'Old_Wind_Whisper','Old Wind Whisper',4,10,NULL,100,NULL,10,NULL,1,0x10000,56,2,256,NULL,'170',1,633,'bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus2 bSkillAtk,"SO_POISON_BUSTER",15*.@r/2; bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20*.@r/2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (18980,'Old_Wind_Whisper','Old Wind Whisper',4,10,NULL,100,NULL,10,NULL,1,0x10000,56,2,256,NULL,'170',1,633,'bonus bAllStats,1; .@r = getrefine(); bonus bAtk2,4*.@r; bonus bMatkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus2 bSkillAtk,"SO_POISON_BUSTER",15*(.@r/2); bonus2 bSkillAtk,"SO_VARETYR_SPEAR",20*(.@r/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18981,'Old_Dying_Swan','Old Dying Swan',4,10,NULL,100,NULL,10,NULL,1,0x00080000,56,0,256,NULL,'170',1,635,'bonus bAllStats,1; .@r = getrefine(); bonus bLongAtkRate,.@r; bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus2 bSkillAtk,"CG_ARROWVULCAN",20*.@r/2; bonus2 bSkillAtk,"WM_SEVERE_RAINSTORM",5*.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18982,'Old_Circlet_Of_Bone','Old Circlet Of Bones',4,10,NULL,100,NULL,10,NULL,1,0x00001000,56,2,256,NULL,'170',1,1141,'bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bCriticalRate,.@r; bonus bAspdRate,1; bonus2 bSkillAtk,"GC_CROSSIMPACT",10*.@r/2; bonus2 bSkillAtk,"GC_CROSSRIPPERSLASHER",20*.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18983,'Old_Protect_Of_Crown','Old Protect Of Crown',4,10,NULL,100,NULL,10,NULL,1,0x00004000,56,2,256,NULL,'170',1,1140,'bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bMdef,5; bonus bBaseAtk,4*.@r; bonus bAspd,.@r/5; bonus2 bSkillAtk,"LG_CANNONSPEAR",20*.@r/2; bonus2 bSkillAtk,"LG_OVERBRAND",5*.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18984,'Old_Camo_RabbitHood','Old Camouflage Rabbit Hood',4,10,NULL,100,NULL,10,NULL,1,0x0000800,56,2,256,NULL,'170',1,1142,'bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bLongAtkRate,.@r; bonus bFlee2,.@r/3; bonus2 bSkillAtk,"RA_CLUSTERBOMB",15*.@r/2; bonus2 bSkillAtk,"RA_WUGSTRIKE",10*.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (18985,'Falconer_Flute','Falconer Flute',4,0,NULL,100,NULL,NULL,NULL,0,0x0000800,63,2,1,NULL,'75',0,1143,'set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus3 bAutoSpell,"HT_BLITZBEAT",.@i,((.@bblvl / 3) * 10) + (.@luk * 10) + (((.@bblvl / 5) * .@bblvl) * 2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (18987,'RWC13_Jormungandr_Hat','RWC13 Jormungandr Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1149,'bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150;','sc_end SC_SpeedUp0;',NULL); +REPLACE INTO `item_db_re` VALUES (18987,'RWC13_Jormungandr_Hat','RWC13 Jormungandr Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1149,'bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150;','sc_end SC_SpeedUp0;',NULL); REPLACE INTO `item_db_re` VALUES (18997,'Riot_Chip','Runaway Chip',4,10,NULL,300,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1201,'bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19019,'Elemental_Crown','Elemental Crown',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,1219,'.@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19020,'Survive_Circlet','Survive Circlet',4,0,NULL,500,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,NULL,1,1220,'.@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4;',NULL,NULL); @@ -9884,7 +9960,8 @@ REPLACE INTO `item_db_re` VALUES (19033,'Rift_Ancient_Decoration','Rift Ancient REPLACE INTO `item_db_re` VALUES (19038,'12_Anniversary_Crown_Of_Saint','12 Anniversary Crown of Saint',4,10,NULL,120,NULL,12,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,1117,'bonus bAllStats,2; bonus bMdef,12;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19039,'12_Anniversary_Elf_Ears','12 Anniversary Elf Ears',4,10,NULL,120,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'0',1,875,'bonus2 bSubRace,RC_All,4; bonus2 bSubRace,RC_Player,-4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19047,'Angeling_KnitCap','Angeling KnitCap',4,0,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'20',1,953,'bonus2 bSPGainRace,RC_Angel,5; bonus bHPGainValue,100; .@r = getrefine(); if (.@r >= 5) { bonus2 bSubRace,RC_Angel,5+((.@r >= 7) ? 5 : 0); }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19048,'Elemental_Clothe','Elemental Clothes',4,0,NULL,500,NULL,45,NULL,1,0xFFFFFFFF,63,2,16,NULL,'80',1,NULL,'.@r = getrefine(); bonus bLongAtkRate,2+((.@r >= 9) ? 3 : 0)+((.@r >= 7) ? 2 : 0); if (.@r >= 7) bonus bUnbreakableArmor,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19048,'Elemental_Clothe','Elemental Clothes',4,0,NULL,500,NULL,45,NULL,1,0xFFFFFFFF,63,2,16,NULL,'80',1,NULL,'.@r = getrefine(); bonus bLongAtkRate,2+((.@r >= 9) ? 3 : 0)+((.@r >= 7) ? 2 : 0); if (.@r >= 7) bonus bUnbreakableArmor;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19050,'Loki_Nidhogg_Hat','Loki & Nidhoggur\'s Hat',4,0,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1304,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19051,'Warrior_Moon_Cat','Warrior Moon Cat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1308,'/*Enables use of Level 1 Monster\'s Cry*/ bonus bAllStats,3; bonus2 bHPDrainRate,40,5; bonus2 bSPDrainRate,10,2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19052,'Sigruns_Wing','Rental Sigrun\'s Wing',4,10,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,63,2,512,NULL,'1',0,568,'if (Class == Job_Swordman || Class == Job_Thief || Class == Job_Merchant || Class == Job_Taekwon || Class == Job_Star_Gladiator || Class == Job_Star_Gladiator2) bonus bAspd,1; else if (Class == Job_Mage || Class == Job_Acolyte || Class == Job_Ninja || Class == Job_Soul_Linker) { bonus bMatk,5; bonus bHealPower,2; } else if (Class == Job_Archer || Class == Job_Gunslinger) bonus bLongAtkRate,2; else if (Class == Job_Novice || Class == Job_SuperNovice) { bonus bMaxHP,120; bonus bMaxSP,60; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19053,'Fighter_Moon_Cat','Fighter Moon Cat',4,20,NULL,100,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1308,'/*Enables use of Level 1 Monster\'s Cry*/ .@r = getrefine(); bonus bAllStats,3; bonus2 bAddEff,Eff_Stun,500+(.@r*100);',NULL,NULL); @@ -9948,6 +10025,9 @@ REPLACE INTO `item_db_re` VALUES (19178,'Elemental_Crown__','Elemental Crown',4, REPLACE INTO `item_db_re` VALUES (19179,'Rabbit_Magic_Hat_','Magic Rabit Hat',4,0,NULL,800,NULL,4,NULL,1,0xFFFFFFFF,63,2,256,NULL,'0',1,497,'bonus bDex,1; bonus bAgi,1; bonus bMdef,1; bonus bAspdRate,5; bonus bDelayRate,-4;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19180,'Anubis_Helm_','Anubis Helm',4,20,NULL,0,NULL,8,NULL,1,0xFFFFFFFF,63,2,768,NULL,'65',0,485,'bonus bMdef,5; bonus2 bSubClass,Class_Boss,10; bonus bHealpower2,10; bonus bAddItemHealRate,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19181,'New_Wave_Sunglasses_','New Wave Sunglasses',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,63,2,512,NULL,'30',0,856,'bonus bDelayRate,-5;',NULL,NULL); +# +REPLACE INTO `item_db_re` VALUES (19246,'Royal_Guard_Necklace','Royal Guard Necklace',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'80',0,1629,'bonus bAspd,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19306,'Gambler_Card','Heart Card in Mouth',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'80',0,1679,'bonus bCritAtkRate,5;',NULL,NULL); #=================================================================== # Costume System #=================================================================== @@ -9958,54 +10038,54 @@ REPLACE INTO `item_db_re` VALUES (19503,'T_Munak_Hat','T Munak Hat',4,0,NULL,0,N REPLACE INTO `item_db_re` VALUES (19504,'T_Sunglasses','T Sunglasses',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'0',0,12,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19505,'T_Cigarette','T Cigarette',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'0',0,54,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19506,'T_Valkyrie_Feather_Band','T Valkyrie Feather Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',1,300,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19507,'Fine_Sun','Clear Sun',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,654,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19508,'T_Gemmed_Sallet','T Gemmed Sallet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',1,0,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19509,'Butterfly_Wing_Ear','Butterfly Wing Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,695,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19510,'Nut_On_Head','Screw Stuck in Head',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,696,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19511,'Heart_Eye_Patch1','Heart Eye Patch 1',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,697,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19512,'Heart_Eye_Patch2','Heart Eye Patch 2',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,698,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19513,'Chicken_Beak','Chicken Bill',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,699,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19514,'Charlie_Beard','Charlies Beard',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,700,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19515,'Yellow_Hat','Yellow Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,701,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19516,'Singing_Bird','Singing Bird',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,702,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19517,'Cocks_Comb','Chicken Crest',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,703,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19518,'Rainbow','Rainbow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,704,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19519,'Lightning_Cloud','Thunderstorm Cloud',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,688,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19520,'Rain_Cloud','Rain Cloud',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,705,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19521,'Charlie_Hat','Charlies Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,706,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19522,'Mini_Crown1','Mini Crown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,707,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19523,'Donation_Ribbon','Green Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,244,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19524,'C_Green_Feeler','Costume Green Feeler',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,85,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19525,'C_Jack_A_Dandy','Costume Jack A Dandy',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,58,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19526,'C_Helm','Costume Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,40,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19527,'C_Sharp_Gear','Costume Spiky Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,43,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19528,'C_Iron_Cane','Costume Iron Cain',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,53,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19529,'C_Angelic_Chain','Costume Angel Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,38,'bonus bUnbreakableHelm,1; bonus bVit,1; bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19530,'C_Wild_Rose','Costume Wild Rose',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,541,'bonus bUnbreakableHelm,1; bonus bBaseAtk,2; bonus bMatk,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19531,'C_Cube_Mask','Costume Cube Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'0',0,472,'bonus bUnbreakableHelm,1; bonus bFlee,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19532,'C_Red_Bunny_Band','Red Bunny Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,640,'bonus bUnbreakableHelm,1; bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19533,'C_Spore_Hat','Costume Spore Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,114,'bonus bUnbreakableHelm,1; bonus bVit,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19507,'Fine_Sun','Clear Sun',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,654,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19508,'T_Gemmed_Sallet','T Gemmed Sallet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',1,0,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19509,'Butterfly_Wing_Ear','Butterfly Wing Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,695,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19510,'Nut_On_Head','Screw Stuck in Head',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,696,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19511,'Heart_Eye_Patch1','Heart Eye Patch 1',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,697,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19512,'Heart_Eye_Patch2','Heart Eye Patch 2',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,698,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19513,'Chicken_Beak','Chicken Bill',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,699,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19514,'Charlie_Beard','Charlies Beard',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,700,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19515,'Yellow_Hat','Yellow Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,701,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19516,'Singing_Bird','Singing Bird',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,702,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19517,'Cocks_Comb','Chicken Crest',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,703,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19518,'Rainbow','Rainbow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,704,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19519,'Lightning_Cloud','Thunderstorm Cloud',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,688,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19520,'Rain_Cloud','Rain Cloud',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,705,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19521,'Charlie_Hat','Charlies Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,706,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19522,'Mini_Crown1','Mini Crown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,707,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19523,'Donation_Ribbon','Green Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,244,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19524,'C_Green_Feeler','Costume Green Feeler',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,85,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19525,'C_Jack_A_Dandy','Costume Jack A Dandy',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,58,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19526,'C_Helm','Costume Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,40,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19527,'C_Sharp_Gear','Costume Spiky Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,43,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19528,'C_Iron_Cane','Costume Iron Cain',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,53,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19529,'C_Angelic_Chain','Costume Angel Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,38,'bonus bUnbreakableHelm; bonus bVit,1; bonus bAgi,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19530,'C_Wild_Rose','Costume Wild Rose',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,541,'bonus bUnbreakableHelm; bonus bBaseAtk,2; bonus bMatk,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19531,'C_Cube_Mask','Costume Cube Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'0',0,472,'bonus bUnbreakableHelm; bonus bFlee,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19532,'C_Red_Bunny_Band','Red Bunny Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,640,'bonus bUnbreakableHelm; bonus bDex,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19533,'C_Spore_Hat','Costume Spore Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,114,'bonus bUnbreakableHelm; bonus bVit,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19534,'C_Tha_Despero_Mask','Costume Thanatos Despero Mask',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,693,'bonus2 bAddClass,Class_All,1; bonus bMatkRate,1; bonus bHealPower,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19535,'C_Sinsuncho_Hat','Costume Sinsuncho Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,730,'bonus bUnbreakableHelm,1; bonus bStr,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19536,'C_Rose_Corsage','Costume Rose Corsage',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,533,'bonus bUnbreakableHelm,1; bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19537,'C_Gryphon_Hat','Costume Gryphon Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,591,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19535,'C_Sinsuncho_Hat','Costume Sinsuncho Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,730,'bonus bUnbreakableHelm; bonus bStr,1; bonus2 bExpAddRace,RC_All,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19536,'C_Rose_Corsage','Costume Rose Corsage',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,533,'bonus bUnbreakableHelm; bonus bInt,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19537,'C_Gryphon_Hat','Costume Gryphon Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,591,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19538,'Full_Moon','Full Moon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,780,'autobonus "{ bonus bBaseAtk,50; }",10,5000,BF_WEAPON,"{ specialeffect2 EF_POTION_BERSERK; /* showscript */ }"; autobonus "{ bonus bMatk,50; }",5,5000,BF_MAGIC,"{ specialeffect2 EF_ENERGYCOAT; /* showscript */ }";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19539,'C_Reginleif_Hairband','Costume Hairband Of Reginleif',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,468,'bonus bAllStats,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19540,'C_Rabbit_Earplug','Costume Rabbit Earplugs',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,515,'bonus bAgi,1; bonus bFlee,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19541,'C_Romantic_White_Flower','Costume Romantic White Flower',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,259,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19542,'C_Devil_Whisper','Costume Devil Whisper',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,712,'bonus bUnbreakableHelm,1; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19543,'Oliver_Wolf_Hood','Oliver Wolf Hood',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'70',0,849,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19544,'C_Tare_Neko_Cru','Costume Tare Neko Cru',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,692,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19545,'C_Boys_Cap','Costume Boy\'s Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,102,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19546,'C_Valkyrie_Helm','Costume Valkyrie Helm',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,225,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19547,'C_Deviruchi_Cap','Costume Deviruchi Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,123,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19548,'C_Frog_Cap','Costume Frog Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,448,NULL,'bonus bUnbreakableHelm,1;',NULL); -REPLACE INTO `item_db_re` VALUES (19549,'C_Magestic_Goat','Costume Magestic Goat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,41,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19550,'C_Blush','Costume Blush',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'100',0,125,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19551,'C_Elven_Ears','Costume Elven Ears',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'100',0,73,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19552,'C_Centimental_Flower','Costume Centimental Flower',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'100',0,56,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19553,'C_Assassin_Mask_','Costume Assassin Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'100',0,180,'bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19554,'C_Hahoe_Mask','Costume Hahoe Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'100',0,230,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19541,'C_Romantic_White_Flower','Costume Romantic White Flower',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,259,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19542,'C_Devil_Whisper','Costume Devil Whisper',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,712,'bonus bUnbreakableHelm; bonus2 bSubRace,RC_Angel,1; bonus2 bSubRace,RC_Demon,1; bonus3 bAddMonsterDropItem,12020,RC_Angel,400; bonus3 bAddMonsterDropItem,523,RC_Demon,400;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19543,'Oliver_Wolf_Hood','Oliver Wolf Hood',4,20,NULL,300,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'70',0,849,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19544,'C_Tare_Neko_Cru','Costume Tare Neko Cru',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,692,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19545,'C_Boys_Cap','Costume Boy\'s Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,102,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19546,'C_Valkyrie_Helm','Costume Valkyrie Helm',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,225,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19547,'C_Deviruchi_Cap','Costume Deviruchi Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,123,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19548,'C_Frog_Cap','Costume Frog Cap',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,448,NULL,'bonus bUnbreakableHelm;',NULL); +REPLACE INTO `item_db_re` VALUES (19549,'C_Magestic_Goat','Costume Magestic Goat',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'100',0,41,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19550,'C_Blush','Costume Blush',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'100',0,125,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19551,'C_Elven_Ears','Costume Elven Ears',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'100',0,73,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19552,'C_Centimental_Flower','Costume Centimental Flower',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'100',0,56,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19553,'C_Assassin_Mask_','Costume Assassin Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'100',0,180,'bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19554,'C_Hahoe_Mask','Costume Hahoe Mask',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'100',0,230,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19555,'C_Crescent_Moon_Helm','Costume Crescent Moon Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',1,213,'bonus bVit,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19556,'C_Kabuki_Mask','Costume Kabuki Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',1,214,'bonus bInt,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19557,'C_Ayothaya_Hat','Costume Ayothaya Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,334,'bonus bStr,1;',NULL,NULL); @@ -10025,7 +10105,7 @@ REPLACE INTO `item_db_re` VALUES (19570,'C_Mercury_Riser','Costume Mercury Riser REPLACE INTO `item_db_re` VALUES (19571,'C_White_Musang_Hat','Costume White Musang Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,770,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19572,'C_Black_Musang_Hat','Costume Black Musang Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,771,'bonus bInt,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19573,'C_Heart_Wing_Hairband','Costume Heart Wing Hairband',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,733,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19574,'C_Lord_of_Death','Costume Lord of Death',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'0',1,742,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19574,'C_Lord_of_Death','Costume Lord of Death',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'0',1,742,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19575,'C_Ascension_Black_Dragon','Costume Ascension Black Dragon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,863,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19576,'C_Tare_Pope','Costume Tare Pope',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,817,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19577,'10th_Anni_Poring_Hat','10th Anni Poring Hat',4,10,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,874,NULL,NULL,NULL); @@ -10038,7 +10118,7 @@ REPLACE INTO `item_db_re` VALUES (19583,'C_Zorro_Mask','Costume Zorro Mask',4,0, REPLACE INTO `item_db_re` VALUES (19584,'C_Pirate_Dagger','Costume Dagger In Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',1,327,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19585,'C_Feather_Beret','Costume Feather Beret',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,224,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19586,'C_Pink_Bunny_Band_J','Costume Pink Bunny Hair Band',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,898,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19587,'C_King_Poring_Hat','Costume King Poring Hat',4,0,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,905,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19587,'C_King_Poring_Hat','Costume King Poring Hat',4,0,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,905,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19588,'C_Cat_Hat_J','Costume Cat Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,182,'bonus bAllStats,3; bonus2 bExpAddClass,Class_All,30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19589,'C_Fallen_Angel_Lost_J','Costume Fallen Angel Lost',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,907,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19590,'C_Twin_Ribbon_J','Costume Maiden\'s Twin Ribbon',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,239,NULL,NULL,NULL); @@ -10137,7 +10217,7 @@ REPLACE INTO `item_db_re` VALUES (19697,'C_Rudolph_Santa_Hat','Costume Rudolph S REPLACE INTO `item_db_re` VALUES (19701,'C_Red_Bonnet','Costume Red Bonnet',4,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,190,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19702,'C_Santa_Hat_1','Costume Twin Pompom By JB',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,390,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19706,'C_Red_Dress_Hat','Costume Red Dress Hat',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,670,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19707,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,966,'bonus bUnbreakableHelm,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19707,'C_Polar_Bear_Cap','Costume Polar Bear Cap',4,20,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'0',0,966,'bonus bUnbreakableHelm;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19708,'C_White_Snake_Hat','Costume White Snake Hat',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,413,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19709,'C_Yellow_Ribbon','Costume Yellow Ribbon',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,310,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19710,'C_Wings_Of_Victory','Costume Wings Of Victory',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',1,365,NULL,NULL,NULL); @@ -10275,7 +10355,7 @@ REPLACE INTO `item_db_re` VALUES (19902,'C_Cigar','Costume Cigarette',4,0,NULL,0 REPLACE INTO `item_db_re` VALUES (19903,'C_Witchs_Hat','Costume Witch\'s Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,717,'bonus bVariableCastrate,-10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19910,'C_Halloween_Hat','Costume Halloween Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,NULL,1,1098,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19913,'C_Poo_Poo_Hat','Costume Poo Poo Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,NULL,1,76,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (19914,'Felock_Cap','Costume Tarlock\'s Hat',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1101,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (19914,'Felock_Cap','Felrock\'s Hat',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1101,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19916,'C_Black_Cat_Hat','Costume Black Cat Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1105,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (19917,'C_Gloomy_Pumpkin_Hat','Costume Pumpkin Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,691,'bonus bSpeedRate,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (19918,'C_Lude_Mask','Costume Lude Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,802,'bonus bAddItemHealRate,20;',NULL,NULL); @@ -10701,7 +10781,7 @@ REPLACE INTO `item_db_re` VALUES (20374,'C_Mechanical_Plant_Hat','Costume Mechan REPLACE INTO `item_db_re` VALUES (20375,'C_Ignis_Cap','Costume Ignis Cap',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,803,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20376,'C_Memory_of_Lovers','Costume Memory of Lovers',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',1,1072,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20377,'C_Flight_Cap','Costume Flight Cap',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,820,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20378,'C_Sky_Met','Costume Sky Met',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,868,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20378,'C_Skymet','Costume Sky Met',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,868,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20379,'C_Pocketwatch_Hair_Ornament','Costume Pocketwatch Hair Ornament',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1404,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20380,'C_Mechanical_Feather_Hairband','Costume Mechanical Feather Hairband',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1405,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20381,'C_Steampunk_Hat','Costume Steampunk Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',1,1406,NULL,NULL,NULL); @@ -10793,8 +10873,12 @@ REPLACE INTO `item_db_re` VALUES (20507,'C_Poring_Bag','Costume Poring Bag',4,0, REPLACE INTO `item_db_re` VALUES (20508,'C_Poster_Girl_Hat','Costume Poster Girl Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1446,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20509,'C_Wings_of_Uriel','Costume Wings of Uriel',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,17,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20510,'C_SwordWing','Costume Sword Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,19,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20600,'Fantastic_Aura','Fantastic Aura',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,0,'/*TODO: View ID*/ bonus bUnbreakableHelm,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20700,'Egir_Manteau','Egir Manteau',4,200000,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'110',1,0,'bonus bUnbreakableGarment,1; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20511,'C_Blue_Fairy_Wing','Blue Wings of Fairy',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,21,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20512,'C_Bag_of_Adventurer_j','Costume Adventurer\'s Backpack',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,2,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20514,'C_Thanatos_Sword','Costume Thanatos Sword',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,23,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20516,'C_Wings_of_Michael','Costume Wings of Michael',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,24,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20600,'Fantastic_Aura','Fantastic Aura',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,0,'/*TODO: View ID*/ bonus bUnbreakableHelm;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20700,'Egir_Manteau','Egir Manteau',4,200000,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'110',1,0,'bonus bUnbreakableGarment; .@r = getrefine(); if (.@r > 10) .@r = 10; if (BaseClass == Job_Mage || BaseClass == Job_Archer || BaseClass == Job_Acolyte) { bonus bFlee2,5+(.@r*2); } else if (BaseClass == Job_Swordman || BaseClass == Job_Merchant || BaseClass == Job_Thief) { bonus bShortWeaponDamageReturn,5+(.@r*2); }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20702,'TE_Woe_Muffler','TE Woe Muffler',4,0,NULL,0,NULL,5,NULL,0,0xFFFFFFFF,63,2,4,NULL,'40',1,NULL,'bonus bMdef,5; bonus2 bAddRace,RC_Player,5; bonus2 bMagicAddRace,RC_Player,5; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20703,'TE_Woe_Manteau','TE Woe Manteau',4,0,NULL,0,NULL,10,NULL,0,0x000444A2,63,2,4,NULL,'40',1,NULL,'bonus2 bAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20704,'TE_Woe_Magic_Manteau','TE Woe Magic Manteau',4,0,NULL,0,NULL,5,NULL,0,0x00818315,63,2,4,NULL,'40',1,NULL,'bonus2 bMagicAddRace,RC_Player,10; bonus2 bResEff,Eff_Freeze,25;',NULL,NULL); @@ -10809,21 +10893,22 @@ REPLACE INTO `item_db_re` VALUES (20721,'Cloak_Of_Gray','Cloak of Gray',4,20,NUL REPLACE INTO `item_db_re` VALUES (20724,'Love_Dad_Wings_2012','Love Dad Wings 2012',4,0,NULL,100,NULL,15,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,5,'.@r = getrefine(); if ((readparam(bStr)>89)) { bonus bAllStats,1; bonus bStr,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bAgi)>89)) { bonus bAllStats,1; bonus bAgi,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bVit)>89)) { bonus bAllStats,1; bonus bVit,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bInt)>89)) { bonus bAllStats,1; bonus bInt,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bDex)>89)) { bonus bAllStats,1; bonus bDex,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; } if ((readparam(bLuk)>89)) { bonus bAllStats,1; bonus bLuk,.@r; bonus bMaxHPRate,1; bonus bMaxSPRate,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20725,'Ribbon_Piamat','Ribbon Piamat',4,10,NULL,100,'0:10',NULL,NULL,1,0xFFFFFFFF,63,2,4,NULL,'30',1,7,'bonus bInt,1; bonus bDex,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20727,'Brilliant_Golden_Wings','Brilliant Golden Wings',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',1,5,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20730,'Loyalists_Hood','Loyalists Hood',4,10,NULL,200,NULL,30,NULL,1,0xFFFFFFFF,63,2,8192,NULL,'80',NULL,NULL,'bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback,1; bonus2 bSubEle,Ele_All,-20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20730,'Loyalists_Hood','Loyalists Hood',4,10,NULL,200,NULL,30,NULL,1,0xFFFFFFFF,63,2,8192,NULL,'80',NULL,NULL,'bonus bStr,2; bonus bMaxHPrate,10; bonus bNoKnockback; bonus2 bSubEle,Ele_All,-20;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20732,'Supplement_Part_Con','Supplement Part Con',4,25000,NULL,500,NULL,20,NULL,1,0x00000400,56,2,4,NULL,'100',1,NULL,'.@r = getrefine(); bonus bMaxHPrate,6+(.@r/2); if(.@r>=9){bonus bHPrecovRate,50;}',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20733,'Upgrade_Part_Engine','Reinforced Parts - Engine',4,10,NULL,1500,NULL,25,NULL,1,0x00000400,56,2,4,NULL,'100',1,NULL,'bonus bDelayrate,-10; .@r = getrefine(); if(.@r>=7) {bonus2 bSubEle,0,10;}; if(.@r>=9) {bonus bDelayrate,-10;}',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20737,'C_Kirin_Wing','Costume Kirin Wing',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,6,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20743,'Airship_Cape','Cloak Of Airship',4,10,NULL,0,NULL,25,NULL,1,0xFFFFFFFF,63,2,4,NULL,'125',0,NULL,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-20;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20744,'Felock_Cape','Tarlock\'s Cloak',4,10,NULL,400,NULL,12,NULL,1,0xFFFFFFFF,63,2,4,NULL,'125',1,NULL,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-10; .@r = getrefine(); if(.@r>=7) { bonus bVariableCastrate,-10; } if(.@r>=9) { bonus bVariableCastrate,-10;} if(.@r>=12) { bonus bVariableCastrate,-5; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20743,'Airship_Cape','Airship\'s Cloak',4,10,NULL,0,NULL,25,NULL,1,0xFFFFFFFF,63,2,4,NULL,'125',0,NULL,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-20;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20744,'Felock_Cape','Felrock\'s Cloak',4,10,NULL,400,NULL,12,NULL,1,0xFFFFFFFF,63,2,4,NULL,'125',1,NULL,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,20; bonus bVariableCastrate,-10; .@r = getrefine(); if(.@r>=7) { bonus bVariableCastrate,-10; } if(.@r>=9) { bonus bVariableCastrate,-10;} if(.@r>=12) { bonus bVariableCastrate,-5; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20746,'C_Rudra_Wing','Costume Rudra Wings',4,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,8,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20748,'Manteau_Of_Fallen','Cloak Of Casualties',4,10,NULL,600,NULL,20,NULL,0,0xFFFFFFFF,63,2,4,NULL,'120',1,NULL,'.@r = getrefine(); bonus bAgi,5; bonus bFlee,10; if(readparam(bStr)>=90) bonus bBaseAtk,10+(.@r*2); if(readparam(bInt)>=90) bonus bMatk,20+(.@r*3); if(readparam(bVit)>=90) bonus2 bSubEle,Ele_Neutral,3+((.@r>=8)?3:0)+((.@r>=10)?4:0); if(readparam(bAgi)>=90){ bonus bAspdRate,3+(.@r/2); bonus bAspd,((.@r>=10)?1:0); } if(readparam(bDex)>=90) bonus bLongAtkRate,3+(.@r/2); if(readparam(bLuk)>=90) bonus bCriticalRate,5+.@r;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20749,'Manteau_Of_Fallen_','Cloak Of Casualties',4,10,NULL,600,NULL,30,NULL,1,0xFFFFFFFF,63,2,4,NULL,'170',1,NULL,'.@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bAgi,5; bonus bFlee,10; if(readparam(bStr)>=90) bonus bBaseAtk,10+(.@r*2); if(readparam(bInt)>=90) bonus bMatk,20+(.@r*3); if(readparam(bVit)>=90) bonus2 bSubEle,Ele_Neutral,3+((.@r>=8)?3:0)+((.@r>=10)?4:0); if(readparam(bAgi)>=90){ bonus bAspdRate,3+(.@r/2); bonus bAspd,((.@r>=10)?1:0); } if(readparam(bDex)>=90) bonus bLongAtkRate,3+(.@r/2); if(readparam(bLuk)>=90) bonus bCriticalRate,5+.@r;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20753,'Lian_Robe','Lian Robe',4,0,NULL,700,NULL,20,1,1,0xFFFFFFFF,63,2,4,NULL,'65',1,NULL,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20756,'Aegir_Cloak','Aegir Cloak',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'40',1,NULL,'bonus bUnbreakableGarment,1; bonus bMaxHP,500; bonus bMaxSP,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20756,'Aegir_Cloak','Aegir Cloak',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,4,NULL,'40',1,NULL,'bonus bUnbreakableGarment; bonus bMaxHP,500; bonus bMaxSP,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20761,'C_Wing_Of_Happiness','Costume Happiness Wings',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,9,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20762,'C_GreatDevilWing','Costume Great Devil Wings',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,10,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20763,'C_Amistr_Bag','Costume Amistr Bag',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,4,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20764,'C_Fallen_Angel_Wing','Costume Fallen Angel Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,8192,NULL,'1',0,3,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20773,'Excelion_Wing','Excelion Wing',4,20,NULL,900,NULL,40,NULL,0,0xFFFFFFFF,63,2,4,NULL,'99',1,NULL,'bonus bFlee,getrefine() * 2; bonus bFlee2,8 + (BaseLevel > 129 ? 2 : 0);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20779,'Rift_Manteau','Rift Manteau',4,20,NULL,500,NULL,16,NULL,1,0xFFFFFFFF,63,2,4,NULL,'100',1,NULL,'.@r = getrefine(); bonus bMaxHP,(.@r >= 9 ? 1300 : .@r >= 7 ? 700 : 300); bonus bMaxSP,-50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20780,'Unity_STR_Manteau','Unity STR Manteau',4,32000,NULL,300,NULL,20,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,0,'.@r = getrefine(); if(BaseLevel<100) { bonus2 bExpAddRace,RC_All,4; bonus bMaxHPrate,2*(.@r/2); }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20781,'Unity_AGI_Manteau','Unity AGI Manteau',4,32000,NULL,300,NULL,20,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,0,'.@r = getrefine(); if(BaseLevel<100) { bonus2 bExpAddRace,RC_All,4; bonus bFlee,3*(.@r/2); }',NULL,NULL); @@ -10833,10 +10918,10 @@ REPLACE INTO `item_db_re` VALUES (20787,'Unity_Exquisite_Muffler','Unity Exquisi REPLACE INTO `item_db_re` VALUES (20788,'Private_Doram_Manteau','Private Doram Manteau',4,20,NULL,300,NULL,20,NULL,1,0x80000000,7,2,4,NULL,'100',1,NULL,'bonus bFlee,5; bonus2 bSubEle,Ele_Neutral,2; bonus bFlee2,getrefine()/3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20789,'Luxury_Doram_Manteau','Luxury Doram Manteau',4,20,NULL,400,NULL,25,NULL,1,0x80000000,7,2,4,NULL,'140',1,NULL,'bonus bFlee,7; bonus2 bSubEle,Ele_Neutral,3; .@r = getrefine()/3; bonus bFlee2,.@r; bonus bLuk,.@r;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20790,'Elegant_Doram_Manteau','Elegant Doram Manteau',4,20,NULL,500,NULL,30,NULL,1,0x80000000,7,2,4,NULL,'175',1,NULL,'bonus bFlee,10; bonus2 bSubEle,Ele_Neutral,5; .@r = getrefine()/2; bonus bFlee2,.@r; bonus bInt,.@r; bonus bDex,.@r; bonus bLuk,.@r;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20797,'Etran_Shirt','Etran Shirt',4,0,NULL,150,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,NULL,'bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20797,'Etran_Shirt','Etran Shirt',4,0,NULL,150,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,NULL,'bonus bMdef,10; bonus bMaxHPrate,2; .@r = getrefine(); if (.@r >= 6) bonus bMaxHPrate,4; if (.@r >= 7) bonus bMaxHPrate,6; if (.@r >= 8) bonus bMaxHPrate,8; if (.@r >= 9) bonus bNoKnockback;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20798,'GrimReaper_Protection','Costume Grim Reaper Protection',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1450,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (20815,'SeraphimRobe','Seraphim Robe',4,0,NULL,300,NULL,18,NULL,1,0xFFFFFFFF,63,2,4,NULL,'1',1,NULL,'bonus bMaxHPrate,10; bonus2 bMagicAtkEle,Ele_Neutral,5; .@r = getrefine(); if (.@r > 6) { bonus2 bSubEle,Ele_Dark,20; bonus2 bSubEle,Ele_Holy,20; bonus bMatkRate,10; } if (.@r > 8) { bonus2 bSubEle,Ele_Dark,10; bonus2 bSubEle,Ele_Holy,10; bonus bVariableCastrate,-5; } if (getskilllv("CR_TRUST") > 0) { bonus2 bSubEle,Ele_Holy,.@r*3; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (20819,'Oxygen_Bottle','Oxygen Bottle',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,4,NULL,'40',0,0,'bonus bFlee,12+getrefine(); bonus bHit,getrefine();',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (20819,'Oxygen_Bottle','Oxygen Bottle',4,0,NULL,500,NULL,0,NULL,1,0xFFFFFFFF,63,2,4,NULL,'40',1,0,'bonus bFlee,12+getrefine(); bonus bHit,getrefine();',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20823,'Para_Team_Manteau100','Awakened Eden Group Manteau I',4,0,NULL,0,NULL,20,NULL,0,0xFFFFFFFF,63,2,4,NULL,'100',1,0,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus bFlee2,2; if(.@r >= 9){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; } }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20824,'Para_Team_Manteau130','Awakened Eden Group Manteau II',4,0,NULL,0,NULL,25,NULL,0,0xFFFFFFFF,63,2,4,NULL,'130',1,0,'bonus2 bSubEle,Ele_Neutral,10; bonus bFlee,12; bonus bMaxHP,500; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus bMaxHP,500; bonus2 bSubEle,Ele_All,10; bonus2 bSubEle,Ele_Neutral,-10; if(.@r >= 9){ bonus2 bSubEle,Ele_Neutral,5; } }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (20825,'Para_Team_Manteau160','Awakened Eden Group Manteau III',4,0,NULL,0,NULL,30,NULL,0,0xFFFFFFFF,63,2,4,NULL,'160',1,0,'bonus2 bSubEle,Ele_All,10; bonus bFlee,12; bonus bMaxHP,1000; bonus bFlee2,2; .@r = getrefine(); if(.@r >= 7){ bonus2 bSubEle,Ele_Neutral,5; if(.@r >= 9){ skill "BS_GREED",1; } }',NULL,NULL); @@ -10856,24 +10941,24 @@ REPLACE INTO `item_db_re` VALUES (21007,'Heavy_Sword','Heavy Greatsword',5,20,NU REPLACE INTO `item_db_re` VALUES (21008,'Small_Karasuma','Small Karasuma',5,20,NULL,1000,'170',NULL,1,2,0x00004082,63,2,34,4,'50',1,3,'bonus bCritAtkRate,getrefine()*2; bonus3 bAutoSpell,"NPC_CRITICALWOUND",1,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (21009,'Thanos_Great_Sword','Thanatos Great Sword',5,10,NULL,1300,'280:120',NULL,1,1,0x00004082,56,2,34,4,'120',1,3,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (21010,'Tw_Sword_Of_Evil_Slayer','Evil Slayer Slasher Sword',5,10,NULL,2000,'225',NULL,1,1,0x00004082,63,2,34,3,'100',1,3,'bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); bonus2 bAddClass,Class_All,(.@r>=12?12:(.@r>=9?5:0));',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (21011,'Giant_Blade','Gigantic Blade',5,10,NULL,5000,'300',NULL,1,1,0x00004082,56,2,34,4,'130',1,3,'bonus bUnbreakableWeapon,1; bonus bAspdRate,-5; bonus bCritAtkRate,getrefine(); if(readparam(bStr)<=110){ bonus bAtk,-250; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (21011,'Giant_Blade','Gigantic Blade',5,10,NULL,5000,'300',NULL,1,1,0x00004082,56,2,34,4,'130',1,3,'bonus bUnbreakableWeapon; bonus bAspdRate,-5; bonus bCritAtkRate,getrefine(); if(readparam(bStr)<=110){ bonus bAtk,-250; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (21012,'Some_Wizard_MagicSword','Some Wizard MagicSword',5,0,NULL,2200,'200:150',NULL,1,2,0x00000080,56,2,34,4,'110',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (21013,'Hetairoi_Sword','Hetairoi Sword',5,0,NULL,2200,'210',NULL,1,2,0x00000080,56,2,34,4,'110',1,3,'bonus2 bSkillUseSP,"KN_AUTOCOUNTER",2; bonus2 bSkillUseSP,"LK_PARRYING",25;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (21014,'Infinity_Two-Handed_Sword','Infinity Two-Handed Sword',5,20,NULL,500,'230',NULL,1,1,0x00004082,56,2,34,4,'100',1,3,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (21015,'Crimson_Two-Handed_Sword','Crimson Two-Handed Sword',5,20,NULL,1700,'170',NULL,1,2,0x00004082,63,2,34,3,'70',1,3,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (21016,'Two_Handed_Sword_of_Vicious_Mind','Two-Handed Sword of Vicious Mind',5,20,NULL,2200,'220',NULL,1,1,0x00004082,63,2,34,4,'160',1,3,'bonus bAtk,pow(min(getrefine(),15),2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (21018,'Lindy_Hop','Lindy Hop',5,20,NULL,3400,'340',NULL,1,2,0x00004082,56,2,34,4,'170',1,3,'.@r = getrefine(); bonus2 bAddClass,Class_All,.@r/2; bonus bAspdRate,.@r; bonus bUnbreakableWeapon,0;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (21019,'Onimaru','Onimaru',5,0,NULL,4200,'75',NULL,1,2,0x00000080,56,2,34,4,'130',1,3,'.@bStr = readparam(bStr); .@r = getrefine(); bonus bBaseAtk,(min(120,.@bStr)); if (.@bStr > 119) bonus bBaseAtk,160; else if (.@bStr > 107) bonus bBaseAtk,80; else if (.@bStr > 94) bonus bBaseAtk,40; if (.@r > 6) bonus bUnbreakableWeapon,1; bonus4 bAutoSpell,"NPC_WIDECURSE",4,100,0; if (.@r > 8) bonus4 bAutoSpellOnSkill,"LK_BERSERK","BS_OVERTHRUST",5,100;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (21018,'Lindy_Hop','Lindy Hop',5,20,NULL,3400,'340',NULL,1,2,0x00004082,56,2,34,4,'170',1,3,'.@r = getrefine(); bonus2 bAddClass,Class_All,.@r/2; bonus bAspdRate,.@r; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (21019,'Onimaru','Onimaru',5,0,NULL,4200,'75',NULL,1,2,0x00000080,56,2,34,4,'130',1,3,'.@bStr = readparam(bStr); .@r = getrefine(); bonus bBaseAtk,(min(120,.@bStr)); if (.@bStr > 119) bonus bBaseAtk,160; else if (.@bStr > 107) bonus bBaseAtk,80; else if (.@bStr > 94) bonus bBaseAtk,40; if (.@r > 6) bonus bUnbreakableWeapon; bonus4 bAutoSpell,"NPC_WIDECURSE",4,100,0; if (.@r > 8) bonus4 bAutoSpellOnSkill,"LK_BERSERK","BS_OVERTHRUST",5,100;',NULL,NULL); #=================================================================== # New Shoes #=================================================================== -REPLACE INTO `item_db_re` VALUES (22000,'Temporal_Str_Boots','Temporal Boots Of Strength',4,20,NULL,600,NULL,25,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22000,'Temporal_Str_Boots','Temporal Boots Of Strength',4,20,NULL,600,NULL,25,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bAtk,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22001,'Temporal_Int_Boots','Temporal Boots Of Intelligence',4,20,NULL,600,NULL,20,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22002,'Temporal_Agi_Boots','Temporal Boots Of Agility',4,20,NULL,600,NULL,25,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22003,'Temporal_Vit_Boots','Temporal Boots Of Vitality',4,20,NULL,600,NULL,25,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22004,'Temporal_Dex_Boots','Temporal Boots Of Dexterity',4,20,NULL,600,NULL,25,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22005,'Temporal_Luk_Boots','Temporal Boots Of Luck',4,20,NULL,600,NULL,20,NULL,0,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22006,'Temporal_Str_Boots_','Temporal Boots Of Strength',4,20,NULL,600,NULL,25,NULL,1,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bBaseAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22006,'Temporal_Str_Boots_','Temporal Boots Of Strength',4,20,NULL,600,NULL,25,NULL,1,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bAtk,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22007,'Temporal_Vit_Boots_','Temporal Boots Of Vitality',4,20,NULL,600,NULL,25,NULL,1,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22008,'Temporal_Dex_Boots_','Temporal Boots Of Dexterity',4,20,NULL,600,NULL,25,NULL,1,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22009,'Temporal_Int_Boots_','Temporal Boots Of Intelligence',4,20,NULL,600,NULL,20,NULL,1,0xFFFFFFFF,56,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60;',NULL,NULL); @@ -10888,13 +10973,13 @@ REPLACE INTO `item_db_re` VALUES (22034,'Crimson_Gaiter','Crimson Gaiter',4,0,NU REPLACE INTO `item_db_re` VALUES (22035,'Vet_Nepen_Heel','Heoric Nepenthes Shoes',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,64,NULL,'160',1,NULL,'.@r = getrefine(); if (.@r>=8 && .@r<=10) .@i=5+.@r; else if (.@r>=11 && .@r<=13) .@i=5+(.@r*3); else if (.@r>13) .@i=42; bonus bVariableCastrate,-10-.@i;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22036,'Vet_SliverFox_Boots','Heroic Silver Fox Leather Boots',4,10,NULL,300,NULL,15,NULL,1,0xFFFFFFFF,63,2,64,NULL,'160',1,NULL,'.@r = getrefine(); if (.@r>=8 && .@r<=13) .@i=.@r; else if (.@r>13) .@i=13; bonus bLongAtkRate,5+.@i;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22037,'Vet_Ungo_Boots','Heroic Ungoliant Upgrade Boots',4,10,NULL,300,NULL,10,NULL,1,0xFFFFFFFF,63,2,64,NULL,'160',1,NULL,'.@r = getrefine(); if (.@r>=8 && .@r<=13) .@i=.@r; else if (.@r>13) .@i=13; bonus bUseSPrate,-5-.@i;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22042,'Talaria_Shoes','Talaria Shoes',4,10,NULL,300,NULL,15,NULL,1,0xFFFFFFFF,63,2,64,NULL,'50',1,NULL,'bonus bAgi,2; bonus bAspd,1; bonus bUnbreakableShoes,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22042,'Talaria_Shoes','Talaria Shoes',4,10,NULL,300,NULL,15,NULL,1,0xFFFFFFFF,63,2,64,NULL,'50',1,NULL,'bonus bAgi,2; bonus bAspd,1; bonus bUnbreakableShoes;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22043,'Supplement_Part_Agi','Supplement Part Agi',4,25000,NULL,350,NULL,25,NULL,1,0x00000400,56,2,64,NULL,'100',1,NULL,'bonus bAspdRate,5+(getrefine()/4);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22044,'Upgrade_Part_Booster','Reinforced Parts - Booster',4,10,NULL,1000,NULL,23,NULL,1,0x00000400,56,2,64,NULL,'100',1,NULL,'bonus2 bSkillUseSP,"NC_HOVERING",15; if(getrefine()>=7){bonus2 bSkillUseSP,"NC_HOVERING",-20;}',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22045,'Beach_Sandals','Summer Sandals',4,10,NULL,200,NULL,5,NULL,0,0xFFFFFFFF,63,2,64,NULL,'0',1,0,'bonus bFlee,5; bonus3 bAutoSpellWhenHit,"AL_INCAGI",10,300;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22046,'Airship_Boots','Boots Of Airship',4,10,NULL,0,NULL,26,NULL,0,0xFFFFFFFF,63,2,64,NULL,'125',1,NULL,'bonus bAgi,1; bonus bSpeedRate,10;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22047,'Felock_Boots','Tarlock\'s Boots',4,10,NULL,250,NULL,13,NULL,0,0xFFFFFFFF,63,2,64,NULL,'125',1,NULL,'bonus bAgi,1; .@r = getrefine(); bonus bAspdRate,5; if(.@r>=7) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=9) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=12) { bonus bAspd,1; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22059,'Aegir_Shoes','Aegir Shoes',4,10,NULL,300,NULL,13,NULL,1,0xFFFFFFFF,63,2,64,NULL,'40',1,NULL,'bonus bUnbreakableShoes,1; bonus bMaxHP,500; bonus bMaxSP,50;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22046,'Airship_Boots','Airship\'s Boots',4,10,NULL,0,NULL,26,NULL,0,0xFFFFFFFF,63,2,64,NULL,'125',0,NULL,'bonus bAgi,1; bonus bSpeedRate,10;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22047,'Felock_Boots','Felrock\'s Boots',4,10,NULL,250,NULL,13,NULL,0,0xFFFFFFFF,63,2,64,NULL,'125',1,NULL,'bonus bAgi,1; .@r = getrefine(); bonus bAspdRate,5; if(.@r>=7) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=9) { bonus bAgi,1; bonus bAspdRate,5; } if(.@r>=12) { bonus bAspd,1; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22059,'Aegir_Shoes','Aegir Shoes',4,10,NULL,300,NULL,13,NULL,1,0xFFFFFFFF,63,2,64,NULL,'40',1,NULL,'bonus bUnbreakableShoes; bonus bMaxHP,500; bonus bMaxSP,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22064,'Thorny_Shoes','Thorny Shoes',4,0,NULL,1000,NULL,25,NULL,1,0xFFFFFFFF,63,2,64,NULL,NULL,1,NULL,'bonus bShortWeaponDamageReturn,getrefine()/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22067,'Witch_Shoes','Shoe of Witch',4,10,NULL,400,NULL,10,NULL,0,0xFFFFFFFE,63,2,64,NULL,'1',1,NULL,'skill "ALL_CATCRY",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22069,'Lian_Shoes','Lian Shoes',4,0,NULL,250,NULL,12,NULL,1,0xFFFFFFFF,63,2,64,NULL,'90',1,NULL,'bonus bMdef,3; bonus2 bSubEle,Ele_Neutral,5; .@r = getrefine(); bonus bMaxHPrate,.@r; bonus bMaxSPrate,.@r;',NULL,NULL); @@ -10961,6 +11046,7 @@ REPLACE INTO `item_db_re` VALUES (22533,'New_Year_Gift_Box','New Year Gift Box', REPLACE INTO `item_db_re` VALUES (22534,'Closedmind_Box','Closed Mind Box',18,10,NULL,1000,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,'getgroupitem(IG_Sealed_Mind_Box);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22535,'WorkerScroll_A','Scroll Summoning Workers(Male)',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (22536,'WorkerScroll_B','Scroll Summoning Workers(Female)',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22537,'PrizeOfHero','Prize Of Hero',2,0,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,'getrandgroupitem(IG_PrizeOfHero,1);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22538,'Hanbok_bag','Hanbok bag',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (22540,'Runstone_Lux','Lux Anima Runestone',11,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,56,2,NULL,NULL,NULL,NULL,NULL,'itemskill "RK_LUXANIMA",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22541,'PC_Room_Coupon_Box_VI','PC Room Coupon Box VI',18,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -11062,19 +11148,19 @@ REPLACE INTO `item_db_re` VALUES (22721,'?_Box','? Box',18,10,NULL,0,NULL,NULL,N REPLACE INTO `item_db_re` VALUES (22734,'Revolution_Quiz_Box','Revolution Quiz Box',18,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 6635,2; getitem 6423,1; /*1x Enchanted Letter Introduction*/',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22735,'Sealed_Moonlight_Flower_Scroll','Sealed Moonlight Flower Scroll',18,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*TODO: Confirm the rates*/ getitem callfunc("F_Rand",6228,6232,24150,19934,6635,17474),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22736,'July_Gift_Box','July Gift Box',2,10,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 20212,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22737,'Bullet_Case_Blood_','Bloody Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13222,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22738,'Bullet_Case_Silver_','Silver Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13221,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22739,'Sphere_Case_Wind_','Lightning Sphere Pack',18,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13224,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22740,'Sphere_Case_Darkness_','Blind Sphere Pack',18,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13226,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22741,'Sphere_Case_Poison_','Poison Sphere Pack',18,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13225,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22742,'Sphere_Case_Water_','Freezing Sphere Pack',18,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13227,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22743,'Sphere_Case_Fire_','Flare Sphere Pack',18,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13223,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22744,'Bullet_Case_AP','Armor-Piercing Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13215,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22745,'Bullet_Case_Blaze','Incandescence Shot Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13216,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22746,'Bullet_Case_Fleeze','Glaciation Shot Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13217,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22747,'Bullet_Case_Electric','Dengeki Shot Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13218,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22748,'Bullet_Case_Stone','Hearthstone Shot Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13219,500;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (22749,'Sanctified_Bullet_Case','Purification Shot Cartridge',18,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13220,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22737,'Bullet_Case_Blood_','Bloody Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13222,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22738,'Bullet_Case_Silver_','Silver Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13221,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22739,'Sphere_Case_Wind_','Lightning Sphere Pack',2,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13224,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22740,'Sphere_Case_Darkness_','Blind Sphere Pack',2,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13226,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22741,'Sphere_Case_Poison_','Poison Sphere Pack',2,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13225,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22742,'Sphere_Case_Water_','Freezing Sphere Pack',2,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13227,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22743,'Sphere_Case_Fire_','Flare Sphere Pack',2,10,NULL,350,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13223,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22744,'Bullet_Case_AP','Armor-Piercing Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13215,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22745,'Bullet_Case_Blaze','Incandescence Shot Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13216,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22746,'Bullet_Case_Fleeze','Glaciation Shot Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13217,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22747,'Bullet_Case_Electric','Dengeki Shot Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13218,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22748,'Bullet_Case_Stone','Hearthstone Shot Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13219,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22749,'Sanctified_Bullet_Case','Purification Shot Cartridge',2,10,NULL,250,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13220,500;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22750,'Trans_Scroll_Horn_Scaraba','Transformation Scroll(Horn Scaraba)',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 2161,1200000,SC_MTF_ASPD2,2,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22751,'Trans_Scroll_Wanderer','Transformation Scroll(Wanderer)',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1208,1200000,SC_MTF_ASPD2,2,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22752,'Trans_Scroll_Gazeti','Transformation Scroll(Gazeti)',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'transform 1778,1200000,SC_MTF_RANGEATK2,30;',NULL,NULL); @@ -11106,6 +11192,7 @@ REPLACE INTO `item_db_re` VALUES (22808,'Special_Gift_Box','Special Gift Box',2, REPLACE INTO `item_db_re` VALUES (22812,'Sealed_Dracula_Scroll','Sealed Dracula Scroll',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,'getitem callfunc("F_Rand",6228,6232,22813,19937,17314, 6635),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22813,'Bearer\'s_Shadow_Box','Bearer\'s Shadow Box',2,10,NULL,10,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,'getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22814,'Cat_Hand_Ticket','Cat Hand Ticket',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (22822,'Summer_Vacation_Costumes','Summer Vacation Costumes',2,NULL,NULL,100,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'1',NULL,NULL,'sc_start SC_DRESSUP,600000,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22823,'Sealed_Sniper_Scroll','Sealed Sniper Scroll',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*getitem callfunc("F_Rand",4491,6228,6232,24196, Hasty Shadow Armor, 19882, 17474, 6635),1;*/',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22826,'Enchant_Stone_Box4','Costume Enchantment Stone Box 4',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (22827,'Shadow_Cube','Shadow Cube',2,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'/*No Info*/',NULL,NULL); @@ -11158,6 +11245,12 @@ REPLACE INTO `item_db_re` VALUES (22902,'Sealed_Card_Album_Scroll_II','Sealed Ca REPLACE INTO `item_db_re` VALUES (22984,'Kahluna_Milk','Kahluna Milk',0,6,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DORAM_BUF_01, 180000, 0;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (22985,'Basil','Basil',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DORAM_BUF_02, 180000, 0;',NULL,NULL); # +REPLACE INTO `item_db_re` VALUES (23123,'Bullet_Case_Flare','Flare Bullet Cartridge',2,10,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13228,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (23124,'Bullet_Case_Lighting','Lightning Bullet Cartridge',2,10,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13229,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (23125,'Bullet_Case_Ice','Ice Bullet Cartridge',2,10,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13230,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (23126,'Bullet_Case_Poison','Poison Bullet Cartridge',2,10,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13231,500;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (23127,'Bullet_Case_Blind','Blind Bullet Cartridge',2,10,NULL,250,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getitem 13232,500;',NULL,NULL); +# REPLACE INTO `item_db_re` VALUES (23177,'Kafra_Card_','Kafra Card',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashStore";',NULL,NULL); REPLACE INTO `item_db_re` VALUES (23191,'Varetyr_Spear_Scroll_1_5','Level 5 Varetyr Spear',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "SO_VARETYR_SPEAR",5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (23192,'Diamond_Dust_Scroll_1_5','Level 5 Diamond Dust',11,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'itemskill "SO_DIAMONDDUST",5;',NULL,NULL); @@ -11167,24 +11260,24 @@ REPLACE INTO `item_db_re` VALUES (23196,'Agust_Lucky_Scroll','Shining Blue Lucky #=================================================================== # Shadow Equipments #=================================================================== -REPLACE INTO `item_db_re` VALUES (24000,'T1_Shadow_Armor','Shadow Armor (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',NULL,NULL,'bonus bStr,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24001,'T1_Shadow_Weapon','Shadow Gauntlets (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'1',NULL,NULL,'bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24002,'T1_Shadow_Shield','Shadow Shield (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',NULL,NULL,'bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24003,'T1_Shadow_Shoes','Shadow Shoes (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',NULL,NULL,'bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24004,'T1_Shadow_R_Accessory','Shadow Ring (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',NULL,NULL,'bonus bVit,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24005,'T1_Shadow_L_Accessory','Shadow Pendant (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24006,'T2_Shadow_Armor','Shadow Armor (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'30',NULL,NULL,'bonus bStr,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24007,'T2_Shadow_Weapon','Shadow Gauntlets (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'30',NULL,NULL,'bonus bDex,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24008,'T2_Shadow_Shield','Shadow Shield (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'60',NULL,NULL,'bonus bLuk,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24009,'T2_Shadow_Shoes','Shadow Shoes (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'90',NULL,NULL,'bonus bAgi,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24010,'T2_Shadow_R_Accessory','Shadow Ring (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'120',NULL,NULL,'bonus bVit,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24011,'T2_Shadow_L_Accessory','Shadow Pendant (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'150',NULL,NULL,'bonus bInt,2;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24012,'S_Promotion_Weapon','Shadow Weapon',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'1',NULL,NULL,'bonus bDex,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24013,'S_Promotion_Armor','Shadow Armor',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',NULL,NULL,'bonus bLuk,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24014,'S_Promotion_Shoes','Shadow Shoes',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',NULL,NULL,'bonus bAgi,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24015,'S_Promotion_Shield','Shadow Shield',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',NULL,NULL,'bonus bVit,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24016,'S_Promotion_Earring','Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',NULL,NULL,'bonus bInt,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24017,'S_Promotion_Pendant','Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'bonus bStr,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24000,'T1_Shadow_Armor','Shadow Armor (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',1,NULL,'bonus bStr,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24001,'T1_Shadow_Weapon','Shadow Gauntlets (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'1',1,NULL,'bonus bDex,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24002,'T1_Shadow_Shield','Shadow Shield (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',1,NULL,'bonus bLuk,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24003,'T1_Shadow_Shoes','Shadow Shoes (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',1,NULL,'bonus bAgi,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24004,'T1_Shadow_R_Accessory','Shadow Ring (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'bonus bVit,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24005,'T1_Shadow_L_Accessory','Shadow Pendant (Tier 1)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'bonus bInt,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24006,'T2_Shadow_Armor','Shadow Armor (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'30',1,NULL,'bonus bStr,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24007,'T2_Shadow_Weapon','Shadow Gauntlets (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'30',1,NULL,'bonus bDex,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24008,'T2_Shadow_Shield','Shadow Shield (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'60',1,NULL,'bonus bLuk,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24009,'T2_Shadow_Shoes','Shadow Shoes (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'90',1,NULL,'bonus bAgi,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24010,'T2_Shadow_R_Accessory','Shadow Ring (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'120',1,NULL,'bonus bVit,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24011,'T2_Shadow_L_Accessory','Shadow Pendant (Tier 2)',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'150',1,NULL,'bonus bInt,2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24012,'S_Promotion_Weapon','Shadow Weapon',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'1',1,NULL,'bonus bDex,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24013,'S_Promotion_Armor','Shadow Armor',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',1,NULL,'bonus bLuk,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24014,'S_Promotion_Shoes','Shadow Shoes',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',1,NULL,'bonus bAgi,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24015,'S_Promotion_Shield','Shadow Shield',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',1,NULL,'bonus bVit,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24016,'S_Promotion_Earring','Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'bonus bInt,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24017,'S_Promotion_Pendant','Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'bonus bStr,1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24018,'S_Physical_Earring','Physical Earring (Shadow)',12,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,0,'bonus bAspdRate,(getrefine()>=7)?2:1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24019,'S_Physical_Weapon','Physical Weapon (Shadow)',12,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,131072,NULL,'1',1,0,'bonus bBaseAtk,10; if(getrefine()>=7) { bonus2 bAddClass,Class_All,1; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24020,'S_Physical_Pendant','Physical Pendant (Shadow)',12,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,0,'bonus bMaxHP,100; if(getrefine()>=7) { bonus bMaxHPrate,1; }',NULL,NULL); @@ -11407,9 +11500,9 @@ REPLACE INTO `item_db_re` VALUES (24236,'S_Boned_Earring','Boned Shadow Earring' REPLACE INTO `item_db_re` VALUES (24237,'S_Boned_Pendant','Boned Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Medium,.@rate; bonus2 bMagicAddSize,Size_Medium,.@rate;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24238,'S_Gigantic_Earring','Gigantic Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'.@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Small,.@rate; bonus2 bMagicAddSize,Size_Small,.@rate;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24239,'S_Gigantic_Pendant','Gigantic Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); .@rate = (.@r<7)?1:((.@r<9)?2:4); bonus2 bAddSize,Size_Small,.@rate; bonus2 bMagicAddSize,Size_Small,.@rate;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24240,'S_Caster_Shoes','Caster Shadow Shoes',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',NULL,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24241,'S_Caster_Shield','Caster Shadow Shield',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',NULL,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24242,'S_Caster_Armor','Caster Shadow Armor',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',NULL,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24240,'S_Caster_Shoes','Caster Shadow Shoes',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',1,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24241,'S_Caster_Shield','Caster Shadow Shield',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',1,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24242,'S_Caster_Armor','Caster Shadow Armor',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',1,NULL,'bonus bMatk,5; bonus bUseSPrate,-1-(getrefine()/2);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24243,'S_Reload_Shoes','Reload Shadow Shoes',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,524288,NULL,'1',1,NULL,'.@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24244,'S_Reload_Shield','Reload Shadow Shield',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,262144,NULL,'1',1,NULL,'.@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24245,'S_Reload_Armor','Reload Shadow Armor',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',1,NULL,'.@r = getrefine(); bonus bDelayrate,(.@r<7)?-1:((.@r<9)?-2:-3);',NULL,NULL); @@ -11417,13 +11510,13 @@ REPLACE INTO `item_db_re` VALUES (24246,'S_Swordman_Earring','Swordman Shadow Ea REPLACE INTO `item_db_re` VALUES (24247,'S_Merchant_Earring','Merchant Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillUseSPrate,"MC_MAMMONITE",-20-(3*.@r);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24248,'S_Acolyte_Earring','Acolyte Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillUseSPrate,"AL_HEAL",-20-(3*.@r);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (24249,'S_Magician_Earring','Magician Shadow Earring',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1048576,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillUseSPrate,"MG_COLDBOLT",-20-(3*.@r); bonus2 bSkillUseSPrate,"MG_FIREBOLT",-20-(3*.@r); bonus2 bSkillUseSPrate,"MG_LIGHTNINGBOLT",-20-(3*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24250,'S_Swordman_Pendant','Swordman Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"SM_MAGNUM",20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24251,'S_Merchant_Pendant','Merchant Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"MC_CARTREVOLUTION",20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24252,'S_Acolyte_Pendant','Acolyte Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"AL_HOLYLIGHT",20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24253,'S_Thief_Pendant','Thief Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"TF_POISON",20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24254,'S_Magician_Pendant','Magician Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bMagicAtkEle,Ele_Fire,20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24255,'S_Archer_Pendant','Archer Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',NULL,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"AC_SHOWER",20+(5*.@r);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (24330,'S_Caster_Armor_II','Caster Shadow Armor II',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',NULL,NULL,'bonus bInt,3; bonus bSPrecovRate,20; bonus bVariableCastrate,-getrefine()/2;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24250,'S_Swordman_Pendant','Swordman Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"SM_MAGNUM",20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24251,'S_Merchant_Pendant','Merchant Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"MC_CARTREVOLUTION",20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24252,'S_Acolyte_Pendant','Acolyte Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"AL_HOLYLIGHT",20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24253,'S_Thief_Pendant','Thief Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"TF_POISON",20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24254,'S_Magician_Pendant','Magician Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bMagicAtkEle,Ele_Fire,20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24255,'S_Archer_Pendant','Archer Shadow Pendant',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2097152,NULL,'1',1,NULL,'.@r = getrefine(); bonus2 bSkillAtk,"AC_SHOWER",20+(5*.@r);',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (24330,'S_Caster_Armor_II','Caster Shadow Armor II',12,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,65536,NULL,'1',1,NULL,'bonus bInt,3; bonus bSPrecovRate,20; bonus bVariableCastrate,-getrefine()/2;',NULL,NULL); #=================================================================== # New etc. #=================================================================== @@ -11490,7 +11583,7 @@ REPLACE INTO `item_db_re` VALUES (27165,'Dark_Faceworm_Card','Dark Faceworm Card REPLACE INTO `item_db_re` VALUES (27166,'Faceworm_Egg_Card','Faceworm Egg Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'.@r = getrefine(); .@sub = 2+(.@r >= 9 ? 3 : .@r >= 7 ? 1 : 0); bonus bNearAtkDef,.@sub; bonus bMagicAtkDef,.@sub;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27167,'Faceworm_Larva_Card','Faceworm Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAddSize,Size_All,getrefine()*3;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27168,'Irene_High_Elder_Card','Irene High Elder Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bHit,10 + 5 * (getrefine()/3);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (27169,'Payon_Soldier_Card','Payon Soldier Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } } bonus bAtk,.@atk; bonus bMatk,.@atk;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (27169,'Payon_Soldier_Card','Payon Soldier Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } bonus bAtk,.@atk; bonus bMatk,.@atk;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27181,'Airship_Raid_Card','Airship Raid Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bLongAtkRate,1 + .@r/2; bonus bCritical,.@r/2;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27182,'Captain_Felock_Card','Captain Felock Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAtk,30; .@r = getrefine(); bonus2 bSkillAtk,"RL_AM_BLAST",.@r >= 10 ? 60 : 30; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",.@r >= 10 ? 60 : 30;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27183,'Gigantes_Card','Gigantes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,128,NULL,NULL,NULL,NULL,'bonus bAtk,20; if(readparam(bStr) >= 120) { bonus bAtk,20; bonus bAspdRate,-3; }',NULL,NULL); @@ -11502,9 +11595,9 @@ REPLACE INTO `item_db_re` VALUES (27252,'Geffen_Bully_Card','Geffen Bully Card', REPLACE INTO `item_db_re` VALUES (27253,'Geffen_Shoplifter_Card','Geffen Shoplifter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Fire,5; bonus2 bMagicAtkEle,Ele_Holy,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27254,'Faymont_Card','Faymont Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"CH_SOULCOLLECT",1,10;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27255,'Ordre_Card','Ordre Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Wind,5; bonus2 bMagicAtkEle,Ele_Water,5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (27256,'Blut_Hase_Card','Blut Hase Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAtkRate,3; bonus bLongAtkRate,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (27256,'Blut_Hase_Card','Blut Hase Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_All,3; bonus bLongAtkRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27257,'Kuro_Akuma_Card','Kuro Akuma Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bCastrate,3; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NJ_HUUJIN",5; bonus2 bSkillAtk,"NJ_HYOUSENSOU",5; bonus2 bSkillAtk,"NJ_KOUENKA",5;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (27258,'Ifodes_Card','Ifodes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAtkRate,3; bonus bAspdRate,5;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (27258,'Ifodes_Card','Ifodes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus2 bAddClass,Class_All,3; bonus bAspdRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27259,'Licheniyes_Card','Licheniyes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Holy,5; bonus bHealPower,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27260,'Odoric_Card','Odoric Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAspdRate,3; bonus bLongAtkRate,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (27261,'Ju_Card','Ju Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@rate = 10 + (getiteminfo(getequipid(EQI_HAND_R),11) == W_BOOK ? 20 : 0) + (getrefine() >= 14 ? 20 : 0); bonus2 bSkillAtk,"MG_FIREBOLT",.@rate; bonus2 bSkillAtk,"MG_COLDBOLT",.@rate; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@rate;',NULL,NULL); @@ -11517,24 +11610,24 @@ REPLACE INTO `item_db_re` VALUES (27265,'Evil_Fanatics_Card','Evil Fanatics Card #=================================================================== REPLACE INTO `item_db_re` VALUES (28000,'Thanos_Katar','Thanatos Katar',5,10,NULL,1800,'220:80',NULL,1,1,0x00001000,56,2,34,4,'120',1,16,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (28001,'Katar_Of_Evil_Slayer','Katar Of Evil Slayer',5,10,NULL,1200,'120',NULL,1,1,0x00001000,63,2,34,3,'100',1,16,'bonus2 bAddRace,RC_Demon,10; bonus2 bAddRace,RC_Undead,10; .@r = getrefine(); if(.@r>=9){ bonus2 bAddClass,Class_All,5; } if(.@r>=12){ bonus2 bAddClass,Class_All,7; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28002,'Half_BF_Katar2','Half BF Katar2',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus bCritAtkRate,10; bonus bAspdRate,3; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28002,'Half_BF_Katar2','Half BF Katar2',5,20,NULL,0,'130',NULL,1,0,0x00001000,63,2,34,3,'80',1,16,'bonus bStr,1; bonus bDex,1; bonus bLuk,1; bonus2 bAddRace,RC_DemiHuman,35; bonus2 bAddRace,RC_Player,35; bonus bCritAtkRate,10; bonus bAspdRate,3; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28005,'Ru_Blue_Katar','Blue Katar',5,10,NULL,1200,'190',NULL,1,1,0x00001000,56,2,34,3,'100',1,16,'bonus bAgi,5; bonus bStr,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28006,'Ru_Gold_Katar','Ru Gold Katar',5,0,NULL,1200,'190',NULL,1,2,0x00001000,56,2,34,3,'120',1,16,'bonus bAgi,8; bonus bStr,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28007,'Crimson_Katar','Crimson Katar',5,20,NULL,1300,'130',NULL,1,2,0x00001000,63,2,34,3,'70',1,16,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28008,'Katar_of_Vicious_Mind','Katar of Vicious Mind',5,20,NULL,1800,'180',NULL,1,1,0x00001000,63,2,34,4,'160',1,16,'bonus bAtk,pow(min(getrefine(),15),2);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28010,'Juliette_D._Rachel','Juliette D. Rachel',5,20,NULL,2500,'300',NULL,1,2,0x00001000,56,2,34,4,'170',1,16,'.@r = getrefine(); bonus2 bAddClass,Class_All,(.@r/2); bonus bAspdRate,.@r; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28010,'Juliette_D._Rachel','Juliette D. Rachel',5,20,NULL,2500,'300',NULL,1,2,0x00001000,56,2,34,4,'170',1,16,'.@r = getrefine(); bonus2 bAddClass,Class_All,(.@r/2); bonus bAspdRate,.@r; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28011,'Unity_Katar','Unity Katar',5,20,NULL,650,'123',NULL,1,1,0x00001000,63,2,34,3,'1',1,16,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); #=================================================================== # New Axes #=================================================================== REPLACE INTO `item_db_re` VALUES (28100,'Thanos_Axe','Thanatos Axe',5,10,NULL,4000,'300:80',NULL,1,1,0x000444A2,56,2,34,4,'120',1,7,'bonus bInt,6; bonus bVit,6; bonus bLuk,-6; bonus2 bHPDrainRate,50,5; bonus2 bSPDrainRate,10,5; bonus2 bHPLossRate,100,10000;',NULL,'heal -1000,0;'); REPLACE INTO `item_db_re` VALUES (28101,'Tornado_Axe','Axe Tornado',5,10,NULL,4000,'320',NULL,NULL,1,0x00000400,56,2,34,4,'130',1,7,'bonus bAtkEle,Ele_Wind; bonus2 bSkillCooldown,"NC_AXETORNADO",-1000;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28102,'Half_BF_Two_Handed_Axe1','Half BF Two Handed Axe1',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28102,'Half_BF_Two_Handed_Axe1','Half BF Two Handed Axe1',5,20,NULL,0,'200',NULL,1,0,0x000444A2,63,2,34,3,'80',1,7,'bonus bStr,3; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28103,'Ru_Blue_Axe_M','Blue Twohand Axe',5,10,NULL,3000,'330',NULL,1,1,0x00000400,56,2,34,3,'1',1,7,'bonus bStr,5; bonus bVit,5;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28104,'Ru_Gold_Axe_M','Ru Gold Axe M',5,0,NULL,3000,'330',NULL,1,2,0x00000400,56,2,34,3,'120',1,7,'bonus bStr,8; bonus bVit,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28105,'Infinity_Axe','Infinity Axe',5,10,NULL,500,'265',NULL,1,1,0x000444A2,56,2,34,4,'100',1,7,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28106,'Crimson_Two-Handed_Axe','Crimson Two-Handed Axe',5,20,NULL,2000,'200',NULL,1,2,0x000444A2,63,2,34,3,'70',1,7,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28107,'Two_Handed_Axe_of_Vicious_Mind','Two Handed Axe of Vicious Mind',5,20,NULL,2500,'250',NULL,1,1,0x000444A2,63,2,34,4,'160',1,7,'bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28106,'Crimson_Two-Handed_Axe','Crimson Two-Handed Axe',5,20,NULL,2000,'200',NULL,1,2,0x000444A2,63,2,34,3,'70',1,7,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28107,'Two_Handed_Axe_of_Vicious_Mind','Two Handed Axe of Vicious Mind',5,20,NULL,2500,'250',NULL,1,1,0x000444A2,63,2,34,4,'160',1,7,'bonus bAtk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28110,'Unity_Two-Handed_Axe','Unity Two-Handed Axe',5,20,NULL,1000,'190',NULL,1,1,0x000444A2,63,2,34,3,'1',1,7,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); #=================================================================== # New Guns @@ -11542,8 +11635,8 @@ REPLACE INTO `item_db_re` VALUES (28110,'Unity_Two-Handed_Axe','Unity Two-Handed REPLACE INTO `item_db_re` VALUES (28200,'END_OF_HORIZO','End Of The Horizon',5,2700000,NULL,2400,'410',NULL,9,1,0x40000000,63,2,34,4,'110',1,21,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (28201,'Southern_Cross_R','Southern Cross',5,2800000,NULL,2000,'480',NULL,9,0,0x40000000,63,2,34,4,'141',1,21,'bonus3 bAutoSpell,"GC_CROSSIMPACT",1,50;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28202,'Southern_Cross_R_','Southern Cross',5,2800000,NULL,2000,'480',NULL,9,1,0x40000000,63,2,34,4,'141',1,21,'bonus3 bAutoSpell,"GC_CROSSIMPACT",1,50;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28203,'Half_BF_Rifle1','Half BF Rifle1',5,0,NULL,0,'50',NULL,9,0,0x41000000,63,2,34,3,'80',1,18,'bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon,1;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28204,'Half_BF_Shotgun1','Half BF Shotgun1',5,0,NULL,0,'100',NULL,9,0,0x41000000,63,2,34,3,'80',1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28203,'Half_BF_Rifle1','Half BF Rifle1',5,0,NULL,0,'50',NULL,9,0,0x41000000,63,2,34,3,'80',1,18,'bonus bDex,2; bonus bHit,8; bonus bCritical,8; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bVariableCastrate,"GS_TRACKING",-20; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; bonus bUnbreakableWeapon;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28204,'Half_BF_Shotgun1','Half BF Shotgun1',5,0,NULL,0,'100',NULL,9,0,0x41000000,63,2,34,3,'80',1,20,'bonus bDex,2; bonus bSplashRange,1; bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player,30; bonus2 bIgnoreDefRaceRate,RC_DemiHuman,10; bonus2 bIgnoreDefRaceRate,RC_Player,10; autobonus "{ bonus bBaseAtk,80; bonus2 bHPLossRate,100,1000; }",30,6000,BF_WEAPON,"{ specialeffect2 EF_BASH3D; }"; bonus bUnbreakableWeapon;',NULL,NULL); #=================================================================== # New Accessories #=================================================================== @@ -11624,6 +11717,7 @@ REPLACE INTO `item_db_re` VALUES (28471,'Para_Team_Agi_Ring160','Awakened Eden G REPLACE INTO `item_db_re` VALUES (28472,'Para_Team_Agi_Necklace160','Awakened Eden Group Necklace of Agility V',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,'bonus bDex,4; skill "AL_TELEPORT",1;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28483,'Royal_Guardian_Ring','Royal Guardian Ring',4,0,NULL,10,NULL,1,NULL,1,0xFFFFFFFF,63,2,136,NULL,'99',NULL,NULL,'.@b = min(BaseLevel/25,7); bonus bMaxHPrate,.@b; bonus bMaxSPrate,.@b;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28499,'Proof_of_Glory','Proof of Glory',4,0,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'100',NULL,NULL,'bonus bAllStats,1; bonus2 bAddRace,RC_All,2; bonus2 bMagicAddRace,RC_All,2; if(BaseLevel>=150) { bonus bAllStats,1; bonus2 bAddRace,RC_All,2; bonus2 bMagicAddRace,RC_All,2; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28551,'Imperial_Glove','Imperial Glove',4,20,NULL,400,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,0,'bonus2 bAddClass,Class_All,5; bonus bVariableCastrate,-10; bonus bNoCastCancel;',NULL,NULL); #=================================================================== # More books #=================================================================== @@ -11631,7 +11725,7 @@ REPLACE INTO `item_db_re` VALUES (28600,'Ru_Blue_Book','Blue Book',5,10,NULL,500 REPLACE INTO `item_db_re` VALUES (28601,'Ru_Gold_Book','Ru Gold Book',5,0,NULL,500,'160',NULL,1,2,0x00000008,63,2,2,3,'120',1,15,'bonus bVit,8; bonus bInt,8;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28602,'Demon_Hunting_Bible','Demon Hunting Bible',5,0,NULL,500,'30:170',NULL,1,2,0x00000008,63,2,2,3,'110',1,15,'bonus bInt,2; bonus bDex,2; .@b = readparam(bInt); bonus2 bSkillAtk,"PR_MAGNUS",30+min(.@b,120);',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28604,'Crimson_Bible','Crimson Bible',5,20,NULL,450,'45',NULL,1,2,0x00410100,63,2,2,3,'70',1,15,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225);',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28605,'Book_of_Vicious_Mind','Book of Vicious Mind',5,20,NULL,950,'95',NULL,1,1,0x00010100,63,2,2,4,'160',1,15,'bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon,1;',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28605,'Book_of_Vicious_Mind','Book of Vicious Mind',5,20,NULL,950,'95',NULL,1,1,0x00010100,63,2,2,4,'160',1,15,'bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2); bonus bUnbreakableWeapon;',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28606,'Unity_Bible','Unity Bible',5,20,NULL,220,'42',NULL,1,1,0x00410100,63,2,2,3,'1',1,15,'bonus bBaseAtk,pow(getrefine(),2)*125/100;',NULL,NULL); #=================================================================== # More daggers @@ -11646,8 +11740,8 @@ REPLACE INTO `item_db_re` VALUES (28706,'Dagger_of_Vicious_Mind','Dagger of Vici # More shields #=================================================================== REPLACE INTO `item_db_re` VALUES (28900,'Guardsmen\'s_Shield','Guardsmen\'s Shield',4,20,NULL,3000,NULL,30,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,1,'.@r = getrefine(); skill "LG_SHIELDSPELL",1; bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",3,(10+(.@r*10)); bonus bDef,(.@r*10); bonus bMdef,.@r;',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28901,'Cursed_Mad_Bunny','Cursed Mad Bunny',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus bAspd,3; bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel,0; }',NULL,NULL); -REPLACE INTO `item_db_re` VALUES (28902,'Mad_Bunny_','Mad Bunny',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel,0; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28901,'Cursed_Mad_Bunny','Cursed Mad Bunny',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus bAspd,3; bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel; }',NULL,NULL); +REPLACE INTO `item_db_re` VALUES (28902,'Mad_Bunny_','Mad Bunny',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus2 bAddRace,RC_All,5; bonus2 bMagicAddRace,RC_All,5; bonus bShortWeaponDamageReturn,10; autobonus2 "{ bonus bMagicDamageReturn,60; }",10,2000,BF_MAGIC,"{ specialeffect2 EF_WIND; }"; .@r = getrefine(); if(.@r>=7) { bonus bBaseAtk,5; bonus bMatk,5; } if(.@r>=9) { bonus bBaseAtk,15; bonus bMatk,15; } if(.@r>=12) { bonus bCritical,10; bonus bNoCastCancel; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28903,'Scutum','Scutum',4,0,NULL,500,NULL,1,NULL,1,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'.@r = getrefine(); bonus bFlee,5+(.@r*3); bonus bFlee2,1+(.@r*2); if (.@r > 10) { bonus bMaxHPrate,10; bonus bMaxSPrate,10; }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28904,'Unity_Guard','Unity Guard',4,20,NULL,300,NULL,60,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,1,'if(BaseLevel<100) { bonus bDef,12*getrefine(); }',NULL,NULL); REPLACE INTO `item_db_re` VALUES (28905,'Unity_Buckler','Unity Buckler',4,20,NULL,300,NULL,60,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,1,'if(BaseLevel<100) { bonus bMaxSPrate,2*getrefine(); }',NULL,NULL); @@ -11833,7 +11927,7 @@ REPLACE INTO `item_db_re` VALUES (31084,'C_Long_Pony_White','Costume Long Pony W REPLACE INTO `item_db_re` VALUES (31085,'C_Long_Pony_Crimson','Costume Long Pony Crimson',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1525,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31086,'C_Long_Pony_Purple','Costume Long Pony Purple',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1526,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31087,'C_Dwarf_Beard','Costume Dwarf Beard',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1349,NULL,NULL,NULL); -REPLACE INTO `item_db_re` VALUES (31088,'C_Mad_Hatter','Costume Mad Hatter',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1421,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31088,'C_Mad_Hatter','Costume Mad Hatter',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,5120,NULL,'1',0,1421,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31089,'C_Exploding_Crimson_Flame','Costume Exploding Crimson Flame',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,0,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31090,'C_Angelring_Hat','Costume Angelring Hat',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,348,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31091,'C_Show_Me_The_Zeny','Costume Show Me The Zeny',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,0,NULL,NULL,NULL); @@ -11891,6 +11985,8 @@ REPLACE INTO `item_db_re` VALUES (31150,'C_Shalosh_Head_Dress','Costume Shalosh REPLACE INTO `item_db_re` VALUES (31151,'C_Chasher_Ear','Costume Cheshire\'s Cat Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1565,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31152,'C_Piamette_BowTie_Red','Costume Piamette\'s Red Bow Tie',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1566,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31153,'C_Aniv_Star_Hat2','Costume Cactus Flower Corsage',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1567,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31154,'C_Cap','C Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,14,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31158,'C_Squirrel_Ear_Hat','Costume Squirrel Ear Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1486,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31160,'C_Rune_Helm','Costume Rune Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1361,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31161,'C_Tiger_Mask','Costume Tiger Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,181,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31162,'C_Shaving_Foam','Costume Shaving Foam',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1129,NULL,NULL,NULL); @@ -11904,4 +12000,238 @@ REPLACE INTO `item_db_re` VALUES (31169,'C_Hat_Of_Outlaw','Costume Hilarious Ban REPLACE INTO `item_db_re` VALUES (31170,'C_Wind_Wings','Costume Wings of Wind',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,493,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31171,'C_Nekomimi','Costume Nekomimi',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,182,NULL,NULL,NULL); REPLACE INTO `item_db_re` VALUES (31172,'C_Roast_Memory','Costume Roast Memory',4,0,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,1576,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31173,'C_Oyster_Parakeet','Costume Oyster Parakeet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,419,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31174,'C_Suspicious_Bread_Bag','C Suspicious Bread Bag',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,429,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31175,'C_Strawberry_Hat','Costume Strawberry Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,755,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31176,'C_Looking','C Looking',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1577,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31177,'C_Tail_Hat','C Tail Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1578,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31178,'C_Fire_Muffler','C Fire Muffler',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1579,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31179,'C_Wolf_Masquerade','C Wolf Masquerade',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1580,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31180,'C_King_Sura_Headband','C King Sura Headband',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1581,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31181,'C_Necklace_Rosary','Costume Necklace Rosary',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1471,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31182,'C_Side_Cap','Costume Side Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,529,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31183,'C_Fallen_Angel_Blessing','Costume Blessing of Fallen Angel',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1250,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31184,'C_Hawkeye','Costume Hawkeye',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,609,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31185,'C_Engineer_Cap','Costume Engineer Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,608,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31186,'C_Black_Cat','Costume Black Cat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1582,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31187,'C_War_Princess_Ribbon','Costume War Princess Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1583,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31188,'C_Mono_Gothic_Bonnet','Costume Mono Gothic Bonnet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1584,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31189,'C_Cat_Ears_Cape_Red','Costume Red Cat Ears Cape',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1591,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31190,'C_Angel_Mini_Silk_Hat_B','Costume Black Angel Mini Silk Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1586,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31191,'C_Whikebain_Ears_Gold','Vibrant Cat Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1588,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31192,'C_Bluecat_Ear','Blue Cat Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1589,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31193,'C_Tare_Ahat','Costume Drooping Ahat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1590,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31194,'C_Spinning_Propeller','Costume Spinning Propeller',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,270,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31195,'C_Choco_Minihat','Costume Mini Chocolate Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1592,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31196,'C_JP_EV12','C Drooping Chuni Penguin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1596,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31197,'C_Egg_Crispinette','Costume Egg Crispinette',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1598,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31198,'C_Octopus_Hat','C Octopus Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,538,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31199,'C_Weird_Beard','C Weird Beard',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,21,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31200,'C_Wrapping_Ribbon','C Wrapping Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1599,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31201,'C_Royal_Rabbit_Crown','C Royal Rabbit Crown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1600,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31202,'C_Dog_Officer','C Dog Officer',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1601,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31203,'C_Charcoal_Stove','C Charcoal Stove',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1602,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31204,'C_Drooping_White_Cat','C Drooping White Cat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,378,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31205,'C_Large_Orc_Hero_Helm','C Large Orc Hero Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,381,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31206,'C_Rune_Hairband','C Rune Hairband',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,564,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31207,'C_Dokkebi_Mask','C Dokkebi Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,689,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31208,'C_Straight_Long_YL','C Straight_Long Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1603,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31209,'C_Straight_Long_WH','C Straight Long White',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1604,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31210,'C_Side_Pigtail_BU','C Side Pigtail Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1605,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31211,'C_Side_Pigtail_RD','C Side Pigtail Red',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1606,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31212,'C_Side_Pigtail_YL','C Side Pigtail Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1607,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31213,'C_Side_Pigtail_GN','C Side Pigtail Green',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1608,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31214,'C_Side_Pigtail_BL','C Side Pigtail Black',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1609,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31215,'C_Side_Pigtail_WH','C Side Pigtail White',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1610,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31216,'C_Side_Pigtail_OM','C Side Pigtail Brown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1611,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31217,'C_Side_Pigtail_PP','C Side Pigtail Purple',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1612,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31218,'C_Low_Pony_BU','C Low Pony Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1613,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31219,'C_Low_Pony_RD','C Low Pony Red',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1614,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31220,'C_Low_Pony_YL','C Low Pony Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1615,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31221,'C_Low_Pony_GN','C Low Pony Green',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1616,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31222,'C_Low_Pony_BL','C Low Pony Black',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1617,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31223,'C_Low_Pony_WH','C Low Pony White',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1618,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31224,'C_Low_Pony_OM','C Low Pony Brown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1619,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31225,'C_Low_Pony_PP','C Low Pony Purple',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1620,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31226,'C_Long_Twin_BU','C Long Twin Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1621,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31227,'C_Long_Twin_RD','C Long Twin Red',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1622,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31228,'C_Long_Twin_YL','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1623,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31229,'C_Long_Twin_GN','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1624,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31230,'C_Long_Twin_BL','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1625,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31231,'C_Long_Twin_WH','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1626,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31232,'C_Long_Twin_OM','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1627,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31233,'C_Long_Twin_PP','C Long Twin Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1628,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31234,'C_Persica','C Persica',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,659,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31235,'C_Large_Ribbon_Muffler_Mid','C Large Ribbon Muffler Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1312,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31236,'C_Vicious_Mind_Aura_Mid','C Vicious Mind Aura Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1267,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31237,'C_Pale_Yellow_Ribbon_Lower','C Pale Yellow Ribbon Lower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1474,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31238,'C_True_Love_Upper','C True Love Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,489,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31239,'C_Love_Rabbit_Hood_Upper','C Love Rabbit Hood Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,549,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31240,'C_Whisper_Mask_','C Whisper Mask Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,321,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31241,'C_Burning_Sun_Lower','C Burning Sun Lower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,654,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31242,'C_Anubis_Helm_','C Anubis Hat Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,485,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31243,'C_Tongue_Mask_Mid','C Tongue Mask Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,253,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31244,'C_Skymet_','C Skymet Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,868,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31245,'C_Cherry','C Cherry',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,602,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31246,'C_Humming_Bird','C Humming Bird',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,702,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31247,'C_Hippo_Hat','C Hippo Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,859,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31248,'C_Isabella_Red_Ears','C Isabella Red Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1030,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31249,'C_Rabbit_Hopping','C Hopping Rabbit',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1635,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31250,'C_Wonderful_Beast_Ear','C Wonderful Beast Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1636,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31251,'C_Cat_Mouth','C Cats Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1637,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31252,'C_Cat_Ear_Hat_White','C White Cat Ears Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1638,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31253,'C_Rinzu_Helmet','C Rinzu Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,548,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31254,'C_Red_Hare_Hat','C Red Hare Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,1631,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31255,'C_Sweet_Helmet','C Sweet Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,1374,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31256,'C_Jaguar_Mask','C Jaguar Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,530,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31260,'C_Observer_J','C Observer',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1639,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31261,'C_Soda_in_Mouth','C Soda in Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1643,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31262,'C_Disposable_3D_Glasses','C Disposable 3D Glasses',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,661,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31263,'C_Disposable_Popcorn_Hat','C Disposable Popcorn Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,415,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31264,'C_Wings_of_Protector_Lower','C Wings of Protector Lower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,990,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31265,'C_Straight_Pony_Blue_Mid','C Straight Pony Blue Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1394,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31266,'C_Straight_Pony_Red_Mid','C Straight Pony Red Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1392,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31267,'C_Straight_Pony_Yellow_Mid','C Straight Pony Yellow Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1389,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31268,'C_Straight_Pony_Green_Mid','C Straight_Pony Green Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1390,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31269,'C_Straight_Pony_Black_Mid','C Straight Pony Black Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1371,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31270,'C_Straight_Pony_White_Mid','C Straight Pony White Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1395,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31271,'C_Straight_Pony_Crimson_Mid','C Straight Pony Crimson Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1393,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31272,'C_Straight_Pony_Purple_Mid','C Straight Pony Purple Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1391,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31273,'C_Cowlick_Blue_Mid','C Cowlick Blue Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1387,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31274,'C_Cowlick_Red_Mid','C Cowlick Red Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1385,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31275,'C_Cowlick_Yellow_Mid','C Cowlick Yellow Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1382,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31276,'C_Cowlick_Green_Mid','C Cowlick Green Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1383,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31277,'C_Cowlick_Black_Mid','C Cowlick Black Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1372,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31278,'C_Cowlick_White_Mid','C Cowlick White Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1388,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31279,'C_Cowlick_Crimson_Mid','C Cowlick Crimson Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1386,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31280,'C_Cowlick_Purple_Mid','C Cowlick Purple Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1384,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31281,'C_Loose_Wave_Twin_Blue_Mid','C Loose Wave Twin Blue Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1401,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31282,'C_Loose_Wave_Twin_Red_Mid','C Loose Wave Twin Red Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1399,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31283,'C_Loose_Wave_Twin_Yellow_Mid','C Loose Wave Twin Yellow Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1396,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31284,'C_Loose_Wave_Twin_Green_Mid','C Loose Wave Twin Green Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1397,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31285,'C_Loose_Wave_Twin_Black_Mid','C Loose Wave Twin Black Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1373,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31286,'C_Loose_Wave_Twin_White_Mid','C Loose Wave Twin White Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1402,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31287,'C_Loose_Wave_Twin_Crimson_Mid','C Loose Wave Twin Crimson Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1400,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31288,'C_Loose_Wave_Twin_Purple_Mid','C Loose Wave Twin Purple Mid',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1398,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31289,'C_Black_Wing_Ears_Lower','C Black Wing Ears Lower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1336,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31290,'C_Angels_Feather_Cap','C Angels Feather Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,929,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31291,'C_Devils_Feather_Cap','C Devils Feather Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,930,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31293,'C_Kings_Crown_Purple','C Crown of Ancient King Purple',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1651,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31294,'C_Jirant_Circlet_Red','C Jirant Circlet Red',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1652,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31295,'C_Red_Wing_Hat','C Red Wing Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,613,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31296,'C_Strawberry_in_Mouth','C Strawberry in Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,861,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31297,'C_Fruit_of_Love','C Fruit of Love',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,140,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31298,'C_Sepia_Parade_Hat','C Sepia Parade Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,682,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31299,'C_White_Rabbit','C White Rabbit',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1656,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31300,'C_Warm_Cat_Muffler','C Warm Cat Muffler',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1657,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31301,'C_Blinking_Eyes','C Blinking Eyes',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1658,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31302,'C_Black_Magenta_Ribbon','C Black Magenta Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1659,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31303,'C_Black_Ramen_Hat_','C Black Ramen Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1338,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31304,'C_Summer_Fan','C Summer Fan',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1051,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31306,'C_Toucan_Hat','C Toucan Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,528,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31307,'C_Violet_Macaw','C Violet Macaw',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,656,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31308,'C_Protect_Feathers','C Protect Feathers',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1232,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31309,'C_Pure_White_Marching_Hat','C Pure White Marching Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1470,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31310,'C_666_Black_Elven_Ears','C 666 Black_ Elven Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,498,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31311,'C_Dolor_Thanatos_Mask','C Dolor Thanatos Mask',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,666,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31312,'C_Hades_Helm','C Hades Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,523,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31313,'C_FallenAngelWingEar','C Fallen Angel Wing Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1662,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31314,'C_Ghost_Holiday','C Ghost Holiday',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1663,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31315,'C_Stall_Of_Angel','C Stall of Angel',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1664,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31316,'C_C_FlutterButterfly_BL','C Black Fluttering Butterfly',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1665,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31317,'C_15th_Anniversary_Wing','C 15th Anniversary Wing',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1660,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31318,'C_Gerhard_Von_Devi','Costume Gerhard Von Devi',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1092,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31319,'C_Summer_Fan_','C Summer Fan',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1051,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31320,'C_Pinwheel_Hat','C Pinwheel Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,456,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31321,'C_Shining_Sunflower','C Shining Sunflower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,681,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31322,'C_Candy_Hat','C Candy Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,853,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31323,'C_Yellow_Hunting_Cap','C Yellow Hunting Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,484,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31325,'C_Queen_Scarabas_Helmet','C Queen Scarabas Helmet',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,5120,NULL,'1',0,1231,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31326,'C_Rolf_Von_Ziege_666_II','C Rolf Von Ziege 666 II',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,946,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31327,'C_Wood_Goblins_Nose','C Wood Goblins Nose',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,737,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31328,'C_Faceworm_Eggshell','C Faceworm Eggshell',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1356,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31329,'C_Alice_Wig','Costume Alice Wig',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1673,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31330,'C_Fallen_Angel_Valletta','Costume Fallen Angel Valletta',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1674,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31331,'C_Chung_E_Shinyon_Cap','C Chung e Shinyon Cap',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1675,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31332,'C_Khalitzburg_KN_Helm_BL','C Black Khalitzburg Knight Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1676,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31368,'C_Harvest_Festa_Hat','C Thanksgiving Memorial Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1677,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31369,'C_Straight_Long_WH_','Costume Straight Long White',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1604,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31370,'C_Straight_Long_YL_','Costume Straight Long Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1603,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31373,'C_Crown_of_Ancient_king','C Crown of Ancient king',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1412,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31374,'C_Explosion_gum','C Explosion gum',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1414,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31375,'C_Mystic_Eye','C Mystic Eye',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1490,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31376,'C_Ancient_Dragon_Coronet_Purple','C Ancient Dragon Coronet Purple',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1680,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31377,'C_Glastheim_Obeserver','C Glastheim Obeserver',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1041,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31378,'C_Catharina_Von_Brad_60th','C Catharina Von Brad 60th',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1527,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31379,'C_Wind-Up_Key','C Wind-Up Key',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1335,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31380,'C_Crow','C Crow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1035,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31381,'C_Diabolic_Lapel','Costume Diabolic Lapel',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1681,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31382,'C_Cat_Ears_Punkish','Costume Cat Ears Punkish',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1682,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31383,'C_Volume_Low_Twin','Costume Volume Low Twin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1683,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31384,'C_False_Ears','Costume False Ears',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1684,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31385,'C_Gothic_Pumpkin_Head','Costume Gothic Pumpkin Head',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1685,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31387,'C_Jjakk','C Jjakk',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1687,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31389,'C_White_Bird_Rose','C White Bird Rose',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1688,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31390,'C_Let_It_Snow','C Let It Snow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1690,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31391,'C_Floating_Stone_of_Sage','C Floating Stone of Sage',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1230,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31392,'C_Radio_Antenna','C Radio Antenna',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,347,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31393,'C_Vajra','C Vajra',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,983,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31394,'C_Magician_White_Hat','C Magician White Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,283,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31395,'C_Book_Of_Magic','C Book of Magic',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1691,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31396,'C_Sorcerer_Hood','C Sorcerer Hood',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1692,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31397,'C_Sitting_Pope','C Sitting Pope',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1553,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31398,'C_Blinking_Thin_Eyes','C Blinking Thin Eyes',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1693,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31399,'C_Darkness_Veil','C Darkness Veil',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1694,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31400,'C_Ribbon','C Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,17,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31401,'C_Nuns_Veil','C Nuns Veil',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,176,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31402,'C_Idun_Green_Apple','C Iduns Green Apple',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1698,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31403,'C_Wall','C Wall',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1699,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31404,'C_Poring_Traffic_Light','C Poring Traffic Light',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1700,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31405,'C_Eleanor_Wig_YL','C Eleanor Wig Yellow',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1701,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31406,'C_Nydhog_Wig_WH','C Nydhoggur Wig White',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1702,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31407,'C_Alice_Wig_PK','C Alice Wig Peach',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1703,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31408,'C_Ragnarok_Rush_Goat','C Ragnarok Rush Goat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,41,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31409,'C_Barrel_Helm','C Barrel Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,7168,NULL,'1',0,1498,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31410,'C_GodsHelm','Costume God\'s Helm',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1678,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31411,'C_Leo_Diadem','C Leo Diadem',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,566,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31412,'C_Virgo_Crown','C Virgo Crown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,573,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31413,'C_Taurus_Crown','C_ Taurus Crown',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,536,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31414,'C_Cancer_Diadem','C Cancer Diadem',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,560,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31415,'C_Wanderers_ Sakkat','Costume Wanderer\'s Sakkat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,3072,NULL,'1',0,558,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31417,'C_Rice_Ball_Hat','C Rice Ball Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,556,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31418,'C_Green_Onion_in_Mouth','C Green Onion in Mouth',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,824,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31420,'C_Shining_Santa_Poring','C Shining Santa Poring',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,961,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31432,'C_Floating_Ice','C Floating Ice',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1562,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31433,'C_Celestial_Circle','C Celestial Circle',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1073,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31434,'C_Cloud_Burst','C Cloud Burst',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,705,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31435,'C_Ghost_Magicians_Knit_Hat','C Ghost Magicians Knit Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,854,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31436,'C_Lazy_Cat','C Lazy Cat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,274,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31437,'C_Baby_Penguin','C Baby Penguin',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1705,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31438,'C_Fluffy_Angel_Cape','C Fluffy Angel Cape',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1706,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31439,'C_Fluffy_Heart_Earmuffs','C Fluffy Heart Earmuffs',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1707,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31440,'C_Snow_Bear_Hood','C Snow Bear Hood',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1708,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31441,'C_Penguin_Cap_BU','C Penguin Cap Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1709,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31442,'C_Smile_Mask_Middle','C Smile Mask Middle',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,65,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31443,'C_Munak_Hat_','C Munak Hat Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,51,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31444,'C_Bongun_Hat_','C Bongun Hat Upper',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,139,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31446,'C_Toy_Syringe','C Toy Syringe',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,842,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31447,'C_Light_Moonlight_Hat','C Light Moonlight_Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,913,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31448,'C_Stings_Silk_Ribbon','C Stings Silk Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1457,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31449,'C_Blue_Rose_Eyepatch','C Blue Rose Eyepatch',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1712,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31450,'C_Lolita_Two_Side_Up','C Lolita Two Side Up',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1713,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31451,'C_Blue_Frill_Ribbon','C Blue Frill Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1714,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31452,'C_White_Cat','C White Cat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1715,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31453,'C_L_RibbonMuff_Black','C Large Ribbon Muffler Black',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1716,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31455,'C_Enchanted_Dog','C Super Cute Dog',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,6144,NULL,'1',0,1718,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31457,'C_Laughing_Wonderful_Wolf_Hat','C Laughing Wonderful Wolf Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1016,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31464,'C_Bloom_Afro','C Bloom Afro',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,837,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31468,'C_Stripe_Hat','C Stripe Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1728,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31470,'C_Scroll_of_Tengu','C Scroll of Tengu',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1445,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31471,'C_Celestial_Flower','C Celestial Flower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,438,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31472,'C_Fairy_Feathers','C Fairy Feathers',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'1',0,1723,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31473,'C_Tipsy','C Tipsy',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1724,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31474,'C_Straight_Long_BL','C Straight Long Black',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1725,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31475,'C_Black_Fox_Ear_Ribbon','C Black Fox Ears Ribbon',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1726,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31476,'C_Cherry_Blossom_Hat_YL','C Yellow Cherry Blossom Hat',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,1024,NULL,'1',0,1727,NULL,NULL,NULL); +REPLACE INTO `item_db_re` VALUES (31478,'C_Eleanor_Wig_','C Eleanors Wig Lower',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,4096,NULL,'1',0,1502,NULL,NULL,NULL); diff --git a/sql-files/main.sql b/sql-files/main.sql index 627738adee..d8c0f00cd7 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -608,6 +608,7 @@ CREATE TABLE IF NOT EXISTS `homunculus` ( `alive` tinyint(2) NOT NULL default '1', `rename_flag` tinyint(2) NOT NULL default '0', `vaporize` tinyint(2) NOT NULL default '0', + `autofeed` tinyint(2) NOT NULL default '0', PRIMARY KEY (`homun_id`) ) ENGINE=MyISAM; diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql index e7c324e8a8..eb91a38608 100644 --- a/sql-files/mob_db_re.sql +++ b/sql-files/mob_db_re.sql @@ -256,6 +256,7 @@ REPLACE INTO `mob_db_re` VALUES (1183,'CHONCHON_','Chonchon','Chonchon',5,63,1,3 REPLACE INTO `mob_db_re` VALUES (1184,'FABRE_','Fabre','Fabre',1,30,1,1,0,1,4,7,0,0,1,2,1,1,4,5,10,12,0,4,22,0x2003885,400,1672,672,480,0,0,0,0,0,0,0,914,2000,949,250,1502,80,721,2,511,350,705,500,1501,200,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1185,'WHISPER_','Whisper','Whisper',34,1796,1,483,737,1,198,239,0,45,1,51,14,0,60,0,10,12,0,1,28,0x0,150,1960,960,504,0,0,0,0,0,0,0,1001,10,1059,100,0,0,2333,1,0,0,0,0,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (1186,'WHISPER_BOSS','Giant Whisper','Giant Whisper',66,2570,0,630,710,1,282,341,94,45,40,79,44,51,67,31,10,12,0,6,48,0x2003695,250,2536,1536,672,0,0,0,0,0,0,0,1001,150,1059,5335,2282,1,2333,10,0,0,0,0,0,0,0,0,0,0,4303,1); +#1187,SWITCH REPLACE INTO `mob_db_re` VALUES (1188,'BON_GUN','Bongun','Bongun',59,2510,1,531,597,1,189,218,88,5,55,24,24,5,34,10,10,12,1,1,29,0x3095,200,1720,500,420,0,0,0,0,0,0,0,1094,5500,7014,40,618,60,5046,1,609,15,508,1000,508,1250,0,0,0,0,4212,1); REPLACE INTO `mob_db_re` VALUES (1189,'ORC_ARCHER','Orc Archer','Orc Archer',78,4835,1,922,1161,9,260,303,67,31,55,32,24,30,99,15,10,12,1,7,22,0x3095,300,1960,620,480,0,0,0,0,0,0,0,1063,4656,1753,1000,1756,2500,1755,2500,1734,2,507,1400,509,900,0,0,0,0,4256,1); REPLACE INTO `mob_db_re` VALUES (1190,'ORC_LORD','Orc Lord','Orc Lord',55,552000,1,156240,122760,1,780,1428,256,92,95,95,103,96,155,85,10,12,2,7,82,0x6283695,100,1248,500,360,31102,968,5500,617,2000,0,0,1363,400,2621,400,5007,400,1371,400,617,1000,985,4268,16000,100,0,0,0,0,4135,1); @@ -285,6 +286,8 @@ REPLACE INTO `mob_db_re` VALUES (1213,'HIGH_ORC','High Orc','High Orc',81,4193,1 REPLACE INTO `mob_db_re` VALUES (1214,'CHOCO','Choco','Choco',48,1080,1,369,414,1,120,167,70,30,40,45,32,19,42,20,10,12,0,2,23,0x3095,150,1028,528,360,0,0,0,0,0,0,0,7011,5335,942,7000,985,53,513,5000,634,20,532,1000,607,25,0,0,0,0,4285,1); REPLACE INTO `mob_db_re` VALUES (1215,'STEM_WORM','Stem Worm','Stem Worm',84,4530,1,1080,1215,1,266,307,73,50,55,37,25,47,70,30,10,12,1,3,24,0x3095,300,1956,756,528,0,0,0,0,0,0,0,7012,5335,509,1800,1968,10,756,115,997,5,0,0,608,45,0,0,0,0,4224,1); REPLACE INTO `mob_db_re` VALUES (1216,'PENOMENA','Penomena','Penomena',85,4589,1,1116,1556,7,292,333,85,32,76,38,35,35,89,10,10,12,1,5,25,0x3695,400,832,500,600,0,0,0,0,0,0,0,7013,4850,962,8000,938,7000,525,200,719,15,1258,1,716,550,0,0,0,0,4314,1); +#1217,ORC_WARRIOR +#1218,PECO_EGG REPLACE INTO `mob_db_re` VALUES (1219,'KNIGHT_OF_ABYSS','Knight of Abyss','Abysmal Knight',122,23297,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,0,0,0,0,0,0,0,1064,5335,7023,5,2318,1,1421,25,0,0,985,369,15014,10,0,0,0,0,4140,1); REPLACE INTO `mob_db_re` VALUES (1220,'M_DESERT_WOLF','Desert Wolf','Desert Wolf',103,9447,1,349,218,1,254,313,114,47,93,69,63,61,82,42,10,12,1,2,23,0x3695,200,1120,420,288,0,0,0,0,0,0,0,1253,5,7030,5500,2311,1,517,1200,920,2000,756,53,0,0,0,0,0,0,4082,1); REPLACE INTO `mob_db_re` VALUES (1221,'M_SAVAGE','Savage','Savage',26,2092,0,321,203,1,146,177,16,5,1,26,54,10,37,10,10,12,2,2,42,0x3695,150,1960,960,384,0,0,0,0,0,0,0,1028,6000,514,150,702,3,2276,2,605,15,757,70,0,0,0,0,0,0,4078,1); @@ -2218,38 +2221,38 @@ REPLACE INTO `mob_db_re` VALUES (2994,'XM_MARIONETTE','Dancing Marionette','Danc REPLACE INTO `mob_db_re` VALUES (2995,'XM_TEDDY_BEAR','Abandoned Teddy Bear','Abandoned Teddy Bear',148,180000,1,6666,7332,1,1347,1924,106,44,44,166,44,44,166,44,10,12,0,6,69,0x2003295,150,512,780,504,0,0,0,0,0,0,0,7317,1900,615,150,12074,100,12734,1000,12738,100,0,0,0,0,0,0,0,0,31022,1); REPLACE INTO `mob_db_re` VALUES (2996,'XM_CELINE_KIMI','Celine Kimi','Celine Kimi',160,66666666,1,4444444,4033332,2,5636,8303,479,444,144,166,44,444,166,166,10,12,2,1,28,0x6283695,100,768,1056,480,444444,616,10000,617,10000,22534,10000,22534,4000,18549,4000,7642,4000,19701,100,13442,100,712,10000,0,0,0,0,0,0,0,0); REPLACE INTO `mob_db_re` VALUES (2997,'G_XM_CELINE_KIMI','Kimi\'s Phantom','Kimi\'s Phantom',160,66666666,1,0,0,2,6666,13332,479,444,144,166,44,444,166,166,10,12,2,1,28,0x6203695,100,768,1056,480,0,0,0,0,0,0,0,6683,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); -#2998,EP14_MORS_EVENT -#2999,EP14_MORS_BOSSA -#3000,EP14_MORS_BOSSB -#3001,EP14_MORS_MOB1 -#3002,EP14_MORS_MOB2 -#3003,EP14_MORS_MOB3 -#3004,EP14_MORS_MOB4 -#3005,EP14_MORS_MOB5 -#3006,EP14_MORS_MOB6 -#3007,EP14_MORS_DUMMY -#3008,EP14_MORS_HIDDEN +REPLACE INTO `mob_db_re` VALUES (2998,'EP14_MORS_EVENT','Weakened Morroc','Weakened Morroc',158,1771440,1,12390,16104,1,1872,2772,113,45,87,51,45,88,106,50,12,12,2,6,60,0x6200085,200,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (2999,'EP14_MORS_BOSSA','Morocc Necromancer','Morocc Necromancer',158,4000000,1,2106000,1336500,1,700,700,215,555,165,190,142,146,299,93,12,12,1,7,60,0x6280085,100,300,384,288,0,0,0,0,0,0,0,607,2000,603,200,604,200,0,0,0,0,0,0,522,200,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3000,'EP14_MORS_BOSSB','Morocc Necromancer','Morocc Necromancer',101,80000000,1,2310750,1465200,12,700,701,1,1,1,1,1,180,1,1,12,12,1,7,82,0x6280085,2000,2700,384,288,0,0,0,0,0,0,0,607,2000,603,200,604,200,22537,10000,22537,10000,0,0,522,200,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3001,'EP14_MORS_MOB1','Morroc\'s Ghoul','Morroc\'s Ghoul',158,295240,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,1000,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3002,'EP14_MORS_MOB2','Morroc\'s Osiris','Morroc\'s Osiris',158,442860,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,200,2612,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3003,'EP14_MORS_MOB3','Morroc\'s Archer Skeleton','Morroc\'s Archer Skeleton',158,295240,1,1239,1610,7,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,200,300,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3004,'EP14_MORS_MOB4','Morroc\'s Wraith','Morroc\'s Wraith',158,100000,1,1239,1610,1,90,180,13,45,87,51,45,88,106,50,12,12,2,6,60,0x6200085,600,300,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3005,'EP14_MORS_MOB5','Morroc\'s Verit','Morroc\'s Verit',158,442860,1,1239,1610,1,1872,2772,113,45,87,51,45,88,106,50,12,12,1,6,60,0x6200085,100,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3006,'EP14_MORS_MOB6','Morroc\'s Lude','Morroc\'s Lude',158,885720,1,1239,1610,3,113,226,113,45,87,51,45,88,299,50,12,12,0,6,60,0x6200085,100,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3007,'EP14_MORS_DUMMY','Death Soul','Death Soul',158,99999999,1,0,0,1,1872,2772,113,45,87,51,45,88,106,50,12,12,0,6,60,0x6370000,195,76,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3008,'EP14_MORS_HIDDEN','Morroc Hidden','Morroc Hidden',158,295240,1,0,0,1,1,2,113,45,1,51,45,255,106,50,12,12,0,6,60,0x620008C,2000,2000,824,440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); #3009,EP14_3_DEATH_BOSS -#3010,EP14_3_DEATH_A_MOB1 -#3011,EP14_3_DEATH_A_MOB2 -#3012,EP14_3_DEATH_A_MOB3 -#3013,EP14_3_DEATH_B_MOB1 -#3014,EP14_3_DEATH_B_MOB2 -#3015,EP14_3_DEATH_B_MOB3 -#3016,EP14_3_DEATH_C_MOB1 -#3017,EP14_3_DEATH_C_MOB2 -#3018,EP14_3_DEATH_C_MOB3 +REPLACE INTO `mob_db_re` VALUES (3010,'EP14_3_DEATH_A_MOB1','Corrupt Orc Baby','Corrupt Orc Baby',158,250000,1,12390,16104,1,1036,1415,240,50,120,85,80,60,88,50,10,12,0,7,42,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3011,'EP14_3_DEATH_A_MOB2','Corrupt Baby Desert Wol','Corrupt Baby Desert Wol',158,232890,1,12390,16104,1,1016,1395,240,45,100,85,100,88,120,50,10,12,0,2,43,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3012,'EP14_3_DEATH_A_MOB3','Corrupt Familiar','Corrupt Familiar',158,222550,1,12390,16104,1,1002,1381,240,70,86,85,75,53,100,50,10,12,0,5,41,0x0000085,120,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3013,'EP14_3_DEATH_B_MOB1','Corrupt Orc Warrior','Corrupt Orc Warrior',158,300000,1,12390,16104,1,1066,1445,240,60,150,85,150,40,122,70,10,12,1,7,42,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3014,'EP14_3_DEATH_B_MOB2','Corrupt Desert Wolf','Corrupt Desert Wolf',158,292450,1,12390,16104,1,1036,1415,240,50,120,85,110,55,130,70,10,12,1,2,43,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3015,'EP14_3_DEATH_B_MOB3','Corrupt Phen','Corrupt Phen',158,284110,1,12390,16104,1,1026,1405,240,100,110,85,95,70,115,70,10,12,1,5,41,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3016,'EP14_3_DEATH_C_MOB1','Corrupt Orc Zombie','Corrupt Orc Zombie',158,375000,1,12390,16104,1,1096,1475,150,150,180,145,202,40,88,30,10,12,1,7,49,0x0000085,170,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3017,'EP14_3_DEATH_C_MOB2','Corrupt Verit','Corrupt Verit',158,352715,1,12390,16104,1,1082,1461,200,100,166,87,150,60,150,130,10,12,1,2,49,0x0000085,150,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3018,'EP14_3_DEATH_C_MOB3','Corrupt Megalodon','Corrupt Megalodon',158,347413,1,12390,16104,1,1073,1452,240,300,157,80,140,90,209,84,10,12,1,5,49,0x0000085,170,864,400,150,0,0,0,0,0,0,0,607,10,603,20,604,20,715,20,717,20,716,20,522,20,0,0,0,0,0,0); #3019,CELINE_KIMI -#3020,FIRE_CONDOR -#3021,FIRE_SAND_MAN -#3022,FIRE_FRILLDORA -#3023,FIRE_GOLEM +REPLACE INTO `mob_db_re` VALUES (3020,'FIRE_CONDOR','Fire Condor','Fire Condor',141,125114,1,7021,7481,1,1364,2565,71,45,104,72,66,10,113,52,10,12,1,2,43,0x0000081,110,1148,648,480,0,0,0,0,0,0,0,6691,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3021,'FIRE_SAND_MAN','Fire Sand Man','Fire Sandman',143,130501,1,7207,7734,1,1404,2760,122,73,84,36,25,55,124,35,10,12,1,0,63,0x003885,150,1672,720,288,0,0,0,0,0,0,0,6694,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3022,'FIRE_FRILLDORA','Fire Frilldora','Fire Frilldora',147,141301,1,7807,8199,1,1511,2903,134,40,148,38,128,45,121,30,10,12,1,2,63,0x0000081,130,1540,720,432,0,0,0,0,0,0,0,6694,1500,6696,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3023,'FIRE_GOLEM','Fire Golem','Fire Golem',148,180213,1,8912,9464,1,1478,2799,292,102,70,78,267,25,84,25,10,12,2,0,83,0x003885,200,1608,816,396,0,0,0,0,0,0,0,6693,2000,6695,1500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); #3024,14_3_MERCENARY_A #3025,14_3_MERCENARY_B -#3026,FIREPIT -#3027,FULBUK -#3028,SONIA -#3029,GRIM_REAPER_ANKOU +REPLACE INTO `mob_db_re` VALUES (3026,'FIREPIT','Fire Pit','Fire Pit',17,10,1,58,43,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x170000,400,2612,912,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3027,'FULBUK','Fire Bug','Fire Bug',150,234,1,58,47,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x0000001,120,1288,288,768,0,0,0,0,0,0,0,6689,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3028,'SONIA','Sonia','Sonia',17,20,1,58,43,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x170000,400,2612,912,288,0,0,0,0,0,0,0,6690,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3029,'GRIM_REAPER_ANKOU','Grim Reaper Ankou','Reaper Yanku',159,50000000,1553,300000,330000,1,1500,2500,200,70,200,100,200,200,220,100,10,12,2,1,89,0x6200085,200,900,864,480,0,0,0,0,0,0,0,607,500,603,200,604,200,22537,10000,0,0,522,200,0,0,0,0,0,0,0,0); #3030,STANDING_SOUL #3031,MUTANT_NECROMANCER #3032,MUTANT_GHOUL @@ -2395,13 +2398,13 @@ REPLACE INTO `mob_db_re` VALUES (3170,'J_REB_SHECIL2','Shooting Target','Shootin #3172,EVENT_MONEMUS02 #3173,EVENT_FIREFOX #3174,HELL_FLY -#3175,E1_ROTAR_ZAIRO -#3176,E1_GREMLIN -#3177,E1_BEHOLDER -#3178,E1_ACIDUS -#3179,E1_ACIDUS_ -#3180,E1_G_S_NYDHOG -#3181,E1_FELOCK +REPLACE INTO `mob_db_re` VALUES (3175,'E1_ROTAR_ZAIRO','Rotar Zairo','Rotar Zairo',48,1088,0,190,220,10,0,0,0,0,0,0,0,0,0,0,10,12,2,0,44,0x2085,155,2420,2016,432,0,0,0,0,0,0,0,22046,50,7126,250,2312,1,0,0,0,0,601,500,912,200,910,200,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3176,'E1_GREMLIN','Gremlin','Gremlin',118,20313,1,2008,1390,1,0,0,0,0,0,0,0,0,0,0,10,12,2,6,47,0x2003885,140,432,540,432,0,0,0,0,0,0,0,20743,50,7340,500,938,500,719,50,603,1,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3177,'E1_BEHOLDER','Beholder','Beholder',118,20313,1,2008,1390,6,0,0,0,0,0,0,0,0,0,0,10,12,0,0,44,0x2000091,140,0,540,432,0,0,0,0,0,0,0,22046,50,576,500,605,50,996,50,985,1,603,1,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3178,'E1_ACIDUS','Acidus','Acidus',130,48430,1,3088,2391,2,0,0,0,0,0,0,0,0,0,0,10,12,2,9,46,0x3095,170,1011,1008,300,0,0,0,0,0,0,0,15116,50,7938,100,1035,500,7448,200,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3179,'E1_ACIDUS_','Acidus','Acidus',130,40718,1,2938,2031,2,0,0,0,0,0,0,0,0,0,0,10,12,2,9,44,0x3091,180,168,768,360,0,0,0,0,0,0,0,20743,50,1035,500,1036,500,7446,200,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3180,'E1_G_S_NYDHOG','Wywern','Wywern',117,300000,1,0,0,1,0,0,0,0,0,0,0,0,0,0,10,12,2,9,87,0x3091,150,1621,1620,864,0,0,0,0,0,0,0,15116,50,6091,500,7444,1,985,10,0,0,0,0,0,0,0,0,0,0,0,0); +REPLACE INTO `mob_db_re` VALUES (3181,'E1_FELOCK','Captain Ferlock','Captain Ferlock',130,3000000,1,3088,333333,10,0,0,0,0,0,0,0,0,0,0,10,12,2,9,26,0x6280081,170,1018,1008,300,0,0,0,0,0,0,0,15117,100,20744,100,22047,100,12082,3000,12072,3000,12087,3000,12077,3000,12092,3000,0,0,27182,1); #3182,E2_ROTAR_ZAIRO #3183,E2_GREMLIN #3184,E2_BEHOLDER @@ -3302,7 +3305,228 @@ REPLACE INTO `mob_db_re` VALUES (3508,'DR_EGGRING_G','Eggring','Eggring',20,220, #20108,TW_KIEL #20109,TW_TAO_GUNKA #20110,TW_KNIGHT_OF_WINDSTORM - +#20111,MD_TRE_DRAKE +#20112,MD_MANHOLE +#20113,MD_TRE_MIMIC +#20114,MD_TRE_WRAITH +#20115,MD_TRE_PIRATE_SKEL +#20116,MD_TRE_WHISPER +#20117,MD_TRE_HYDRA #20118,GOBLIN_KING #20119,BAD_CATCUMBER +#20120,JP_E_MONSTER_106 +#20121,JP_E_MONSTER_107 +#20122,JP_E_MONSTER_108 +#20123,JP_E_MONSTER_109 +#20124,JP_E_MONSTER_110 +#20125,JP_E_MONSTER_111 +#20126,JP_E_MONSTER_112 +#20127,JP_E_MONSTER_113 +#20128,JP_E_MONSTER_114 +#20129,JP_E_MONSTER_115 +#20130,JP_E_MONSTER_116 +#20131,JP_E_MONSTER_117 +#20132,JP_E_MONSTER_118 +#20133,JP_E_MONSTER_119 +#20134,JP_E_MONSTER_120 +#20135,JP_E_MONSTER_121 +#20136,JP_E_MONSTER_122 +#20137,JP_E_MONSTER_123 +#20138,JP_E_MONSTER_124 +#20139,JP_E_MONSTER_125 +#20140,JP_E_MONSTER_126 +#20141,JP_E_MONSTER_127 +#20142,JP_E_MONSTER_128 +#20143,JP_E_MONSTER_129 +#20144,JP_E_MONSTER_130 +#20145,JP_E_MONSTER_131 +#20146,JP_E_MONSTER_132 +#20147,JP_E_MONSTER_133 +#20148,JP_E_MONSTER_134 +#20149,JP_E_MONSTER_135 +#20150,JP_E_MONSTER_136 +#20151,JP_E_MONSTER_137 +#20152,JP_E_MONSTER_138 +#20153,JP_E_MONSTER_139 +#20154,JP_E_MONSTER_140 +#20155,JP_E_MONSTER_141 +#20156,JP_E_MONSTER_142 +#20157,JP_E_MONSTER_143 +#20158,JP_E_MONSTER_144 +#20159,JP_E_MONSTER_145 +#20160,JP_E_MONSTER_146 +#20161,JP_E_MONSTER_147 +#20162,JP_E_MONSTER_148 +#20163,JP_E_MONSTER_149 +#20164,JP_E_MONSTER_150 +#20165,MD_TOUCAN +#20166,FLAME_GHOST +#20167,ICE_GHOST +#20168,B_FLAME_GHOST +#20169,B_ICE_GHOST +#20170,GARGOYLE_MJ +#20171,STING_MJ +#20172,RAYDRIC_MJ +#20173,RAYDRIC_ARCHER_MJ +#20174,RAGGED_ZOMBIE_MJ +#20175,EXTRA_JOKER +#20176,ERZSEBET +#20177,JENIFFER +#20178,GENERAL_ORC +#20179,SIEGLOUSE +#20180,TACNU_BRZ +#20181,VH_AMON_RA +#20182,VH_BAPHOMET +#20183,VH_DARK_LORD +#20184,VH_DOPPELGANGER +#20185,VH_DRACULA +#20186,VH_DRAKE +#20187,VH_EDDGA +#20188,VH_GARM +#20189,VH_GOLDEN_BUG +#20190,VH_KNIGHT_OF_WS +#20191,VH_MAYA +#20192,VH_MISTRESS +#20193,VH_MOONLIGHT +#20194,VH_ORC_LORD +#20195,VH_ORK_HERO +#20196,VH_OSIRIS +#20197,VH_PHARAOH +#20198,VH_PHREEONI +#20199,VH_TAO_GUNKA +#20200,VH_TURTLE_GENERAL +#20201,VH_B_SEYREN +#20202,VH_B_HARWORD +#20203,VH_B_EREMES +#20204,VH_B_KATRINN +#20205,VH_B_MAGALETA +#20206,VH_LORD_OF_DEATH +#20207,VH_ENTWEIHEN +#20208,VH_NAGHT_SIEGER +#20209,VH_DETALE +#20210,VH_THANATOS +#20211,VH_APOCALIPS_H +#20212,VH_KIEL_ +#20213,VH_RANDGRIS +#20214,VH_RSX_0806 +#20215,VH_B_YGNIZEM +#20216,VH_ATROCE +#20217,VH_BEELZEBUB_ +#20218,VH_FALLINGBISHOP +#20219,VH_GLOOM_U_N +#20220,VH_IFRIT +#20221,VH_KTULLANUX +#20222,VH_H_HUNTER_EV +#20223,VH_MM_CUTIE +#20224,VH_VENOM_KIMERA +#20225,VH_B_SHECIL +#20226,VH_B_RANDEL +#20227,VH_B_FLAMEL +#20228,VH_B_TRENTINI +#20229,VH_CHARLESTON3 +#20230,VH_GRAND_PERE +#20231,VH_S_NYDHOG +#20232,VH_QUEEN_SCARABA +#20233,VH_KRAKEN +#20234,VH_TIMEHOLDER +#20235,VH_INCAN_SAMURAI +#20236,VH_BACSOJIN +#20237,VH_DARK_S_LORD +#20238,VH_LADY_TANEE +#20239,VH_GOPINICH +#20240,VH_LEAK +#20241,VH_MECHASPIDER +#20242,VH_PYURIEL +#20243,VH_KADES +#20244,VH_GIOIA +#20245,VH_DAEHYON +#20246,VH_B_CELIA +#20247,VH_B_CHEN +#20248,VH_B_ALPHOCCIO +#20249,VH_B_GERTIE +#20250,VH_ENTWEIHEN_R +#20251,VH_ENTWEIHEN_H +#20252,VH_ENTWEIHEN_M +#20253,VH_ENTWEIHEN_S +#20254,VH_MIMIC +#20255,ILL_TEDDY_BEAR_R +#20256,ILL_TEDDY_BEAR_Y +#20257,ILL_TEDDY_BEAR_G +#20258,ILL_TEDDY_BEAR_W +#20259,ILL_TEDDY_BEAR_B +#20260,ILL_TEDDY_BEAR_S +#20261,ILL_PITMAN +#20262,ILL_MINERAL +#20263,ILL_OBSIDIAN +#20264,G_ILL_TEDDY_BEAR_R +#20265,G_ILL_TEDDY_BEAR_Y +#20266,G_ILL_TEDDY_BEAR_G +#20267,G_ILL_TEDDY_BEAR_W +#20268,G_ILL_TEDDY_BEAR_B + +#20270,ILL_TRI_JOINT +#20271,ILL_STALACTIC_GOLEM +#20272,ILL_MEGALITH +#20273,ILL_TAO_GUNKA +#20274,ILL_STONE_SHOOTER +#20275,ILL_WOOTAN_SHOOTER +#20276,ILL_WOOTAN_FIGHTER +#20277,ILL_WOOTAN_DEFENDER +#20278,G_ILL_MEGALITH +#20279,G_ILL_WOOTAN_SHOOTER +#20280,G_ILL_WOOTAN_FIGHTER + +#20282,JP_MAZEMOB_51 +#20283,JP_MAZEMOB_52 +#20284,JP_MAZEMOB_53 +#20285,JP_MAZEMOB_54 +#20286,JP_MAZEMOB_55 +#20287,JP_MAZEMOB_56 +#20288,JP_MAZEMOB_57 +#20289,JP_MAZEMOB_58 +#20290,JP_MAZEMOB_59 +#20291,JP_MAZEMOB_60 +#20292,JP_MAZEMOB_61 +#20293,JP_MAZEMOB_62 +#20294,JP_MAZEMOB_63 +#20295,JP_MAZEMOB_64 +#20296,JP_MAZEMOB_65 +#20297,JP_MAZEMOB_66 +#20298,JP_MAZEMOB_67 +#20299,JP_MAZEMOB_68 +#20300,JP_MAZEMOB_69 +#20301,JP_MAZEMOB_70 +#20302,JP_MAZEMOB_71 +#20303,JP_MAZEMOB_72 +#20304,JP_MAZEMOB_73 +#20305,JP_MAZEMOB_74 +#20306,JP_MAZEMOB_75 +#20307,JP_MAZEMOB_76 +#20308,JP_MAZEMOB_77 +#20309,JP_MAZEMOB_78 +#20310,JP_MAZEMOB_79 +#20311,JP_MAZEMOB_80 +#20312,JP_MAZEMOB_81 +#20313,JP_MAZEMOB_82 +#20314,JP_MAZEMOB_83 +#20315,JP_MAZEMOB_84 +#20316,JP_MAZEMOB_85 +#20317,JP_MAZEMOB_86 +#20318,JP_MAZEMOB_87 +#20319,JP_MAZEMOB_88 +#20320,JP_MAZEMOB_89 +#20321,JP_MAZEMOB_90 +#20322,JP_MAZEMOB_91 +#20323,JP_MAZEMOB_92 +#20324,JP_MAZEMOB_93 +#20325,JP_MAZEMOB_94 +#20326,JP_MAZEMOB_95 +#20327,JP_MAZEMOB_96 +#20328,JP_MAZEMOB_97 +#20329,JP_MAZEMOB_98 +#20330,JP_MAZEMOB_99 +#20331,JP_MAZEMOB_100 +#20332,E_PECOPECO + +#20354,E_FINE_DUST diff --git a/sql-files/mob_skill_db_re.sql b/sql-files/mob_skill_db_re.sql index 566fc80570..fa17a0c8be 100644 --- a/sql-files/mob_skill_db_re.sql +++ b/sql-files/mob_skill_db_re.sql @@ -11103,6 +11103,88 @@ REPLACE INTO `mob_skill_db_re` VALUES (2997,'Kimi\'s Phantom@NPC_WIDESLEEP','att REPLACE INTO `mob_skill_db_re` VALUES (2997,'Kimi\'s Phantom@NPC_WIDESOULDRAIN','attack',680,3,10000,5000,50000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,'42',NULL); REPLACE INTO `mob_skill_db_re` VALUES (2997,'Kimi\'s Phantom@NPC_MAXPAIN','attack',716,3,10000,3000,50000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `mob_skill_db_re` VALUES (2997,'Kimi\'s Phantom@NPC_POWERUP','attack',349,1,10000,0,50000,'no','self','myhpltmaxrate','5',NULL,NULL,NULL,NULL,NULL,'6',NULL); + +# Episode 14.3: Morse cave +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_SIGHT','idle',10,1,2000,0,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_SIGHT','idle',10,1,10000,0,5000,'no','self','skillused','137',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@AL_TELEPORT','idle',26,1,10000,0,0,'no','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@AL_TELEPORT','walk',26,1,5000,0,5000,'no','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FROSTDIVER','idle',15,40,10000,1000,10000,'yes','randomtarget','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_JUPITEL','idle',84,28,10000,1000,10000,'yes','randomtarget','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBALL','idle',17,44,10000,500,10000,'yes','randomtarget','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FROSTDIVER','chase',15,40,10000,1000,10000,'yes','target','skillused','18',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_JUPITEL','chase',84,28,10000,1000,10000,'yes','target','skillused','18',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBALL','chase',17,44,10000,500,10000,'yes','target','skillused','18',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FROSTDIVER','attack',15,40,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FROSTDIVER','chase',15,40,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@HW_GANBANTEIN','attack',483,1,10000,500,7000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@HW_NAPALMVULCAN','chase',400,5,2000,1000,2000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_JUPITEL','attack',84,28,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_JUPITEL','chase',84,28,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_THUNDERSTORM','attack',21,20,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_THUNDERSTORM','chase',21,20,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_COLDBOLT','attack',14,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_COLDBOLT','chase',14,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBALL','attack',17,44,3000,500,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBALL','chase',17,44,3000,500,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_SIGHTRASHER','attack',81,10,3000,0,10000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_QUAGMIRE','chase',92,5,3000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_SAFETYWALL','attack',12,10,3000,0,10000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBOLT','chase',19,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREBOLT','attack',19,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREWALL','chase',18,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_FIREWALL','attack',18,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_LIGHTNINGBOLT','chase',20,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@MG_LIGHTNINGBOLT','attack',20,10,3000,1000,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_FROSTNOVA','chase',88,10,3000,1000,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_FROSTNOVA','attack',88,10,3000,1000,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_EARTHSPIKE','chase',90,5,3000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_EARTHSPIKE','attack',90,5,3000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_HEAVENDRIVE','chase',91,5,3000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (2999,'Morocc Necromancer@WZ_HEAVENDRIVE','attack',91,5,3000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_CRITICALWOUND','attack',673,2,500,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,5000,0,5000,'no','randomtarget','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,3000,0,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','attack',83,11,5000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','attack',720,5,3000,0,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_FIREPILLAR','idle',80,7,2000,0,5000,'no','around2','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_FIREPILLAR','attack',80,7,2000,0,5000,'no','around2','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','18',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','89',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','21',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','28',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','79',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','randomtarget','skillused','83',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','target','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@WZ_METEOR','idle',83,11,10000,0,10000,'no','target','casttargeted',NULL,NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','18',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','89',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','21',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','28',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','79',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','skillused','83',NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3000,'Morocc Necromancer@NPC_JACKFROST','idle',720,5,10000,0,10000,'no','self','casttargeted',NULL,NULL,NULL,NULL,NULL,NULL,'9',NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3004,'Morroc\'s Wraith@NPC_SELFDESTRUCTION','attack',173,1,10000,1700,0,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_POISON','attack',176,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_BLINDATTACK','attack',177,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_SILENCEATTACK','attack',178,5,5000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_STUNATTACK','attack',179,5,5000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_PETRIFYATTACK','attack',180,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_CURSEATTACK','attack',181,5,5000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_SLEEPATTACK','attack',182,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_HALLUCINATION','attack',207,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3006,'Morroc\'s Lude@NPC_BLEEDING','attack',660,5,2000,0,0,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3008,'Morroc Hidden@AL_HEAL','attack',28,9,10000,500,5000,'no','friend','friendhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3008,'Morroc Hidden@AL_HEAL','idle',28,9,10000,500,5000,'no','friend','friendhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3026,'Fire Pit@NPC_DEATHSUMMON','dead',718,3,10000,0,10000,'no','self','always','0',3027,3027,3027,NULL,NULL,NULL,NULL); + +# Episode 14.3: Isle of Bios +REPLACE INTO `mob_skill_db_re` VALUES (3029,'Grim Reaper Ankou@NPC_COMET','attack',708,3,1000,10000,75000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3029,'Grim Reaper Ankou@NPC_DARKCROSS','attack',338,10,500,2000,12000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3029,'Grim Reaper Ankou@NPC_DRAGONFEAR','attack',659,5,1000,3000,30000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + REPLACE INTO `mob_skill_db_re` VALUES (3038,'Hidden Mob 7@NPC_INVISIBLE','idle',353,1,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `mob_skill_db_re` VALUES (3038,'Hidden Mob 7@NPC_INVISIBLE','attack',353,1,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); #REPLACE INTO `mob_skill_db_re` VALUES ( 3038,'Hidden Mob 7@NPC_HELLBURNING','idle',719,1,10000,0,3000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); @@ -11125,3 +11207,73 @@ REPLACE INTO `mob_skill_db_re` VALUES (3200,'Wicked Chimera@WZ_HEAVENDRIVE','cha REPLACE INTO `mob_skill_db_re` VALUES (3200,'Wicked Chimera@CR_AUTOGUARD','attack',249,5,500,0,300000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); REPLACE INTO `mob_skill_db_re` VALUES (3200,'Wicked Chimera@CR_AUTOGUARD','chase',249,5,2000,0,300000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +#================================================================= +# Phantasmagorika 15.2 Mob Skills Placeholder (Gathered from jRO) +#================================================================= + +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_BLOODDRAIN','angry',199,1,1000,0,3000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_STONESKIN','attack',675,3,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_STUNATTACK','attack',179,5,800,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_ARMORBRAKE','attack',344,10,500,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_STONESKIN','chase',675,3,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_BLOODDRAIN','attack',199,1,500,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@NPC_STONESKIN','idle',675,3,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3153,'Excavator Robot@AL_TELEPORT','idle',26,1,10000,0,0,'no','target','rudeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3154,'Recon Robot@NPC_GUIDEDATTACK','attack',172,5,500,0,20000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3154,'Recon Robot@NPC_STUNATTACK','attack',179,5,800,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3155,'Repair Robot@NPC_STUNATTACK','any',179,5,500,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3155,'Repair Robot@NPC_GUIDEDATTACK','attack',172,5,1000,0,15000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3156,'Exploration Rover@NPC_SUMMONSLAVE','idle',196,5,10000,700,10000,'no','self','casttargeted','1',3157,3158,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3156,'Exploration Rover@NPC_GUIDEDATTACK','attack',172,5,1000,0,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3156,'Exploration Rover@NPC_SUMMONSLAVE','attack',196,5,10000,700,10000,'no','target','attackpcge','10',3157,3158,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3247,'Cenere G@NPC_PETRIFYATTACK','attack',180,3,500,500,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3247,'Cenere G@MG_THUNDERSTORM','chase',21,10,3000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3247,'Cenere G@NPC_POISONATTACK','any',188,1,5000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3247,'Cenere G@NPC_BLINDATTACK','attack',177,3,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3247,'Cenere G@MG_THUNDERSTORM','attack',21,10,3000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@AL_PNEUMA','attack',25,1,2000,0,5000,'yes','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@AL_TELEPORT','idle',26,1,10000,0,0,'no','target','rudeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@NPC_CRITICALSLASH','attack',170,1,2000,0,2000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@NPC_GUIDEDATTACK','attack',172,5,1000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@KN_TWOHANDQUICKEN','attack',60,30,10000,0,120000,'yes','target','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@NPC_STUNATTACK','attack',179,5,500,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3248,'Repair Robot T@AL_PNEUMA','chase',25,1,2000,0,5000,'no','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@KN_TWOHANDQUICKEN','attack',60,30,10000,0,120000,'yes','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@AL_PNEUMA','chase',25,1,2000,0,5000,'no','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@AL_TELEPORT','walk',26,1,10000,0,0,'no','target','rudeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@NPC_CRITICALWOUND','attack',673,2,1000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@NPC_GUIDEDATTACK','attack',172,5,1000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3249,'Exploration Rover T@AL_PNEUMA','attack',25,1,2000,0,5000,'no','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3253,'Sys Msg@AL_HEAL','walk',28,11,10000,0,5000,'no','friend','myhpltmaxrate','99',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3253,'Sys Msg@AL_HEAL','idle',28,11,10000,0,5000,'yes','friend','myhpltmaxrate','99',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_STUNATTACK','attack',179,5,500,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@AL_PNEUMA','chase',25,1,2000,0,5000,'no','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_CHANGEWIND','attack',165,1,10000,0,1200000,'no','self','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_WIDECONFUSE','chase',667,2,10000,0,10000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_CRITICALSLASH','any',170,1,1000,0,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_SPLASHATTACK','attack',174,1,2000,0,5000,'no','target','attackpcgt','1',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_WIDECONFUSE','attack',667,2,10000,0,10000,'yes','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_WIDESLEEP','attack',668,1,10000,1000,20000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@AL_PNEUMA','attack',25,1,2000,0,6000,'no','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@MG_THUNDERSTORM','attack',21,20,2000,1000,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@SM_MAGNUM','attack',7,25,1500,0,3000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@SM_ENDURE','chase',8,1,5000,0,10000,'yes','self','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_CALLSLAVE','attack',352,1,10000,0,5000,'no','self','onspawn',NULL,3253,3253,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@KN_BRANDISHSPEAR','any',57,10,2000,200,5000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_PULSESTRIKE','attack',661,5,10000,0,30000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_WIDESLEEP','chase',668,1,10000,1000,20000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_DARKBREATH','attack',202,5,10000,0,30000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_CALLSLAVE','attack',352,1,10000,0,5000,'no','self','slavele','1',3253,3253,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@SM_MAGNUM','chase',7,25,1500,0,3000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_SUMMONSLAVE','attack',196,5,10000,0,5000,'no','randomtarget','always',NULL,3253,3253,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@NPC_PULSESTRIKE','chase',661,5,10000,0,30000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL); +REPLACE INTO `mob_skill_db_re` VALUES (3254,'T_W_O@SM_ENDURE','attack',8,1,5000,0,10000,'no','target','longrangeattacked','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL); + diff --git a/sql-files/upgrades/upgrade_20180404.sql b/sql-files/upgrades/upgrade_20180404.sql new file mode 100644 index 0000000000..d238a29311 --- /dev/null +++ b/sql-files/upgrades/upgrade_20180404.sql @@ -0,0 +1,2 @@ +ALTER TABLE `homunculus` + ADD COLUMN `autofeed` tinyint(2) NOT NULL default '0' AFTER `vaporize`; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index be74eab3f1..f5b6d81ca4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,6 +16,5 @@ endif() add_subdirectory( login ) add_subdirectory( char ) add_subdirectory( map ) -add_subdirectory( test ) add_subdirectory( tool ) diff --git a/src/char/Makefile.in b/src/char/Makefile.in index 3fddf5ee15..2c91178cb3 100644 --- a/src/char/Makefile.in +++ b/src/char/Makefile.in @@ -1,18 +1,14 @@ -COMMON_H = $(shell ls ../common/*.h) +COMMON_H = $(shell ls ../common/*.hpp) COMMON_AR = ../common/obj/common.a COMMON_INCLUDE = -I../common/ -MT19937AR_OBJ = ../../3rdparty/mt19937ar/mt19937ar.o -MT19937AR_H = ../../3rdparty/mt19937ar/mt19937ar.h -MT19937AR_INCLUDE = -I../../3rdparty/mt19937ar - LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h) LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig COMMON_OBJ = ../common/obj/sql.o -COMMON_H = ../common/sql.h +COMMON_H = ../common/sql.hpp CHAR_OBJ = $(shell ls *.cpp | sed -e "s/\.cpp/\.o/g") CHAR_DIR_OBJ = $(CHAR_OBJ:%=obj/%) @@ -57,7 +53,7 @@ help: char-server: obj $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(YAML_CPP_AR) @echo " LD @OCHR@@EXEEXT@" - @@CXX@ @LDFLAGS@ -o ../../@OCHR@@EXEEXT@ $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) $(YAML_CPP_AR) @LIBS@ @MYSQL_LIBS@ + @@CXX@ @LDFLAGS@ -o ../../@OCHR@@EXEEXT@ $(CHAR_DIR_OBJ) $(LIBCONFIG_AR) $(COMMON_AR) $(LIBCONFIG_OBJ) $(YAML_CPP_AR) @LIBS@ @MYSQL_LIBS@ needs_mysql: @echo "MySQL not found or disabled by the configure script" @@ -66,22 +62,15 @@ needs_mysql: obj: @echo " MKDIR obj" @-mkdir obj - -obj/%.o: %.c $(CHAR_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) - @echo " CC $<" - @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< -obj/%.o: %.cpp $(CHAR_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) +obj/%.o: %.cpp $(CHAR_H) $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H) @echo " CXX $<" - @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing object files $(COMMON_AR): @$(MAKE) -C ../common server -$(MT19937AR_OBJ): - @$(MAKE) -C ../../3rdparty/mt19937ar - $(LIBCONFIG_AR): @$(MAKE) -C ../../3rdparty/libconfig diff --git a/src/char/char-server.vcxproj b/src/char/char-server.vcxproj index 61f157ee4b..26774d09a7 100644 --- a/src/char/char-server.vcxproj +++ b/src/char/char-server.vcxproj @@ -99,7 +99,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> @@ -115,7 +115,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> @@ -135,7 +135,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> @@ -155,7 +155,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> diff --git a/src/char/char.cpp b/src/char/char.cpp index 1359af6cb5..c5059f490e 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -10,18 +10,18 @@ #include <stdlib.h> #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/core.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/mapindex.h" -#include "../common/mmo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/timer.h" -#include "../common/cli.h" +#include "../common/cbasetypes.hpp" +#include "../common/core.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/mapindex.hpp" +#include "../common/mmo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" +#include "../common/cli.hpp" #include "int_guild.hpp" #include "int_homun.hpp" @@ -1456,7 +1456,8 @@ int char_make_new_char_sql(struct char_session_data* sd, char* name_, int str, i } #if PACKETVER >= 20151001 - if (start_job != JOB_NOVICE && start_job != JOB_SUMMONER) + if(!(start_job == JOB_NOVICE && (charserv_config.allowed_job_flag&1)) && + !(start_job == JOB_SUMMONER && (charserv_config.allowed_job_flag&2))) return -2; // Invalid job // Check for Doram based information. @@ -2064,10 +2065,14 @@ int char_loadName(uint32 char_id, char* name){ safestrncpy(name, data, NAME_LENGTH); return 1; } +#if PACKETVER < 20180221 else { safestrncpy(name, charserv_config.char_config.unknown_char_name, NAME_LENGTH); } +#else + name[0] = '\0'; +#endif return 0; } @@ -2449,7 +2454,7 @@ bool char_checkdb(void){ } //checking homunculus_db if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`," - "`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`alive`,`rename_flag`,`vaporize` " + "`str`,`agi`,`vit`,`int`,`dex`,`luk`,`hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`alive`,`rename_flag`,`vaporize`,`autofeed` " " FROM `%s` LIMIT 1;", schema_config.homunculus_db) ){ Sql_ShowDebug(sql_handle); return false; @@ -2732,7 +2737,7 @@ void char_set_defaults(){ charserv_config.log_inter = 1; // loggin inter or not [devil] charserv_config.char_check_db =1; - // See const.h to change the default values + // See const.hpp to change the default values charserv_config.start_point[0].map = mapindex_name2id(MAP_DEFAULT_NAME); charserv_config.start_point[0].x = MAP_DEFAULT_X; charserv_config.start_point[0].y = MAP_DEFAULT_Y; @@ -2775,6 +2780,12 @@ void char_set_defaults(){ charserv_config.clan_remove_inactive_days = 14; charserv_config.mail_return_days = 14; charserv_config.mail_delete_days = 14; + +#if defined(RENEWAL) && PACKETVER >= 20151001 + charserv_config.allowed_job_flag = 3; +#else + charserv_config.allowed_job_flag = 1; +#endif } /** @@ -3053,6 +3064,8 @@ bool char_config_read(const char* cfgName, bool normal){ charserv_config.mail_return_days = atoi(w2); } else if (strcmpi(w1, "mail_delete_days") == 0) { charserv_config.mail_delete_days = atoi(w2); + } else if (strcmpi(w1, "allowed_job_flag") == 0) { + charserv_config.allowed_job_flag = atoi(w2); } else if (strcmpi(w1, "import") == 0) { char_config_read(w2, normal); } diff --git a/src/char/char.hpp b/src/char/char.hpp index a21811fa7d..9243798bf6 100644 --- a/src/char/char.hpp +++ b/src/char/char.hpp @@ -4,10 +4,10 @@ #ifndef _CHAR_HPP_ #define _CHAR_HPP_ -#include "../config/core.h" -#include "../common/core.h" // CORE_ST_LAST -#include "../common/msg_conf.h" -#include "../common/mmo.h" +#include "../config/core.hpp" +#include "../common/core.hpp" // CORE_ST_LAST +#include "../common/msg_conf.hpp" +#include "../common/mmo.hpp" extern int login_fd; //login file descriptor extern int char_fd; //char file descriptor @@ -101,7 +101,12 @@ enum pincode_state : uint8 { #if 0 PINCODE_KSSN = 6, // Not supported since we do not store KSSN #endif +#if PACKETVER >= 20180124 + // The button for pin code access was removed + PINCODE_PASSED = PINCODE_OK, +#else PINCODE_PASSED = 7, +#endif PINCODE_WRONG = 8, PINCODE_MAXSTATE }; @@ -180,6 +185,8 @@ struct CharServ_Config { int clan_remove_inactive_days; int mail_return_days; int mail_delete_days; + + int allowed_job_flag; }; extern struct CharServ_Config charserv_config; diff --git a/src/char/char_clif.cpp b/src/char/char_clif.cpp index 19bf1cf867..8353f4f050 100644 --- a/src/char/char_clif.cpp +++ b/src/char/char_clif.cpp @@ -6,16 +6,16 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/socket.h" -#include "../common/sql.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/mapindex.h" -#include "../common/malloc.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/timer.h" +#include "../common/mmo.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/mapindex.hpp" +#include "../common/malloc.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/timer.hpp" #include "inter.hpp" #include "char.hpp" #include "char_logif.hpp" diff --git a/src/char/char_clif.hpp b/src/char/char_clif.hpp index 0bd4f32086..13c7cf9e1d 100644 --- a/src/char/char_clif.hpp +++ b/src/char/char_clif.hpp @@ -4,8 +4,8 @@ #ifndef _CHAR_CLIF_HPP_ #define _CHAR_CLIF_HPP_ -#include "../common/cbasetypes.h" -#include "../common/timer.h" //time_t +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" //time_t struct char_session_data; enum pincode_state : uint8; diff --git a/src/char/char_cnslif.cpp b/src/char/char_cnslif.cpp index 6468eee6d0..720dae2f30 100644 --- a/src/char/char_cnslif.cpp +++ b/src/char/char_cnslif.cpp @@ -6,11 +6,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/socket.h" -#include "../common/showmsg.h" -#include "../common/timer.h" -#include "../common/ers.h" -#include "../common/cli.h" +#include "../common/socket.hpp" +#include "../common/showmsg.hpp" +#include "../common/timer.hpp" +#include "../common/ers.hpp" +#include "../common/cli.hpp" #include "char.hpp" diff --git a/src/char/char_cnslif.hpp b/src/char/char_cnslif.hpp index 0216c2d04f..0d4979296d 100644 --- a/src/char/char_cnslif.hpp +++ b/src/char/char_cnslif.hpp @@ -7,9 +7,6 @@ int cnslif_parse(const char* buf); void do_init_chcnslif(void); -extern "C" { -void display_helpscreen(bool do_exit); -} #endif /* _CHAR_CNSLIF_HPP_ */ diff --git a/src/char/char_logif.cpp b/src/char/char_logif.cpp index be25e70786..88cdd88187 100644 --- a/src/char/char_logif.cpp +++ b/src/char/char_logif.cpp @@ -6,12 +6,12 @@ #include <stdlib.h> #include <string.h> -#include "../common/socket.h" -#include "../common/timer.h" -#include "../common/showmsg.h" -#include "../common/sql.h" -#include "../common/utils.h" -#include "../common/strlib.h" +#include "../common/socket.hpp" +#include "../common/timer.hpp" +#include "../common/showmsg.hpp" +#include "../common/sql.hpp" +#include "../common/utils.hpp" +#include "../common/strlib.hpp" #include "inter.hpp" #include "int_guild.hpp" @@ -349,7 +349,7 @@ int chlogif_parse_reqaccdata(int fd, struct char_session_data* sd){ sd->group_id = RFIFOB(fd,50); sd->char_slots = RFIFOB(fd,51); if( sd->char_slots > MAX_CHARS ) { - ShowError("Account '%d' `character_slots` column is higher than supported MAX_CHARS (%d), update MAX_CHARS in mmo.h! capping to MAX_CHARS...\n",sd->account_id,sd->char_slots); + ShowError("Account '%d' `character_slots` column is higher than supported MAX_CHARS (%d), update MAX_CHARS in mmo.hpp! capping to MAX_CHARS...\n",sd->account_id,sd->char_slots); sd->char_slots = MAX_CHARS;/* cap to maximum */ } else if ( !sd->char_slots )/* no value aka 0 in sql */ sd->char_slots = MIN_CHARS;/* cap to minimum */ @@ -662,18 +662,17 @@ int chlogif_reqvipdata(uint32 aid, uint8 flag, int32 timediff, int mapfd) { * HA 0x2720 * Request account info to login-server */ -int chlogif_req_accinfo(int fd, int u_fd, int u_aid, int u_group, int account_id, int8 type) { +int chlogif_req_accinfo(int fd, int u_fd, int u_aid, int account_id, int8 type) { loginif_check(-1); //ShowInfo("%d request account info for %d (type %d)\n", u_aid, account_id, type); - WFIFOHEAD(login_fd,23); + WFIFOHEAD(login_fd,19); WFIFOW(login_fd,0) = 0x2720; WFIFOL(login_fd,2) = fd; WFIFOL(login_fd,6) = u_fd; WFIFOL(login_fd,10) = u_aid; - WFIFOL(login_fd,14) = u_group; - WFIFOL(login_fd,18) = account_id; - WFIFOB(login_fd,22) = type; - WFIFOSET(login_fd,23); + WFIFOL(login_fd,14) = account_id; + WFIFOB(login_fd,18) = type; + WFIFOSET(login_fd,19); return 1; } @@ -686,16 +685,16 @@ int chlogif_parse_AccInfoAck(int fd) { return 0; else { int8 type = RFIFOB(fd, 18); - if (type == 0 || RFIFOREST(fd) < 155+PINCODE_LENGTH+NAME_LENGTH) { - mapif_accinfo_ack(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), 0, -1, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + if (type == 0 || RFIFOREST(fd) < 122+NAME_LENGTH) { + mapif_accinfo_ack(false, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), 0, -1, 0, 0, NULL, NULL, NULL, NULL, NULL); RFIFOSKIP(fd,19); return 1; } type>>=1; mapif_accinfo_ack(true, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14), type, RFIFOL(fd,19), RFIFOL(fd,23), RFIFOL(fd,27), RFIFOCP(fd,31), RFIFOCP(fd,71), RFIFOCP(fd,87), RFIFOCP(fd,111), - RFIFOCP(fd,122), RFIFOCP(fd,155), RFIFOCP(fd,155+PINCODE_LENGTH)); - RFIFOSKIP(fd,155+PINCODE_LENGTH+NAME_LENGTH); + RFIFOCP(fd,122)); + RFIFOSKIP(fd,122+NAME_LENGTH); } return 1; } diff --git a/src/char/char_logif.hpp b/src/char/char_logif.hpp index 990243a2cc..a076f48495 100644 --- a/src/char/char_logif.hpp +++ b/src/char/char_logif.hpp @@ -4,7 +4,7 @@ #ifndef _CHAR_LOGIF_HPP_ #define _CHAR_LOGIF_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct char_session_data; @@ -39,7 +39,7 @@ int chlogif_parse_updip(int fd, struct char_session_data* sd); int chlogif_parse_vipack(int fd); int chlogif_reqvipdata(uint32 aid, uint8 flag, int32 timediff, int mapfd); -int chlogif_req_accinfo(int fd, int u_fd, int u_aid, int u_group, int account_id, int8 type); +int chlogif_req_accinfo(int fd, int u_fd, int u_aid, int account_id, int8 type); int chlogif_parse(int fd); diff --git a/src/char/char_mapif.cpp b/src/char/char_mapif.cpp index 52044fd460..6e74b9d548 100644 --- a/src/char/char_mapif.cpp +++ b/src/char/char_mapif.cpp @@ -12,11 +12,11 @@ #include <stdlib.h> #include <string.h> //memcpy -#include "../common/socket.h" -#include "../common/sql.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" +#include "../common/socket.hpp" +#include "../common/sql.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" #include "inter.hpp" #include "char.hpp" diff --git a/src/char/char_mapif.hpp b/src/char/char_mapif.hpp index 0e3cbd7626..4d71e80921 100644 --- a/src/char/char_mapif.hpp +++ b/src/char/char_mapif.hpp @@ -10,7 +10,7 @@ #ifndef _CHAR_MAPIF_HPP_ #define _CHAR_MAPIF_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" int chmapif_sendall(unsigned char *buf, unsigned int len); int chmapif_sendallwos(int sfd, unsigned char *buf, unsigned int len); diff --git a/src/char/int_achievement.cpp b/src/char/int_achievement.cpp index 0a4c96f7b3..391bff6395 100644 --- a/src/char/int_achievement.cpp +++ b/src/char/int_achievement.cpp @@ -7,13 +7,13 @@ #include <string.h> #include <stdlib.h> -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/sql.h" -#include "../common/strlib.h" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" +#include "../common/strlib.hpp" #include "char.hpp" #include "inter.hpp" diff --git a/src/char/int_auction.cpp b/src/char/int_auction.cpp index 6e4afe28e7..7fc5182680 100644 --- a/src/char/int_auction.cpp +++ b/src/char/int_auction.cpp @@ -7,13 +7,13 @@ #include <string.h> #include <stdlib.h> -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/sql.h" -#include "../common/timer.h" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/sql.hpp" +#include "../common/timer.hpp" #include "char.hpp" #include "char_mapif.hpp" diff --git a/src/char/int_clan.cpp b/src/char/int_clan.cpp index 1c06b0ecae..94ea35c005 100644 --- a/src/char/int_clan.cpp +++ b/src/char/int_clan.cpp @@ -6,12 +6,12 @@ #include <stdlib.h> #include <string.h> //memset -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" #include "char.hpp" #include "char_mapif.hpp" diff --git a/src/char/int_elemental.cpp b/src/char/int_elemental.cpp index 34f80a8c15..1416f7ba75 100644 --- a/src/char/int_elemental.cpp +++ b/src/char/int_elemental.cpp @@ -6,11 +6,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" diff --git a/src/char/int_guild.cpp b/src/char/int_guild.cpp index 600553836f..0a876de8a9 100644 --- a/src/char/int_guild.cpp +++ b/src/char/int_guild.cpp @@ -7,13 +7,13 @@ #define __STDC_WANT_LIB_EXT1__ 1 #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/socket.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/timer.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/socket.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" #include "char.hpp" #include "char_mapif.hpp" diff --git a/src/char/int_guild.hpp b/src/char/int_guild.hpp index d0ade43405..6702acf378 100644 --- a/src/char/int_guild.hpp +++ b/src/char/int_guild.hpp @@ -4,7 +4,7 @@ #ifndef _INT_GUILD_HPP_ #define _INT_GUILD_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" enum e_guild_action : uint32 { GS_BASIC = 0x0001, diff --git a/src/char/int_homun.cpp b/src/char/int_homun.cpp index 6e07e07a75..085a6e2b9d 100644 --- a/src/char/int_homun.cpp +++ b/src/char/int_homun.cpp @@ -6,12 +6,12 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/utils.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/utils.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" @@ -93,10 +93,10 @@ bool mapif_homunculus_save(struct s_homunculus* hd) if( hd->hom_id == 0 ) {// new homunculus if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` " - "(`char_id`, `class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`, `rename_flag`, `vaporize`) " - "VALUES ('%d', '%d', '%d', '%s', '%d', '%u', '%u', '%d', '%d', %d, '%d', '%d', '%d', '%d', '%u', '%u', '%u', '%u', '%d', '%d', '%d')", + "(`char_id`, `class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`, `rename_flag`, `vaporize`, `autofeed`) " + "VALUES ('%d', '%d', '%d', '%s', '%d', '%u', '%u', '%d', '%d', %d, '%d', '%d', '%d', '%d', '%u', '%u', '%u', '%u', '%d', '%d', '%d', '%d')", schema_config.homunculus_db, hd->char_id, hd->class_, hd->prev_class, esc_name, hd->level, hd->exp, hd->intimacy, hd->hunger, hd->str, hd->agi, hd->vit, hd->int_, hd->dex, hd->luk, - hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize) ) + hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->autofeed) ) { Sql_ShowDebug(sql_handle); flag = false; @@ -108,9 +108,9 @@ bool mapif_homunculus_save(struct s_homunculus* hd) } else { - if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `char_id`='%d', `class`='%d',`prev_class`='%d',`name`='%s',`level`='%d',`exp`='%u',`intimacy`='%u',`hunger`='%d', `str`='%d', `agi`='%d', `vit`='%d', `int`='%d', `dex`='%d', `luk`='%d', `hp`='%u',`max_hp`='%u',`sp`='%u',`max_sp`='%u',`skill_point`='%d', `rename_flag`='%d', `vaporize`='%d' WHERE `homun_id`='%d'", + if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `char_id`='%d', `class`='%d',`prev_class`='%d',`name`='%s',`level`='%d',`exp`='%u',`intimacy`='%u',`hunger`='%d', `str`='%d', `agi`='%d', `vit`='%d', `int`='%d', `dex`='%d', `luk`='%d', `hp`='%u',`max_hp`='%u',`sp`='%u',`max_sp`='%u',`skill_point`='%d', `rename_flag`='%d', `vaporize`='%d', `autofeed`='%d' WHERE `homun_id`='%d'", schema_config.homunculus_db, hd->char_id, hd->class_, hd->prev_class, esc_name, hd->level, hd->exp, hd->intimacy, hd->hunger, hd->str, hd->agi, hd->vit, hd->int_, hd->dex, hd->luk, - hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->hom_id) ) + hd->hp, hd->max_hp, hd->sp, hd->max_sp, hd->skillpts, hd->rename_flag, hd->vaporize, hd->autofeed, hd->hom_id) ) { Sql_ShowDebug(sql_handle); flag = false; @@ -155,7 +155,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd) memset(hd, 0, sizeof(*hd)); - if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`rename_flag`, `vaporize` FROM `%s` WHERE `homun_id`='%u'", + if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `homun_id`,`char_id`,`class`,`prev_class`,`name`,`level`,`exp`,`intimacy`,`hunger`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `hp`,`max_hp`,`sp`,`max_sp`,`skill_point`,`rename_flag`, `vaporize`, `autofeed` FROM `%s` WHERE `homun_id`='%u'", schema_config.homunculus_db, homun_id) ) { Sql_ShowDebug(sql_handle); @@ -196,6 +196,7 @@ bool mapif_homunculus_load(int homun_id, struct s_homunculus* hd) Sql_GetData(sql_handle, 19, &data, NULL); hd->skillpts = atoi(data); Sql_GetData(sql_handle, 20, &data, NULL); hd->rename_flag = atoi(data); Sql_GetData(sql_handle, 21, &data, NULL); hd->vaporize = atoi(data); + Sql_GetData(sql_handle, 22, &data, NULL); hd->autofeed = atoi(data) != 0; Sql_FreeResult(sql_handle); hd->intimacy = umin(hd->intimacy,100000); diff --git a/src/char/int_homun.hpp b/src/char/int_homun.hpp index 4bcef6f92d..cab765d37e 100644 --- a/src/char/int_homun.hpp +++ b/src/char/int_homun.hpp @@ -4,7 +4,7 @@ #ifndef _INT_HOMUN_HPP_ #define _INT_HOMUN_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct s_homunculus; diff --git a/src/char/int_mail.cpp b/src/char/int_mail.cpp index bf47fe94bb..e3a0724fcb 100644 --- a/src/char/int_mail.cpp +++ b/src/char/int_mail.cpp @@ -6,11 +6,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "char_mapif.hpp" @@ -484,7 +484,8 @@ void mapif_Mail_return(int fd, uint32 char_id, int mail_id) else if( SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", schema_config.mail_db, mail_id) || SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `id` = '%d'", schema_config.mail_attachment_db, mail_id) ) Sql_ShowDebug(sql_handle); - else + // If it was not sent by the server, since we do not want to return mails to the server + else if( msg.send_id != 0 ) { char temp_[MAIL_TITLE_LENGTH]; @@ -543,20 +544,38 @@ void mapif_parse_Mail_send(int fd) { struct mail_message msg; char esc_name[NAME_LENGTH*2+1]; + char *data; + size_t len; if(RFIFOW(fd,2) != 8 + sizeof(struct mail_message)) return; memcpy(&msg, RFIFOP(fd,8), sizeof(struct mail_message)); + if( msg.dest_id != 0 ){ + if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `char_id`, `name` FROM `%s` WHERE `char_id` = '%u'", schema_config.char_db, msg.dest_id) ){ + Sql_ShowDebug(sql_handle); + return; + } + + msg.dest_id = 0; + msg.dest_name[0] = '\0'; + + if( SQL_SUCCESS == Sql_NextRow(sql_handle) ){ + Sql_GetData(sql_handle, 0, &data, NULL); + msg.dest_id = atoi(data); + Sql_GetData(sql_handle, 1, &data, &len); + safestrncpy(msg.dest_name, data, NAME_LENGTH); + } + + Sql_FreeResult(sql_handle); + } + // Try to find the Dest Char by Name Sql_EscapeStringLen(sql_handle, esc_name, msg.dest_name, strnlen(msg.dest_name, NAME_LENGTH)); - if ( SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", schema_config.char_db, esc_name) ) + if ( SQL_ERROR == Sql_Query(sql_handle, "SELECT `account_id`, `char_id` FROM `%s` WHERE `name` = '%s'", schema_config.char_db, esc_name) ){ Sql_ShowDebug(sql_handle); - else - if ( SQL_SUCCESS == Sql_NextRow(sql_handle) ) - { - char *data; + }else if ( SQL_SUCCESS == Sql_NextRow(sql_handle) ){ #if PACKETVER < 20150513 uint32 account_id = RFIFOL(fd,4); diff --git a/src/char/int_mail.hpp b/src/char/int_mail.hpp index 21cc726e55..864e7a5815 100644 --- a/src/char/int_mail.hpp +++ b/src/char/int_mail.hpp @@ -4,7 +4,7 @@ #ifndef _INT_MAIL_HPP_ #define _INT_MAIL_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct mail_message; diff --git a/src/char/int_mercenary.cpp b/src/char/int_mercenary.cpp index 0eaee859e6..caded55468 100644 --- a/src/char/int_mercenary.cpp +++ b/src/char/int_mercenary.cpp @@ -6,11 +6,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" diff --git a/src/char/int_mercenary.hpp b/src/char/int_mercenary.hpp index 2812bf7628..1cfd03dd40 100644 --- a/src/char/int_mercenary.hpp +++ b/src/char/int_mercenary.hpp @@ -4,7 +4,7 @@ #ifndef _INT_MERCENARY_HPP_ #define _INT_MERCENARY_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" int inter_mercenary_sql_init(void); void inter_mercenary_sql_final(void); diff --git a/src/char/int_party.cpp b/src/char/int_party.cpp index f3b1f2f8a2..b5f44b46ff 100644 --- a/src/char/int_party.cpp +++ b/src/char/int_party.cpp @@ -6,14 +6,14 @@ #include <stdlib.h> #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/strlib.h" -#include "../common/socket.h" -#include "../common/showmsg.h" -#include "../common/mapindex.h" -#include "../common/sql.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/strlib.hpp" +#include "../common/socket.hpp" +#include "../common/showmsg.hpp" +#include "../common/mapindex.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "char_mapif.hpp" diff --git a/src/char/int_party.hpp b/src/char/int_party.hpp index f72aa7f815..266cee57c7 100644 --- a/src/char/int_party.hpp +++ b/src/char/int_party.hpp @@ -4,7 +4,7 @@ #ifndef _INT_PARTY_HPP_ #define _INT_PARTY_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" //Party Flags on what to save/delete. enum e_PartySaveWhatFlag { diff --git a/src/char/int_pet.cpp b/src/char/int_pet.cpp index 436ed54973..40fe5261b8 100644 --- a/src/char/int_pet.cpp +++ b/src/char/int_pet.cpp @@ -6,18 +6,19 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" -#include "../common/utils.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" +#include "../common/utils.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" struct s_pet *pet_pt; +int mapif_load_pet(int fd, uint32 account_id, uint32 char_id, int pet_id); //--------------------------------------------------------- int inter_pet_tosql(int pet_id, struct s_pet* p) @@ -211,9 +212,13 @@ int mapif_create_pet(int fd, uint32 account_id, uint32 char_id, short pet_class, pet_pt->intimate = 1000; pet_pt->pet_id = -1; //Signal NEW pet. - if (inter_pet_tosql(pet_pt->pet_id,pet_pt)) - mapif_pet_created(fd, account_id, pet_pt); - else //Failed... + if (inter_pet_tosql(pet_pt->pet_id,pet_pt)){ + if( pet_pt->incubate ){ + mapif_pet_created(fd, account_id, pet_pt); + }else{ + mapif_load_pet(fd, account_id, char_id, pet_pt->pet_id); + } + }else //Failed... mapif_pet_created(fd, account_id, NULL); return 0; diff --git a/src/char/int_pet.hpp b/src/char/int_pet.hpp index 5f92884bf0..76daad23b5 100644 --- a/src/char/int_pet.hpp +++ b/src/char/int_pet.hpp @@ -4,7 +4,7 @@ #ifndef _INT_PET_HPP_ #define _INT_PET_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct s_pet; diff --git a/src/char/int_quest.cpp b/src/char/int_quest.cpp index 37aebc38ce..fa74ca6698 100644 --- a/src/char/int_quest.cpp +++ b/src/char/int_quest.cpp @@ -6,11 +6,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/sql.h" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" diff --git a/src/char/int_storage.cpp b/src/char/int_storage.cpp index 24d7f42f28..eecf8cf725 100644 --- a/src/char/int_storage.cpp +++ b/src/char/int_storage.cpp @@ -7,12 +7,12 @@ #include <stdlib.h> #include <string.h> -#include "../common/malloc.h" -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" // StringBuf -#include "../common/sql.h" +#include "../common/malloc.hpp" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" // StringBuf +#include "../common/sql.hpp" #include "char.hpp" #include "inter.hpp" diff --git a/src/char/int_storage.hpp b/src/char/int_storage.hpp index 9a0ab0300e..72e5855f28 100644 --- a/src/char/int_storage.hpp +++ b/src/char/int_storage.hpp @@ -4,7 +4,7 @@ #ifndef _INT_STORAGE_HPP_ #define _INT_STORAGE_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct s_storage; diff --git a/src/char/inter.cpp b/src/char/inter.cpp index 7c4997e371..ee49a1857b 100644 --- a/src/char/inter.cpp +++ b/src/char/inter.cpp @@ -11,12 +11,12 @@ #include <vector> #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/timer.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/timer.hpp" #include "char.hpp" #include "char_logif.hpp" @@ -307,10 +307,20 @@ const char* job_name(int class_) { return msg_txt(110 - JOB_BABY_NINJA+class_); case JOB_BABY_STAR_GLADIATOR2: - return msg_txt(114); + case JOB_STAR_EMPEROR: + case JOB_SOUL_REAPER: + case JOB_BABY_STAR_EMPEROR: + case JOB_BABY_SOUL_REAPER: + return msg_txt(114 - JOB_BABY_STAR_GLADIATOR2 + class_); + + case JOB_STAR_EMPEROR2: + return msg_txt(118); + + case JOB_BABY_STAR_EMPEROR2: + return msg_txt(120); default: - return msg_txt(118); + return msg_txt(199); } } @@ -478,7 +488,7 @@ void mapif_parse_accinfo(int fd) { } /* it will only get here if we have a single match then ask login-server to fetch the `login` record */ - if (!account_id || chlogif_req_accinfo(fd, u_fd, u_aid, u_group, account_id, type) != 1) { + if (!account_id || chlogif_req_accinfo(fd, u_fd, u_aid, account_id, type) != 1) { inter_to_fd(fd, u_fd, u_aid, (char *)msg_txt(213)); } return; @@ -489,7 +499,7 @@ void mapif_parse_accinfo(int fd) { */ void mapif_accinfo_ack(bool success, int map_fd, int u_fd, int u_aid, int account_id, int8 type, int group_id, int logincount, int state, const char *email, const char *last_ip, const char *lastlogin, - const char *birthdate, const char *user_pass, const char *pincode, const char *userid) + const char *birthdate, const char *userid) { if (map_fd <= 0 || !session_isActive(map_fd)) @@ -507,7 +517,6 @@ void mapif_accinfo_ack(bool success, int map_fd, int u_fd, int u_aid, int accoun inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(217), account_id); inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(218), userid, group_id, state); - inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(219), user_pass[0] != '\0' ? user_pass : msg_txt(220), pincode[0] != '\0' ? msg_txt(220) : pincode); inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(221), email, birthdate); inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(222), last_ip, geoip_getcountry(str2ip(last_ip))); inter_to_fd(map_fd, u_fd, u_aid, (char *)msg_txt(223), logincount, lastlogin); diff --git a/src/char/inter.hpp b/src/char/inter.hpp index d45e560866..9384c0fc7a 100644 --- a/src/char/inter.hpp +++ b/src/char/inter.hpp @@ -4,8 +4,8 @@ #ifndef _INTER_HPP_ #define _INTER_HPP_ -#include "../common/cbasetypes.h" -#include "../common/sql.h" +#include "../common/cbasetypes.hpp" +#include "../common/sql.hpp" #include <memory> #include <string> @@ -26,7 +26,7 @@ int inter_mapif_init(int fd); int mapif_disconnectplayer(int fd, uint32 account_id, uint32 char_id, int reason); void mapif_accinfo_ack(bool success, int map_fd, int u_fd, int u_aid, int account_id, int8 type, int group_id, int logincount, int state, const char *email, const char *last_ip, const char *lastlogin, - const char *birthdate, const char *user_pass, const char *pincode, const char *userid); + const char *birthdate, const char *userid); int inter_log(const char *fmt,...); diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index d9164f0409..c52ef05da8 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -41,24 +41,24 @@ mark_as_advanced( COMMON_SOURCE_DIR ) set( COMMON_ALL_HEADERS "${CMAKE_CURRENT_BINARY_DIR}/svnversion.h" - "${COMMON_SOURCE_DIR}/cbasetypes.h" - "${COMMON_SOURCE_DIR}/mmo.h" + "${COMMON_SOURCE_DIR}/cbasetypes.hpp" + "${COMMON_SOURCE_DIR}/mmo.hpp" ) set( COMMON_MINI_HEADERS ${COMMON_ALL_HEADERS} - "${COMMON_SOURCE_DIR}/core.h" - "${COMMON_SOURCE_DIR}/malloc.h" - "${COMMON_SOURCE_DIR}/showmsg.h" - "${COMMON_SOURCE_DIR}/strlib.h" - ${LIBCONFIG_HEADERS} # needed by showmsg.h + "${COMMON_SOURCE_DIR}/core.hpp" + "${COMMON_SOURCE_DIR}/malloc.hpp" + "${COMMON_SOURCE_DIR}/showmsg.hpp" + "${COMMON_SOURCE_DIR}/strlib.hpp" + ${LIBCONFIG_HEADERS} # needed by showmsg.hpp CACHE INTERNAL "" ) set( COMMON_MINI_SOURCES "${COMMON_SOURCE_DIR}/core.cpp" - "${COMMON_SOURCE_DIR}/malloc.c" - "${COMMON_SOURCE_DIR}/showmsg.c" - "${COMMON_SOURCE_DIR}/strlib.c" - ${LIBCONFIG_SOURCES} # needed by showmsg.c + "${COMMON_SOURCE_DIR}/malloc.cpp" + "${COMMON_SOURCE_DIR}/showmsg.cpp" + "${COMMON_SOURCE_DIR}/strlib.cpp" + ${LIBCONFIG_SOURCES} # needed by showmsg.cpp CACHE INTERNAL "" ) set( COMMON_MINI_INCLUDE_DIRS ${LIBCONFIG_INCLUDE_DIRS} CACHE INTERNAL "" ) set( COMMON_MINI_DEFINITIONS "-DMINICORE ${LIBCONFIG_DEFINITIONS}" CACHE INTERNAL "" ) @@ -71,60 +71,48 @@ if( WITH_ZLIB ) message( STATUS "Creating target common_base" ) set( COMMON_BASE_HEADERS ${COMMON_ALL_HEADERS} - "${COMMON_SOURCE_DIR}/conf.h" - "${COMMON_SOURCE_DIR}/core.h" - "${COMMON_SOURCE_DIR}/db.h" - "${COMMON_SOURCE_DIR}/des.h" - "${COMMON_SOURCE_DIR}/ers.h" - "${COMMON_SOURCE_DIR}/grfio.h" - "${COMMON_SOURCE_DIR}/malloc.h" - "${COMMON_SOURCE_DIR}/mapindex.h" - "${COMMON_SOURCE_DIR}/md5calc.h" - "${COMMON_SOURCE_DIR}/nullpo.h" - "${COMMON_SOURCE_DIR}/random.h" - "${COMMON_SOURCE_DIR}/showmsg.h" - "${COMMON_SOURCE_DIR}/socket.h" - "${COMMON_SOURCE_DIR}/strlib.h" - "${COMMON_SOURCE_DIR}/timer.h" - "${COMMON_SOURCE_DIR}/utils.h" - "${COMMON_SOURCE_DIR}/atomic.h" - "${COMMON_SOURCE_DIR}/spinlock.h" - "${COMMON_SOURCE_DIR}/thread.h" - "${COMMON_SOURCE_DIR}/mutex.h" - "${COMMON_SOURCE_DIR}/raconf.h" - "${COMMON_SOURCE_DIR}/mempool.h" - "${COMMON_SOURCE_DIR}/msg_conf.h" - "${COMMON_SOURCE_DIR}/cli.h" - "${COMMON_SOURCE_DIR}/yamlwrapper.h" + "${COMMON_SOURCE_DIR}/conf.hpp" + "${COMMON_SOURCE_DIR}/core.hpp" + "${COMMON_SOURCE_DIR}/db.hpp" + "${COMMON_SOURCE_DIR}/des.hpp" + "${COMMON_SOURCE_DIR}/ers.hpp" + "${COMMON_SOURCE_DIR}/grfio.hpp" + "${COMMON_SOURCE_DIR}/malloc.hpp" + "${COMMON_SOURCE_DIR}/mapindex.hpp" + "${COMMON_SOURCE_DIR}/md5calc.hpp" + "${COMMON_SOURCE_DIR}/nullpo.hpp" + "${COMMON_SOURCE_DIR}/random.hpp" + "${COMMON_SOURCE_DIR}/showmsg.hpp" + "${COMMON_SOURCE_DIR}/socket.hpp" + "${COMMON_SOURCE_DIR}/strlib.hpp" + "${COMMON_SOURCE_DIR}/timer.hpp" + "${COMMON_SOURCE_DIR}/utils.hpp" + "${COMMON_SOURCE_DIR}/msg_conf.hpp" + "${COMMON_SOURCE_DIR}/cli.hpp" "${COMMON_SOURCE_DIR}/utilities.hpp" - ${LIBCONFIG_HEADERS} # needed by conf.h/showmsg.h + ${LIBCONFIG_HEADERS} # needed by conf.hpp/showmsg.hpp CACHE INTERNAL "common_base headers" ) set( COMMON_BASE_SOURCES - "${COMMON_SOURCE_DIR}/conf.c" + "${COMMON_SOURCE_DIR}/conf.cpp" "${COMMON_SOURCE_DIR}/core.cpp" - "${COMMON_SOURCE_DIR}/db.c" - "${COMMON_SOURCE_DIR}/des.c" - "${COMMON_SOURCE_DIR}/ers.c" - "${COMMON_SOURCE_DIR}/grfio.c" - "${COMMON_SOURCE_DIR}/malloc.c" - "${COMMON_SOURCE_DIR}/mapindex.c" - "${COMMON_SOURCE_DIR}/md5calc.c" - "${COMMON_SOURCE_DIR}/nullpo.c" - "${COMMON_SOURCE_DIR}/random.c" - "${COMMON_SOURCE_DIR}/showmsg.c" - "${COMMON_SOURCE_DIR}/socket.c" - "${COMMON_SOURCE_DIR}/strlib.c" - "${COMMON_SOURCE_DIR}/timer.c" - "${COMMON_SOURCE_DIR}/utils.c" - "${COMMON_SOURCE_DIR}/thread.c" - "${COMMON_SOURCE_DIR}/mutex.c" - "${COMMON_SOURCE_DIR}/mempool.c" - "${COMMON_SOURCE_DIR}/raconf.c" - "${COMMON_SOURCE_DIR}/msg_conf.c" - "${COMMON_SOURCE_DIR}/cli.c" - "${COMMON_SOURCE_DIR}/yamlwrapper.cpp" + "${COMMON_SOURCE_DIR}/db.cpp" + "${COMMON_SOURCE_DIR}/des.cpp" + "${COMMON_SOURCE_DIR}/ers.cpp" + "${COMMON_SOURCE_DIR}/grfio.cpp" + "${COMMON_SOURCE_DIR}/malloc.cpp" + "${COMMON_SOURCE_DIR}/mapindex.cpp" + "${COMMON_SOURCE_DIR}/md5calc.cpp" + "${COMMON_SOURCE_DIR}/nullpo.cpp" + "${COMMON_SOURCE_DIR}/random.cpp" + "${COMMON_SOURCE_DIR}/showmsg.cpp" + "${COMMON_SOURCE_DIR}/socket.cpp" + "${COMMON_SOURCE_DIR}/strlib.cpp" + "${COMMON_SOURCE_DIR}/timer.cpp" + "${COMMON_SOURCE_DIR}/utils.cpp" + "${COMMON_SOURCE_DIR}/msg_conf.cpp" + "${COMMON_SOURCE_DIR}/cli.cpp" "${COMMON_SOURCE_DIR}/utilities.cpp" - ${LIBCONFIG_SOURCES} # needed by conf.c/showmsg.c + ${LIBCONFIG_SOURCES} # needed by conf.cpp/showmsg.cpp CACHE INTERNAL "common_base sources" ) set( COMMON_BASE_INCLUDE_DIRS ${LIBCONFIG_INCLUDE_DIRS} @@ -134,10 +122,9 @@ set( COMMON_BASE_DEFINITIONS ${LIBCONFIG_DEFINITIONS} CACHE INTERNAL "common_base definitions" ) set( LIBRARIES ${GLOBAL_LIBRARIES} ${ZLIB_LIBRARIES} yaml-cpp ) -set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${YAML_INCLUDE_DIRS} ${MT19937AR_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS}} ) +set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${YAML_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS}} ) set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS}" ) -set( SOURCE_FILES ${MT19937AR_HEADERS} ${MT19937AR_SOURCES} ${COMMON_BASE_HEADERS} ${COMMON_BASE_SOURCES} ) -source_group( mt19937ar FILES ${MT19937AR_HEADERS} ${MT19937AR_SOURCES} ) +set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_BASE_SOURCES} ) source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_BASE_SOURCES} ) add_library( common_base ${SOURCE_FILES} ) @@ -162,10 +149,10 @@ if( HAVE_common_base AND WITH_MYSQL ) message( STATUS "Creating target common" ) set( COMMON_HEADERS ${COMMON_ALL_HEADERS} - "${CMAKE_CURRENT_SOURCE_DIR}/sql.h" + "${CMAKE_CURRENT_SOURCE_DIR}/sql.hpp" CACHE INTERNAL "common headers" ) set( COMMON_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/sql.c" + "${CMAKE_CURRENT_SOURCE_DIR}/sql.cpp" CACHE INTERNAL "common sources" ) set( DEPENDENCIES common_base yaml-cpp ) set( LIBRARIES ${GLOBAL_LIBRARIES} ${MYSQL_LIBRARIES} ) diff --git a/src/common/Makefile.in b/src/common/Makefile.in index d36c795c2f..144941ea7f 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -1,17 +1,11 @@ -#COMMON_OBJ = $(ls *.c | grep -viw sql.c | sed -e "s/\.c/\.o/g") COMMON_OBJ = core.o socket.o timer.o db.o nullpo.o malloc.o showmsg.o strlib.o utils.o utilities.o \ grfio.o mapindex.o ers.o md5calc.o minicore.o minisocket.o minimalloc.o random.o des.o \ - conf.o thread.o mutex.o raconf.o mempool.o msg_conf.o cli.o sql.o yamlwrapper.o + conf.o msg_conf.o cli.o sql.o COMMON_DIR_OBJ = $(COMMON_OBJ:%=obj/%) -COMMON_H = $(shell ls ../common/*.h) -COMMON_H += $(shell ls ../common/*.hpp) +COMMON_H = $(shell ls ../common/*.hpp) COMMON_AR = obj/common.a -MT19937AR_OBJ = ../../3rdparty/mt19937ar/mt19937ar.o -MT19937AR_H = ../../3rdparty/mt19937ar/mt19937ar.h -MT19937AR_INCLUDE = -I../../3rdparty/mt19937ar - LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h) LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig @@ -64,28 +58,17 @@ $(COMMON_AR): $(COMMON_DIR_OBJ) @echo " AR $@" @@AR@ rcs $(COMMON_AR) $(COMMON_DIR_OBJ) -common: obj $(COMMON_DIR_OBJ) $(MT19937AR_OBJ) $(LIBCONFIG_AR) $(YAML_CPP_AR) $(COMMON_AR) +common: obj $(COMMON_DIR_OBJ) $(LIBCONFIG_AR) $(YAML_CPP_AR) $(COMMON_AR) -obj/%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) - @echo " CC $<" - @@CC@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< - -obj/%.o: %.cpp $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) +obj/%.o: %.cpp $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H) @echo " CXX $<" - @@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< -obj/mini%.o: %.c $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) - @echo " CC $<" - @@CC@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $< - -obj/mini%.o: %.cpp $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) +obj/mini%.o: %.cpp $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H) @echo " CXX $<" - @@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAGS@ @CFLAGS_AR@ $(LIBCONFIG_INCLUDE) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ -DMINICORE @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing object files -$(MT19937AR_OBJ): - @$(MAKE) -C ../../3rdparty/mt19937ar - $(LIBCONFIG_AR): @$(MAKE) -C ../../3rdparty/libconfig diff --git a/src/common/atomic.h b/src/common/atomic.h deleted file mode 100644 index 3412c6db9c..0000000000 --- a/src/common/atomic.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _rA_ATOMIC_H_ -#define _rA_ATOMIC_H_ - -// Atomic Operations -// (Interlocked CompareExchange, Add .. and so on ..) -// -// Implementation varies / depends on: -// - Architecture -// - Compiler -// - Operating System -// -// our Abstraction is fully API-Compatible to Microsofts implementation @ NT5.0+ -// -#include "cbasetypes.h" - -#if defined(_MSC_VER) -#include "winapi.hpp" - -// This checks if C/C++ Compiler Version is 18.00 or Windows is older than Vista -#if _MSC_VER < 1800 || WINVER < _WIN32_WINNT_VISTA - -#if !defined(_M_X64) -// When compiling for windows 32bit, the 8byte interlocked operations are not provided by microsoft -// (because they need at least i586 so its not generic enough.. ... ) -forceinline int64 InterlockedCompareExchange64(volatile int64 *dest, int64 exch, int64 _cmp){ - _asm{ - lea esi,_cmp; - lea edi,exch; - - mov eax,[esi]; - mov edx,4[esi]; - mov ebx,[edi]; - mov ecx,4[edi]; - mov esi,dest; - - lock CMPXCHG8B [esi]; - } -} - - -forceinline volatile int64 InterlockedIncrement64(volatile int64 *addend){ - __int64 old; - do{ - old = *addend; - }while(InterlockedCompareExchange64(addend, (old+1), old) != old); - - return (old + 1); -} - - - -forceinline volatile int64 InterlockedDecrement64(volatile int64 *addend){ - __int64 old; - - do{ - old = *addend; - }while(InterlockedCompareExchange64(addend, (old-1), old) != old); - - return (old - 1); -} - -forceinline volatile int64 InterlockedExchangeAdd64(volatile int64 *addend, int64 increment){ - __int64 old; - - do{ - old = *addend; - }while(InterlockedCompareExchange64(addend, (old + increment), old) != old); - - return old; -} - -forceinline volatile int64 InterlockedExchange64(volatile int64 *target, int64 val){ - __int64 old; - do{ - old = *target; - }while(InterlockedCompareExchange64(target, val, old) != old); - - return old; -} - -#endif //endif 32bit windows - -#endif //endif _msc_ver check - -#elif defined(__GNUC__) - -// The __sync functions are available on x86 or ARMv6+ -//need to proper dig into arm macro, -//see http://sourceforge.net/p/predef/wiki/Architectures/ -#if !defined(__x86_64__) && !defined(__i386__) \ - && ( !defined(__ARM_ARCH_VERSION__) || __ARM_ARCH_VERSION__ < 6 ) \ - && ( !defined(__ARM_ARCH) && __ARM_ARCH < 6 ) -#error Your Target Platfrom is not supported -#endif - - -static forceinline int64 InterlockedExchangeAdd64(volatile int64 *addend, int64 increment){ - return __sync_fetch_and_add(addend, increment); -}//end: InterlockedExchangeAdd64() - - -static forceinline int32 InterlockedExchangeAdd(volatile int32 *addend, int32 increment){ - return __sync_fetch_and_add(addend, increment); -}//end: InterlockedExchangeAdd() - - -static forceinline int64 InterlockedIncrement64(volatile int64 *addend){ - return __sync_add_and_fetch(addend, 1); -}//end: InterlockedIncrement64() - - -static forceinline int32 InterlockedIncrement(volatile int32 *addend){ - return __sync_add_and_fetch(addend, 1); -}//end: InterlockedIncrement() - - -static forceinline int64 InterlockedDecrement64(volatile int64 *addend){ - return __sync_sub_and_fetch(addend, 1); -}//end: InterlockedDecrement64() - - -static forceinline int32 InterlockedDecrement(volatile int32 *addend){ - return __sync_sub_and_fetch(addend, 1); -}//end: InterlockedDecrement() - - -static forceinline int64 InterlockedCompareExchange64(volatile int64 *dest, int64 exch, int64 cmp){ - return __sync_val_compare_and_swap(dest, cmp, exch); -}//end: InterlockedCompareExchange64() - - -static forceinline int32 InterlockedCompareExchange(volatile int32 *dest, int32 exch, int32 cmp){ - return __sync_val_compare_and_swap(dest, cmp, exch); -}//end: InterlockedCompareExchnage() - - -static forceinline int64 InterlockedExchange64(volatile int64 *target, int64 val){ - return __sync_lock_test_and_set(target, val); -}//end: InterlockedExchange64() - - -static forceinline int32 InterlockedExchange(volatile int32 *target, int32 val){ - return __sync_lock_test_and_set(target, val); -}//end: InterlockedExchange() - - -#endif //endif compiler decission - - -#endif diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.hpp similarity index 98% rename from src/common/cbasetypes.h rename to src/common/cbasetypes.hpp index 2ad5fe159b..41f9ecfb5c 100644 --- a/src/common/cbasetypes.h +++ b/src/common/cbasetypes.hpp @@ -1,5 +1,5 @@ -#ifndef _CBASETYPES_H_ -#define _CBASETYPES_H_ +#ifndef _CBASETYPES_HPP_ +#define _CBASETYPES_HPP_ /* +--------+-----------+--------+---------+ * | ILP32 | LP64 | ILP64 | (LL)P64 | @@ -75,7 +75,6 @@ ////////////////////////////////////////////////////////////////////////// // portable printf/scanf format macros and integer definitions -// NOTE: Visual C++ uses <inttypes.h> and <stdint.h> provided in /3rdparty ////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus #define __STDC_CONSTANT_MACROS @@ -83,8 +82,7 @@ #define __STDC_LIMIT_MACROS #endif -#include <inttypes.h> -#include <stdint.h> +#include <cinttypes> #include <limits.h> // temporary fix for bugreport:4961 (unintended conversion from signed to unsigned) @@ -437,4 +435,4 @@ static inline uint32 u32min(uint32 a, uint32 b){ return (a < b) ? a : b; } static inline uint64 u64min(uint64 a, uint64 b){ return (a < b) ? a : b; } static inline size_t zmin(size_t a, size_t b){ return (a < b) ? a : b; } -#endif /* _CBASETYPES_H_ */ +#endif /* _CBASETYPES_HPP_ */ diff --git a/src/common/cli.c b/src/common/cli.cpp similarity index 92% rename from src/common/cli.c rename to src/common/cli.cpp index 91b361f41b..aae8f2ca80 100644 --- a/src/common/cli.c +++ b/src/common/cli.cpp @@ -1,5 +1,5 @@ /** - * @file cli.c + * @file cli.cpp * Module purpose is to handle the console (cli=console line input) while the servers launch and run. * This contains functions common to all servers, but then dispatches them to a specific parser on each server. * Licensed under GNU GPL. @@ -16,10 +16,10 @@ #include <sys/poll.h> #endif -#include "cbasetypes.h" -#include "showmsg.h" -#include "core.h" -#include "cli.h" +#include "cbasetypes.hpp" +#include "showmsg.hpp" +#include "core.hpp" +#include "cli.hpp" //map confs const char* MAP_CONF_NAME; @@ -67,15 +67,14 @@ void display_versionscreen(bool do_exit) { const char* svn = get_svn_revision(); if( svn[0] != UNKNOWN_VERSION ) - ShowInfo("rAthena SVN Revision: '"CL_WHITE"%s"CL_RESET"'\n", svn); + ShowInfo("rAthena SVN Revision: '" CL_WHITE "%s" CL_RESET "'\n", svn); else { const char* git = get_git_hash(); if( git[0] != UNKNOWN_VERSION ) - ShowInfo("rAthena Git Hash: '"CL_WHITE"%s"CL_RESET"'\n", git); + ShowInfo("rAthena Git Hash: '" CL_WHITE "%s" CL_RESET "'\n", git); } - ShowInfo(CL_GREEN"Website/Forum:"CL_RESET"\thttp://rathena.org/\n"); - ShowInfo(CL_GREEN"IRC Channel:"CL_RESET"\tirc://irc.rizon.net/#rathena\n"); - ShowInfo("Open "CL_WHITE"readme.txt"CL_RESET" for more information.\n"); + ShowInfo(CL_GREEN "Website/Forum:" CL_RESET "\thttp://rathena.org/\n"); + ShowInfo("Open " CL_WHITE "README.md" CL_RESET " for more information.\n"); if (do_exit) exit(EXIT_SUCCESS); } diff --git a/src/common/cli.h b/src/common/cli.hpp similarity index 90% rename from src/common/cli.h rename to src/common/cli.hpp index dac3cc5a8f..6de4ec7681 100644 --- a/src/common/cli.h +++ b/src/common/cli.hpp @@ -1,5 +1,5 @@ /** - * @file cli.h + * @file cli.hpp * Module purpose is to handle the console (cli=console line input) while the servers launch and run. * This contains functions common to all servers, but then dispatches them to a specific parser on each server. * Licensed under GNU GPL. @@ -7,12 +7,8 @@ * @author rAthena Dev Team */ -#ifndef CLI_H -#define CLI_H - -#ifdef __cplusplus -extern "C" { -#endif +#ifndef CLI_HPP +#define CLI_HPP #define MAX_CONSOLE_IN 200 //max is map... #define MIN_CONSOLE_IN 4 //min is help @@ -41,9 +37,5 @@ int cli_get_options(int argc, char ** argv); int parse_console_timer(int tid, unsigned int tick, int id, intptr_t data); extern int parse_console(const char* buf); //particular for each serv -#ifdef __cplusplus -} -#endif - -#endif /* CLI_H */ +#endif /* CLI_HPP */ diff --git a/src/common/common-minicore.vcxproj b/src/common/common-minicore.vcxproj index c7fc725b28..487798e099 100644 --- a/src/common/common-minicore.vcxproj +++ b/src/common/common-minicore.vcxproj @@ -19,43 +19,39 @@ </ProjectConfiguration> </ItemGroup> <ItemGroup> - <ClInclude Include="cbasetypes.h" /> - <ClInclude Include="cli.h" /> - <ClInclude Include="conf.h" /> - <ClInclude Include="core.h" /> - <ClInclude Include="des.h" /> - <ClInclude Include="grfio.h" /> - <ClInclude Include="malloc.h" /> - <ClInclude Include="mapindex.h" /> - <ClInclude Include="md5calc.h" /> - <ClInclude Include="mmo.h" /> - <ClInclude Include="msg_conf.h" /> - <ClInclude Include="nullpo.h" /> - <ClInclude Include="raconf.h" /> - <ClInclude Include="random.h" /> - <ClInclude Include="showmsg.h" /> - <ClInclude Include="strlib.h" /> - <ClInclude Include="utils.h" /> + <ClInclude Include="cbasetypes.hpp" /> + <ClInclude Include="cli.hpp" /> + <ClInclude Include="conf.hpp" /> + <ClInclude Include="core.hpp" /> + <ClInclude Include="des.hpp" /> + <ClInclude Include="grfio.hpp" /> + <ClInclude Include="malloc.hpp" /> + <ClInclude Include="mapindex.hpp" /> + <ClInclude Include="md5calc.hpp" /> + <ClInclude Include="mmo.hpp" /> + <ClInclude Include="msg_conf.hpp" /> + <ClInclude Include="nullpo.hpp" /> + <ClInclude Include="random.hpp" /> + <ClInclude Include="showmsg.hpp" /> + <ClInclude Include="strlib.hpp" /> + <ClInclude Include="utils.hpp" /> <ClInclude Include="winapi.hpp" /> </ItemGroup> <ItemGroup> - <ClCompile Include="cli.c" /> - <ClCompile Include="conf.c" /> - <ClCompile Include="core.cpp"> - <CompileAs>CompileAsCpp</CompileAs> - </ClCompile> - <ClCompile Include="des.c" /> - <ClCompile Include="grfio.c" /> - <ClCompile Include="malloc.c" /> - <ClCompile Include="mapindex.c" /> - <ClCompile Include="md5calc.c" /> - <ClCompile Include="msg_conf.c" /> - <ClCompile Include="nullpo.c" /> - <ClCompile Include="raconf.c" /> - <ClCompile Include="random.c" /> - <ClCompile Include="showmsg.c" /> - <ClCompile Include="strlib.c" /> - <ClCompile Include="utils.c" /> + <ClCompile Include="cli.cpp" /> + <ClCompile Include="conf.cpp" /> + <ClCompile Include="core.cpp" /> + <ClCompile Include="des.cpp" /> + <ClCompile Include="grfio.cpp" /> + <ClCompile Include="malloc.cpp" /> + <ClCompile Include="mapindex.cpp" /> + <ClCompile Include="md5calc.cpp" /> + <ClCompile Include="msg_conf.cpp" /> + <ClCompile Include="nullpo.cpp" /> + <ClCompile Include="random.cpp" /> + <ClCompile Include="showmsg.cpp" /> + <ClCompile Include="strlib.cpp" /> + <ClCompile Include="utils.cpp" /> <ClCompile Include="winapi.cpp" /> </ItemGroup> <PropertyGroup Label="Globals"> @@ -130,8 +126,8 @@ <Optimization>Disabled</Optimization> <PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> </ClCompile> <Link> <SubSystem>Windows</SubSystem> @@ -146,8 +142,8 @@ <Optimization>Disabled</Optimization> <PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> </ClCompile> <Link> <SubSystem>Windows</SubSystem> @@ -164,8 +160,8 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> </ClCompile> <Link> <SubSystem>Windows</SubSystem> @@ -184,8 +180,8 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>$(DefineConstants);WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_WINSOCK_DEPRECATED_NO_WARNINGS;LIBCONFIG_STATIC;YY_USE_CONST;MINICORE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories> </ClCompile> <Link> <SubSystem>Windows</SubSystem> diff --git a/src/common/common-minicore.vcxproj.filters b/src/common/common-minicore.vcxproj.filters index 5cb744f813..e9a4a6b998 100644 --- a/src/common/common-minicore.vcxproj.filters +++ b/src/common/common-minicore.vcxproj.filters @@ -11,55 +11,52 @@ </Filter> </ItemGroup> <ItemGroup> - <ClInclude Include="cbasetypes.h"> + <ClInclude Include="cbasetypes.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="cli.h"> + <ClInclude Include="cli.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="conf.h"> + <ClInclude Include="conf.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="core.h"> + <ClInclude Include="core.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="des.h"> + <ClInclude Include="des.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="grfio.h"> + <ClInclude Include="grfio.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="malloc.h"> + <ClInclude Include="malloc.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mapindex.h"> + <ClInclude Include="mapindex.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="md5calc.h"> + <ClInclude Include="md5calc.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mmo.h"> + <ClInclude Include="mmo.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="msg_conf.h"> + <ClInclude Include="msg_conf.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="nullpo.h"> + <ClInclude Include="nullpo.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="raconf.h"> + <ClInclude Include="random.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="random.h"> + <ClInclude Include="showmsg.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="showmsg.h"> + <ClInclude Include="strlib.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="strlib.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="utils.h"> + <ClInclude Include="utils.hpp"> <Filter>Header Files</Filter> </ClInclude> <ClInclude Include="winapi.hpp"> @@ -67,49 +64,46 @@ </ClInclude> </ItemGroup> <ItemGroup> - <ClCompile Include="cli.c"> + <ClCompile Include="cli.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="conf.c"> + <ClCompile Include="conf.cpp"> <Filter>Source Files</Filter> </ClCompile> <ClCompile Include="core.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="des.c"> + <ClCompile Include="des.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="grfio.c"> + <ClCompile Include="grfio.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="malloc.c"> + <ClCompile Include="malloc.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="mapindex.c"> + <ClCompile Include="mapindex.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="md5calc.c"> + <ClCompile Include="md5calc.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="msg_conf.c"> + <ClCompile Include="msg_conf.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="nullpo.c"> + <ClCompile Include="nullpo.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="raconf.c"> + <ClCompile Include="random.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="random.c"> + <ClCompile Include="showmsg.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="showmsg.c"> + <ClCompile Include="strlib.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="strlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="utils.c"> + <ClCompile Include="utils.cpp"> <Filter>Source Files</Filter> </ClCompile> <ClInclude Include="winapi.cpp"> diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj index 8d72db2a24..b18eee6b82 100644 --- a/src/common/common.vcxproj +++ b/src/common/common.vcxproj @@ -19,65 +19,51 @@ </ProjectConfiguration> </ItemGroup> <ItemGroup> - <ClInclude Include="atomic.h" /> - <ClInclude Include="cbasetypes.h" /> - <ClInclude Include="cli.h" /> - <ClInclude Include="conf.h" /> - <ClInclude Include="core.h" /> - <ClInclude Include="db.h" /> - <ClInclude Include="des.h" /> - <ClInclude Include="ers.h" /> - <ClInclude Include="grfio.h" /> - <ClInclude Include="malloc.h" /> - <ClInclude Include="mapindex.h" /> - <ClInclude Include="md5calc.h" /> - <ClInclude Include="mempool.h" /> - <ClInclude Include="mmo.h" /> - <ClInclude Include="msg_conf.h" /> - <ClInclude Include="mutex.h" /> - <ClInclude Include="nullpo.h" /> - <ClInclude Include="raconf.h" /> - <ClInclude Include="random.h" /> - <ClInclude Include="showmsg.h" /> - <ClInclude Include="socket.h" /> - <ClInclude Include="spinlock.h" /> - <ClInclude Include="sql.h" /> - <ClInclude Include="strlib.h" /> - <ClInclude Include="thread.h" /> - <ClInclude Include="timer.h" /> - <ClInclude Include="utils.h" /> + <ClInclude Include="cbasetypes.hpp" /> + <ClInclude Include="cli.hpp" /> + <ClInclude Include="conf.hpp" /> + <ClInclude Include="core.hpp" /> + <ClInclude Include="db.hpp" /> + <ClInclude Include="des.hpp" /> + <ClInclude Include="ers.hpp" /> + <ClInclude Include="grfio.hpp" /> + <ClInclude Include="malloc.hpp" /> + <ClInclude Include="mapindex.hpp" /> + <ClInclude Include="md5calc.hpp" /> + <ClInclude Include="mmo.hpp" /> + <ClInclude Include="msg_conf.hpp" /> + <ClInclude Include="nullpo.hpp" /> + <ClInclude Include="random.hpp" /> + <ClInclude Include="showmsg.hpp" /> + <ClInclude Include="socket.hpp" /> + <ClInclude Include="sql.hpp" /> + <ClInclude Include="strlib.hpp" /> + <ClInclude Include="timer.hpp" /> + <ClInclude Include="utils.hpp" /> <ClInclude Include="winapi.hpp" /> - <ClInclude Include="yamlwrapper.h" /> <ClInclude Include="utilities.hpp" /> </ItemGroup> <ItemGroup> - <ClCompile Include="cli.c" /> - <ClCompile Include="conf.c" /> - <ClCompile Include="core.cpp"> - <CompileAs>CompileAsCpp</CompileAs> - </ClCompile> - <ClCompile Include="db.c" /> - <ClCompile Include="des.c" /> - <ClCompile Include="ers.c" /> - <ClCompile Include="grfio.c" /> - <ClCompile Include="malloc.c" /> - <ClCompile Include="mapindex.c" /> - <ClCompile Include="md5calc.c" /> - <ClCompile Include="mempool.c" /> - <ClCompile Include="msg_conf.c" /> - <ClCompile Include="mutex.c" /> - <ClCompile Include="nullpo.c" /> - <ClCompile Include="raconf.c" /> - <ClCompile Include="random.c" /> - <ClCompile Include="showmsg.c" /> - <ClCompile Include="socket.c" /> - <ClCompile Include="sql.c" /> - <ClCompile Include="strlib.c" /> - <ClCompile Include="thread.c" /> - <ClCompile Include="timer.c" /> - <ClCompile Include="utils.c" /> + <ClCompile Include="cli.cpp" /> + <ClCompile Include="conf.cpp" /> + <ClCompile Include="core.cpp" /> + <ClCompile Include="db.cpp" /> + <ClCompile Include="des.cpp" /> + <ClCompile Include="ers.cpp" /> + <ClCompile Include="grfio.cpp" /> + <ClCompile Include="malloc.cpp" /> + <ClCompile Include="mapindex.cpp" /> + <ClCompile Include="md5calc.cpp" /> + <ClCompile Include="msg_conf.cpp" /> + <ClCompile Include="nullpo.cpp" /> + <ClCompile Include="random.cpp" /> + <ClCompile Include="showmsg.cpp" /> + <ClCompile Include="socket.cpp" /> + <ClCompile Include="sql.cpp" /> + <ClCompile Include="strlib.cpp" /> + <ClCompile Include="timer.cpp" /> + <ClCompile Include="utils.cpp" /> <ClCompile Include="winapi.cpp" /> - <ClCompile Include="yamlwrapper.cpp" /> <ClCompile Include="utilities.cpp" /> </ItemGroup> <PropertyGroup Label="Globals"> @@ -151,7 +137,7 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>$(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;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> @@ -169,7 +155,7 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>$(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;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> @@ -189,7 +175,7 @@ <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>$(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)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -211,7 +197,7 @@ <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>$(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)</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\mt19937ar\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\mysql\include\;$(SolutionDir)3rdparty\libconfig\;$(SolutionDir)3rdparty\yaml-cpp\include\</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> diff --git a/src/common/common.vcxproj.filters b/src/common/common.vcxproj.filters index f94aeb85d6..fe0d2941e7 100644 --- a/src/common/common.vcxproj.filters +++ b/src/common/common.vcxproj.filters @@ -11,173 +11,137 @@ </Filter> </ItemGroup> <ItemGroup> - <ClInclude Include="atomic.h"> + <ClInclude Include="cbasetypes.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="cbasetypes.h"> + <ClInclude Include="cli.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="cli.h"> + <ClInclude Include="conf.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="conf.h"> + <ClInclude Include="core.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="core.h"> + <ClInclude Include="db.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="db.h"> + <ClInclude Include="des.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="des.h"> + <ClInclude Include="ers.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="ers.h"> + <ClInclude Include="grfio.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="grfio.h"> + <ClInclude Include="malloc.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="malloc.h"> + <ClInclude Include="mapindex.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mapindex.h"> + <ClInclude Include="md5calc.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="md5calc.h"> + <ClInclude Include="mmo.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mempool.h"> + <ClInclude Include="msg_conf.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mmo.h"> + <ClInclude Include="nullpo.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="msg_conf.h"> + <ClInclude Include="random.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="mutex.h"> + <ClInclude Include="showmsg.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="nullpo.h"> + <ClInclude Include="socket.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="raconf.h"> + <ClInclude Include="sql.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="random.h"> + <ClInclude Include="strlib.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="showmsg.h"> + <ClInclude Include="timer.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="socket.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="spinlock.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="sql.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="strlib.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="thread.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="timer.h"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="utils.h"> + <ClInclude Include="utils.hpp"> <Filter>Header Files</Filter> </ClInclude> <ClInclude Include="winapi.hpp"> <Filter>Header Files</Filter> </ClInclude> - <ClInclude Include="yamlwrapper.h"> - <Filter>Header Files</Filter> - </ClInclude> <ClInclude Include="utilities.hpp"> <Filter>Header Files</Filter> </ClInclude> </ItemGroup> <ItemGroup> - <ClCompile Include="cli.c"> + <ClCompile Include="cli.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="conf.c"> + <ClCompile Include="conf.cpp"> <Filter>Source Files</Filter> </ClCompile> <ClCompile Include="core.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="db.c"> + <ClCompile Include="db.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="des.c"> + <ClCompile Include="des.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="ers.c"> + <ClCompile Include="ers.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="grfio.c"> + <ClCompile Include="grfio.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="malloc.c"> + <ClCompile Include="malloc.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="mapindex.c"> + <ClCompile Include="mapindex.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="md5calc.c"> + <ClCompile Include="md5calc.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="mempool.c"> + <ClCompile Include="msg_conf.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="msg_conf.c"> + <ClCompile Include="nullpo.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="mutex.c"> + <ClCompile Include="random.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="nullpo.c"> + <ClCompile Include="showmsg.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="raconf.c"> + <ClCompile Include="socket.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="random.c"> + <ClCompile Include="sql.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="showmsg.c"> + <ClCompile Include="strlib.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="socket.c"> + <ClCompile Include="timer.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="sql.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="strlib.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="thread.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="timer.c"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="utils.c"> + <ClCompile Include="utils.cpp"> <Filter>Source Files</Filter> </ClCompile> <ClInclude Include="winapi.cpp"> <Filter>Source Files</Filter> </ClInclude> - <ClCompile Include="yamlwrapper.cpp"> - <Filter>Source Files</Filter> - </ClCompile> <ClCompile Include="utilities.cpp"> <Filter>Source Files</Filter> </ClCompile> diff --git a/src/common/conf.c b/src/common/conf.cpp similarity index 98% rename from src/common/conf.c rename to src/common/conf.cpp index 94a649ecc5..3964065e64 100644 --- a/src/common/conf.c +++ b/src/common/conf.cpp @@ -1,8 +1,8 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "conf.h" -#include "showmsg.h" // ShowError +#include "conf.hpp" +#include "showmsg.hpp" // ShowError int conf_read_file(config_t *config, const char *config_filename) { diff --git a/src/common/conf.h b/src/common/conf.hpp similarity index 68% rename from src/common/conf.h rename to src/common/conf.hpp index 249372666e..f441d2d197 100644 --- a/src/common/conf.h +++ b/src/common/conf.hpp @@ -1,21 +1,13 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONF_H_ -#define _CONF_H_ +#ifndef _CONF_HPP_ +#define _CONF_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" +#include "cbasetypes.hpp" #include "../../3rdparty/libconfig/libconfig.h" int conf_read_file(config_t *config, const char *config_filename); int config_setting_copy(config_setting_t *parent, const config_setting_t *src); -#ifdef __cplusplus -} -#endif - -#endif // _CONF_H_ +#endif // _CONF_HPP_ diff --git a/src/common/core.cpp b/src/common/core.cpp index 7c24f9858d..7eea502ff7 100644 --- a/src/common/core.cpp +++ b/src/common/core.cpp @@ -1,19 +1,17 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "mmo.h" -#include "cbasetypes.h" -#include "showmsg.h" -#include "malloc.h" -#include "core.h" -#include "strlib.h" +#include "mmo.hpp" +#include "cbasetypes.hpp" +#include "showmsg.hpp" +#include "malloc.hpp" +#include "core.hpp" +#include "strlib.hpp" #ifndef MINICORE -#include "ers.h" -#include "socket.h" -#include "timer.h" -#include "thread.h" -#include "mempool.h" -#include "sql.h" +#include "ers.hpp" +#include "socket.hpp" +#include "timer.hpp" +#include "sql.hpp" #endif #include <stdlib.h> #include <signal.h> @@ -125,7 +123,7 @@ static void sig_proc(int sn) { //run_flag = 0; // should we quit? break; case SIGPIPE: - //ShowInfo ("Broken pipe found... closing socket\n"); // set to eof in socket.c + //ShowInfo ("Broken pipe found... closing socket\n"); // set to eof in socket.cpp break; // does nothing here #endif } @@ -351,8 +349,6 @@ int main (int argc, char **argv) usercheck(); Sql_Init(); - rathread_init(); - mempool_init(); db_init(); signals_init(); @@ -376,8 +372,6 @@ int main (int argc, char **argv) timer_final(); socket_final(); db_final(); - mempool_final(); - rathread_final(); ers_final(); #endif diff --git a/src/common/core.h b/src/common/core.hpp similarity index 91% rename from src/common/core.h rename to src/common/core.hpp index 43551a2b42..c50fb1bd80 100644 --- a/src/common/core.h +++ b/src/common/core.hpp @@ -1,12 +1,8 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CORE_H_ -#define _CORE_H_ - -#ifdef __cplusplus -extern "C" { -#endif +#ifndef _CORE_HPP_ +#define _CORE_HPP_ /* so that developers with --enable-debug can raise signals from any section of the code they'd like */ #ifdef DEBUG @@ -57,8 +53,4 @@ enum E_CORE_ST /// If NULL, runflag is set to CORE_ST_STOP instead. extern void (*shutdown_callback)(void); -#ifdef __cplusplus -} -#endif - -#endif /* _CORE_H_ */ +#endif /* _CORE_HPP_ */ diff --git a/src/common/db.c b/src/common/db.cpp similarity index 99% rename from src/common/db.c rename to src/common/db.cpp index a4348f2879..f49d21f43d 100644 --- a/src/common/db.c +++ b/src/common/db.cpp @@ -65,16 +65,16 @@ * @version 2006/12/21 * @author Athena Dev team * @encoding US-ASCII - * @see #db.h + * @see #db.hpp \*****************************************************************************/ -#include "db.h" +#include "db.hpp" -#include "ers.h" -#include "malloc.h" -#include "mmo.h" -#include "showmsg.h" -#include "strlib.h" +#include "ers.hpp" +#include "malloc.hpp" +#include "mmo.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" #include <stdio.h> #include <stdlib.h> @@ -2565,7 +2565,7 @@ DBMap* db_alloc(const char *file, const char *func, int line, DBType type, DBOpt db->free_lock = 0; /* Other */ snprintf(ers_name, 50, "db_alloc:nodes:%s:%s:%d",func,file,line); - db->nodes = ers_new(sizeof(struct dbn),ers_name,ERS_OPT_WAIT|ERS_OPT_FREE_NAME|ERS_OPT_CLEAN); + db->nodes = ers_new(sizeof(struct dbn),ers_name,ERS_DBN_OPTIONS); db->cmp = db_default_cmp(type); db->hash = db_default_hash(type); db->release = db_default_release(type, options); @@ -2758,8 +2758,8 @@ void* db_data2ptr(DBData *data) * @see #db_final(void) */ void db_init(void) { - db_iterator_ers = ers_new(sizeof(struct DBIterator_impl),"db.c::db_iterator_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK); - db_alloc_ers = ers_new(sizeof(struct DBMap_impl),"db.c::db_alloc_ers",ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK); + db_iterator_ers = ers_new(sizeof(struct DBIterator_impl),"db.cpp::db_iterator_ers",ERS_CACHE_OPTIONS); + db_alloc_ers = ers_new(sizeof(struct DBMap_impl),"db.cpp::db_alloc_ers",ERS_CACHE_OPTIONS); ers_chunk_size(db_alloc_ers, 50); ers_chunk_size(db_iterator_ers, 10); DB_COUNTSTAT(db_init); diff --git a/src/common/db.h b/src/common/db.hpp similarity index 99% rename from src/common/db.h rename to src/common/db.hpp index 99d5aa6310..065403975b 100644 --- a/src/common/db.h +++ b/src/common/db.hpp @@ -37,18 +37,14 @@ * @author (Athena build 4859) Flavio @ Amazon Project * * @author (up to Athena build 4706) Athena Dev Teams * * @encoding US-ASCII * - * @see common#db.c * + * @see common#db.cpp * \*****************************************************************************/ -#ifndef _DB_H_ -#define _DB_H_ +#ifndef _DB_HPP_ +#define _DB_HPP_ #include <stdarg.h> -#include "cbasetypes.h" - -#ifdef __cplusplus -extern "C" { -#endif +#include "cbasetypes.hpp" /*****************************************************************************\ * (1) Section with public typedefs, enums, unions, structures and defines. * @@ -1659,8 +1655,4 @@ void linkdb_foreach (struct linkdb_node** head, LinkDBFunc func, ...); /// @return negative if v1 is top, positive if v2 is top, 0 if equal #define BHEAP_MAXTOPCMP(v1,v2) ( v1 == v2 ? 0 : v1 > v2 ? -1 : 1 ) -#ifdef __cplusplus -} -#endif - -#endif /* _DB_H_ */ +#endif /* _DB_HPP_ */ diff --git a/src/common/des.c b/src/common/des.cpp similarity index 99% rename from src/common/des.c rename to src/common/des.cpp index ee45731e79..5ff97b526a 100644 --- a/src/common/des.c +++ b/src/common/des.cpp @@ -1,7 +1,7 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "des.h" +#include "cbasetypes.hpp" +#include "des.hpp" /// DES (Data Encryption Standard) algorithm, modified version. diff --git a/src/common/des.h b/src/common/des.hpp similarity index 83% rename from src/common/des.h rename to src/common/des.hpp index e42136436e..6bfb593a24 100644 --- a/src/common/des.h +++ b/src/common/des.hpp @@ -1,7 +1,7 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _DES_H_ -#define _DES_H_ +#ifndef _DES_HPP_ +#define _DES_HPP_ /// One 64-bit block. @@ -12,4 +12,4 @@ void des_decrypt_block(BIT64* block); void des_decrypt(unsigned char* data, size_t size); -#endif // _DES_H_ +#endif // _DES_HPP_ diff --git a/src/common/ers.c b/src/common/ers.cpp similarity index 92% rename from src/common/ers.c rename to src/common/ers.cpp index 98d1014c24..1ae9ad348b 100644 --- a/src/common/ers.c +++ b/src/common/ers.cpp @@ -37,15 +37,15 @@ * @version 1.0 - ERS Rework * * @author GreenBox @ rAthena Project * * @encoding US-ASCII * - * @see common#ers.h * + * @see common#ers.hpp * \*****************************************************************************/ -#include "cbasetypes.h" -#include "ers.h" -#include "malloc.h" // CREATE, RECREATE, aMalloc, aFree -#include "nullpo.h" -#include "showmsg.h" // ShowMessage, ShowError, ShowFatalError, CL_BOLD, CL_NORMAL +#include "cbasetypes.hpp" +#include "ers.hpp" +#include "malloc.hpp" // CREATE, RECREATE, aMalloc, aFree +#include "nullpo.hpp" +#include "showmsg.hpp" // ShowMessage, ShowError, ShowFatalError, CL_BOLD, CL_NORMAL #include <stdlib.h> #include <string.h> @@ -141,7 +141,7 @@ static ers_cache_t *ers_find_cache(unsigned int size, enum ERSOptions Options) { cache->UsedObjs = 0; cache->Max = 0; cache->ChunkSize = ERS_BLOCK_ENTRIES; - cache->Options = (Options & ERS_CACHE_OPTIONS); + cache->Options = (enum ERSOptions)(Options & ERS_CACHE_OPTIONS); if (CacheList == NULL) { @@ -335,7 +335,7 @@ void ers_report(void) { for (cache = CacheList; cache; cache = cache->Next) { cache_c++; - ShowMessage(CL_BOLD"[ERS Cache of size '"CL_NORMAL""CL_WHITE"%u"CL_NORMAL""CL_BOLD"' report]\n"CL_NORMAL, cache->ObjectSize); + ShowMessage(CL_BOLD"[ERS Cache of size '" CL_NORMAL "" CL_WHITE "%u" CL_NORMAL "" CL_BOLD "' report]\n" CL_NORMAL, cache->ObjectSize); ShowMessage("\tinstances : %u\n", cache->ReferenceCount); ShowMessage("\tblocks in use : %u/%u\n", cache->UsedObjs, cache->UsedObjs+cache->Free); ShowMessage("\tblocks unused : %u\n", cache->Free); @@ -346,9 +346,9 @@ void ers_report(void) { memory_b += cache->UsedObjs * cache->ObjectSize; memory_t += (cache->UsedObjs+cache->Free) * cache->ObjectSize; } - ShowInfo("ers_report: '"CL_WHITE"%u"CL_NORMAL"' caches in use\n",cache_c); - ShowInfo("ers_report: '"CL_WHITE"%u"CL_NORMAL"' blocks in use, consuming '"CL_WHITE"%.2f MB"CL_NORMAL"'\n",blocks_u,(double)((memory_b)/1024)/1024); - ShowInfo("ers_report: '"CL_WHITE"%u"CL_NORMAL"' blocks total, consuming '"CL_WHITE"%.2f MB"CL_NORMAL"' \n",blocks_a,(double)((memory_t)/1024)/1024); + ShowInfo("ers_report: '" CL_WHITE "%u" CL_NORMAL "' caches in use\n",cache_c); + ShowInfo("ers_report: '" CL_WHITE "%u" CL_NORMAL "' blocks in use, consuming '" CL_WHITE "%.2f MB" CL_NORMAL "'\n",blocks_u,(double)((memory_b)/1024)/1024); + ShowInfo("ers_report: '" CL_WHITE "%u" CL_NORMAL "' blocks total, consuming '" CL_WHITE "%.2f MB" CL_NORMAL "' \n",blocks_a,(double)((memory_t)/1024)/1024); } /** diff --git a/src/common/ers.h b/src/common/ers.hpp similarity index 98% rename from src/common/ers.h rename to src/common/ers.hpp index 51a45d951d..100e3cae61 100644 --- a/src/common/ers.h +++ b/src/common/ers.hpp @@ -37,14 +37,10 @@ * @author Flavio @ Amazon Project * * @encoding US-ASCII * \*****************************************************************************/ -#ifndef _ERS_H_ -#define _ERS_H_ +#ifndef _ERS_HPP_ +#define _ERS_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" +#include "cbasetypes.hpp" /*****************************************************************************\ * (1) All public parts of the Entry Reusage System. * @@ -85,6 +81,7 @@ enum ERSOptions { /* Compound, is used to determine whether it should be looking for a cache of matching options */ ERS_CACHE_OPTIONS = ERS_OPT_CLEAN|ERS_OPT_FLEX_CHUNK, ERS_CLEAN_OPTIONS = ERS_OPT_CLEAN|ERS_OPT_CLEAR, + ERS_DBN_OPTIONS = ERS_OPT_CLEAN|ERS_OPT_WAIT|ERS_OPT_FREE_NAME, }; /** @@ -180,8 +177,4 @@ void ers_report(void); void ers_final(void); #endif /* DISABLE_ERS / not DISABLE_ERS */ -#ifdef __cplusplus -} -#endif - -#endif /* _ERS_H_ */ +#endif /* _ERS_HPP_ */ diff --git a/src/common/evdp.h b/src/common/evdp.h deleted file mode 100644 index 7767a15140..0000000000 --- a/src/common/evdp.h +++ /dev/null @@ -1,168 +0,0 @@ -#ifndef _rA_EVDP_H_ -#define _rA_EVDP_H_ - -#include "cbasetypes.h" - -typedef struct EVDP_DATA EVDP_DATA; - - -//#idef EVDP_EPOLL -#include <sys/epoll.h> -struct EVDP_DATA{ - struct epoll_event ev_data; - bool ev_added; -}; -//#endif - - -enum EVDP_EVENTFLAGS{ - EVDP_EVENT_IN = 1, // Incomming data - EVDP_EVENT_OUT = 2, // Connection accepts writing. - EVDP_EVENT_HUP = 4 // Connection Closed. -}; - -typedef struct EVDP_EVENT{ - int32 events; // due to performance reasons, this should be the first member. - int32 fd; // Connection Identifier -} EVDP_EVENT; - - - -/** - * Network Event Dispatcher Initialization / Finalization routines - */ -void evdp_init(); -void evdp_final(); - - -/** - * Will Wait for events. - * - * @param *out_ev pointer to array in size at least of max_events. - * @param max_events max no of events to report with this call (coalesc) - * @param timeout_ticks max time to wait in ticks (milliseconds) - * - * @Note: - * The function will block until an event has occured on one of the monitored connections - * or the timeout of timeout_ticks has passed by. - * Upon successfull call (changed connections) this function will write the connection - * Identifier & event to the out_fds array. - * - * @return 0 -> Timeout, > 0 no of changed connections. - */ -int32 evdp_wait(EVDP_EVENT *out_fds, int32 max_events, int32 timeout_ticks); - - -/** - * Applys the given mask on the given connection. - * - * @param fd connection identifier - * @param *ep event data pointer for the connection - * @param mask new event mask we're monitoring for. - */ -//void evdp_apply(int32 fd, EVDP_DATA *ep, int32 mask); - - -/** - * Adds a connection (listner) to the event notification system. - * - * @param fd connection identifier - * @param *ep event data pointer for the connection - * - * @note: - * Listener type sockets are edge triggered, (see epoll manual for more information) - * - This basicaly means that youll receive one event, adn you have to accept until accept returns an error (nothing to accept) - * - * MONITORS by default: IN - * - * @return success indicator. - */ -bool evdp_addlistener(int32 fd, EVDP_DATA *ep); - -/** - * Adds a connection (client connectioN) to the event notification system - * - * @param fd connection identifier - * @param *ep event data pointr for the connection - * - * @note: - * - * MONITORS by default: IN, HUP - * - * @return success indicator. - */ -bool evdp_addclient(int32 fd, EVDP_DATA *ep); - -/** - * Adds a connection (pending / outgoing connection!) to the event notification system. - * - * @param fd connection identifier - * @param *ep event data pointer for the conneciton. - * - * @note: - * Outgoing connection type sockets are getting monitored for connection established - * successfull - * - if the connection has been established - we're generitng a writable notification .. (send) - * this is typical for BSD / posix conform network stacks. - * - Additinionally its edge triggered. - * - * @see evdp_outgoingconnection_established - * - * - * @return success indicator - */ -bool evdp_addconnecting(int32 fd, EVDP_DATA *ep); - -/** - * Adds an outgoing connection to the normal event notification system after it has been successfully established. - * - * @param fd connection identifier - * @param *ep event data pointer for the conneciton. - - * @note - * after this call, its handled like a normal "client" connection (incomming) - * - * @rturn success indicator - */ -bool evdp_outgoingconnection_established(int32 fd, EVDP_DATA *ep); - -/** - * Marks a connection to be monitored for writable. - * - * @param fd connection identifier - * @param *ep event data pointer for the connection - * - * @note: - * the connection must be already added (as client or listener) - * - * - * @return success indicator - */ -bool evdp_writable_add(int32 fd, EVDP_DATA *ep); - -/** - * Removes the connection from writable notification monitoring - * - * @param fd connection identifier - * @param *ep event data pointr for the connection - * - */ -void evdp_writable_remove(int32 fd, EVDP_DATA *ep); - -/** - * Removes an connectio from the event notification system. - * - * @param fd connection iditentfir - * @param *ep event data pointer for th connection - * - * - * @note: - * this will also clear the given EVENT_DATA block - * so the connection slot is in an "initial" blank status / ready to get reused. - * - */ -void evdp_remove(int32 fd, EVDP_DATA *ep); - - - -#endif diff --git a/src/common/evdp_epoll.c b/src/common/evdp_epoll.c deleted file mode 100644 index cd0cf5dacb..0000000000 --- a/src/common/evdp_epoll.c +++ /dev/null @@ -1,218 +0,0 @@ -// -// Event Dispatcher Abstraction for EPOLL -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// -// - - -#define EPOLL_MAX_PER_CYCLE 10 // Max Events to coalesc. per cycle. - - -static int epoll_fd = -1; - - -void evdp_init(){ - - epoll_fd = epoll_create( EPOLL_MAX_PER_CYCLE ); - if(epoll_fd == -1){ - ShowFatalError("evdp [EPOLL]: Cannot create event dispatcher (errno: %u / %s)\n", errno, strerror(errno) ); - exit(1); - } - -}//end: evdp_init() - - -void evdp_final(){ - - if(epoll_fd != -1){ - close(epoll_fd); - epoll_fd = -1; - } - -}//end: evdp_final() - - -int32 evdp_wait(EVDP_EVENT *out_fds, int32 max_events, int32 timeout_ticks){ - struct epoll_event l_events[EPOLL_MAX_PER_CYCLE]; - register struct epoll_event *ev; - register int nfds, n; - - if(max_events > EPOLL_MAX_PER_CYCLE) - max_events = EPOLL_MAX_PER_CYCLE; - - nfds = epoll_wait( epoll_fd, l_events, max_events, timeout_ticks); - if(nfds == -1){ - // @TODO: check if core is in shutdown mode. if - ignroe error. - - ShowFatalError("evdp [EPOLL]: epoll_wait returned bad / unexpected status (errno: %u / %s)\n", errno, strerror(errno)); - exit(1); //.. - } - - // Loop thru all events and copy it to the local ra evdp_event.. struct. - for(n = 0; n < nfds; n++){ - ev = &l_events[n]; - - out_fds->fd = ev->data.fd; - out_fds->events = 0; // clear - - if(ev->events & EPOLLHUP) - out_fds->events |= EVDP_EVENT_HUP; - - if(ev->events & EPOLLIN) - out_fds->events |= EVDP_EVENT_IN; - - if(ev->events & EPOLLOUT) - out_fds->events |= EVDP_EVENT_OUT; - - out_fds++; - } - - return nfds; // 0 on timeout or > 0 .. -}//end: evdp_wait() - - -void evdp_remove(int32 fd, EVDP_DATA *ep){ - - if(ep->ev_added == true){ - - if( epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, &ep->ev_data) != 0){ - ShowError("evdp [EPOLL]: evdp_remove - epoll_ctl (EPOLL_CTL_DEL) failed! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - } - - ep->ev_data.events = 0; // clear struct. - ep->ev_data.data.fd = -1; // .. clear struct .. - - ep->ev_added = false; // not added! - } - - -}//end: evdp_remove() - - -bool evdp_addlistener(int32 fd, EVDP_DATA *ep){ - - ep->ev_data.events = EPOLLET|EPOLLIN; - ep->ev_data.data.fd = fd; - - // No check here for 'added ?' - // listeners cannot be added twice. - // - if( epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ep->ev_data) != 0 ){ - ShowError("evdp [EPOLL]: evdp_addlistener - epoll_ctl (EPOLL_CTL_ADD) faield! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - ep->ev_data.events = 0; - ep->ev_data.data.fd = -1; - return false; - } - - ep->ev_added = true; - - return true; -}//end: evdp_addlistener() - - -bool evdp_addclient(int32 fd, EVDP_DATA *ep){ - - ep->ev_data.events = EPOLLIN | EPOLLHUP; - ep->ev_data.data.fd = fd; - - // No check for "added?" here, - // this function only gets called upon accpept. - // - - if( epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ep->ev_data) != 0){ - ShowError("evdp [EPOLL]: evdp_addclient - epoll_ctl (EPOLL_CTL_ADD) failed! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - ep->ev_data.events = 0; - ep->ev_data.data.fd = -1; - return false; - } - - ep->ev_added = true; - - return true; -}//end: evdp_addclient() - - -bool evdp_addconnecting(int32 fd, EVDP_DATA *ep){ - - ep->ev_data.events = EPOLLET | EPOLLOUT | EPOLLHUP; - ep->ev_data.data.fd = fd; - - if( epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ep->ev_data) != 0){ - ShowError("evdp [EPOLL]: evdp_addconnecting - epoll_ctl (EPOLL_CTL_ADD) failed! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - ep->ev_data.events = 0; - ep->ev_data.data.fd = -1; - } - - ep->ev_added = true; - - return true; -}//end: evdp_addconnecting() - - -bool evdp_outgoingconnection_established(int32 fd, EVDP_DATA *ep){ - int32 saved_mask; - - if(ep->ev_added != true){ - // ! - ShowError("evdp [EPOLL]: evdp_outgoingconnection_established fd #%u is not added to event dispatcher! invalid call.\n", fd); - return false; - } - - saved_mask = ep->ev_data.events; - - ep->ev_data.events = EPOLLIN | EPOLLHUP; - - if( epoll_ctl(epoll_fd, EPOLL_CTL_MOD, fd, &ep->ev_data) != 0){ - ep->ev_data.events = saved_mask; // restore old mask. - ShowError("evdp [EPOLL]: evdp_outgoingconnection_established - epoll_ctl (EPOLL_CTL_MOD) failed! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - return false; - } - - return true; -}//end: evdp_outgoingconnection_established() - - -bool evdp_writable_add(int32 fd, EVDP_DATA *ep){ - - if(ep->ev_added != true){ - ShowError("evdp [EPOLL]: evdp_writable_add - tried to add not added fd #%u\n",fd); - return false; - } - - if(! (ep->ev_data.events & EPOLLOUT) ){ // - - ep->ev_data.events |= EPOLLOUT; - if( epoll_ctl(epoll_fd, EPOLL_CTL_MOD, fd, &ep->ev_data) != 0 ){ - ShowError("evdp [EPOLL]: evdp_writable_add - epoll_ctl (EPOLL_CTL_MOD) failed! fd #%u (errno: %u / %s)\n", fd, errno, strerror(errno)); - ep->ev_data.events &= ~EPOLLOUT; // remove from local flagmask due to failed syscall. - return false; - } - } - - return true; -}//end: evdp_writable_add() - - -void evdp_writable_remove(int32 fd, EVDP_DATA *ep){ - - if(ep->ev_added != true){ - ShowError("evdp [EPOLL]: evdp_writable_remove - tried to remove not added fd #%u\n", fd); - return; - } - - if( ep->ev_data.events & EPOLLOUT ){ - - ep->ev_data.events &= ~EPOLLOUT; - if( epoll_ctl(epoll_fd, EPOLL_CTL_MOD, fd, &ep->ev_data) != 0){ - ShowError("evdp [EPOLL]: evdp_writable_remove - epoll_ctl (EPOLL_CTL_MOD) failed! fd #%u (errno %u / %s)\n", fd, errno, strerror(errno)); - ep->ev_data.events |= EPOLLOUT; // add back to local flagmask because of failed syscall. - return; - } - } - - return; -}//end: evdp_writable_remove() diff --git a/src/common/grfio.c b/src/common/grfio.cpp similarity index 97% rename from src/common/grfio.c rename to src/common/grfio.cpp index a596e7d4ce..2b0d00b035 100644 --- a/src/common/grfio.c +++ b/src/common/grfio.cpp @@ -1,13 +1,13 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "des.h" -#include "malloc.h" -#include "showmsg.h" -#include "strlib.h" -#include "utils.h" -#include "grfio.h" +#include "cbasetypes.hpp" +#include "des.hpp" +#include "malloc.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" +#include "utils.hpp" +#include "grfio.hpp" #include <stdlib.h> #include <zlib.h> @@ -395,9 +395,8 @@ void* grfio_reads(const char* fname, int* size) in = fopen(lfname, "rb"); if( in != NULL ) { - int declen; fseek(in,0,SEEK_END); - declen = ftell(in); + size_t declen = ftell(in); fseek(in,0,SEEK_SET); buf2 = (unsigned char *)aMalloc(declen+1); // +1 for resnametable zero-termination if(fread(buf2, 1, declen, in) != declen) ShowError("An error occured in fread grfio_reads, fname=%s \n",fname); @@ -419,7 +418,7 @@ void* grfio_reads(const char* fname, int* size) char* grfname = gentry_table[entry->gentry - 1]; FILE* in = fopen(grfname, "rb"); if( in != NULL ) { - int fsize = entry->srclen_aligned; + size_t fsize = entry->srclen_aligned; unsigned char *buf = (unsigned char *)aMalloc(fsize); fseek(in, entry->srcpos, 0); if(fread(buf, 1, fsize, in) != fsize) ShowError("An error occured in fread in grfio_reads, grfname=%s\n",grfname); @@ -515,8 +514,7 @@ static int grfio_entryread(const char* grfname, int gentry) grf_version = getlong(grf_header+0x2a) >> 8; if( grf_version == 0x01 ) {// ****** Grf version 01xx ****** - long list_size; - list_size = grf_size - ftell(fp); + size_t list_size = grf_size - ftell(fp); grf_filelist = (unsigned char *) aMalloc(list_size); if(fread(grf_filelist,1,list_size,fp) != list_size) { ShowError("Couldn't read all grf_filelist element of %s \n", grfname); } fclose(fp); @@ -695,7 +693,7 @@ static void grfio_resourcecheck(void) } fclose(fp); - ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, "resnametable.txt"); + ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", i, "resnametable.txt"); return; // we're done here! } @@ -718,7 +716,7 @@ static void grfio_resourcecheck(void) } aFree(buf); - ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", i, "data\\resnametable.txt"); + ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", i, "data\\resnametable.txt"); return; } } @@ -803,7 +801,7 @@ void grfio_init(const char* fname) } fclose(data_conf); - ShowStatus("Done reading '"CL_WHITE"%s"CL_RESET"'.\n", fname); + ShowStatus("Done reading '" CL_WHITE "%s" CL_RESET "'.\n", fname); } if( grf_num == 0 ) diff --git a/src/common/grfio.h b/src/common/grfio.hpp similarity index 81% rename from src/common/grfio.h rename to src/common/grfio.hpp index fd3c699314..90d05d6399 100644 --- a/src/common/grfio.h +++ b/src/common/grfio.hpp @@ -1,12 +1,8 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _GRFIO_H_ -#define _GRFIO_H_ - -#ifdef __cplusplus -extern "C" { -#endif +#ifndef _GRFIO_HPP_ +#define _GRFIO_HPP_ void grfio_init(const char* fname); void grfio_final(void); @@ -18,8 +14,4 @@ unsigned long grfio_crc32(const unsigned char *buf, unsigned int len); int decode_zip(void* dest, unsigned long* destLen, const void* source, unsigned long sourceLen); int encode_zip(void* dest, unsigned long* destLen, const void* source, unsigned long sourceLen); -#ifdef __cplusplus -} -#endif - -#endif /* _GRFIO_H_ */ +#endif /* _GRFIO_HPP_ */ diff --git a/src/common/malloc.c b/src/common/malloc.cpp similarity index 98% rename from src/common/malloc.c rename to src/common/malloc.cpp index 179c73a9e0..064c4a16c2 100644 --- a/src/common/malloc.c +++ b/src/common/malloc.cpp @@ -1,14 +1,16 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "malloc.h" -#include "core.h" -#include "showmsg.h" +#include "malloc.hpp" +#include "core.hpp" +#include "showmsg.hpp" #include <stdlib.h> #include <string.h> #include <time.h> +#define FREED_POINTER 0xdeadbeafL + ////////////// Memory Libraries ////////////////// #if defined(MEMWATCH) @@ -28,7 +30,7 @@ # include <string.h> # include <stdlib.h> -# include "dmalloc.h" +# include "dmalloc.hpp" # define MALLOC(n,file,line,func) dmalloc_malloc((file),(line),(n),DMALLOC_FUNC_MALLOC,0,0) # define CALLOC(m,n,file,line,func) dmalloc_malloc((file),(line),(m)*(n),DMALLOC_FUNC_CALLOC,0,0) # define REALLOC(p,n,file,line,func) dmalloc_realloc((file),(line),(p),(n),DMALLOC_FUNC_REALLOC,0) @@ -255,7 +257,7 @@ void* _mmalloc(size_t size, const char *file, int line, const char *func ) p->next = unit_head_large_first; } unit_head_large_first = p; - *(long*)((char*)p + sizeof(struct unit_head_large) - sizeof(long) + size) = 0xdeadbeaf; + *(long*)((char*)p + sizeof(struct unit_head_large) - sizeof(long) + size) = FREED_POINTER; return (char *)p + sizeof(struct unit_head_large) - sizeof(long); } else { ShowFatalError("Memory manager::memmgr_alloc failed (allocating %d+%d bytes at %s:%d).\n", sizeof(struct unit_head_large), size, file, line); @@ -322,7 +324,7 @@ void* _mmalloc(size_t size, const char *file, int line, const char *func ) head->file = file; head->line = line; head->size = (unsigned short)size; - *(long*)((char*)head + sizeof(struct unit_head) - sizeof(long) + size) = 0xdeadbeaf; + *(long*)((char*)head + sizeof(struct unit_head) - sizeof(long) + size) = FREED_POINTER; return (char *)head + sizeof(struct unit_head) - sizeof(long); } @@ -383,7 +385,7 @@ void _mfree(void *ptr, const char *file, int line, const char *func ) struct unit_head_large *head_large = (struct unit_head_large *)((char *)ptr - sizeof(struct unit_head_large) + sizeof(long)); if( *(long*)((char*)head_large + sizeof(struct unit_head_large) - sizeof(long) + head_large->size) - != 0xdeadbeaf) + != FREED_POINTER) { ShowError("Memory manager: args of aFree 0x%p is overflowed pointer %s line %d\n", ptr, file, line); } else { @@ -406,11 +408,11 @@ void _mfree(void *ptr, const char *file, int line, const char *func ) } else { /* Release unit */ struct block *block = head->block; - if( (char*)head - (char*)block > sizeof(struct block) ) { + if( (size_t)((char*)head - (char*)block) > sizeof(struct block) ) { ShowError("Memory manager: args of aFree 0x%p is invalid pointer %s line %d\n", ptr, file, line); } else if(head->block == NULL) { ShowError("Memory manager: args of aFree 0x%p is freed pointer %s:%d@%s\n", ptr, file, line, func); - } else if(*(long*)((char*)head + sizeof(struct unit_head) - sizeof(long) + head->size) != 0xdeadbeaf) { + } else if(*(long*)((char*)head + sizeof(struct unit_head) - sizeof(long) + head->size) != FREED_POINTER) { ShowError("Memory manager: args of aFree 0x%p is overflowed pointer %s line %d\n", ptr, file, line); } else { memmgr_usage_bytes -= head->size; @@ -656,7 +658,7 @@ static void memmgr_init (void) { #ifdef LOG_MEMMGR sprintf(memmer_logfile, "log/%s.leaks", SERVER_NAME); - ShowStatus("Memory manager initialised: "CL_WHITE"%s"CL_RESET"\n", memmer_logfile); + ShowStatus("Memory manager initialised: " CL_WHITE "%s" CL_RESET "\n", memmer_logfile); memset(hash_unfill, 0, sizeof(hash_unfill)); #endif /* LOG_MEMMGR */ } diff --git a/src/common/malloc.h b/src/common/malloc.hpp similarity index 95% rename from src/common/malloc.h rename to src/common/malloc.hpp index 1660b870cd..40428bdbb3 100644 --- a/src/common/malloc.h +++ b/src/common/malloc.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _MALLOC_H_ -#define _MALLOC_H_ +#ifndef _MALLOC_HPP_ +#define _MALLOC_HPP_ -#include "cbasetypes.h" - -#ifdef __cplusplus -extern "C" { -#endif +#include "cbasetypes.hpp" #define ALC_MARK __FILE__, __LINE__, __func__ @@ -93,8 +89,4 @@ size_t malloc_usage (void); void malloc_init (void); void malloc_final (void); -#ifdef __cplusplus -} -#endif - -#endif /* _MALLOC_H_ */ +#endif /* _MALLOC_HPP_ */ diff --git a/src/common/mapindex.c b/src/common/mapindex.cpp similarity index 96% rename from src/common/mapindex.c rename to src/common/mapindex.cpp index 4ece496329..81b98abb0b 100644 --- a/src/common/mapindex.c +++ b/src/common/mapindex.cpp @@ -1,11 +1,11 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "mmo.h" -#include "core.h" -#include "mapindex.h" -#include "showmsg.h" -#include "strlib.h" +#include "mmo.hpp" +#include "core.hpp" +#include "mapindex.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" #include <stdlib.h> @@ -137,12 +137,11 @@ void mapindex_init(void) { "map_index.txt", DBIMPORT"/map_index.txt" }; - int i; memset (&indexes, 0, sizeof (indexes)); mapindex_db = strdb_alloc(DB_OPT_DUP_KEY, MAP_NAME_LENGTH); - for( i = 0; i < ARRAYLENGTH(mapindex_cfgfile); i++ ){ + for( size_t i = 0; i < ARRAYLENGTH(mapindex_cfgfile); i++ ){ sprintf( path, "%s/%s", db_path, mapindex_cfgfile[i] ); if( ( fp = fopen( path, "r" ) ) == NULL ){ diff --git a/src/common/mapindex.h b/src/common/mapindex.hpp similarity index 92% rename from src/common/mapindex.h rename to src/common/mapindex.hpp index 68e8e23dd0..c1a0d0546a 100644 --- a/src/common/mapindex.h +++ b/src/common/mapindex.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _MAPINDEX_H_ -#define _MAPINDEX_H_ +#ifndef _MAPINDEX_HPP_ +#define _MAPINDEX_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "../common/mmo.h" +#include "../common/mmo.hpp" #define MAX_MAPINDEX 2000 @@ -73,8 +69,4 @@ void mapindex_check_mapdefault(const char *mapname); void mapindex_init(void); void mapindex_final(void); -#ifdef __cplusplus -} -#endif - -#endif /* _MAPINDEX_H_ */ +#endif /* _MAPINDEX_HPP_ */ diff --git a/src/common/md5calc.c b/src/common/md5calc.cpp similarity index 99% rename from src/common/md5calc.c rename to src/common/md5calc.cpp index 50a1f711b5..840d47f999 100644 --- a/src/common/md5calc.c +++ b/src/common/md5calc.cpp @@ -6,8 +6,8 @@ * ***********************************************************/ -#include "../common/random.h" -#include "md5calc.h" +#include "../common/random.hpp" +#include "md5calc.hpp" #include <string.h> #include <stdio.h> diff --git a/src/common/md5calc.h b/src/common/md5calc.hpp similarity index 55% rename from src/common/md5calc.h rename to src/common/md5calc.hpp index 4a0b4be024..a13282ff22 100644 --- a/src/common/md5calc.h +++ b/src/common/md5calc.hpp @@ -1,16 +1,8 @@ -#ifndef _MD5CALC_H_ -#define _MD5CALC_H_ - -#ifdef __cplusplus -extern "C" { -#endif +#ifndef _MD5CALC_HPP_ +#define _MD5CALC_HPP_ void MD5_String(const char * string, char * output); void MD5_Binary(const char * string, unsigned char * output); void MD5_Salt(unsigned int len, char * output); -#ifdef __cplusplus -} -#endif - -#endif /* _MD5CALC_H_ */ +#endif /* _MD5CALC_HPP_ */ diff --git a/src/common/mempool.c b/src/common/mempool.c deleted file mode 100644 index 099cf5ca9d..0000000000 --- a/src/common/mempool.c +++ /dev/null @@ -1,566 +0,0 @@ - -// -// Memory Pool Implementation (Threadsafe) -// -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// -// - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifdef WIN32 -#include "winapi.hpp" -#else -#include <unistd.h> -#endif - -#include "cbasetypes.h" -#include "showmsg.h" -#include "mempool.h" -#include "atomic.h" -#include "spinlock.h" -#include "malloc.h" -#include "mutex.h" - -#define ALIGN16 ra_align(16) -#define ALIGN_TO(x, a) (x + ( a - ( x % a) ) ) -#define ALIGN_TO_16(x) ALIGN_TO(x, 16) - -#undef MEMPOOL_DEBUG -#define MEMPOOLASSERT - - -#define NODE_TO_DATA(x) ( ((char*)x) + sizeof(struct node) ) -#define DATA_TO_NODE(x) ( (struct node*)(((char*)x) - sizeof(struct node)) ) -struct ra_align(16) node{ - void *next; - void *segment; -#ifdef MEMPOOLASSERT - bool used; - uint64 magic; - #define NODE_MAGIC 0xBEEF00EAEACAFE07ll -#endif -}; - - -// The Pointer to this struct is the base address of the segment itself. -struct pool_segment{ - pMempool pool; // pool, this segment belongs to - struct pool_segment *next; - int64 num_nodes_total; - int64 num_bytes; -}; - - -struct mempool{ - // Settings - char *name; - uint64 elem_size; - uint64 elem_realloc_step; - int64 elem_realloc_thresh; - - // Callbacks that get called for every node that gets allocated - // Example usage: initialization of mutex/lock for each node. - memPoolOnNodeAllocationProc onalloc; - memPoolOnNodeDeallocationProc ondealloc; - - // Locks - SPIN_LOCK segmentLock; - SPIN_LOCK nodeLock; - - - // Internal - struct pool_segment *segments; - struct node *free_list; - - volatile int64 num_nodes_total; - volatile int64 num_nodes_free; - - volatile int64 num_segments; - volatile int64 num_bytes_total; - - volatile int64 peak_nodes_used; // Peak Node Usage - volatile int64 num_realloc_events; // Number of reallocations done. (allocate additional nodes) - - // list (used for global management such as allocator..) - struct mempool *next; -} ra_align(8); // Dont touch the alignment, otherwise interlocked functions are broken .. - - -/// -// Implementation: -// -static void segment_allocate_add(pMempool p, uint64 count); - -static SPIN_LOCK l_mempoolListLock; -static pMempool l_mempoolList = NULL; -static prAthread l_async_thread = NULL; -static ramutex l_async_lock = NULL; -static racond l_async_cond = NULL; -static volatile int32 l_async_terminate = 0; - -static void *mempool_async_allocator(void *x){ - pMempool p; - - - while(1){ - if(l_async_terminate > 0) - break; - - EnterSpinLock(&l_mempoolListLock); - - for(p = l_mempoolList; p != NULL; p = p->next){ - - if(p->num_nodes_free < p->elem_realloc_thresh){ - // add new segment. - segment_allocate_add(p, p->elem_realloc_step); - // increase stats counter - InterlockedIncrement64(&p->num_realloc_events); - } - - } - - LeaveSpinLock(&l_mempoolListLock); - - ramutex_lock( l_async_lock ); - racond_wait( l_async_cond, l_async_lock, -1 ); - ramutex_unlock( l_async_lock ); - } - - - return NULL; -}//end: mempool_async_allocator() - - -void mempool_init(){ - - if( rand()%2 + 1 ) - return; - - if(sizeof(struct node)%16 != 0 ){ - ShowFatalError("mempool_init: struct node alignment failure. %u != multiple of 16\n", sizeof(struct node)); - exit(EXIT_FAILURE); - } - - // Global List start - InitializeSpinLock(&l_mempoolListLock); - l_mempoolList = NULL; - - // Initialize mutex + stuff needed for async allocator worker. - l_async_terminate = 0; - l_async_lock = ramutex_create(); - l_async_cond = racond_create(); - - l_async_thread = rathread_createEx(mempool_async_allocator, NULL, 1024*1024, RAT_PRIO_NORMAL); - if(l_async_thread == NULL){ - ShowFatalError("mempool_init: cannot spawn Async Allocator Thread.\n"); - exit(EXIT_FAILURE); - } - -}//end: mempool_init() - - -void mempool_final(){ - pMempool p, pn; - - if( rand()%2 + 1 ) - return; - - ShowStatus("Mempool: Terminating async. allocation worker and remaining pools.\n"); - - // Terminate worker / wait until its terminated. - InterlockedIncrement(&l_async_terminate); - racond_signal(l_async_cond); - rathread_wait(l_async_thread, NULL); - - // Destroy cond var and mutex. - racond_destroy( l_async_cond ); - ramutex_destroy( l_async_lock ); - - // Free remaining mempools - // ((bugged code! this should halppen, every mempool should - // be freed by the subsystem that has allocated it.) - // - EnterSpinLock(&l_mempoolListLock); - p = l_mempoolList; - while(1){ - if(p == NULL) - break; - - pn = p->next; - - ShowWarning("Mempool [%s] was not properly destroyed - forcing destroy.\n", p->name); - mempool_destroy(p); - - p = pn; - } - LeaveSpinLock(&l_mempoolListLock); - -}//end: mempool_final() - - -static void segment_allocate_add(pMempool p, uint64 count){ - - // Required Memory: - // sz( segment ) - // count * sz( real_node_size ) - // - // where real node size is: - // ALIGN_TO_16( sz( node ) ) + p->elem_size - // so the nodes usable address is nodebase + ALIGN_TO_16(sz(node)) - // - size_t total_sz; - struct pool_segment *seg = NULL; - struct node *nodeList = NULL; - struct node *node = NULL; - char *ptr = NULL; - uint64 i; - - total_sz = ALIGN_TO_16( sizeof(struct pool_segment) ) - + ( (size_t)count * (sizeof(struct node) + (size_t)p->elem_size) ) ; - -#ifdef MEMPOOL_DEBUG - ShowDebug("Mempool [%s] Segment AllocateAdd (num: %u, total size: %0.2fMiB)\n", p->name, count, (float)total_sz/1024.f/1024.f); -#endif - - // allocate! (spin forever until weve got the memory.) - i=0; - while(1){ - ptr = (char*)aMalloc(total_sz); - if(ptr != NULL) break; - - i++; // increase failcount. - if(!(i & 7)){ - ShowWarning("Mempool [%s] Segment AllocateAdd => System seems to be Out of Memory (%0.2f MiB). Try #%u\n", (float)total_sz/1024.f/1024.f, i); -#ifdef WIN32 - Sleep(1000); -#else - sleep(1); -#endif - }else{ - rathread_yield(); /// allow/force vuln. ctxswitch - } - }//endwhile: allocation spinloop. - - // Clear Memory. - memset(ptr, 0x00, total_sz); - - // Initialize segment struct. - seg = (struct pool_segment*)ptr; - ptr += ALIGN_TO_16(sizeof(struct pool_segment)); - - seg->pool = p; - seg->num_nodes_total = count; - seg->num_bytes = total_sz; - - - // Initialze nodes! - nodeList = NULL; - for(i = 0; i < count; i++){ - node = (struct node*)ptr; - ptr += sizeof(struct node); - ptr += p->elem_size; - - node->segment = seg; -#ifdef MEMPOOLASSERT - node->used = false; - node->magic = NODE_MAGIC; -#endif - - if(p->onalloc != NULL) p->onalloc( NODE_TO_DATA(node) ); - - node->next = nodeList; - nodeList = node; - } - - - - // Link in Segment. - EnterSpinLock(&p->segmentLock); - seg->next = p->segments; - p->segments = seg; - LeaveSpinLock(&p->segmentLock); - - // Link in Nodes - EnterSpinLock(&p->nodeLock); - nodeList->next = p->free_list; - p->free_list = nodeList; - LeaveSpinLock(&p->nodeLock); - - - // Increase Stats: - InterlockedExchangeAdd64(&p->num_nodes_total, count); - InterlockedExchangeAdd64(&p->num_nodes_free, count); - InterlockedIncrement64(&p->num_segments); - InterlockedExchangeAdd64(&p->num_bytes_total, total_sz); - -}//end: segment_allocate_add() - - -pMempool mempool_create(const char *name, - uint64 elem_size, - uint64 initial_count, - uint64 realloc_count, - memPoolOnNodeAllocationProc onNodeAlloc, - memPoolOnNodeDeallocationProc onNodeDealloc){ - //.. - uint64 realloc_thresh; - pMempool pool; - pool = (pMempool)aCalloc( 1, sizeof(struct mempool) ); - - if(pool == NULL){ - ShowFatalError("mempool_create: Failed to allocate %u bytes memory.\n", sizeof(struct mempool) ); - exit(EXIT_FAILURE); - } - - // Check minimum initial count / realloc count requirements. - if(initial_count < 50) - initial_count = 50; - if(realloc_count < 50) - realloc_count = 50; - - // Set Reallocation threshold to 5% of realloc_count, at least 10. - realloc_thresh = (realloc_count/100)*5; // - if(realloc_thresh < 10) - realloc_thresh = 10; - - // Initialize members.. - pool->name = aStrdup(name); - pool->elem_size = ALIGN_TO_16(elem_size); - pool->elem_realloc_step = realloc_count; - pool->elem_realloc_thresh = realloc_thresh; - pool->onalloc = onNodeAlloc; - pool->ondealloc = onNodeDealloc; - - InitializeSpinLock(&pool->segmentLock); - InitializeSpinLock(&pool->nodeLock); - - // Initial Statistic values: - pool->num_nodes_total = 0; - pool->num_nodes_free = 0; - pool->num_segments = 0; - pool->num_bytes_total = 0; - pool->peak_nodes_used = 0; - pool->num_realloc_events = 0; - - // -#ifdef MEMPOOL_DEBUG - ShowDebug("Mempool [%s] Init (ElemSize: %u, Initial Count: %u, Realloc Count: %u)\n", pool->name, pool->elem_size, initial_count, pool->elem_realloc_step); -#endif - - // Allocate first segment directly :) - segment_allocate_add(pool, initial_count); - - - // Add Pool to the global pool list - EnterSpinLock(&l_mempoolListLock); - pool->next = l_mempoolList; - l_mempoolList = pool; - LeaveSpinLock(&l_mempoolListLock); - - - return pool; -}//end: mempool_create() - - -void mempool_destroy(pMempool p){ - struct pool_segment *seg, *segnext; - struct node *niter; - pMempool piter, pprev; - char *ptr; - int64 i; - -#ifdef MEMPOOL_DEBUG - ShowDebug("Mempool [%s] Destroy\n", p->name); -#endif - - // Unlink from global list. - EnterSpinLock(&l_mempoolListLock); - piter = l_mempoolList; - pprev = l_mempoolList; - while(1){ - if(piter == NULL) - break; - - - if(piter == p){ - // unlink from list, - // - if(pprev == l_mempoolList){ - // this (p) is list begin. so set next as head. - l_mempoolList = p->next; - }else{ - // replace prevs next wuth our next. - pprev->next = p->next; - } - break; - } - - pprev = piter; - piter = piter->next; - } - - p->next = NULL; - LeaveSpinLock(&l_mempoolListLock); - - - // Get both locks. - EnterSpinLock(&p->segmentLock); - EnterSpinLock(&p->nodeLock); - - - if(p->num_nodes_free != p->num_nodes_total) - ShowWarning("Mempool [%s] Destroy - %u nodes are not freed properly!\n", p->name, (p->num_nodes_total - p->num_nodes_free) ); - - // Free All Segments (this will also free all nodes) - // The segment pointer is the base pointer to the whole segment. - seg = p->segments; - while(1){ - if(seg == NULL) - break; - - segnext = seg->next; - - // .. - if(p->ondealloc != NULL){ - // walk over the segment, and call dealloc callback! - ptr = (char*)seg; - ptr += ALIGN_TO_16(sizeof(struct pool_segment)); - for(i = 0; i < seg->num_nodes_total; i++){ - niter = (struct node*)ptr; - ptr += sizeof(struct node); - ptr += p->elem_size; -#ifdef MEMPOOLASSERT - if(niter->magic != NODE_MAGIC){ - ShowError("Mempool [%s] Destroy - walk over segment - node %p invalid magic!\n", p->name, niter); - continue; - } -#endif - - p->ondealloc( NODE_TO_DATA(niter) ); - - - } - }//endif: ondealloc callback? - - // simple .. - aFree(seg); - - seg = segnext; - } - - // Clear node ptr - p->free_list = NULL; - InterlockedExchange64(&p->num_nodes_free, 0); - InterlockedExchange64(&p->num_nodes_total, 0); - InterlockedExchange64(&p->num_segments, 0); - InterlockedExchange64(&p->num_bytes_total, 0); - - LeaveSpinLock(&p->nodeLock); - LeaveSpinLock(&p->segmentLock); - - // Free pool itself :D - aFree(p->name); - aFree(p); - -}//end: mempool_destroy() - - -void *mempool_node_get(pMempool p){ - struct node *node; - int64 num_used; - - if(p->num_nodes_free < p->elem_realloc_thresh) - racond_signal(l_async_cond); - - while(1){ - - EnterSpinLock(&p->nodeLock); - - node = p->free_list; - if(node != NULL) - p->free_list = node->next; - - LeaveSpinLock(&p->nodeLock); - - if(node != NULL) - break; - - rathread_yield(); - } - - InterlockedDecrement64(&p->num_nodes_free); - - // Update peak value - num_used = (p->num_nodes_total - p->num_nodes_free); - if(num_used > p->peak_nodes_used){ - InterlockedExchange64(&p->peak_nodes_used, num_used); - } - -#ifdef MEMPOOLASSERT - node->used = true; -#endif - - return NODE_TO_DATA(node); -}//end: mempool_node_get() - - -void mempool_node_put(pMempool p, void *data){ - struct node *node; - - node = DATA_TO_NODE(data); -#ifdef MEMPOOLASSERT - if(node->magic != NODE_MAGIC){ - ShowError("Mempool [%s] node_put failed, given address (%p) has invalid magic.\n", p->name, data); - return; // lost, - } - - { - struct pool_segment *node_seg = node->segment; - if(node_seg->pool != p){ - ShowError("Mempool [%s] node_put faild, given node (data address %p) doesnt belongs to this pool. ( Node Origin is [%s] )\n", p->name, data, node_seg->pool); - return; - } - } - - // reset used flag. - node->used = false; -#endif - - // - EnterSpinLock(&p->nodeLock); - node->next = p->free_list; - p->free_list = node; - LeaveSpinLock(&p->nodeLock); - - InterlockedIncrement64(&p->num_nodes_free); - -}//end: mempool_node_put() - - -mempool_stats mempool_get_stats(pMempool pool){ - mempool_stats stats; - - // initialize all with zeros - memset(&stats, 0x00, sizeof(mempool_stats)); - - stats.num_nodes_total = pool->num_nodes_total; - stats.num_nodes_free = pool->num_nodes_free; - stats.num_nodes_used = (stats.num_nodes_total - stats.num_nodes_free); - stats.num_segments = pool->num_segments; - stats.num_realloc_events= pool->num_realloc_events; - stats.peak_nodes_used = pool->peak_nodes_used; - stats.num_bytes_total = pool->num_bytes_total; - - // Pushing such a large block over the stack as return value isnt nice - // but lazy :) and should be okay in this case (Stats / Debug..) - // if you dont like it - feel free and refactor it. - return stats; -}//end: mempool_get_stats() - diff --git a/src/common/mempool.h b/src/common/mempool.h deleted file mode 100644 index bfd30ef1a0..0000000000 --- a/src/common/mempool.h +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef _rA_MEMPOOL_H_ -#define _rA_MEMPOOL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" - -typedef struct mempool *pMempool; - -typedef void (*memPoolOnNodeAllocationProc)(void *ptr); -typedef void (*memPoolOnNodeDeallocationProc)(void *ptr); - -typedef struct mempool_stats{ - int64 num_nodes_total; - int64 num_nodes_free; - int64 num_nodes_used; - - int64 num_segments; - int64 num_realloc_events; - - int64 peak_nodes_used; - - int64 num_bytes_total; -} mempool_stats; - - -// -void mempool_init(); -void mempool_final(); - - -/** - * Creates a new Mempool - * - * @param name - Name of the pool (used for debug / error messages) - * @param elem_size - size of each element - * @param initial_count - preallocation count - * @param realloc_count - #no of nodes being allocated when pool is running empty. - * @param onNodeAlloc - Node Allocation callback (see @note!) - * @param onNodeDealloc - Node Deallocation callback (see @note!) - * - * @note: - * The onNode(De)alloc callbacks are only called once during segment allocation - * (pool initialization / rallocation ) - * you can use this callbacks for example to initlaize a mutex or somethingelse - * you definitly need during runtime - * - * @return not NULL - */ -pMempool mempool_create(const char *name, - uint64 elem_size, - uint64 initial_count, - uint64 realloc_count, - - memPoolOnNodeAllocationProc onNodeAlloc, - memPoolOnNodeDeallocationProc onNodeDealloc); - - -/** - * Destroys a Mempool - * - * @param pool - the mempool to destroy - * - * @note: - * Everything gets deallocated, regardless if everything was freed properly! - * So you have to ensure that all references are cleared properly! - */ -void mempool_destroy(pMempool pool); - - -/** - * Gets a new / empty node from the given mempool. - * - * @param pool - the pool to get an empty node from. - * - * @return Address of empty Node - */ -void *mempool_node_get(pMempool pool); - - -/** - * Returns the given node to the given mempool - * - * @param pool - the pool to put the node, to - * @param node - the node to return - */ -void mempool_node_put(pMempool pool, void *node); - - -/** - * Returns Statistics for the given mempool - * - * @param pool - the pool to get thats for - * - * @note: i dont like pushing masses of values over the stack, too - but its lazy and okay for stats. (blacksirius) - * - * @return stats struct - */ -mempool_stats mempool_get_stats(pMempool pool); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/common/mmo.h b/src/common/mmo.hpp similarity index 97% rename from src/common/mmo.h rename to src/common/mmo.hpp index afe1ef5e77..b188904e14 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.hpp @@ -1,16 +1,16 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _MMO_H_ -#define _MMO_H_ +#ifndef _MMO_HPP_ +#define _MMO_HPP_ -#include "cbasetypes.h" -#include "../config/core.h" -#include "db.h" +#include "cbasetypes.hpp" +#include "../config/core.hpp" +#include "db.hpp" #include <time.h> #ifndef PACKETVER - #error Please define PACKETVER in src/config/packets.h + #error Please define PACKETVER in src/config/packets.hpp #endif ///Remove/Comment this line to disable sc_data saving. [Skotlex] @@ -34,12 +34,20 @@ #define MAX_INVENTORY 100 ///Maximum items in player inventory /** Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well. * Max value tested was 265 */ -#define MAX_CHARS 9 +#ifndef MAX_CHARS + #if PACKETVER >= 20180124 + #define MAX_CHARS 15 + #elif PACKETVER >= 20100413 + #define MAX_CHARS 12 + #else + #define MAX_CHARS 9 + #endif +#endif /** Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex] * Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size. */ #define MAX_SLOTS 4 #define MAX_AMOUNT 30000 ////Max amount of a single stacked item -#define MAX_ZENY 1000000000 ///Max zeny +#define MAX_ZENY INT_MAX ///Max zeny #define MAX_BANK_ZENY SINT32_MAX ///Max zeny in Bank #define MAX_FAME 1000000000 ///Max fame points #define MAX_CART 100 ///Maximum item in cart @@ -131,7 +139,6 @@ //Mercenary System #define MC_SKILLBASE 8201 #define MAX_MERCSKILL 40 -#define MAX_MERCENARY_CLASS 61 //Elemental System #define MAX_ELEMENTALSKILL 42 @@ -427,6 +434,7 @@ struct s_homunculus { //[orn] int luk_value; char spiritball; //for homun S [lighta] + bool autofeed; }; struct s_mercenary { @@ -908,6 +916,13 @@ enum e_job { JOB_BABY_STAR_GLADIATOR2 = 4238, + JOB_STAR_EMPEROR, + JOB_SOUL_REAPER, + JOB_BABY_STAR_EMPEROR, + JOB_BABY_SOUL_REAPER, + JOB_STAR_EMPEROR2, + JOB_BABY_STAR_EMPEROR2, + JOB_MAX, }; @@ -1016,4 +1031,4 @@ struct clan{ #define MAX_CARTS 5 #endif -#endif /* _MMO_H_ */ +#endif /* _MMO_HPP_ */ diff --git a/src/common/msg_conf.c b/src/common/msg_conf.cpp similarity index 94% rename from src/common/msg_conf.c rename to src/common/msg_conf.cpp index 0cd5337ffe..471ca5da67 100644 --- a/src/common/msg_conf.c +++ b/src/common/msg_conf.cpp @@ -2,9 +2,9 @@ #include <string.h> #include <stdlib.h> -#include "malloc.h" -#include "msg_conf.h" -#include "showmsg.h" +#include "malloc.hpp" +#include "msg_conf.hpp" +#include "showmsg.hpp" /* * Return the message string of the specified number by [Yor] @@ -62,7 +62,7 @@ int _msg_config_read(const char* cfgName,int size, char ** msg_table) } fclose(fp); - ShowInfo("Done reading "CL_WHITE"'%d'"CL_RESET" messages in "CL_WHITE"'%s'"CL_RESET".\n",msg_count,cfgName); + ShowInfo("Done reading " CL_WHITE "'%d'" CL_RESET " messages in " CL_WHITE "'%s'" CL_RESET ".\n",msg_count,cfgName); return 0; } diff --git a/src/common/msg_conf.h b/src/common/msg_conf.hpp similarity index 85% rename from src/common/msg_conf.h rename to src/common/msg_conf.hpp index d1feeb1d4c..f9a36f9b37 100644 --- a/src/common/msg_conf.h +++ b/src/common/msg_conf.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef MSG_CONF_H -#define MSG_CONF_H +#ifndef MSG_CONF_HPP +#define MSG_CONF_HPP -#include "../config/core.h" - -#ifdef __cplusplus -extern "C" { -#endif +#include "../config/core.hpp" enum lang_types { LANG_RUS = 0x01, @@ -42,9 +38,5 @@ const char* msg_langtype2langstr(int langtype); // Verify that the choosen langtype is enabled. int msg_checklangtype(int lang, bool display); -#ifdef __cplusplus -} -#endif - -#endif /* MSG_CONF_H */ +#endif /* MSG_CONF_HPP */ diff --git a/src/common/mutex.c b/src/common/mutex.c deleted file mode 100644 index 6bf1fc86fc..0000000000 --- a/src/common/mutex.c +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifdef WIN32 -#include "winapi.hpp" -#else -#include <pthread.h> - -#endif - -#include "cbasetypes.h" -#include "malloc.h" -#include "showmsg.h" -#include "timer.h" -#include "mutex.h" - -struct ramutex{ -#ifdef WIN32 - CRITICAL_SECTION hMutex; -#else - pthread_mutex_t hMutex; -#endif -}; - - -struct racond{ -#ifdef WIN32 - HANDLE events[2]; - ra_align(8) volatile LONG nWaiters; - CRITICAL_SECTION waiters_lock; - -#define EVENT_COND_SIGNAL 0 -#define EVENT_COND_BROADCAST 1 - -#else - pthread_cond_t hCond; -#endif -}; - - -//////////////////// -// Mutex -// -// Implementation: -// - - -ramutex ramutex_create(){ - struct ramutex *m; - - m = (struct ramutex*)aMalloc( sizeof(struct ramutex) ); - if(m == NULL){ - ShowFatalError("ramutex_create: OOM while allocating %u bytes.\n", sizeof(struct ramutex)); - return NULL; - } - -#ifdef WIN32 - InitializeCriticalSection(&m->hMutex); -#else - pthread_mutex_init(&m->hMutex, NULL); -#endif - - return m; -}//end: ramutex_create() - - -void ramutex_destroy( ramutex m ){ - -#ifdef WIN32 - DeleteCriticalSection(&m->hMutex); -#else - pthread_mutex_destroy(&m->hMutex); -#endif - - aFree(m); - -}//end: ramutex_destroy() - - -void ramutex_lock( ramutex m ){ - -#ifdef WIN32 - EnterCriticalSection(&m->hMutex); -#else - pthread_mutex_lock(&m->hMutex); -#endif -}//end: ramutex_lock - - -bool ramutex_trylock( ramutex m ){ -#ifdef WIN32 - if(TryEnterCriticalSection(&m->hMutex) == TRUE) - return true; - - return false; -#else - if(pthread_mutex_trylock(&m->hMutex) == 0) - return true; - - return false; -#endif -}//end: ramutex_trylock() - - -void ramutex_unlock( ramutex m ){ -#ifdef WIN32 - LeaveCriticalSection(&m->hMutex); -#else - pthread_mutex_unlock(&m->hMutex); -#endif - -}//end: ramutex_unlock() - - - -/////////////// -// Condition Variables -// -// Implementation: -// - -racond racond_create(){ - struct racond *c; - - c = (struct racond*)aMalloc( sizeof(struct racond) ); - if(c == NULL){ - ShowFatalError("racond_create: OOM while allocating %u bytes\n", sizeof(struct racond)); - return NULL; - } - -#ifdef WIN32 - c->nWaiters = 0; - c->events[ EVENT_COND_SIGNAL ] = CreateEvent( NULL, FALSE, FALSE, NULL ); - c->events[ EVENT_COND_BROADCAST ] = CreateEvent( NULL, TRUE, FALSE, NULL ); - InitializeCriticalSection( &c->waiters_lock ); -#else - pthread_cond_init(&c->hCond, NULL); -#endif - - return c; -}//end: racond_create() - - -void racond_destroy( racond c ){ -#ifdef WIN32 - CloseHandle( c->events[ EVENT_COND_SIGNAL ] ); - CloseHandle( c->events[ EVENT_COND_BROADCAST ] ); - DeleteCriticalSection( &c->waiters_lock ); -#else - pthread_cond_destroy(&c->hCond); -#endif - - aFree(c); -}//end: racond_destroy() - - -void racond_wait( racond c, ramutex m, sysint timeout_ticks){ -#ifdef WIN32 - register DWORD ms; - int result; - bool is_last = false; - - - EnterCriticalSection(&c->waiters_lock); - c->nWaiters++; - LeaveCriticalSection(&c->waiters_lock); - - if(timeout_ticks < 0) - ms = INFINITE; - else - ms = (timeout_ticks > MAXDWORD) ? (MAXDWORD - 1) : (DWORD)timeout_ticks; - - - // we can release the mutex (m) here, cause win's - // manual reset events maintain state when used with - // SetEvent() - ramutex_unlock(m); - - result = WaitForMultipleObjects(2, c->events, FALSE, ms); - - - EnterCriticalSection(&c->waiters_lock); - c->nWaiters--; - if( (result == WAIT_OBJECT_0 + EVENT_COND_BROADCAST) && (c->nWaiters == 0) ) - is_last = true; // Broadcast called! - LeaveCriticalSection(&c->waiters_lock); - - - - // we are the last waiter that has to be notified, or to stop waiting - // so we have to do a manual reset - if(is_last == true) - ResetEvent( c->events[EVENT_COND_BROADCAST] ); - - - ramutex_lock(m); - -#else - if(timeout_ticks < 0){ - pthread_cond_wait( &c->hCond, &m->hMutex ); - }else{ - struct timespec wtime; - int64 exact_timeout = gettick() + timeout_ticks; - - wtime.tv_sec = exact_timeout/1000; - wtime.tv_nsec = (exact_timeout%1000)*1000000; - - pthread_cond_timedwait( &c->hCond, &m->hMutex, &wtime); - } - -#endif -}//end: racond_wait() - - -void racond_signal( racond c ){ -#ifdef WIN32 -// bool has_waiters = false; -// EnterCriticalSection(&c->waiters_lock); -// if(c->nWaiters > 0) -// has_waiters = true; -// LeaveCriticalSection(&c->waiters_lock); - -// if(has_waiters == true) - SetEvent( c->events[ EVENT_COND_SIGNAL ] ); -#else - pthread_cond_signal(&c->hCond); -#endif -}//end: racond_signal() - - -void racond_broadcast( racond c ){ -#ifdef WIN32 -// bool has_waiters = false; -// EnterCriticalSection(&c->waiters_lock); -// if(c->nWaiters > 0) -// has_waiters = true; -// LeaveCriticalSection(&c->waiters_lock); - -// if(has_waiters == true) - SetEvent( c->events[ EVENT_COND_BROADCAST ] ); -#else - pthread_cond_broadcast(&c->hCond); -#endif -}//end: racond_broadcast() - - diff --git a/src/common/mutex.h b/src/common/mutex.h deleted file mode 100644 index 1999627cdb..0000000000 --- a/src/common/mutex.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _rA_MUTEX_H_ -#define _rA_MUTEX_H_ - - -typedef struct ramutex *ramutex; // Mutex -typedef struct racond *racond; // Condition Var - -/** - * Creates a Mutex - * - * @return not NULL - */ -ramutex ramutex_create(); - -/** - * Destroys a Mutex - * - * @param m - the mutex to destroy - */ -void ramutex_destroy( ramutex m ); - -/** - * Gets a lock - * - * @param m - the mutex to lock - */ -void ramutex_lock( ramutex m); - -/** - * Trys to get the Lock - * - * @param m - the mutex try to lock - * - * @return boolean (true = got the lock) - */ -bool ramutex_trylock( ramutex m ); - -/** - * Unlocks a mutex - * - * @param m - the mutex to unlock - */ -void ramutex_unlock( ramutex m); - - -/** - * Creates a Condition variable - * - * @return not NULL - */ -racond racond_create(); - -/** - * Destroy a Condition variable - * - * @param c - the condition varaible to destroy - */ -void racond_destroy( racond c ); - -/** - * Waits Until state is signalled - * - * @param c - the condition var to wait for signalled state - * @param m - the mutex used for syncronization - * @param timeout_ticks - timeout in ticks ( -1 = INFINITE ) - */ -void racond_wait( racond c, ramutex m, sysint timeout_ticks); - -/** - * Sets the given condition var to signalled state - * - * @param c - condition var to set in signalled state. - * - * @note: - * Only one waiter gets notified. - */ -void racond_signal( racond c ); - -/** - * Sets notifys all waiting threads thats signalled. - * @param c - condition var to set in signalled state - * - * @note: - * All Waiters getting notified. - */ -void racond_broadcast( racond c ); - - -#endif diff --git a/src/common/netbuffer.c b/src/common/netbuffer.c deleted file mode 100644 index 37bac53e2e..0000000000 --- a/src/common/netbuffer.c +++ /dev/null @@ -1,206 +0,0 @@ - -// -// Network Buffer Subsystem (iobuffer) -// -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// -// - - -// -// Buffers are available in the following sizes: -// 48, 192, 2048, 8192 -// 65536 (inter server connects may use it for charstatus struct..) -// - - -/// -// Implementation: -// -static volatile int32 l_nEmergencyAllocations = 0; // stats. -static sysint l_nPools = 0; -static sysint *l_poolElemSize = NULL; -static mempool *l_pool = NULL; - - -void netbuffer_init(){ - char localsection[32]; - raconf conf; - sysint i; - - // Initialize Statistic counters: - l_nEmergencyAllocations = 0; - - // Set localsection name according to running serverype. - switch(SERVER_TYPE){ - case ATHENA_SERVER_LOGIN: strcpy(localsection, "login-netbuffer"); break; - case ATHENA_SERVER_CHAR: strcpy(localsection, "char-netbuffer"); break; - case ATHENA_SERVER_INTER: strcpy(localsection, "inter-netbuffer"); break; - case ATHENA_SERVER_MAP: strcpy(localsection, "map-netbuffer"); break; - default: strcpy(localsection, "unsupported_type"); break; - } - - - conf = raconf_parse("conf/network.conf"); - if(conf == NULL){ - ShowFatalError("Failed to Parse required Configuration (conf/network.conf)"); - exit(EXIT_FAILURE); - } - - // Get Values from config file - l_nPools = (sysint)raconf_getintEx(conf, localsection, "netbuffer", "num", 0); - if(l_nPools == 0){ - ShowFatalError("Netbuffer (network.conf) failure - requires at least 1 Pool.\n"); - exit(EXIT_FAILURE); - } - - // Allocate arrays. - l_poolElemSize = (sysint*)aCalloc( l_nPools, sizeof(sysint) ); - l_pool = (mempool*)aCalloc( l_nPools, sizeof(mempool) ); - - - for(i = 0; i < l_nPools; i++){ - int64 num_prealloc, num_realloc; - char key[32]; - - sprintf(key, "pool_%u_size", (uint32)i+1); - l_poolElemSize[i] = (sysint)raconf_getintEx(conf, localsection, "netbuffer", key, 4096); - if(l_poolElemSize[i] < 32){ - ShowWarning("Netbuffer (network.conf) failure - minimum allowed buffer size is 32 byte) - fixed.\n"); - l_poolElemSize[i] = 32; - } - - sprintf(key, "pool_%u_prealloc", (uint32)i+1); - num_prealloc = raconf_getintEx(conf, localsection, "netbuffer", key, 150); - - sprintf(key, "pool_%u_realloc_step", (uint32)i+1); - num_realloc = raconf_getintEx(conf, localsection, "netbuffer", key, 100); - - // Create Pool! - sprintf(key, "Netbuffer %u", (uint32)l_poolElemSize[i]); // name. - - // Info - ShowInfo("NetBuffer: Creating Pool %u (Prealloc: %u, Realloc Step: %u) - %0.2f MiB\n", l_poolElemSize[i], num_prealloc, num_realloc, (float)((sizeof(struct netbuf) + l_poolElemSize[i] - 32)* num_prealloc)/1024.0f/1024.0f); - - // - // Size Calculation: - // struct netbuf + requested buffer size - 32 (because the struct already contains 32 byte buffer space at the end of struct) - l_pool[i] = mempool_create(key, (sizeof(struct netbuf) + l_poolElemSize[i] - 32), num_prealloc, num_realloc, NULL, NULL); - if(l_pool[i] == NULL){ - ShowFatalError("Netbuffer: cannot create Pool for %u byte buffers.\n", l_poolElemSize[i]); - // @leak: clean everything :D - exit(EXIT_FAILURE); - } - - }// - - - raconf_destroy(conf); - -}//end: netbuffer_init() - - -void netbuffer_final(){ - sysint i; - - if(l_nPools > 0){ - /// .. finalize mempools - for(i = 0; i < l_nPools; i++){ - mempool_stats stats = mempool_get_stats(l_pool[i]); - - ShowInfo("Netbuffer: Freeing Pool %u (Peak Usage: %u, Realloc Events: %u)\n", l_poolElemSize[i], stats.peak_nodes_used, stats.num_realloc_events); - - mempool_destroy(l_pool[i]); - } - - if(l_nEmergencyAllocations > 0){ - ShowWarning("Netbuffer: did %u Emergency Allocations, please tune your network.conf!\n", l_nEmergencyAllocations); - l_nEmergencyAllocations = 0; - } - - aFree(l_poolElemSize); l_poolElemSize = NULL; - aFree(l_pool); l_pool = NULL; - l_nPools = 0; - } - - -}//end: netbuffer_final() - - -netbuf netbuffer_get( sysint sz ){ - sysint i; - netbuf nb = NULL; - - // Search an appropriate pool - for(i = 0; i < l_nPools; i++){ - if(sz <= l_poolElemSize[i]){ - // match - - nb = (netbuf)mempool_node_get(l_pool[i]); - nb->pool = i; - - break; - } - } - - // No Bufferpool found that mets there quirements?.. (thats bad..) - if(nb == NULL){ - ShowWarning("Netbuffer: get(%u): => no appropriate pool found - emergency allocation required.\n", sz); - ShowWarning("Please reconfigure your network.conf!"); - - InterlockedIncrement(&l_nEmergencyAllocations); - - // .. better to check (netbuf struct provides 32 byte bufferspace itself. - if(sz < 32) sz = 32; - - // allocate memory using malloc .. - while(1){ - nb = (netbuf) aMalloc( (sizeof(struct netbuf) + sz - 32) ); - if(nb != NULL){ - memset(nb, 0x00, (sizeof(struct netbuf) + sz - 32) ); // zero memory! (to enforce commit @ os.) - nb->pool = -1; // emergency alloc. - break; - } - - rathread_yield(); - }// spin allocation. - - } - - - nb->refcnt = 1; // Initial refcount is 1 - - return nb; -}//end: netbuffer_get() - - -void netbuffer_put( netbuf nb ){ - - // Decrement reference counter, if > 0 do nothing :) - if( InterlockedDecrement(&nb->refcnt) > 0 ) - return; - - // Is this buffer an emergency allocated buffer? - if(nb->pool == -1){ - aFree(nb); - return; - } - - - // Otherwise its a normal mempool based buffer - // return it to the according mempool: - mempool_node_put( l_pool[nb->pool], nb); - - -}//end: netbuffer_put() - - -void netbuffer_incref( netbuf nb ){ - - InterlockedIncrement(&nb->refcnt); - -}//end: netbuf_incref() diff --git a/src/common/netbuffer.h b/src/common/netbuffer.h deleted file mode 100644 index 236c60f222..0000000000 --- a/src/common/netbuffer.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _rA_NETBUFFER_H_ -#define _rA_NETBUFFER_H_ - -#include "cbasetypes.h" - -typedef struct netbuf{ - sysint pool; // The pool ID this buffer belongs to, - // is set to -1 if its an emergency allocated buffer - - struct netbuf *next; // Used by Network system. - - volatile int32 refcnt; // Internal Refcount, it gets lowered every call to netbuffer_put, - // if its getting zero, the buffer will returned back to the pool - // and can be reused. - - int32 dataPos; // Current Offset - // Used only for Reading (recv job) - // write cases are using the sessions local datapos member due to - // shared write buffer support. - - int32 dataLen; // read buffer case: - // The length expected to read to. - // when this->dataPos == dateLen, read job has been completed. - // write buffer case: - // The lngth of data in te buffer - // when s->dataPos == dataLen, write job has been completed - // - // Note: - // leftBytes = (dateLen - dataPos) - // - // Due to shared buffer support - // dataPos gets not used in write case (each connection has its local offset) - // - - // The Bufferspace itself. - char buf[32]; -} *netbuf; - - -void netbuffer_init(); -void netbuffer_final(); - -/** - * Gets a netbuffer that has atleast (sz) byes space. - * - * @note: The netbuffer system guarantees that youll always recevie a buffer. - * no check for null is required! - * - * @param sz - minimum size needed. - * - * @return pointer to netbuf struct - */ -netbuf netbuffer_get( sysint sz ); - - -/** - * Returns the given netbuffer (decreases refcount, if its 0 - the buffer will get returned to the pool) - * - * @param buf - the buffer to return - */ -void netbuffer_put( netbuf buf ); - - -/** - * Increases the Refcount on the given buffer - * (used for areasends .. etc) - * - */ -void netbuffer_incref( netbuf buf ); - - -// Some Useful macros -#define NBUFP(netbuf,pos) (((uint8*)(netbuf->buf)) + (pos)) -#define NBUFB(netbuf,pos) (*(uint8*)((netbuf->buf) + (pos))) -#define NBUFW(netbuf,pos) (*(uint16*)((netbuf->buf) + (pos))) -#define NBUFL(netbuf,pos) (*(uint32*)((netbuf->buf) + (pos))) - - - -#endif diff --git a/src/common/network.c b/src/common/network.c deleted file mode 100644 index e958bff33c..0000000000 --- a/src/common/network.c +++ /dev/null @@ -1,1034 +0,0 @@ -// -// Network Subsystem (previously known as socket system) -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// -// -//#ifdef HAVE_ACCETP4 -#define _GNU_SOURCE -//#endif - - -#define ENABLE_IPV6 -#define HAVE_ACCEPT4 -#define EVENTS_PER_CYCLE 10 -#define PARANOID_CHECKS - -// Local Vars (settings..) -static int l_ListenBacklog = 64; - -// -// Global Session Array (previously exported as session[] -// -SESSION g_Session[MAXCONN]; - - -// -static bool onSend(int32 fd); - - -#define _network_free_netbuf_async( buf ) add_timer( 0, _network_async_free_netbuf_proc, 0, (intptr_t) buf) -static int _network_async_free_netbuf_proc(int tid, unsigned int tick, int id, intptr_t data){ - // netbuf is in data - netbuffer_put( (netbuf)data ); - - return 0; -}//end: _network_async_free_netbuf_proc() - - - -void network_init(){ - SESSION *s; - int32 i; - - memset(g_Session, 0x00, (sizeof(SESSION) * MAXCONN) ); - - for(i = 0; i < MAXCONN; i++){ - s = &g_Session[i]; - - s->type = NST_FREE; - s->disconnect_in_progress = false; - } - - // Initialize the corresponding event dispatcher - evdp_init(); - - // - add_timer_func_list(_network_async_free_netbuf_proc, "_network_async_free_netbuf_proc"); - -}//end: network_init() - - -void network_final(){ - - // @TODO: - // .. disconnect and cleanup everything! - - evdp_final(); - -}//end: network_final() - - -void network_do(){ - struct EVDP_EVENT l_events[EVENTS_PER_CYCLE]; - register struct EVDP_EVENT *ev; - register int n, nfds; - register SESSION *s; - - nfds = evdp_wait( l_events, EVENTS_PER_CYCLE, 1000); // @TODO: timer_getnext() - - for(n = 0; n < nfds; n++){ - ev = &l_events[n]; - s = &g_Session[ ev->fd ]; - - if(ev->events & EVDP_EVENT_HUP){ - network_disconnect( ev->fd ); - continue; // no further event processing. - }// endif vent is HUP (disconnect) - - - if(ev->events & EVDP_EVENT_IN){ - - if(s->onRecv != NULL){ - if( false == s->onRecv(ev->fd) ){ - network_disconnect(ev->fd); - continue; // .. - } - }else{ - ShowError("network_do: fd #%u has no onRecv proc set. - disconnecting\n", ev->fd); - network_disconnect(ev->fd); - continue; - } - - }// endif event is IN (recv) - - - if(ev->events & EVDP_EVENT_OUT){ - if(s->onSend != NULL){ - if( false == s->onSend(ev->fd) ){ - network_disconnect(ev->fd); - continue; - } - }else{ - ShowError("network_do: fd #%u has no onSend proc set. - disconnecting\n", ev->fd); - network_disconnect(ev->fd); - continue; - } - }// endif event is OUT (send) - - }//endfor - -}//end: network_do() - - -static bool _setnonblock(int32 fd){ - int flags = fcntl(fd, F_GETFL, 0); - if(fcntl(fd, F_SETFL, flags | O_NONBLOCK) != 0) - return false; - - return true; -}//end: _setnonblock() - - -static bool _network_accept(int32 fd){ - SESSION *listener = &g_Session[fd]; - SESSION *s; - union{ - struct sockaddr_in v4; -#ifdef ENABLE_IPV6 - struct sockaddr_in6 v6; -#endif - } _addr; - int newfd; - socklen_t addrlen; - struct sockaddr *addr; - - // Accept until OS returns - nothing to accept anymore - // - this is required due to our EVDP abstraction. (which handles on listening sockets similar to epoll's EPOLLET flag.) - while(1){ -#ifdef ENABLE_IPV6 - if(listener->v6 == true){ - addrlen = sizeof(_addr.v6); - addr = (struct sockaddr*)&_addr.v6; - }else{ -#endif - addrlen = sizeof(_addr.v4); - addr = (struct sockaddr*)&_addr.v4; -#ifdef ENABLE_IPV6 - } -#endif - -#ifdef HAVE_ACCEPT4 - newfd = accept4(fd, addr, &addrlen, SOCK_NONBLOCK); -#else - newfd = accept(fd, addr, &addrlen); -#endif - - if(newfd == -1){ - if(errno == EAGAIN || errno == EWOULDBLOCK) - break; // this is fully valid & whished., se explaination on top of while(1) - - // Otherwis .. we have serious problems :( seems tahat our listner has gone away.. - // @TODO handle this .. - ShowError("_network_accept: accept() returned error. closing listener. (errno: %u / %s)\n", errno, strerror(errno)); - - return false; // will call disconnect after return. - //break; - } - -#ifndef HAVE_ACCEPT4 // no accept4 means, we have to set nonblock by ourself. .. - if(_setnonblock(newfd) == false){ - ShowError("_network_accept: failed to set newly accepted connection nonblocking (errno: %u / %s). - disconnecting.\n", errno, strerror(errno)); - close(newfd); - continue; - } -#endif - - // Check connection limits. - if(newfd >= MAXCONN){ - ShowError("_network_accept: failed to accept connection - MAXCONN (%u) exceeded.\n", MAXCONN); - close(newfd); - continue; // we have to loop over the events (and disconnect them too ..) but otherwise we would leak event notifications. - } - - - // Create new Session. - s = &g_Session[newfd]; - s->type = NST_CLIENT; - - // The new connection inherits listenr's handlers. - s->onDisconnect = listener->onDisconnect; - s->onConnect = listener->onConnect; // maybe useless but .. fear the future .. :~ - - // Register the new connection @ EVDP - if( evdp_addclient(newfd, &s->evdp_data) == false){ - ShowError("_network_accept: failed to accept connection - event subsystem returned an error.\n"); - close(newfd); - s->type = NST_FREE; - } - - // Call the onConnect handler on the listener. - if( listener->onConnect(newfd) == false ){ - // Resfused by onConnect handler.. - evdp_remove(newfd, &s->evdp_data); - - close(newfd); - s->type = NST_FREE; - - s->data = NULL; // be on the safe side ~ ! - continue; - } - - - } - - return true; -}//end: _network_accept() - - -void network_disconnect(int32 fd){ - SESSION *s = &g_Session[fd]; - netbuf b, bn; - - // Prevent recursive calls - // by wrong implemented on disconnect handlers.. and such.. - if(s->disconnect_in_progress == true) - return; - - s->disconnect_in_progress = true; - - - // Disconnect Todo: - // - Call onDisconnect Handler - // - Release all Assigned buffers. - // - remove from event system (notifications) - // - cleanup session structure - // - close connection. - // - - if(s->onDisconnect != NULL && - s->type != NST_LISTENER){ - - s->onDisconnect( fd ); - } - - // Read Buffer - if(s->read.buf != NULL){ - netbuffer_put(s->read.buf); - s->read.buf = NULL; - } - - // Write Buffer(s) - b = s->write.buf; - while(1){ - if(b == NULL) break; - - bn = b->next; - - netbuffer_put(b); - - b = bn; - } - s->write.buf = NULL; - s->write.buf_last = NULL; - - s->write.n_outstanding = 0; - s->write.max_outstanding = 0; - - - // Remove from event system. - evdp_remove(fd, &s->evdp_data); - - // Cleanup Session Structure. - s->type = NST_FREE; - s->data = NULL; // no application level data assigned - s->disconnect_in_progress = false; - - - // Close connection - close(fd); - -}//end: network_disconnect() - - -int32 network_addlistener(bool v6, const char *addr, uint16 port){ - SESSION *s; - int fd; -#ifdef SO_REUSEADDR - int optval; -#endif - -#if !defined(ENABLE_IPV6) - if(v6 == true){ - ShowError("network_addlistener(%c, '%s', %u): this release has no IPV6 support.\n", (v6==true?'t':'f'), addr, port); - return -1; - } -#endif - -#ifdef ENABLE_IPV6 - if(v6 == true) - fd = socket(AF_INET6, SOCK_STREAM, 0); - else -#endif - fd = socket(AF_INET, SOCK_STREAM, 0); - - // Error? - if(fd == -1){ - ShowError("network_addlistener(%c, '%s', %u): socket() failed (errno: %u / %s)\n", (v6==true?'t':'f'), addr, port, errno, strerror(errno)); - return -1; - } - - // Too many connections? - if(fd >= MAXCONN){ - ShowError("network_addlistener(%c, '%s', %u): cannot create listener, exceeds more than supported connections (%u).\n", (v6==true?'t':'f'), addr, port, MAXCONN); - close(fd); - return -1; - } - - s = &g_Session[fd]; - if(s->type != NST_FREE){ // additional checks.. :) - ShowError("network_addlistener(%c, '%s', %u): failed, got fd #%u which is already in use in local session table?!\n", (v6==true?'t':'f'), addr, port, fd); - close(fd); - return -1; - } - - // Fill ip addr structs -#ifdef ENABLE_IPV6 - if(v6 == true){ - memset(&s->addr.v6, 0x00, sizeof(s->addr.v6)); - s->addr.v6.sin6_family = AF_INET6; - s->addr.v6.sin6_port = htons(port); - if(inet_pton(AF_INET6, addr, &s->addr.v6.sin6_addr) != 1){ - ShowError("network_addlistener(t, '%s', %u): failed to parse the given IPV6 address.\n", addr, port); - close(fd); - return -1; - } - }else{ -#endif - memset(&s->addr.v4, 0x00, sizeof(s->addr.v4)); - s->addr.v4.sin_family = AF_INET; - s->addr.v4.sin_port = htons(port); - s->addr.v4.sin_addr.s_addr = inet_addr(addr); -#ifdef ENABLE_IPV6 - } -#endif - - // if OS has support for SO_REUSEADDR, apply the flag - // so the address could be used when there're still time_wait sockets outstanding from previous application run. -#ifdef SO_REUSEADDR - optval = 1; - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); -#endif - - // Bind -#ifdef ENABLE_IPV6 - if(v6 == true){ - if( bind(fd, (struct sockaddr*)&s->addr.v6, sizeof(s->addr.v6)) == -1) { - ShowError("network_addlistener(t, '%s', %u): bind failed (errno: %u / %s)\n", addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - }else{ -#endif - if( bind(fd, (struct sockaddr*)&s->addr.v4, sizeof(s->addr.v4)) == -1) { - ShowError("network_addlistener(f, '%s', %u): bind failed (errno: %u / %s)\n", addr, port, errno, strerror(errno)); - close(fd); - return -1; - } -#ifdef ENABLE_IPV6 - } -#endif - - if( listen(fd, l_ListenBacklog) == -1){ - ShowError("network_addlistener(%c, '%s', %u): listen failed (errno: %u / %s)\n", (v6==true?'t':'f'), addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - - - // Set to nonblock! - if(_setnonblock(fd) == false){ - ShowError("network_addlistener(%c, '%s', %u): cannot set to nonblock (errno: %u / %s)\n", (v6==true?'t':'f'), addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - - // Rgister @ evdp. - if( evdp_addlistener(fd, &s->evdp_data) != true){ - ShowError("network_addlistener(%c, '%s', %u): eventdispatcher subsystem returned an error.\n", (v6==true?'t':'f'), addr, port); - close(fd); - return -1; - } - - // Apply flags on Session array for this conneciton. - if(v6 == true) s->v6 = true; - else s->v6 = false; - - s->type = NST_LISTENER; - s->onRecv = _network_accept; - - ShowStatus("Added Listener on '%s':%u\n", addr, port, (v6==true ? "(ipv6)":"(ipv4)") ); - - return fd; -}//end: network_addlistener() - - -static bool _network_connect_establishedHandler(int32 fd){ - register SESSION *s = &g_Session[fd]; - int val; - socklen_t val_len; - - if(s->type == NST_FREE) - return true; // due to multiple non coalesced event notifications - // this can happen .. when a previous handled event has already disconnected the connection - // within the same cycle.. - - val = -1; - val_len = sizeof(val); - getsockopt(fd, SOL_SOCKET, SO_ERROR, &val, &val_len); - - if(val != 0){ - // :( .. cleanup session.. - s->type = NST_FREE; - s->onSend = NULL; - s->onConnect = NULL; - s->onDisconnect = NULL; - - evdp_remove(fd, &s->evdp_data); - close(fd); - - return true; // we CANT return false, - // becuase the normal disconnect procedure would execute the ondisconnect handler, which we dont want .. in this case. - }else{ - // ok - if(s->onConnect(fd) == false) { - // onConnect handler has refused the connection .. - // cleanup .. and ok - s->type = NST_FREE; - s->onSend = NULL; - s->onConnect = NULL; - s->onDisconnect = NULL; - - evdp_remove(fd, &s->evdp_data); - close(fd); - - return true; // we dnot want the ondisconnect handler to be executed, so its okay to handle this by ourself. - } - - // connection established ! - // - if( evdp_outgoingconnection_established(fd, &s->evdp_data) == false ){ - return false; // we want the normal disconnect procedure.. with call to ondisconnect handler. - } - - s->onSend = NULL; - - ShowStatus("#%u connection successfull!\n", fd); - } - - return true; -}//end: _network_connect_establishedHandler() - - -int32 network_connect(bool v6, - const char *addr, - uint16 port, - const char *from_addr, - uint16 from_port, - bool (*onConnectionEstablishedHandler)(int32 fd), - void (*onConnectionLooseHandler)(int32 fd) -){ - register SESSION *s; - int32 fd, ret; - struct sockaddr_in ip4; -#ifdef SO_REUSEADDR - int optval; -#endif -#ifdef ENABLE_IPV6 - struct sockaddr_in6 ip6; -#endif - -#ifdef ENABLE_IPV6 - if(v6 == true) - fd = socket(AF_INET6, SOCK_STREAM, 0); - else -#endif - fd = socket(AF_INET, SOCK_STREAM, 0); - -#ifndef ENABLE_IPV6 - // check.. - if(v6 == true){ - ShowError("network_connect(%c, '%s', %u...): tried to create an ipv6 connection, IPV6 is not supported in this release.\n", (v6==true?'t':'f'), addr, port); - return -1; - } -#endif - - // check connection limits. - if(fd >= MAXCONN){ - ShowError("network_connect(%c, '%s', %u...): cannot create new connection, exceeeds more than supported connections (%u)\n", (v6==true?'t':'f'), addr, port ); - close(fd); - return -1; - } - - // Originating IP/Port pair given ? - if(from_addr != NULL && *from_addr != 0){ - //.. - #ifdef SO_REUSEADDR - optval=1; - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); - #endif - - #ifdef ENABLE_IPV6 - if(v6 == true){ - memset(&ip6, 0x00, sizeof(ip6)); - ip6.sin6_family = AF_INET6; - ip6.sin6_port = htons(from_port); - - if(inet_pton(AF_INET6, from_addr, &ip6.sin6_addr) != 1){ - ShowError("network_connect(t, '%s', %u...): cannot parse originating (from) IPV6 address (errno: %u / %s)\n", addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - - ret = bind(fd, (struct sockaddr*)&ip6, sizeof(ip6)); - }else{ - #endif - memset(&ip4, 0x00, sizeof(ip4)); - - ip4.sin_family = AF_INET; - ip4.sin_port = htons(from_port); - ip4.sin_addr.s_addr = inet_addr(from_addr); - ret = bind(fd, (struct sockaddr*)&ip4, sizeof(ip4)); - #ifdef ENABLE_IPV6 - } - #endif - - } - - // Set non block - if(_setnonblock(fd) == false){ - ShowError("network_connect(%c, '%s', %u...): cannot set socket to nonblocking (errno: %u / %s)\n", (v6==true?'t':'f'), addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - - - // Create ip addr block to connect to .. -#ifdef ENABLE_IPV6 - if(v6 == true){ - memset(&ip6, 0x00, sizeof(ip6)); - ip6.sin6_family = AF_INET6; - ip6.sin6_port = htons(port); - - if(inet_pton(AF_INET6, addr, &ip6.sin6_addr) != 1){ - ShowError("network_connect(t, '%s', %u...): cannot parse destination IPV6 address (errno: %u / %s)\n", addr, port, errno, strerror(errno)); - close(fd); - return -1; - } - - }else{ -#endif - memset(&ip4, 0x00, sizeof(ip4)); - - ip4.sin_family = AF_INET; - ip4.sin_port = htons(port); - ip4.sin_addr.s_addr = inet_addr(addr); -#ifdef ENABLE_IPV6 - } -#endif - - // Assign Session.. - s = &g_Session[fd]; - s->type = NST_OUTGOING; - s->v6 = v6; - s->onConnect = onConnectionEstablishedHandler; - s->onDisconnect = onConnectionLooseHandler; - s->onRecv = NULL; - s->onSend = _network_connect_establishedHandler; -#ifdef ENABLE_IPV6 - if(v6 == true) - memcpy(&s->addr.v6, &ip6, sizeof(ip6)); - else -#endif - memcpy(&s->addr.v4, &ip4, sizeof(ip4)); - - // Register @ EVDP. as outgoing (see doc of the function) - if(evdp_addconnecting(fd, &s->evdp_data) == false){ - ShowError("network_connect(%c, '%s', %u...): eventdispatcher subsystem returned an error.\n", (v6==true?'t':'f'), addr, port); - - // cleanup session x.x.. - s->type = NST_FREE; - s->onConnect = NULL; - s->onDisconnect = NULL; - s->onSend = NULL; - - // close, return error code. - close(fd); - return -1; - } - -#ifdef ENABLE_IPV6 - if(v6 == true) - ret = connect(fd, (struct sockaddr*)&ip6, sizeof(ip6)); - else -#endif - ret = connect(fd, (struct sockaddr*)&ip4, sizeof(ip4)); - - - // - if(ret != 0 && errno != EINPROGRESS){ - ShowWarning("network_connect(%c, '%s', %u...): connection failed (errno: %u / %s)\n", (v6==true?'t':'f'), addr, port, errno, strerror(errno)); - - // Cleanup session .. - s->type = NST_FREE; - s->onConnect = NULL; - s->onDisconnect = NULL; - s->onSend = NULL; - - // .. remove from evdp and close fd. - evdp_remove(fd, &s->evdp_data); - close(fd); - return -1; - } - - // ! The Info Message :~D - ShowStatus("network_connect fd#%u (%s:%u) in progress.. \n", fd, addr, port); - -return fd; -}//end: network_connect() - - -static bool _onSend(int32 fd){ - register SESSION *s = &g_Session[fd]; - register netbuf buf, buf_next; - register uint32 szNeeded; - register int wLen; - - if(s->type == NST_FREE) - return true; // Possible due to multipl non coalsced event notifications - // so onSend gets called after disconnect caused by an previous vent. - // we can ignore the call to onSend, then. - - buf = s->write.buf; - while(1){ - if(buf == NULL) - break; - - buf_next = buf->next; - - - szNeeded = (buf->dataLen - s->write.dataPos); // using th session-local .dataPos member, due to shared write buffer support. - - // try to write. - wLen = write(fd, &buf->buf[s->write.dataPos], szNeeded); - if(wLen == 0){ - return false; // eof. - }else if(wLen == -1){ - if(errno == EAGAIN || errno == EWOULDBLOCK) - return true; // dont disconnect / try again later. - - // all other errors. . - return false; - } - - // Wrote data.. => - szNeeded -= wLen; - if(szNeeded > 0){ - // still data left .. - // - s->write.dataPos += wLen; // fix offset. - return true; - }else{ - // this buffer has been written successfully - // could be returned to pool. - netbuffer_put(buf); - s->write.n_outstanding--; // When threadsafe -> Interlocked here. - s->write.dataPos = 0; - } - - - buf = buf_next; - } - - // okay, - // reaching this part means: - // while interrupted by break - - // which means all buffers are written, nothing left - // - - s->write.buf_last = NULL; - s->write.buf = NULL; - s->write.n_outstanding = 0; - s->write.dataPos = 0; - - // Remove from event dispatcher (write notification) - // - evdp_writable_remove(fd, &s->evdp_data); - - return true; -}//end: _onSend() - - -static bool _onRORecv(int32 fd){ - register SESSION *s = &g_Session[fd]; - register uint32 szNeeded; - register char *p; - register int rLen; - - if(s->type == NST_FREE) - return true; // Possible due to multiple non coalesced events by evdp. - // simply ignore this call returning positive result. - - // Initialize p and szNeeded depending on change - // - switch(s->read.state){ - case NRS_WAITOP: - szNeeded = s->read.head_left; - p = ((char*)&s->read.head[0]) + (2-szNeeded); - break; - - case NRS_WAITLEN: - szNeeded = s->read.head_left; - p = ((char*)&s->read.head[1]) + (2-szNeeded); - break; - - case NRS_WAITDATA:{ - register netbuf buf = s->read.buf; - - szNeeded = (buf->dataLen - buf->dataPos); - p = (char*)&buf->buf[ buf->dataPos ]; - } - break; - - default: - // .. the impossible gets possible .. - ShowError("_onRORecv: fd #%u has unknown read.state (%d) - disconnecting\n", fd, s->read.state); - return false; - break; - } - - - // - - rLen = read(fd, p, szNeeded); - if(rLen == 0){ - // eof.. - return false; - }else if(rLen == -1){ - - if(errno == EAGAIN || errno == EWOULDBLOCK){ - // try again later .. (this case shouldnt happen, because we're event trigered.. but .. sometimes it happens :) - return true; - } - - // an additional interesting case would be - // EINTR, this 'could' be handled .. but: - // posix says that its possible that data gets currupted during irq - // or data gor read and not reported.., so we'd have a data loss.. - // (which shouldnt happen with stream based protocols such as tcp) - // its better to disonnect the client in that case. - - return false; - } - - // - // Got Data: - // next action also depends on current state .. - // - szNeeded -= rLen; - switch(s->read.state){ - case NRS_WAITOP: - - if(szNeeded > 0){ - // still data missing .. - s->read.head_left = szNeeded; - return true; // wait for completion. - }else{ - // complete .. - // next state depends on packet type. - - s->read.head[1] = ((uint16*)s->netparser_data)[ s->read.head[0] ]; // store lenght of packet by opcode head[0] to head[1] - - if(s->read.head[1] == ROPACKET_UNKNOWN){ - // unknown packet - disconnect - ShowWarning("_onRORecv: fd #%u got unlnown packet 0x%04x - disconnecting.\n", fd, s->read.head[0]); - return false; - } - else if(s->read.head[1] == ROPACKET_DYNLEN){ - // dynamic length - // next state: requrie len. - s->read.state = NRS_WAITLEN; - s->read.head_left = 2; - return true; // - } - else if(s->read.head[1] == 2){ - // packet has no data (only opcode) - register netbuf buf = netbuffer_get(2); // :D whoohoo its giant! - - NBUFW(buf, 0) = s->read.head[0]; // store opcode @ packet begin. - buf->dataPos = 2; - buf->dataLen = 2; - buf->next = NULL; - - // Back to initial state -> Need opcode. - s->read.state = NRS_WAITOP; - s->read.head_left = 2; - s->read.buf = NULL; - - // Call completion routine here. - s->onPacketComplete(fd, s->read.head[0], 2, buf); - - return true; // done :) - } - else{ - // paket needs .. data .. - register netbuf buf = netbuffer_get( s->read.head[1] ); - - NBUFW(buf, 0) = s->read.head[0]; // store opcode @ packet begin. - buf->dataPos = 2; - buf->dataLen = s->read.head[1]; - buf->next = NULL; - - // attach buffer. - s->read.buf = buf; - - // set state: - s->read.state = NRS_WAITDATA; - - return true; - } - - }//endif: szNeeded > 0 (opcode read completed?) - - break; - - - case NRS_WAITLEN: - - if(szNeeded > 0){ - // incomplete .. - s->read.head_left = szNeeded; - return true; - }else{ - - if(s->read.head[1] == 4){ - // packet has no data (only opcode + length) - register netbuf buf = netbuffer_get( 4 ); - - NBUFL(buf, 0) = *((uint32*)&s->read.head[0]); // copy Opcode + length to netbuffer using MOVL - buf->dataPos = 4; - buf->dataLen = 4; - buf->next = NULL; - - // set initial state (need opcode) - s->read.state = NRS_WAITOP; - s->read.head_left = 2; - s->read.buf = NULL; - - // call completion routine. - s->onPacketComplete(fd, s->read.head[0], 4, buf); - - return true; - } - else if(s->read.head[1] < 4){ - // invalid header. - ShowWarning("_onRORecv: fd #%u invalid header - got packet 0x%04x, reported length < 4 - INVALID - disconnecting\n", fd, s->read.head[0]); - return false; - } - else{ - // Data needed - // next state -> waitdata! - register netbuf buf = netbuffer_get( s->read.head[1] ); - - NBUFL(buf, 0) = *((uint32*)&s->read.head[0]); // copy Opcode + length to netbuffer using MOVL - buf->dataPos = 4; - buf->dataLen = s->read.head[1]; - buf->next = NULL; - - // attach to session: - s->read.buf = buf; - s->read.state = NRS_WAITDATA; - - return true; - } - - }//endif: szNeeded > 0 (length read complete?) - - break; - - - case NRS_WAITDATA: - - if(szNeeded == 0){ - // Packet finished! - // compltion. - register netbuf buf = s->read.buf; - - // set initial state. - s->read.state = NRS_WAITOP; - s->read.head_left = 2; - s->read.buf = NULL; - - // Call completion routine. - s->onPacketComplete(fd, NBUFW(buf, 0), buf->dataLen, buf); - - return true; - }else{ - // still data needed - s->read.buf->dataPos += rLen; - - return true; - } - break; - - - // - default: - ShowError("_onRORecv: fd #%u has unknown read.state (%d) [2] - disconnecting\n", fd, s->read.state); - return false; - break; - } - - - return false; -}//end: _onRORecv() - - -void network_send(int32 fd, netbuf buf){ - register SESSION *s = &g_Session[fd]; - -#ifdef PARANOID_CHECKS - if(fd >= MAXCONN){ - ShowError("network_send: tried to attach buffer to connection idientifer #%u which is out of bounds.\n", fd); - _network_free_netbuf_async(buf); - return; - } -#endif - - - if(s->type == NST_FREE) - return; - - // Check Max Outstanding buffers limit. - if( (s->write.max_outstanding > 0) && - (s->write.n_outstanding >= s->write.max_outstanding) ){ - - ShowWarning("network_send: fd #%u max Outstanding buffers exceeded. - disconnecting.\n", fd); - network_disconnect(fd); - // - _network_free_netbuf_async(buf); - return; - } - - - // Attach to the end: - buf->next = NULL; - if(s->write.buf_last != NULL){ - s->write.buf_last->next = buf; - s->write.buf_last = buf; - - }else{ - // currently no buffer attached. - s->write.buf = s->write.buf_last = buf; - - // register @ evdp for writable notification. - evdp_writable_add(fd, &s->evdp_data); // - } - - - // - s->write.n_outstanding++; - -}//end: network_send() - - -void network_parser_set_ro(int32 fd, - int16 *packetlentable, - void (*onPacketCompleteProc)(int32 fd, uint16 op, uint16 len, netbuf buf) - ){ - register SESSION *s = &g_Session[fd]; - register netbuf b, nb; // used for potential free attached buffers. - - if(s->type == NST_FREE) - return; - - s->onPacketComplete = onPacketCompleteProc; - - s->onRecv = _onRORecv; // .. - s->onSend = _onSend; // Using the normal generic netbuf based send function. - - s->netparser_data = packetlentable; - - // Initial State -> Need Packet OPCode. - s->read.state = NRS_WAITOP; - s->read.head_left = 2; - - - // Detach (if..) all buffers. - if(s->read.buf != NULL){ - _network_free_netbuf_async(s->read.buf); // - s->read.buf = NULL; - } - - if(s->write.buf != NULL){ - b = s->write.buf; - while(1){ - nb = b->next; - - _network_free_netbuf_async(b); - - b = nb; - } - - s->write.buf = NULL; - s->write.buf_last = NULL; - s->write.n_outstanding = 0; - } - - // not changing any limits on outstanding .. - // - -}//end: network_parser_set_ro() diff --git a/src/common/network.h b/src/common/network.h deleted file mode 100644 index 18da682570..0000000000 --- a/src/common/network.h +++ /dev/null @@ -1,189 +0,0 @@ -#ifndef _rA_NETWORK_H_ -#define _rA_NETWORK_H_ - -#include <netinet/in.h> -#include "cbasetypes.h" -#include "netbuffer.h" -#include "evdp.h" - -#ifndef MAXCONN -#define MAXCONN 16384 -#endif - - -typedef struct SESSION{ - EVDP_DATA evdp_data; // Must be always the frist member! (some evdp's may rely on this fact) - - // Connection Type - enum{ NST_FREE=0, NST_LISTENER = 1, NST_CLIENT=2, NST_OUTGOING=3} type; - - // Flags / Settings. - bool v6; // is v6? - bool disconnect_in_progress; // To prevent stack overflows / recursive calls. - - - union{ // union to save memory. - struct sockaddr_in v4; - struct sockaddr_in6 v6; - }addr; - - - // "lowlevel" Handlers - // (Implemented by the protocol specific parser) - // - bool (*onRecv)(int32 fd); // return false = disconnect - bool (*onSend)(int32 fd); // return false = disconnect - - // Event Handlers for LISTENER type sockets - // - // onConnect gets Called when a connection has been - // successfully accepted. - // Session entry is available in this Handler! - // A returncode of false will reejct the connection (disconnect) - // Note: When rejecting a connection in onConnect by returning false - // The onDisconnect handler wont get called! - // Note: the onConnect Handler is also responsible for setting - // the appropriate netparser (which implements onRecv/onSend..) [protocol specific] - // - // onDisconnect gets called when a connection gets disconnected - // (by peer as well as by core) - // - bool (*onConnect)(int32 fd); // return false = disconnect (wont accept) - void (*onDisconnect)(int32 fd); - - - // - // Parser specific data - // - void *netparser_data; // incase of RO Packet Parser, pointer to packet len table (uint16array) - void (*onPacketComplete)(int32 fd, uint16 op, uint16 len, netbuf buf); - - - // - // Buffers - // - struct{ - enum NETREADSTATE { NRS_WAITOP = 0, NRS_WAITLEN = 1, NRS_WAITDATA = 2} state; - - uint32 head_left; - uint16 head[2]; - - netbuf buf; - } read; - - struct{ - uint32 max_outstanding; - uint32 n_outstanding; - - uint32 dataPos; - - netbuf buf, buf_last; - } write; - - // Application Level data Pointer - // (required for backward compatibility with previous athena socket system.) - void *data; - -} SESSION; - - -/** - * Subsystem Initialization / Finalization. - * - */ -void network_init(); -void network_final(); - - -/** - * Will do the net work :) .. - */ -void network_do(); - - -/** - * Adds a new listner. - * - * @param v6 v6 listner? - * @param *addr the address to listen on. - * @param port port to listen on - * - * @return -1 on error otherwise the identifier of the new listener. - */ -int32 network_addlistener(bool v6, const char *addr, uint16 port); - - -/** - * Tries to establish an outgoing connection. - * - * @param v6 operate with IPv6 addresses? - * @param addr the address to connect to - * @param port the port to connect to - * @param from_addr the address to connect from (local source / optional if auto -> NULL) - * @param from_port the port to connect from (local source / optional if auto -> 0) - * @param onConnectionEstablishedHandler callback that gets called when the connection is established. - * @param onConnectionLooseHandler callback that gets called when the connection gets disconnected (or the connection couldnt be established) - * - * @return -1 on error otherwise the identifier of the new connection - */ -int32 network_connect(bool v6, - const char *addr, - uint16 port, - const char *from_addr, - uint16 from_port, - bool (*onConnectionEstablishedHandler)(int32 fd), - void (*onConnectionLooseHandler)(int32 fd) -); - - - -/** - * Disconnects the given connection - * - * @param fd connection identifier. - * - * @Note: - * - onDisconnect callback gets called! - * - cleares (returns) all assigned buffers - * - */ -void network_disconnect(int32 fd); - - -/** - * Attach's a netbuffer at the end of sending queue to the given connection - * - * @param fd connection identifier - * @param buf netbuffer to attach. - */ -void network_send(int32 fd, netbuf buf); - - -/** - * Sets the parser to RO Protocol like Packet Parser. - * - * @param fd connection identifier - * @param *packetlentable pointer to array of uint16 in size of UINT16_MAX, - * @param onComplteProc callback for packet completion. - * - * @note: - * PacketLen Table Fromat: - * each element's offsets represents th ro opcode. - * value is length. - * a length of 0 means the packet is dynamic. - * a length of UINT16_MAX means the packet is unknown. - * - * Static Packets must contain their hader in len so (0x64 == 55 ..) - * - */ -void network_parser_set_ro(int32 fd, - int16 *packetlentable, - void (*onPacketCompleteProc)(int32 fd, uint16 op, uint16 len, netbuf buf) - ); -#define ROPACKET_UNKNOWN UINT16_MAX -#define ROPACKET_DYNLEN 0 - - - - -#endif diff --git a/src/common/nullpo.c b/src/common/nullpo.cpp similarity index 98% rename from src/common/nullpo.c rename to src/common/nullpo.cpp index 8a3f1a33aa..26b301ebc2 100644 --- a/src/common/nullpo.c +++ b/src/common/nullpo.cpp @@ -4,8 +4,8 @@ #include <stdio.h> #include <stdarg.h> #include <string.h> -#include "nullpo.h" -#include "showmsg.h" +#include "nullpo.hpp" +#include "showmsg.hpp" static void nullpo_info_core(const char *file, int line, const char *func, const char *fmt, va_list ap); static void nullpo_info_core_(const char *file, int line, const char *func); diff --git a/src/common/nullpo.h b/src/common/nullpo.hpp similarity index 97% rename from src/common/nullpo.h rename to src/common/nullpo.hpp index 778788dc61..e7532b1a84 100644 --- a/src/common/nullpo.h +++ b/src/common/nullpo.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _NULLPO_H_ -#define _NULLPO_H_ +#ifndef _NULLPO_HPP_ +#define _NULLPO_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" +#include "cbasetypes.hpp" #define NLP_MARK __FILE__, __LINE__, __func__ @@ -211,8 +207,4 @@ void nullpo_info_f(const char *file, int line, const char *func, const char *fmt, ...) __attribute__((format(printf,4,5))); -#ifdef __cplusplus -} -#endif - -#endif /* _NULLPO_H_ */ +#endif /* _NULLPO_HPP_ */ diff --git a/src/common/raconf.c b/src/common/raconf.c deleted file mode 100644 index c0d715575c..0000000000 --- a/src/common/raconf.c +++ /dev/null @@ -1,582 +0,0 @@ -// -// Athena style config parser -// (would be better to have "one" implementation instead of .. 4 :) -// -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) RAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "cbasetypes.h" -#include "showmsg.h" -#include "db.h" -#include "malloc.h" - -#include "raconf.h" - -#define SECTION_LEN 32 -#define VARNAME_LEN 64 - -struct raconf { - DBMap *db; -}; - - -struct conf_value{ - int64 intval; - bool bval; - double floatval; - size_t strval_len; // not includung \0 - char strval[16]; -}; - - - -static struct conf_value *makeValue(const char *key, char *val, size_t val_len){ - struct conf_value *v; -/* size_t sz; - - sz = sizeof(struct conf_value); - if(val_len >= sizeof(v->strval)) - sz += (val_len - sizeof(v->strval) + 1);*/ - - v = (struct conf_value*)aCalloc(1, sizeof(struct conf_value)); - if(v == NULL){ - ShowFatalError("raconf: makeValue => Out of Memory while allocating new node.\n"); - return NULL; - } - - memcpy(v->strval, val, val_len); - v->strval[val_len+1] = '\0'; - v->strval_len = val_len; - - - // Parse boolean value: - if((val_len == 4) && (strncmpi("true", val, 4) == 0)) - v->bval = true; - else if((val_len == 3) && (strncmpi("yes", val, 3) == 0)) - v->bval = true; - else if((val_len == 3) && (strncmpi("oui", val, 3) == 0)) - v->bval = true; - else if((val_len == 2) && (strncmpi("si", val, 2) == 0)) - v->bval = true; - else if((val_len == 2) && (strncmpi("ja", val, 2) == 0)) - v->bval = true; - else if((val_len == 1) && (*val == '1')) - v->bval = true; - else if((val_len == 5) && (strncmpi("false", val, 5) == 0)) - v->bval = false; - else if((val_len == 2) && (strncmpi("no", val, 2) == 0)) - v->bval = false; - else if((val_len == 3) && (strncmpi("non", val, 3) == 0)) - v->bval = false; - else if((val_len == 4) && (strncmpi("nein", val, 4) == 0)) - v->bval = false; - else if((val_len == 1) && (*val == '0')) - v->bval = false; - else - v->bval = false; // assume false. - - // Parse number - // Supported formats: - // prefix: 0x hex . - // postix: h for hex - // b for bin (dual) - if( (val_len >= 1 && (val[val_len] == 'h')) || (val_len >= 2 && (val[0] == '0' && val[1] == 'x')) ){//HEX! - if(val[val_len] == 'h'){ - val[val_len]= '\0'; - v->intval = strtoull(val, NULL, 16); - val[val_len] = 'h'; - }else - v->intval = strtoull(&val[2], NULL, 16); - }else if( val_len >= 1 && (val[val_len] == 'b') ){ //BIN - val[val_len] = '\0'; - v->intval = strtoull(val, NULL, 2); - val[val_len] = 'b'; - }else if( *val >='0' && *val <= '9'){ // begins with normal digit, so assume its dec. - // is it float? - bool is_float = false; - char *p; - - for(p = val; *p != '\0'; p++){ - if(*p == '.'){ - v->floatval = strtod(val, NULL); - v->intval = (int64) v->floatval; - is_float = true; - break; - } - } - - if(is_float == false){ - v->intval = strtoull(val, NULL, 10); - v->floatval = (double) v->intval; - } - }else{ - // Everything else: lets use boolean for fallback - if(v->bval == true) - v->intval = 1; - else - v->intval = 0; - } - - return v; -}//end: makeValue() - - -static bool configParse(raconf inst, const char *fileName){ - FILE *fp; - char line[4096]; - char currentSection[SECTION_LEN]; - char *p; - char c; - int linecnt; - size_t linelen; - size_t currentSection_len; - - fp = fopen(fileName, "r"); - if(fp == NULL){ - ShowError("configParse: cannot open '%s' for reading.\n", fileName); - return false; - } - - - // Start with empty section: - currentSection[0] = '\0'; - currentSection_len = 0; - - // - linecnt = 0; - while(1){ - linecnt++; - - if(fgets(line, sizeof(line), fp) != line) - break; - - linelen = strlen(line); - p = line; - - // Skip whitespaces from beginning (space and tab) - _line_begin_skip_whities: - c = *p; - if(c == ' ' || c == '\t'){ - p++; - linelen--; - goto _line_begin_skip_whities; - } - - // Remove linebreaks as (cr or lf) and whitespaces from line end! - _line_end_skip_whities_and_breaks: - c = p[linelen-1]; - if(c == '\r' || c == '\n' || c == ' ' || c == '\t'){ - p[--linelen] = '\0'; - goto _line_end_skip_whities_and_breaks; - } - - // Empty line? - // or line starts with comment (commented out)? - if(linelen == 0 || (p[0] == '/' && p[1] == '/') || p[0] == ';') - continue; - - // Variable names can contain: - // A-Za-z-_.0-9 - // - // Sections start with [ .. ] (INI Style) - // - c = *p; - - // check what we have.. :) - if(c == '['){ // got section! - // Got Section! - // Search for ] - char *start = (p+1); - - while(1){ - ++p; - c = *p; - - if(c == '\0'){ - ShowError("Syntax Error: unterminated Section name in %s:%u (expected ']')\n", fileName, linecnt); - fclose(fp); - return false; - }else if(c == ']'){ // closing backet (section name termination) - if( (p - start + 1) > (sizeof(currentSection) ) ){ - ShowError("Syntax Error: Section name in %s:%u is too large (max Supported length: %u chars)\n", fileName, linecnt, sizeof(currentSection)-1); - fclose(fp); - return false; - } - - // Set section! - *p = '\0'; // add termination here. - memcpy(currentSection, start, (p-start)+1 ); // we'll copy \0, too! (we replaced the ] backet with \0.) - currentSection_len = (p-start); - - break; - - }else if( (c >= '0' && c <= '9') || (c == '-') || (c == ' ') || (c == '_') || (c == '.') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ){ - // skip .. (allowed char / specifier) - continue; - }else{ - ShowError("Syntax Error: Invalid Character '%c' in %s:%u (offset %u) for Section name.\n", c, fileName, linecnt, (p-line)); - fclose(fp); - return false; - } - - }//endwhile: parse section name - - - }else if( (c >= '0' && c <= '9') || (c == '-') || (c == '_') || (c == '.') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ){ - // Got variable! - // Search for '=' or ':' wich termiantes the name - char *start = p; - char *valuestart = NULL; - size_t start_len; - - while(1){ - ++p; - c = *p; - - if(c == '\0'){ - ShowError("Syntax Error: unterminated Variable name in %s:%u\n", fileName, linecnt); - fclose(fp); - return false; - }else if( (c == '=') || (c == ':') ){ - // got name termination - - *p = '\0'; // Terminate it so (start) will hold the pointer to the name. - - break; - - }else if( (c >= '0' && c <= '9') || (c == '-') || (c == '_') || (c == '.') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ){ - // skip .. allowed char - continue; - }else{ - ShowError("Syntax Error: Invalid Character '%c' in %s:%u (offset %u) for Variable name.\n", c, fileName, linecnt, (p-line)); - fclose(fp); - return false; - } - - }//endwhile: parse var name - - start_len = (p-start); - if(start_len >= VARNAME_LEN){ - ShowError("%s:%u Variable length exceeds limit of %u Characters.\n", fileName, linecnt, VARNAME_LEN-1); - fclose(fp); - return false; - }else if(start_len == 0){ - ShowError("%s:%u Empty Variable name is not allowed.\n", fileName, linecnt); - fclose(fp); - return false; - } - - - valuestart = (p+1); - - - // Skip whitespace from begin of value (tab and space) - _skip_value_begin_whities: - c = *valuestart; - if(c == ' ' || c == '\t'){ - valuestart++; - goto _skip_value_begin_whities; - } - - // Scan for value termination, - // wich can be \0 or comment start (// or ; (INI) ) - // - p = valuestart; - while(1){ - c = *p; - if(c == '\0'){ - // Terminated by line end. - break; - }else if(c == '/' && p[1] == '/'){ - // terminated by c++ style comment. - *p = '\0'; - break; - }else if(c == ';'){ - // terminated by ini style comment. - *p = '\0'; - break; - } - - p++; - }//endwhile: search var value end. - - - // Strip whitespaces from end of value. - if(valuestart != p){ // not empty! - p--; - _strip_value_end_whities: - c = *p; - if(c == ' ' || c == '\t'){ - *p = '\0'; - p--; - goto _strip_value_end_whities; - } - p++; - } - - - // Buildin Hook: - if( stricmp(start, "import") == 0){ - if( configParse(inst, valuestart) != true){ - ShowError("%s:%u - Import of '%s' failed!\n", fileName, linecnt, valuestart); - } - }else{ - // put it to db. - struct conf_value *v, *o; - char key[ (SECTION_LEN+VARNAME_LEN+1+1) ]; //+1 for delimiter, +1 for termination. - size_t section_len; - - if(*currentSection == '\0'){ // empty / none - strncpy(key, "<unnamed>",9); - section_len = 9; - }else{ - strncpy(key, currentSection, currentSection_len); - section_len = currentSection_len; - } - - key[section_len] = '.'; // Delim - - strncpy(&key[section_len+1], start, start_len); - - key[section_len + start_len + 1] = '\0'; - - - v = makeValue(key, valuestart, (p-valuestart) ); - - // Try to get the old one before - o = strdb_get(inst->db, key); - if(o != NULL){ - strdb_remove(inst->db, key); - aFree(o); // - } - - strdb_put( inst->db, key, v); - } - - - }else{ - ShowError("Syntax Error: unexpected Character '%c' in %s:%u (offset %u)\n", c, fileName, linecnt, (p-line) ); - fclose(fp); - return false; - } - - - - } - - - - fclose(fp); - return true; -}//end: configParse() - - -#define MAKEKEY(dest, section, key) { size_t section_len, key_len; \ - if(section == NULL || *section == '\0'){ \ - strncpy(dest, "<unnamed>", 9); \ - section_len = 9; \ - }else{ \ - section_len = strlen(section); \ - strncpy(dest, section, section_len); \ - } \ - \ - dest[section_len] = '.'; \ - \ - key_len = strlen(key); \ - strncpy(&dest[section_len+1], key, key_len); \ - dest[section_len + key_len + 1] = '\0'; \ - } - - -raconf raconf_parse(const char *file_name){ - struct raconf *rc; - - rc = aCalloc(1, sizeof(struct raconf) ); - if(rc == NULL){ - ShowFatalError("raconf_parse: failed to allocate memory for new handle\n"); - return NULL; - } - - rc->db = strdb_alloc(DB_OPT_BASE | DB_OPT_DUP_KEY, 98); - // - - if(configParse(rc, file_name) != true){ - ShowError("Failed to Parse Configuration file '%s'\n", file_name); - } - - return rc; -}//end: raconf_parse() - - -void raconf_destroy(raconf rc){ - DBIterator *iter; - struct conf_value *v; - - // Clear all entrys in db. - iter = db_iterator(rc->db); - for( v = (struct conf_value*)dbi_first(iter); dbi_exists(iter); v = (struct conf_value*)dbi_next(iter) ){ - aFree(v); - } - dbi_destroy(iter); - - db_destroy(rc->db); - - aFree(rc); - -}//end: raconf_destroy() - -bool raconf_getbool(raconf rc, const char *section, const char *key, bool _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - - v = strdb_get(rc->db, keystr); - if(v == NULL) - return _default; - else - return v->bval; -}//end: raconf_getbool() - - -float raconf_getfloat(raconf rc,const char *section, const char *key, float _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - - v = strdb_get(rc->db, keystr); - if(v == NULL) - return _default; - else - return (float)v->floatval; -}//end: raconf_getfloat() - - -int64 raconf_getint(raconf rc, const char *section, const char *key, int64 _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - - v = strdb_get(rc->db, keystr); - if(v == NULL) - return _default; - else - return v->intval; - -}//end: raconf_getint() - - -const char* raconf_getstr(raconf rc, const char *section, const char *key, const char *_default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - - v = strdb_get(rc->db, keystr); - if(v == NULL) - return _default; - else - return v->strval; -}//end: raconf_getstr() - - -bool raconf_getboolEx(raconf rc, const char *section, const char *fallback_section, const char *key, bool _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - - MAKEKEY(keystr, fallback_section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - return _default; - }else{ - return v->bval; - } - - }else{ - return v->bval; - } -}//end: raconf_getboolEx() - - -float raconf_getfloatEx(raconf rc,const char *section, const char *fallback_section, const char *key, float _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - - MAKEKEY(keystr, fallback_section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - return _default; - }else{ - return (float)v->floatval; - } - - }else{ - return (float)v->floatval; - } - -}//end: raconf_getfloatEx() - - -int64 raconf_getintEx(raconf rc, const char *section, const char *fallback_section, const char *key, int64 _default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - - MAKEKEY(keystr, fallback_section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - return _default; - }else{ - return v->intval; - } - - }else{ - return v->intval; - } - -}//end: raconf_getintEx() - - -const char* raconf_getstrEx(raconf rc, const char *section, const char *fallback_section, const char *key, const char *_default){ - char keystr[SECTION_LEN + VARNAME_LEN + 1 + 1]; - struct conf_value *v; - - MAKEKEY(keystr, section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - - MAKEKEY(keystr, fallback_section, key); - v = strdb_get(rc->db, keystr); - if(v == NULL){ - return _default; - }else{ - return v->strval; - } - - }else{ - return v->strval; - } - -}//end: raconf_getstrEx() diff --git a/src/common/raconf.h b/src/common/raconf.h deleted file mode 100644 index fe8af3568d..0000000000 --- a/src/common/raconf.h +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _rA_CONF_H_ -#define _rA_CONF_H_ - -#include "cbasetypes.h" - -// rAthena generic configuration file parser -// -// Config file Syntax is athena style -// extended with ini style support (including sections) -// -// Comments are started with // or ; (ini style) -// - -typedef struct raconf *raconf; - - -/** - * Parses a rAthna Configuration file - * - * @param file_name path to the file to parse - * - * @returns not NULL incase of success - */ -raconf raconf_parse(const char *file_name); - - -/** - * Frees a Handle received from raconf_parse - * - * @param rc - the handle to free - */ -void raconf_destroy(raconf rc); - - -/** - * Gets the value for Section / Key pair, if key not exists returns _default! - * - */ -bool raconf_getbool(raconf rc, const char *section, const char *key, bool _default); -float raconf_getfloat(raconf rc,const char *section, const char *key, float _default); -int64 raconf_getint(raconf rc, const char *section, const char *key, int64 _default); -const char* raconf_getstr(raconf rc, const char *section, const char *key, const char *_default); - -/** - * Gets the value for Section / Key pair, but has fallback section option if not found in section, - * if not found in both - default gets returned. - * - */ -bool raconf_getboolEx(raconf rc, const char *section, const char *fallback_section, const char *key, bool _default); -float raconf_getfloatEx(raconf rc,const char *section, const char *fallback_section, const char *key, float _default); -int64 raconf_getintEx(raconf rc, const char *section, const char *fallback_section, const char *key, int64 _default); -const char* raconf_getstrEx(raconf rc, const char *section, const char *fallback_section, const char *key, const char *_default); - - - -#endif diff --git a/src/common/random.c b/src/common/random.c deleted file mode 100644 index ef051bb40b..0000000000 --- a/src/common/random.c +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#include "showmsg.h" -#include "timer.h" // gettick -#include "random.h" -#if defined(WIN32) - #include "winapi.hpp" -#elif defined(HAVE_GETPID) || defined(HAVE_GETTID) - #include <sys/types.h> - #include <unistd.h> -#endif - -#include <mt19937ar.h> // init_genrand, genrand_int32, genrand_res53 - - -/// Initializes the random number generator with an appropriate seed. -void rnd_init(void) -{ - uint32 seed = gettick(); - seed += (uint32)time(NULL); -#if defined(WIN32) - seed += GetCurrentProcessId(); - seed += GetCurrentThreadId(); -#else -#if defined(HAVE_GETPID) - seed += (uint32)getpid(); -#endif // HAVE_GETPID -#if defined(HAVE_GETTID) - seed += (uint32)gettid(); -#endif // HAVE_GETTID -#endif - init_genrand(seed); -} - - -/// Initializes the random number generator. -void rnd_seed(uint32 seed) -{ - init_genrand(seed); -} - - -/// Generates a random number in the interval [0, SINT32_MAX] -int32 rnd(void) -{ - return (int32)genrand_int31(); -} - - -/// Generates a random number in the interval [0, dice_faces) -/// NOTE: interval is open ended, so dice_faces is excluded (unless it's 0) -uint32 rnd_roll(uint32 dice_faces) -{ - return (uint32)(rnd_uniform()*dice_faces); -} - - -/// Generates a random number in the interval [min, max] -/// Returns min if range is invalid. -int32 rnd_value(int32 min, int32 max) -{ - if( min >= max ) - return min; - return min + (int32)(rnd_uniform()*(max-min+1)); -} - - -/// Generates a random number in the interval [0.0, 1.0) -/// NOTE: interval is open ended, so 1.0 is excluded -double rnd_uniform(void) -{ - return ((uint32)genrand_int32())*(1.0/4294967296.0);// divided by 2^32 -} - - -/// Generates a random number in the interval [0.0, 1.0) with 53-bit resolution -/// NOTE: interval is open ended, so 1.0 is excluded -/// NOTE: 53 bits is the maximum precision of a double -double rnd_uniform53(void) -{ - return genrand_res53(); -} diff --git a/src/common/random.cpp b/src/common/random.cpp new file mode 100644 index 0000000000..c7aa1d0c43 --- /dev/null +++ b/src/common/random.cpp @@ -0,0 +1,44 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#include "random.hpp" + +#include <random> + +std::mt19937 generator; +std::uniform_int_distribution<int32> int31_distribution; +std::uniform_int_distribution<uint32> uint32_distribution; + +/// Initializes the random number generator +void rnd_init( void ){ + std::random_device device; + generator = std::mt19937( device() ); + int31_distribution = std::uniform_int_distribution<int32>( 0, SINT32_MAX ); + uint32_distribution = std::uniform_int_distribution<uint32>( 0, UINT32_MAX ); +} + +/// Generates a random number in the interval [0, SINT32_MAX] +int32 rnd( void ){ + return int31_distribution( generator ); +} + +/// Generates a random number in the interval [0, UINT32_MAX] +uint32 rnd_uint32( void ){ + return uint32_distribution( generator ); +} + +/// Generates a random number in the interval [0.0, 1.0) +/// NOTE: interval is open ended, so 1.0 is excluded +double rnd_uniform( void ){ + return rnd_uint32() * ( 1.0 / 4294967296.0 );// divided by 2^32 +} + +/// Generates a random number in the interval [min, max] +/// Returns min if range is invalid. +int32 rnd_value( int32 min, int32 max ){ + if( min >= max ){ + return min; + } + + return min + (int32)( rnd_uniform() * ( max - min + 1 ) ); +} diff --git a/src/common/random.h b/src/common/random.h deleted file mode 100644 index 47980f26db..0000000000 --- a/src/common/random.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Athena Dev Teams - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifndef _RANDOM_H_ -#define _RANDOM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" - -void rnd_init(void); -void rnd_seed(uint32); - -int32 rnd(void);// [0, SINT32_MAX] -uint32 rnd_roll(uint32 dice_faces);// [0, dice_faces) -int32 rnd_value(int32 min, int32 max);// [min, max] -double rnd_uniform(void);// [0.0, 1.0) -double rnd_uniform53(void);// [0.0, 1.0) - -#ifdef __cplusplus -} -#endif - -#endif /* _RANDOM_H_ */ diff --git a/src/common/random.hpp b/src/common/random.hpp new file mode 100644 index 0000000000..97eb7cebd8 --- /dev/null +++ b/src/common/random.hpp @@ -0,0 +1,14 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _RANDOM_HPP_ +#define _RANDOM_HPP_ + +#include "cbasetypes.hpp" + +void rnd_init(void); + +int32 rnd(void);// [0, SINT32_MAX] +int32 rnd_value(int32 min, int32 max);// [min, max] + +#endif /* _RANDOM_HPP_ */ diff --git a/src/common/showmsg.c b/src/common/showmsg.cpp similarity index 98% rename from src/common/showmsg.c rename to src/common/showmsg.cpp index f710c9e52b..03b189d6c9 100644 --- a/src/common/showmsg.c +++ b/src/common/showmsg.cpp @@ -1,10 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "strlib.h" // StringBuf -#include "showmsg.h" -#include "core.h" //[Ind] - For SERVER_TYPE +#include "cbasetypes.hpp" +#include "strlib.hpp" // StringBuf +#include "showmsg.hpp" +#include "core.hpp" //[Ind] - For SERVER_TYPE #include <time.h> #include <stdlib.h> // atexit @@ -727,28 +727,28 @@ int _vShowMessage(enum msg_type flag, const char *string, va_list ap) case MSG_NONE: // direct printf replacement break; case MSG_STATUS: //Bright Green (To inform about good things) - strcat(prefix,CL_GREEN"[Status]"CL_RESET":"); + strcat(prefix,CL_GREEN "[Status]" CL_RESET":"); break; case MSG_SQL: //Bright Violet (For dumping out anything related with SQL) <- Actually, this is mostly used for SQL errors with the database, as successes can as well just be anything else... [Skotlex] - strcat(prefix,CL_MAGENTA"[SQL]"CL_RESET":"); + strcat(prefix,CL_MAGENTA "[SQL]" CL_RESET ":"); break; case MSG_INFORMATION: //Bright White (Variable information) - strcat(prefix,CL_WHITE"[Info]"CL_RESET":"); + strcat(prefix,CL_WHITE "[Info]" CL_RESET ":"); break; case MSG_NOTICE: //Bright White (Less than a warning) - strcat(prefix,CL_WHITE"[Notice]"CL_RESET":"); + strcat(prefix,CL_WHITE "[Notice]" CL_RESET ":"); break; case MSG_WARNING: //Bright Yellow - strcat(prefix,CL_YELLOW"[Warning]"CL_RESET":"); + strcat(prefix,CL_YELLOW "[Warning]" CL_RESET ":"); break; case MSG_DEBUG: //Bright Cyan, important stuff! - strcat(prefix,CL_CYAN"[Debug]"CL_RESET":"); + strcat(prefix,CL_CYAN "[Debug]" CL_RESET ":"); break; case MSG_ERROR: //Bright Red (Regular errors) - strcat(prefix,CL_RED"[Error]"CL_RESET":"); + strcat(prefix,CL_RED "[Error]" CL_RESET ":"); break; case MSG_FATALERROR: //Bright Red (Fatal errors, abort(); if possible) - strcat(prefix,CL_RED"[Fatal Error]"CL_RESET":"); + strcat(prefix,CL_RED "[Fatal Error]" CL_RESET ":"); break; default: ShowError("In function _vShowMessage() -> Invalid flag passed.\n"); diff --git a/src/common/showmsg.h b/src/common/showmsg.hpp similarity index 95% rename from src/common/showmsg.h rename to src/common/showmsg.hpp index 29935f991a..519f35489b 100644 --- a/src/common/showmsg.h +++ b/src/common/showmsg.hpp @@ -1,12 +1,8 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _SHOWMSG_H_ -#define _SHOWMSG_H_ - -#ifdef __cplusplus -extern "C" { -#endif +#ifndef _SHOWMSG_HPP_ +#define _SHOWMSG_HPP_ #include "../../3rdparty/libconfig/libconfig.h" @@ -101,8 +97,4 @@ extern void ShowError(const char *, ...); extern void ShowFatalError(const char *, ...); extern void ShowConfigWarning(config_setting_t *config, const char *string, ...); -#ifdef __cplusplus -} -#endif - -#endif /* _SHOWMSG_H_ */ +#endif /* _SHOWMSG_HPP_ */ diff --git a/src/common/socket.c b/src/common/socket.cpp similarity index 99% rename from src/common/socket.c rename to src/common/socket.cpp index 21996abd5c..5dbadf5705 100644 --- a/src/common/socket.c +++ b/src/common/socket.cpp @@ -1,13 +1,13 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "mmo.h" -#include "timer.h" -#include "malloc.h" -#include "showmsg.h" -#include "strlib.h" -#include "socket.h" +#include "cbasetypes.hpp" +#include "mmo.hpp" +#include "timer.hpp" +#include "malloc.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" +#include "socket.hpp" #include <stdlib.h> @@ -239,7 +239,7 @@ struct socket_data* session[FD_SETSIZE]; #ifdef SEND_SHORTLIST int send_shortlist_array[FD_SETSIZE];// we only support FD_SETSIZE sockets, limit the array to that -int send_shortlist_count = 0;// how many fd's are in the shortlist +size_t send_shortlist_count = 0;// how many fd's are in the shortlist uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's are already in the shortlist #endif @@ -1391,7 +1391,7 @@ int socket_getips(uint32* ips, int max) void socket_init(void) { - char *SOCKET_CONF_FILENAME = "conf/packet_athena.conf"; + const char *SOCKET_CONF_FILENAME = "conf/packet_athena.conf"; unsigned int rlim_cur = FD_SETSIZE; #ifdef WIN32 @@ -1463,7 +1463,7 @@ void socket_init(void) add_timer_interval(gettick()+1000, connect_check_clear, 0, 0, 5*60*1000); #endif - ShowInfo("Server supports up to '"CL_WHITE"%u"CL_RESET"' concurrent connections.\n", rlim_cur); + ShowInfo("Server supports up to '" CL_WHITE "%u" CL_RESET "' concurrent connections.\n", rlim_cur); } diff --git a/src/common/socket.h b/src/common/socket.hpp similarity index 97% rename from src/common/socket.h rename to src/common/socket.hpp index 87c71a71f3..7cfaa117cd 100644 --- a/src/common/socket.h +++ b/src/common/socket.hpp @@ -1,10 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _SOCKET_H_ -#define _SOCKET_H_ +#ifndef _SOCKET_HPP_ +#define _SOCKET_HPP_ -#include "cbasetypes.h" +#include "cbasetypes.hpp" #ifdef WIN32 #include "winapi.hpp" @@ -17,10 +17,6 @@ #include <time.h> -#ifdef __cplusplus -extern "C" { -#endif - #define FIFOSIZE_SERVERLINK 256*1024 // socket I/O macros @@ -186,8 +182,4 @@ void send_shortlist_add_fd(int fd); void send_shortlist_do_sends(); #endif -#ifdef __cplusplus -} -#endif - -#endif /* _SOCKET_H_ */ +#endif /* _SOCKET_HPP_ */ diff --git a/src/common/spinlock.h b/src/common/spinlock.h deleted file mode 100644 index 27f932aa55..0000000000 --- a/src/common/spinlock.h +++ /dev/null @@ -1,102 +0,0 @@ -#pragma once -#ifndef _rA_SPINLOCK_H_ -#define _rA_SPINLOCK_H_ - -// -// CAS based Spinlock Implementation -// -// CamelCase names are choosen to be consistent with microsofts winapi -// which implements CriticalSection by this naming... -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder -// -// - -#ifdef WIN32 -#include "winapi.hpp" -#endif - -#include "cbasetypes.h" -#include "atomic.h" -#include "thread.h" - -#ifdef WIN32 - -typedef struct __declspec( align(64) ) SPIN_LOCK{ - volatile LONG lock; - volatile LONG nest; - volatile LONG sync_lock; -} SPIN_LOCK, *PSPIN_LOCK; -#else -typedef struct SPIN_LOCK{ - volatile int32 lock; - volatile int32 nest; // nesting level. - - volatile int32 sync_lock; -} __attribute__((aligned(64))) SPIN_LOCK, *PSPIN_LOCK; -#endif - - - -static forceinline void InitializeSpinLock(PSPIN_LOCK lck){ - lck->lock = 0; - lck->nest = 0; - lck->sync_lock = 0; -} - -static forceinline void FinalizeSpinLock(PSPIN_LOCK lck){ - return; -} - - -#define getsynclock(l) { while(1){ if(InterlockedCompareExchange(l, 1, 0) == 0) break; rathread_yield(); } } -#define dropsynclock(l) { InterlockedExchange(l, 0); } - -static forceinline void EnterSpinLock(PSPIN_LOCK lck){ - int tid = rathread_get_tid(); - - // Get Sync Lock && Check if the requester thread already owns the lock. - // if it owns, increase nesting level - getsynclock(&lck->sync_lock); - if(InterlockedCompareExchange(&lck->lock, tid, tid) == tid){ - InterlockedIncrement(&lck->nest); - dropsynclock(&lck->sync_lock); - return; // Got Lock - } - // drop sync lock - dropsynclock(&lck->sync_lock); - - - // Spin until we've got it ! - while(1){ - if(InterlockedCompareExchange(&lck->lock, tid, RA_INVALID_THID) == RA_INVALID_THID){ - InterlockedIncrement(&lck->nest); - return; // Got Lock - } - rathread_yield(); // Force ctxswitch to another thread. - } - -} - - -static forceinline void LeaveSpinLock(PSPIN_LOCK lck){ - int tid = rathread_get_tid(); - - getsynclock(&lck->sync_lock); - - if(InterlockedCompareExchange(&lck->lock, tid, tid) == tid){ // this thread owns the lock. - if(InterlockedDecrement(&lck->nest) == 0) - InterlockedExchange(&lck->lock, RA_INVALID_THID); // Unlock! - } - - dropsynclock(&lck->sync_lock); -} - - -#undef getsynclock -#undef dropsynclock - -#endif diff --git a/src/common/sql.c b/src/common/sql.cpp similarity index 99% rename from src/common/sql.c rename to src/common/sql.cpp index 84fb1e4e54..b8b652c720 100644 --- a/src/common/sql.c +++ b/src/common/sql.cpp @@ -1,12 +1,12 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "malloc.h" -#include "showmsg.h" -#include "strlib.h" -#include "timer.h" -#include "sql.h" +#include "cbasetypes.hpp" +#include "malloc.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" +#include "timer.hpp" +#include "sql.hpp" #ifdef WIN32 #include "winapi.hpp" @@ -78,7 +78,8 @@ Sql* Sql_Malloc(void) self->lengths = NULL; self->result = NULL; self->keepalive = INVALID_TIMER; - self->handle.reconnect = 1; + my_bool reconnect = 1; + mysql_options(&self->handle, MYSQL_OPT_RECONNECT, &reconnect); return self; } diff --git a/src/common/sql.h b/src/common/sql.hpp similarity index 98% rename from src/common/sql.h rename to src/common/sql.hpp index 8b03e1bf34..9625e1efcd 100644 --- a/src/common/sql.h +++ b/src/common/sql.hpp @@ -1,16 +1,12 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _COMMON_SQL_H_ -#define _COMMON_SQL_H_ +#ifndef _COMMON_SQL_HPP_ +#define _COMMON_SQL_HPP_ -#include "cbasetypes.h" +#include "cbasetypes.hpp" #include <stdarg.h>// va_list -#ifdef __cplusplus -extern "C" { -#endif - // Return codes #define SQL_ERROR -1 #define SQL_SUCCESS 0 @@ -350,8 +346,4 @@ void SqlStmt_Free(SqlStmt* self); void Sql_Init(void); -#ifdef __cplusplus -} -#endif - -#endif /* _COMMON_SQL_H_ */ +#endif /* _COMMON_SQL_HPP_ */ diff --git a/src/common/strlib.c b/src/common/strlib.cpp similarity index 99% rename from src/common/strlib.c rename to src/common/strlib.cpp index 9b2dd9948f..34b77814a5 100644 --- a/src/common/strlib.c +++ b/src/common/strlib.cpp @@ -1,10 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "malloc.h" -#include "showmsg.h" -#include "strlib.h" +#include "cbasetypes.hpp" +#include "malloc.hpp" +#include "showmsg.hpp" +#include "strlib.hpp" #include <stdlib.h> @@ -688,10 +688,9 @@ int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, i /// @param nfields Size of the field array /// @param opt Options that determine the parsing behaviour /// @return Number of fields found in the string or -1 if an error occured -int sv_split(char* str, int len, int startoff, char delim, char** out_fields, int nfields, enum e_svopt opt) +int sv_split(char* str, int len, int startoff, char delim, char** out_fields, size_t nfields, enum e_svopt opt) { int pos[1024]; - int i; int done; char* end; int ret = sv_parse(str, len, startoff, delim, pos, ARRAYLENGTH(pos), opt); @@ -732,7 +731,7 @@ int sv_split(char* str, int len, int startoff, char delim, char** out_fields, in --nfields; // fields - i = 2; + size_t i = 2; done = 0; while( done < ret && nfields > 0 ) { @@ -1056,7 +1055,7 @@ bool sv_readdb(const char* directory, const char* filename, char delim, int minc aFree(fields); aFree(line); fclose(fp); - ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", entries, path); + ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", entries, path); return true; } diff --git a/src/common/strlib.h b/src/common/strlib.hpp similarity index 96% rename from src/common/strlib.h rename to src/common/strlib.hpp index 930f65526d..89199c3321 100644 --- a/src/common/strlib.h +++ b/src/common/strlib.hpp @@ -1,10 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _STRLIB_H_ -#define _STRLIB_H_ +#ifndef _STRLIB_HPP_ +#define _STRLIB_HPP_ -#include "cbasetypes.h" +#include "cbasetypes.hpp" #include <stdarg.h> #if !defined(__USE_GNU) @@ -17,10 +17,6 @@ #undef __USED_GNU #endif -#ifdef __cplusplus -extern "C" { -#endif - char* jstrescape (char* pt); char* jstrescapecpy (char* pt, const char* spt); int jmemescapecpy (char* pt, const char* spt, int size); @@ -120,7 +116,7 @@ int sv_parse(const char* str, int len, int startoff, char delim, int* out_pos, i /// out_fields[0] is the start of the next line. /// Other entries are the start of fields (nul-teminated). /// Returns the number of fields found or -1 if an error occurs. -int sv_split(char* str, int len, int startoff, char delim, char** out_fields, int nfields, enum e_svopt opt); +int sv_split(char* str, int len, int startoff, char delim, char** out_fields, size_t nfields, enum e_svopt opt); /// Escapes src to out_dest according to the format of the C compiler. /// Returns the length of the escaped string. @@ -162,8 +158,4 @@ void StringBuf_Clear(StringBuf* self); void StringBuf_Destroy(StringBuf* self); void StringBuf_Free(StringBuf* self); -#ifdef __cplusplus -} -#endif - -#endif /* _STRLIB_H_ */ +#endif /* _STRLIB_HPP_ */ diff --git a/src/common/thread.c b/src/common/thread.c deleted file mode 100644 index 6daadf7e8d..0000000000 --- a/src/common/thread.c +++ /dev/null @@ -1,327 +0,0 @@ -// -// Basic Threading abstraction (for pthread / win32 based systems) -// -// Author: Florian Wilkemeyer <fw@f-ws.de> -// -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#ifdef WIN32 -#include "winapi.hpp" -#define getpagesize() 4096 // @TODO: implement this properly (GetSystemInfo .. dwPageSize..). (Atm as on all supported win platforms its 4k its static.) -#define __thread __declspec( thread ) -#else -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <signal.h> -#include <pthread.h> -#include <sched.h> -#endif - -#include "cbasetypes.h" -#include "malloc.h" -#include "showmsg.h" -#include "thread.h" - -// When Compiling using MSC (on win32..) we know we have support in any case! -#if defined(_MSC_VER ) && !defined(HAS_TLS) -#define HAS_TLS -#endif - - -#define RA_THREADS_MAX 64 - -struct rAthread { - unsigned int myID; - - RATHREAD_PRIO prio; - rAthreadProc proc; - void *param; - - #ifdef WIN32 - HANDLE hThread; - #else - pthread_t hThread; - #endif -}; - - -#ifdef HAS_TLS -__thread int g_rathread_ID = RA_INVALID_THID; -#endif - - -/// -/// Subystem Code -/// -static struct rAthread l_threads[RA_THREADS_MAX]; - -prAthread rathenat_getThread( int idx ) { - if(idx < RA_THREADS_MAX) - return &l_threads[idx]; - return NULL; -} - -void rathread_init(){ - register unsigned int i; - memset(&l_threads, 0x00, RA_THREADS_MAX * sizeof(struct rAthread) ); - - for(i = 0; i < RA_THREADS_MAX; i++){ - l_threads[i].myID = i; - } - - // now lets init thread id 0, which represnts the main thread -#ifdef HAS_TLS - g_rathread_ID = 0; -#endif - l_threads[0].prio = RAT_PRIO_NORMAL; -#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) - l_threads[0].proc = (rAthreadProc)0xDEADCAFEDEADCAFE; -#else - l_threads[0].proc = (rAthreadProc)0xDEADCAFE; -#endif - -}//end: rathread_init() - - - -void rathread_final(){ - register unsigned int i; - - // Unterminated Threads Left? - // Should'nt happen .. - // Kill 'em all! - // - for(i = 1; i < RA_THREADS_MAX; i++){ - if(l_threads[i].proc != NULL){ - ShowWarning("rAthread_final: unterminated Thread (tid %u entryPoint %p) - forcing to terminate (kill)\n", i, l_threads[i].proc); - rathread_destroy(&l_threads[i]); - } - } - - -}//end: rathread_final() - - - -// gets called whenever a thread terminated .. -static void rat_thread_terminated( prAthread handle ){ - - int id_backup = handle->myID; - - // Simply set all members to 0 (except the id) - memset(handle, 0x00, sizeof(struct rAthread)); - - handle->myID = id_backup; // done ;) - -}//end: rat_thread_terminated() - -#ifdef WIN32 -DWORD WINAPI _raThreadMainRedirector(LPVOID p){ -#else -static void *_raThreadMainRedirector( void *p ){ - sigset_t set; // on Posix Thread platforms -#endif - void *ret; - - // Update myID @ TLS to right id. -#ifdef HAS_TLS - g_rathread_ID = ((prAthread)p)->myID; -#endif - -#ifndef WIN32 - // When using posix threads - // the threads inherits the Signal mask from the thread which's spawned - // this thread - // so we've to block everything we dont care about. - sigemptyset(&set); - sigaddset(&set, SIGINT); - sigaddset(&set, SIGTERM); - sigaddset(&set, SIGPIPE); - - pthread_sigmask(SIG_BLOCK, &set, NULL); - -#endif - - - ret = ((prAthread)p)->proc( ((prAthread)p)->param ) ; - -#ifdef WIN32 - CloseHandle( ((prAthread)p)->hThread ); -#endif - - rat_thread_terminated( (prAthread)p ); -#ifdef WIN32 - return (DWORD)ret; -#else - return ret; -#endif -}//end: _raThreadMainRedirector() - - - - - -/// -/// API Level -/// -prAthread rathread_create( rAthreadProc entryPoint, void *param ){ - return rathread_createEx( entryPoint, param, (1<<23) /*8MB*/, RAT_PRIO_NORMAL ); -}//end: rathread_create() - - -prAthread rathread_createEx( rAthreadProc entryPoint, void *param, size_t szStack, RATHREAD_PRIO prio ){ -#ifndef WIN32 - pthread_attr_t attr; -#endif - size_t tmp; - unsigned int i; - prAthread handle = NULL; - - - // given stacksize aligned to systems pagesize? - tmp = szStack % getpagesize(); - if(tmp != 0) - szStack += tmp; - - - // Get a free Thread Slot. - for(i = 0; i < RA_THREADS_MAX; i++){ - if(l_threads[i].proc == NULL){ - handle = &l_threads[i]; - break; - } - } - - if(handle == NULL){ - ShowError("rAthread: cannot create new thread (entryPoint: %p) - no free thread slot found!", entryPoint); - return NULL; - } - - - - handle->proc = entryPoint; - handle->param = param; - -#ifdef WIN32 - handle->hThread = CreateThread(NULL, szStack, _raThreadMainRedirector, (void*)handle, 0, NULL); -#else - pthread_attr_init(&attr); - pthread_attr_setstacksize(&attr, szStack); - - if(pthread_create(&handle->hThread, &attr, _raThreadMainRedirector, (void*)handle) != 0){ - handle->proc = NULL; - handle->param = NULL; - return NULL; - } - pthread_attr_destroy(&attr); -#endif - - rathread_prio_set( handle, prio ); - - return handle; -}//end: rathread_createEx - - -void rathread_destroy ( prAthread handle ){ -#ifdef WIN32 - if( TerminateThread(handle->hThread, 0) != FALSE){ - CloseHandle(handle->hThread); - rat_thread_terminated(handle); - } -#else - if(handle->hThread && pthread_cancel( handle->hThread ) == 0){ - - // We have to join it, otherwise pthread wont re-cycle its internal ressources assoc. with this thread. - // - pthread_join( handle->hThread, NULL ); - - // Tell our manager to release ressources ;) - rat_thread_terminated(handle); - } -#endif -}//end: rathread_destroy() - -prAthread rathread_self( ){ -#ifdef HAS_TLS - prAthread handle = &l_threads[g_rathread_ID]; - - if(handle->proc != NULL) // entry point set, so its used! - return handle; -#else - // .. so no tls means we have to search the thread by its api-handle .. - int i; - - #ifdef WIN32 - HANDLE hSelf; - hSelf = GetCurrent = GetCurrentThread(); - #else - pthread_t hSelf; - hSelf = pthread_self(); - #endif - - for(i = 0; i < RA_THREADS_MAX; i++){ - if(l_threads[i].hThread == hSelf && l_threads[i].proc != NULL) - return &l_threads[i]; - } - -#endif - - return NULL; -}//end: rathread_self() - - -int rathread_get_tid(){ - -#ifdef HAS_TLS - return g_rathread_ID; -#else - // todo - #ifdef WIN32 - return (int)GetCurrentThreadId(); - #else - return (intptr_t)pthread_self(); - #endif - -#endif - -}//end: rathread_get_tid() - - -bool rathread_wait( prAthread handle, void* *out_exitCode ){ - - // Hint: - // no thread data cleanup routine call here! - // its managed by the callProxy itself.. - // -#ifdef WIN32 - WaitForSingleObject(handle->hThread, INFINITE); - return true; -#else - if(pthread_join(handle->hThread, out_exitCode) == 0) - return true; - return false; -#endif - -}//end: rathread_wait() - - -void rathread_prio_set( prAthread handle, RATHREAD_PRIO prio ){ - handle->prio = RAT_PRIO_NORMAL; - //@TODO -}//end: rathread_prio_set() - - -RATHREAD_PRIO rathread_prio_get( prAthread handle){ - return handle->prio; -}//end: rathread_prio_get() - - -void rathread_yield(){ -#ifdef WIN32 - SwitchToThread(); -#else - sched_yield(); -#endif -}//end: rathread_yield() diff --git a/src/common/thread.h b/src/common/thread.h deleted file mode 100644 index 402917d1c5..0000000000 --- a/src/common/thread.h +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#pragma once -#ifndef _rA_THREAD_H_ -#define _rA_THREAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" - -typedef struct rAthread *prAthread; -typedef void* (*rAthreadProc)(void*); - -typedef enum RATHREAD_PRIO { - RAT_PRIO_LOW = 0, - RAT_PRIO_NORMAL, - RAT_PRIO_HIGH -} RATHREAD_PRIO; - -#define RA_INVALID_THID -1 - -/** - * Get the handle of a specific thread - * - * @param idx - The index of the thread - * @return not NULL if success - */ -prAthread rathenat_getThread( int idx ); - -/** - * Creates a new Thread - * - * @param entyPoint - entryProc, - * @param param - general purpose parameter, would be given as parameter to the thread's entrypoint. - * - * @return not NULL if success - */ -prAthread rathread_create( rAthreadProc entryPoint, void *param ); - - -/** - * Creates a new Thread (with more creation options) - * - * @param entyPoint - entryProc, - * @param param - general purpose parameter, would be given as parameter to the thread's entrypoint - * @param szStack - stack Size in bytes - * @param prio - Priority of the Thread @ OS Scheduler.. - * - * @return not NULL if success - */ -prAthread rathread_createEx( rAthreadProc entryPoint, void *param, size_t szStack, RATHREAD_PRIO prio ); - - -/** - * Destroys the given Thread immediatly - * - * @note The Handle gets invalid after call! dont use it afterwards. - * - * @param handle - thread to destroy. - */ -void rathread_destroy ( prAthread handle ); - - -/** - * Returns the thread handle of the thread calling this function - * - * @note this wont work @ programms main thread - * @note the underlying implementation might not perform very well, cache the value received! - * - * @return not NULL if success - */ -prAthread rathread_self( ); - - -/** - * Returns own thrad id (TID) - * - * @note this is an unique identifier for the calling thread, and - * depends on platfrom / compiler, and may not be the systems Thread ID! - * - * @return -1 when fails, otherwise >= 0 - */ -int rathread_get_tid(); - - -/** - * Waits for the given thread to terminate - * - * @param handle - thread to wait (join) for - * @param out_Exitcode - [OPTIONAL] - if given => Exitcode (value) of the given thread - if it's terminated - * - * @return true - if the given thread has been terminated. - */ -bool rathread_wait( prAthread handle, void* *out_exitCode ); - - -/** - * Sets the given PRIORITY @ OS Task Scheduler - * - * @param handle - thread to set prio for - * @param rio - the priority (RAT_PRIO_LOW ... ) - */ -void rathread_prio_set( prAthread handle, RATHREAD_PRIO prio ); - - -/** - * Gets the current Prio of the given trhead - * - * @param handle - the thread to get the prio for. - */ -RATHREAD_PRIO rathread_prio_get( prAthread handle); - - -/** - * Tells the OS scheduler to yield the execution of the calling thread - * - * @note: this will not "pause" the thread, - * it just allows the OS to spent the remaining time - * of the slice to another thread. - */ -void rathread_yield(); - - - -void rathread_init(); -void rathread_final(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/common/timer.c b/src/common/timer.cpp similarity index 98% rename from src/common/timer.c rename to src/common/timer.cpp index a5f0ff1e8e..0a16bbec19 100644 --- a/src/common/timer.c +++ b/src/common/timer.cpp @@ -1,13 +1,13 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "db.h" -#include "malloc.h" -#include "showmsg.h" -#include "utils.h" -#include "nullpo.h" -#include "timer.h" +#include "cbasetypes.hpp" +#include "db.hpp" +#include "malloc.hpp" +#include "showmsg.hpp" +#include "utils.hpp" +#include "nullpo.hpp" +#include "timer.hpp" #include <stdlib.h> #include <string.h> @@ -83,7 +83,7 @@ int add_timer_func_list(TimerFunc func, const char* name) } /// Returns the name of the timer function. -char* search_timer_func_list(TimerFunc func) +const char* search_timer_func_list(TimerFunc func) { struct timer_func_list* tfl; diff --git a/src/common/timer.h b/src/common/timer.hpp similarity index 90% rename from src/common/timer.h rename to src/common/timer.hpp index 06aef8f721..88533244b2 100644 --- a/src/common/timer.h +++ b/src/common/timer.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _TIMER_H_ -#define _TIMER_H_ +#ifndef _TIMER_HPP_ +#define _TIMER_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" +#include "cbasetypes.hpp" #include <time.h> #define DIFF_TICK(a,b) ((int)((a)-(b))) @@ -64,8 +60,4 @@ int do_timer(unsigned int tick); void timer_init(void); void timer_final(void); -#ifdef __cplusplus -} -#endif - -#endif /* _TIMER_H_ */ +#endif /* _TIMER_HPP_ */ diff --git a/src/common/utilities.hpp b/src/common/utilities.hpp index 6473411053..d2f61b4e32 100644 --- a/src/common/utilities.hpp +++ b/src/common/utilities.hpp @@ -1,6 +1,7 @@ #pragma once #include <memory> #include <string> +#include <map> // Class used to perform time measurement class cScopeTimer { @@ -11,3 +12,17 @@ class cScopeTimer { }; int levenshtein( const std::string &s1, const std::string &s2 ); + +namespace rathena { + namespace util { + template <typename K, typename V> V* map_find( std::map<K,V>& map, K key ){ + auto it = map.find( key ); + + if( it != map.end() ){ + return &it->second; + }else{ + return nullptr; + } + } + } +} diff --git a/src/common/utils.c b/src/common/utils.cpp similarity index 98% rename from src/common/utils.c rename to src/common/utils.cpp index 9b7af8cc73..2d9f3613c0 100644 --- a/src/common/utils.c +++ b/src/common/utils.cpp @@ -1,10 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#include "cbasetypes.h" -#include "showmsg.h" -#include "socket.h" -#include "utils.h" +#include "cbasetypes.hpp" +#include "showmsg.hpp" +#include "socket.hpp" +#include "utils.hpp" #include <stdlib.h> #include <string.h> diff --git a/src/common/utils.h b/src/common/utils.hpp similarity index 92% rename from src/common/utils.h rename to src/common/utils.hpp index 7a1e8fb86b..6807182d47 100644 --- a/src/common/utils.h +++ b/src/common/utils.hpp @@ -1,14 +1,10 @@ // Copyright (c) Athena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _UTILS_H_ -#define _UTILS_H_ +#ifndef _UTILS_HPP_ +#define _UTILS_HPP_ -#ifdef __cplusplus -extern "C" { -#endif - -#include "cbasetypes.h" +#include "cbasetypes.hpp" #include <stdio.h> // FILE* // generate a hex dump of the first 'length' bytes of 'buffer' @@ -50,8 +46,4 @@ extern uint32 GetULong(const unsigned char* buf); extern int32 GetLong(const unsigned char* buf); extern float GetFloat(const unsigned char* buf); -#ifdef __cplusplus -} -#endif - -#endif /* _UTILS_H_ */ +#endif /* _UTILS_HPP_ */ diff --git a/src/common/winapi.cpp b/src/common/winapi.cpp index d424df5ca8..30cf636243 100644 --- a/src/common/winapi.cpp +++ b/src/common/winapi.cpp @@ -3,7 +3,7 @@ #include "winapi.hpp" -#include "cbasetypes.h" +#include "cbasetypes.hpp" // Taken from https://support.microsoft.com/de-de/help/118626/how-to-determine-whether-a-thread-is-running-in-user-context-of-local bool IsCurrentUserLocalAdministrator(void){ diff --git a/src/common/winapi.hpp b/src/common/winapi.hpp index ffb8b0c13b..910c02af8d 100644 --- a/src/common/winapi.hpp +++ b/src/common/winapi.hpp @@ -46,6 +46,6 @@ #include <Mswsock.h> #include <MMSystem.h> -#include "cbasetypes.h" +#include "cbasetypes.hpp" bool IsCurrentUserLocalAdministrator(void); diff --git a/src/common/yamlwrapper.cpp b/src/common/yamlwrapper.cpp deleted file mode 100644 index e6b5677220..0000000000 --- a/src/common/yamlwrapper.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/** -* This file is a part of rAthena++. -* Copyright(C) 2017 rAthena Development Team -* https://rathena.org - https://github.com/rathena -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* Author(s) -* Jittapan Pluemsumran <secret@rathena.org> -*/ - -#include "yamlwrapper.h" -#include <cstring> -#include "malloc.h" -#include "showmsg.h" - -extern "C" { - -yamlwrapper::yamlwrapper(YAML::Node node) { - try { - this->root = node; - } - catch (std::exception) { - //ignore - } -} - -yamliterator::yamliterator(YAML::Node sequence_) { - this->sequence = sequence_; - this->index = 0; -} - -yamliterator* yamlwrapper::iterator() { - return new yamliterator(this->root); -} - -yamlwrapper* yaml_load_file(const char* file_name) { - YAML::Node node; - - try { - node = YAML::LoadFile(file_name); - } catch (YAML::ParserException &e) { - ShowError("YAML Exception Caught: %s\n", e.what()); - return NULL; - } catch (YAML::BadFile) { - return NULL; - } - - return new yamlwrapper(node); -} - -extern "C++" YAML::Node yaml_get_node(const YAML::Node& node,const std::string& key) { - if (key.empty()) - return node; - - size_t pos = key.find('.'); - - if (pos == std::string::npos) - return node[key]; - else - return yaml_get_node(node[key.substr(0, pos)], key.substr(pos+1)); -} - -void yaml_destroy_wrapper(yamlwrapper* wrapper) { - delete wrapper; -} - -char* yaml_get_c_string(yamlwrapper* wrapper, const char* key) { - std::string cpp_str = yaml_get_node(wrapper->root, std::string(key)).as<std::string>(); - const char* c_str = cpp_str.c_str(); - size_t str_size = std::strlen(c_str) + 1; - char* buf = (char*)aCalloc(1, str_size); - strcpy(buf, c_str); - return buf; -} - -extern "C++" { - template<typename T> - T yaml_get_value(yamlwrapper* wrapper, const char* key) { - if (wrapper == nullptr || key == nullptr) - return {}; - try { - return yaml_get_node(wrapper->root, std::string(key)).as<T>(); - } - catch (const std::exception& e) { - ShowError("Error during YAML node value resolving in node %s.\n", e.what()); - return {}; - } - } -} - -int yaml_get_int(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<int>(wrapper, key); -} - -int16 yaml_get_int16(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<int16>(wrapper, key); -} - -int32 yaml_get_int32(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<int32>(wrapper, key); -} - -int64 yaml_get_int64(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<int64>(wrapper, key); -} - -int yaml_get_uint(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<unsigned int>(wrapper, key); -} - -int16 yaml_get_uint16(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<uint16>(wrapper, key); -} - -int32 yaml_get_uint32(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<uint32>(wrapper, key); -} - -int64 yaml_get_uint64(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<uint64>(wrapper, key); -} - -bool yaml_get_boolean(yamlwrapper* wrapper, const char* key) { - return yaml_get_value<bool>(wrapper, key); -} - -char* yaml_as_c_string(yamlwrapper* wrapper) { - std::string cpp_str = wrapper->root.as<std::string>(); - const char* c_str = cpp_str.c_str(); - size_t str_size = std::strlen(c_str) + 1; - char* buf = (char*)aCalloc(1, str_size); - strcpy(buf, c_str); - return buf; -} - -extern "C++" { - template<typename T> - T yaml_as_value(yamlwrapper* wrapper) { - if (wrapper == nullptr) - return {}; - try { - return wrapper->root.as<T>(); - } - catch (const std::exception& e) { - ShowError("Error during YAML node value resolving in node %s.\n", e.what()); - return {}; - } - } -} - -int yaml_as_int(yamlwrapper* wrapper) { - return yaml_as_value<int>(wrapper); -} - -int16 yaml_as_int16(yamlwrapper* wrapper) { - return yaml_as_value<int16>(wrapper); -} - -int32 yaml_as_int32(yamlwrapper* wrapper) { - return yaml_as_value<int32>(wrapper); -} - -int64 yaml_as_int64(yamlwrapper* wrapper) { - return yaml_as_value<int64>(wrapper); -} - -int yaml_as_uint(yamlwrapper* wrapper) { - return yaml_as_value<unsigned int>(wrapper); -} - -int16 yaml_as_uint16(yamlwrapper* wrapper) { - return yaml_as_value<uint16>(wrapper); -} - -int32 yaml_as_uint32(yamlwrapper* wrapper) { - return yaml_as_value<uint32>(wrapper); -} - -int64 yaml_as_uint64(yamlwrapper* wrapper) { - return yaml_as_value<uint64>(wrapper); -} - -bool yaml_as_boolean(yamlwrapper* wrapper) { - return yaml_as_value<bool>(wrapper); -} - -bool yaml_node_is_defined(yamlwrapper* wrapper, const char* key) { - if (wrapper == nullptr || key == nullptr) - return false; - return yaml_get_node(wrapper->root, std::string(key)).IsDefined(); -} - -yamlwrapper* yaml_get_subnode(yamlwrapper* wrapper, const char* key) { - return new yamlwrapper(yaml_get_node(wrapper->root, std::string(key))); -} - -char* yaml_verify_nodes(yamlwrapper* wrapper, int amount, char** nodes) { - for (int i = 0; i < amount; i++) { - if (!yaml_node_is_defined(wrapper, nodes[i])) - return nodes[i]; - } - return NULL; -} - -yamliterator* yaml_get_iterator(yamlwrapper* wrapper) { - return new yamliterator(wrapper->root); -} - -bool yaml_iterator_is_valid(yamliterator* it) { - return it->sequence.IsSequence(); -} - -yamlwrapper* yaml_iterator_first(yamliterator* it) { - it->index++; - return new yamlwrapper(it->sequence[0]); -} - -yamlwrapper* yaml_iterator_next(yamliterator* it) { - return new yamlwrapper(it->sequence[it->index++]); -} - -bool yaml_iterator_has_next(yamliterator* it) { - return it->index <= it->sequence.size(); -} - -void yaml_iterator_destroy(yamliterator* it) { - delete it; -} - -} /* extern "C" */ diff --git a/src/common/yamlwrapper.h b/src/common/yamlwrapper.h deleted file mode 100644 index 3a01a75945..0000000000 --- a/src/common/yamlwrapper.h +++ /dev/null @@ -1,97 +0,0 @@ -/** -* This file is a part of rAthena++. -* Copyright(C) 2017 rAthena Development Team -* https://rathena.org - https://github.com/rathena -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -* -* Author(s) -* Jittapan Pluemsumran <secret@rathena.org> -*/ - -#pragma once -#ifdef WIN32 -#pragma warning(disable:4099) // Damn it, Microsoft! [Secret] -#endif - -#ifndef YAMLWRAPPER_H -#define YAMLWRAPPER_H - -#ifdef __cplusplus -#include "yaml-cpp/yaml.h" -#include <string> - -extern "C" { -#endif - -#include "cbasetypes.h" - -#ifdef __cplusplus -class yamliterator { -public: - YAML::Node sequence; - unsigned int index; - yamliterator(YAML::Node sequence_); -}; - -class yamlwrapper { -public: - YAML::Node root; - yamlwrapper(std::string file); - yamlwrapper(YAML::Node node); - yamliterator* iterator(); -}; -#else -typedef struct yamlwrapper yamlwrapper; -typedef struct yamliterator yamliterator; -#endif - -yamlwrapper* yaml_load_file(const char* file_name); -void yaml_destroy_wrapper(yamlwrapper* wrapper); -char* yaml_get_c_string(yamlwrapper* wrapper, const char* key); -int yaml_get_int(yamlwrapper* wrapper, const char* key); -int16 yaml_get_int16(yamlwrapper* wrapper, const char* key); -int32 yaml_get_int32(yamlwrapper* wrapper, const char* key); -int64 yaml_get_int64(yamlwrapper* wrapper, const char* key); -int yaml_get_uint(yamlwrapper* wrapper, const char* key); -int16 yaml_get_uint16(yamlwrapper* wrapper, const char* key); -int32 yaml_get_uint32(yamlwrapper* wrapper, const char* key); -int64 yaml_get_uint64(yamlwrapper* wrapper, const char* key); -bool yaml_get_boolean(yamlwrapper* wrapper, const char* key); -char* yaml_as_c_string(yamlwrapper* wrapper); -int yaml_as_int(yamlwrapper* wrapper); -int16 yaml_as_int16(yamlwrapper* wrapper); -int32 yaml_as_int32(yamlwrapper* wrapper); -int64 yaml_as_int64(yamlwrapper* wrapper); -int yaml_as_uint(yamlwrapper* wrapper); -int16 yaml_as_uint16(yamlwrapper* wrapper); -int32 yaml_as_uint32(yamlwrapper* wrapper); -int64 yaml_as_uint64(yamlwrapper* wrapper); -bool yaml_as_boolean(yamlwrapper* wrapper); -bool yaml_node_is_defined(yamlwrapper* wrapper, const char* key); -yamlwrapper* yaml_get_subnode(yamlwrapper* wrapper, const char* key); -char* yaml_verify_nodes(yamlwrapper* wrapper, int amount, char** nodes); -yamliterator* yaml_get_iterator(yamlwrapper* wrapper); - -bool yaml_iterator_is_valid(yamliterator* it); -yamlwrapper* yaml_iterator_first(yamliterator* it); -yamlwrapper* yaml_iterator_next(yamliterator* it); -bool yaml_iterator_has_next(yamliterator* it); -void yaml_iterator_destroy(yamliterator* it); - -#ifdef __cplusplus -} -#endif - -#endif /* extern "C" */ diff --git a/src/config/classes/general.h b/src/config/classes/general.hpp similarity index 86% rename from src/config/classes/general.h rename to src/config/classes/general.hpp index 6e6cc14254..50621bfa8e 100644 --- a/src/config/classes/general.h +++ b/src/config/classes/general.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_GENERAL_H_ -#define _CONFIG_GENERAL_H_ +#ifndef _CONFIG_GENERAL_HPP_ +#define _CONFIG_GENERAL_HPP_ /** * rAthena configuration file (http://rathena.org) @@ -20,4 +20,4 @@ * No settings past this point **/ -#endif // _CONFIG_GENERAL_H_ +#endif // _CONFIG_GENERAL_HPP_ diff --git a/src/config/const.h b/src/config/const.hpp similarity index 97% rename from src/config/const.h rename to src/config/const.hpp index 75950908f6..10837637c9 100644 --- a/src/config/const.h +++ b/src/config/const.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _RRCONFIGS_CONST_ -#define _RRCONFIGS_CONST_ +#ifndef _CONFIG_CONST_H_ +#define _CONFIG_CONST_H_ /** * rAthena configuration file (http://rathena.org) @@ -111,4 +111,4 @@ /** * End of File **/ -#endif +#endif // _CONFIG_CONST_H_ diff --git a/src/config/core.h b/src/config/core.hpp similarity index 83% rename from src/config/core.h rename to src/config/core.hpp index 6f39af8b9c..de52af7744 100644 --- a/src/config/core.h +++ b/src/config/core.hpp @@ -1,14 +1,14 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_CORE_H_ -#define _CONFIG_CORE_H_ +#ifndef _CONFIG_CORE_HPP_ +#define _CONFIG_CORE_HPP_ /** * rAthena configuration file (http://rathena.org) * For detailed guidance on these check http://rathena.org/wiki/SRC/config/ **/ -#include "../custom/defines_pre.h" +#include "../custom/defines_pre.hpp" /// Max number of items on @autolootid list #define AUTOLOOTITEM_SIZE 10 @@ -22,11 +22,6 @@ /// while with OFFICIAL_WALKPATH disabled if they click to walk around a obstacle the server will do it automatically #define OFFICIAL_WALKPATH -/// uncomment to enable query_sql script command and mysql logs to function on it's own thread -/// be aware this feature is under tests and you should use at your own risk, we however -/// welcome any feedback you may have regarding this feature, please send us all bug reports. -//#define BETA_THREAD_TEST - /// Uncomment to enable the Cell Stack Limit mod. /// It's only config is the battle_config custom_cell_stack_limit. /// Only chars affected are those defined in BL_CHAR @@ -80,16 +75,16 @@ /** * No settings past this point **/ -#include "./packets.h" -#include "./renewal.h" -#include "./secure.h" -#include "./classes/general.h" +#include "./packets.hpp" +#include "./renewal.hpp" +#include "./secure.hpp" +#include "./classes/general.hpp" /** * Constants come last; so they process anything that could've been modified in early includes **/ -#include "./const.h" +#include "./const.hpp" -#include "../custom/defines_post.h" +#include "../custom/defines_post.hpp" -#endif // _CONFIG_CORE_H_ +#endif // _CONFIG_CORE_HPP_ diff --git a/src/config/packets.h b/src/config/packets.hpp similarity index 87% rename from src/config/packets.h rename to src/config/packets.hpp index 6c1506837b..5e9c3f35b9 100644 --- a/src/config/packets.h +++ b/src/config/packets.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_PACKETS_H_ -#define _CONFIG_PACKETS_H_ +#ifndef _CONFIG_PACKETS_HPP_ +#define _CONFIG_PACKETS_HPP_ /** * rAthena configuration file (http://rathena.org) @@ -10,7 +10,7 @@ #ifndef PACKETVER /// Do NOT edit this line! To set your client version, please do this instead: - /// In Windows: Add this line in your src\custom\defines_pre.h file: #define PACKETVER YYYYMMDD + /// In Windows: Add this line in your src\custom\defines_pre.hpp file: #define PACKETVER YYYYMMDD /// In Linux: The same as above or run the following command: ./configure --enable-packetver=YYYYMMDD #define PACKETVER 20151104 #endif @@ -28,7 +28,7 @@ #ifndef PACKET_OBFUSCATION #define PACKET_OBFUSCATION - // Define these inside src/custom/defines_pre.h or src/custom/defines_post.h + // Define these inside src/custom/defines_pre.hpp or src/custom/defines_post.hpp //#define PACKET_OBFUSCATION_KEY1 <key1> //#define PACKET_OBFUSCATION_KEY2 <key2> //#define PACKET_OBFUSCATION_KEY3 <key3> @@ -63,4 +63,4 @@ /// Check if the specified packetvresion supports the cashshop sale system #define PACKETVER_SUPPORTS_SALES PACKETVER >= 20131223 -#endif // _CONFIG_PACKETS_H_ +#endif // _CONFIG_PACKETS_HPP_ diff --git a/src/config/renewal.h b/src/config/renewal.hpp similarity index 96% rename from src/config/renewal.h rename to src/config/renewal.hpp index dae47098a8..2751e9ed9b 100644 --- a/src/config/renewal.h +++ b/src/config/renewal.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_RENEWAL_H_ -#define _CONFIG_RENEWAL_H_ +#ifndef _CONFIG_RENEWAL_HPP_ +#define _CONFIG_RENEWAL_HPP_ //quick option to disable all renewal option, used by ./configure //#define PRERE @@ -74,4 +74,4 @@ #endif -#endif // _CONFIG_RENEWAL_H_ +#endif // _CONFIG_RENEWAL_HPP_ diff --git a/src/config/secure.h b/src/config/secure.hpp similarity index 93% rename from src/config/secure.h rename to src/config/secure.hpp index 2082aba96a..b0ce6b9f95 100644 --- a/src/config/secure.h +++ b/src/config/secure.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_SECURE_H_ -#define _CONFIG_SECURE_H_ +#ifndef _CONFIG_SECURE_HPP_ +#define _CONFIG_SECURE_HPP_ /** * rAthena configuration file (http://rathena.org) @@ -46,4 +46,4 @@ **/ #define SECURE_NPCTIMEOUT_INTERVAL 1 -#endif // _CONFIG_SECURE_H_ +#endif // _CONFIG_SECURE_HPP_ diff --git a/src/custom/defines_pre.h b/src/custom/defines_post.hpp similarity index 67% rename from src/custom/defines_pre.h rename to src/custom/defines_post.hpp index ceed7e774c..295dbdb47c 100644 --- a/src/custom/defines_pre.h +++ b/src/custom/defines_post.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_CUSTOM_DEFINES_PRE_H_ -#define _CONFIG_CUSTOM_DEFINES_PRE_H_ +#ifndef _CONFIG_CUSTOM_DEFINES_POST_HPP_ +#define _CONFIG_CUSTOM_DEFINES_POST_HPP_ /** * rAthena configuration file (http://rathena.org) @@ -10,4 +10,4 @@ -#endif // _CONFIG_CUSTOM_DEFINES_PRE_H_ +#endif // _CONFIG_CUSTOM_DEFINES_POST_HPP_ diff --git a/src/custom/defines_post.h b/src/custom/defines_pre.hpp similarity index 67% rename from src/custom/defines_post.h rename to src/custom/defines_pre.hpp index 33f34d4a77..54c5372d48 100644 --- a/src/custom/defines_post.h +++ b/src/custom/defines_pre.hpp @@ -1,7 +1,7 @@ // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL // For more information, see LICENCE in the main folder -#ifndef _CONFIG_CUSTOM_DEFINES_POST_H_ -#define _CONFIG_CUSTOM_DEFINES_POST_H_ +#ifndef _CONFIG_CUSTOM_DEFINES_PRE_HPP_ +#define _CONFIG_CUSTOM_DEFINES_PRE_HPP_ /** * rAthena configuration file (http://rathena.org) @@ -10,4 +10,4 @@ -#endif // _CONFIG_CUSTOM_DEFINES_POST_H_ +#endif // _CONFIG_CUSTOM_DEFINES_PRE_HPP_ diff --git a/src/login/Makefile.in b/src/login/Makefile.in index c9a5515a1b..32ef7b80db 100644 --- a/src/login/Makefile.in +++ b/src/login/Makefile.in @@ -1,12 +1,8 @@ -COMMON_H = $(shell ls ../common/*.h) +COMMON_H = $(shell ls ../common/*.hpp) COMMON_AR = ../common/obj/common.a COMMON_INCLUDE = -I../common -MT19937AR_OBJ = ../../3rdparty/mt19937ar/mt19937ar.o -MT19937AR_H = ../../3rdparty/mt19937ar/mt19937ar.h -MT19937AR_INCLUDE = -I../../3rdparty/mt19937ar - LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h) LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig @@ -57,27 +53,19 @@ obj: #executables -login-server: obj $(LOGIN_DIR_OBJ) $(COMMON_AR) $(MT19937AR_OBJ) +login-server: obj $(LOGIN_DIR_OBJ) $(COMMON_AR) @echo " LD @OLOG@@EXEEXT@" - @@CC@ @LDFLAGS@ -o ../../@OLOG@@EXEEXT@ $(LOGIN_DIR_OBJ) $(COMMON_AR) $(MT19937AR_OBJ) $(LIBCONFIG_AR) @LIBS@ @MYSQL_LIBS@ - + @@CXX@ @LDFLAGS@ -o ../../@OLOG@@EXEEXT@ $(LOGIN_DIR_OBJ) $(COMMON_AR) $(LIBCONFIG_AR) @LIBS@ @MYSQL_LIBS@ # login object files -obj/%.o: %.c $(LOGIN_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) - @echo " CC $<" - @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) -DWITH_SQL @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< - -obj/%.o: %.cpp $(LOGIN_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) +obj/%.o: %.cpp $(LOGIN_H) $(COMMON_H) $(LIBCONFIG_H) @echo " CXX $<" - @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) -DWITH_SQL @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) -DWITH_SQL @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing object files $(COMMON_AR): @$(MAKE) -C ../common server -$(MT19937AR_OBJ): - @$(MAKE) -C ../../3rdparty/mt19937ar - $(LIBCONFIG_AR): @$(MAKE) -C ../../3rdparty/libconfig diff --git a/src/login/account.cpp b/src/login/account.cpp index d8840dcabc..2297e2bfba 100644 --- a/src/login/account.cpp +++ b/src/login/account.cpp @@ -13,12 +13,12 @@ #include <string.h> #include <algorithm> //min / max -#include "../common/malloc.h" -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/sql.h" -#include "../common/strlib.h" +#include "../common/malloc.hpp" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" +#include "../common/strlib.hpp" /// global defines diff --git a/src/login/account.hpp b/src/login/account.hpp index 319fc7fac4..7f6edf236f 100644 --- a/src/login/account.hpp +++ b/src/login/account.hpp @@ -11,9 +11,9 @@ #ifndef _ACCOUNT_HPP_ #define _ACCOUNT_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" // ACCOUNT_REG2_NUM -#include "../config/core.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" // ACCOUNT_REG2_NUM +#include "../config/core.hpp" typedef struct AccountDB AccountDB; typedef struct AccountDBIterator AccountDBIterator; diff --git a/src/login/ipban.cpp b/src/login/ipban.cpp index 4363129e52..66696b1cbe 100644 --- a/src/login/ipban.cpp +++ b/src/login/ipban.cpp @@ -13,11 +13,11 @@ #include <stdlib.h> #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/showmsg.h" -#include "../common/sql.h" -#include "../common/strlib.h" -#include "../common/timer.h" +#include "../common/cbasetypes.hpp" +#include "../common/showmsg.hpp" +#include "../common/sql.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" #include "login.hpp" #include "loginlog.hpp" diff --git a/src/login/ipban.hpp b/src/login/ipban.hpp index 64c91d6229..9de70de326 100644 --- a/src/login/ipban.hpp +++ b/src/login/ipban.hpp @@ -12,7 +12,7 @@ #ifndef _IPBAN_HPP_ #define _IPBAN_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" /** * Check if ip is in the active bans list. diff --git a/src/login/login-server.vcxproj b/src/login/login-server.vcxproj index 7b10d4ca41..cd6182fdc2 100644 --- a/src/login/login-server.vcxproj +++ b/src/login/login-server.vcxproj @@ -98,7 +98,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> @@ -113,7 +113,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> @@ -132,7 +132,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> @@ -151,7 +151,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> diff --git a/src/login/login.cpp b/src/login/login.cpp index da3bd8a3a0..fc5c1736db 100644 --- a/src/login/login.cpp +++ b/src/login/login.cpp @@ -15,20 +15,20 @@ #include <string.h> #include <string> -#include "../common/core.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/md5calc.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/socket.h" //ip2str -#include "../common/strlib.h" -#include "../common/timer.h" -#include "../common/msg_conf.h" -#include "../common/cli.h" -#include "../common/utils.h" -#include "../common/mmo.h" -#include "../config/core.h" +#include "../common/core.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/md5calc.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" //ip2str +#include "../common/strlib.hpp" +#include "../common/timer.hpp" +#include "../common/msg_conf.hpp" +#include "../common/cli.hpp" +#include "../common/utils.hpp" +#include "../common/mmo.hpp" +#include "../config/core.hpp" #include "account.hpp" #include "ipban.hpp" #include "loginlog.hpp" diff --git a/src/login/login.hpp b/src/login/login.hpp index 1923c17e47..311b38e377 100644 --- a/src/login/login.hpp +++ b/src/login/login.hpp @@ -14,10 +14,10 @@ #include <memory> -#include "../config/core.h" -#include "../common/cbasetypes.h" -#include "../common/mmo.h" // NAME_LENGTH,SEX_* -#include "../common/core.h" // CORE_ST_LAST +#include "../config/core.hpp" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" // NAME_LENGTH,SEX_* +#include "../common/core.hpp" // CORE_ST_LAST #include "account.hpp" diff --git a/src/login/loginchrif.cpp b/src/login/loginchrif.cpp index 4ad0185083..cb3a634d4d 100644 --- a/src/login/loginchrif.cpp +++ b/src/login/loginchrif.cpp @@ -12,10 +12,10 @@ #include <stdlib.h> #include <string.h> -#include "../common/timer.h" //difftick -#include "../common/strlib.h" //safeprint -#include "../common/showmsg.h" //show notice -#include "../common/socket.h" //wfifo session +#include "../common/timer.hpp" //difftick +#include "../common/strlib.hpp" //safeprint +#include "../common/showmsg.hpp" //show notice +#include "../common/socket.hpp" //wfifo session #include "account.hpp" #include "login.hpp" @@ -717,15 +717,15 @@ int logchrif_parse_accinfo(int fd) { if( RFIFOREST(fd) < 23 ) return 0; else { - int map_fd = RFIFOL(fd, 2), u_fd = RFIFOL(fd, 6), u_aid = RFIFOL(fd, 10), u_group = RFIFOL(fd, 14), account_id = RFIFOL(fd, 18); - int8 type = RFIFOB(fd, 22); + int map_fd = RFIFOL(fd, 2), u_fd = RFIFOL(fd, 6), u_aid = RFIFOL(fd, 10), account_id = RFIFOL(fd, 14); + int8 type = RFIFOB(fd, 18); AccountDB* accounts = login_get_accounts_db(); struct mmo_account acc; - RFIFOSKIP(fd,23); + RFIFOSKIP(fd,19); // Send back the result to char-server if (accounts->load_num(accounts, &acc, account_id)) { - int len = 155 + PINCODE_LENGTH + NAME_LENGTH; + int len = 122 + NAME_LENGTH; //ShowInfo("Found account info for %d, requested by %d\n", account_id, u_aid); WFIFOHEAD(fd, len); WFIFOW(fd, 0) = 0x2721; @@ -741,15 +741,7 @@ int logchrif_parse_accinfo(int fd) { safestrncpy(WFIFOCP(fd, 71), acc.last_ip, 16); safestrncpy(WFIFOCP(fd, 87), acc.lastlogin, 24); safestrncpy(WFIFOCP(fd, 111), acc.birthdate, 11); - if ((unsigned int)u_group >= acc.group_id) { - safestrncpy(WFIFOCP(fd, 122), acc.pass, 33); - safestrncpy(WFIFOCP(fd, 155), acc.pincode, PINCODE_LENGTH); - } - else { - memset(WFIFOP(fd, 122), '\0', 33); - memset(WFIFOP(fd, 155), '\0', PINCODE_LENGTH); - } - safestrncpy(WFIFOCP(fd, 155 + PINCODE_LENGTH), acc.userid, NAME_LENGTH); + safestrncpy(WFIFOCP(fd, 122), acc.userid, NAME_LENGTH); WFIFOSET(fd, len); } else { diff --git a/src/login/loginchrif.hpp b/src/login/loginchrif.hpp index 1e44939697..7ac1f547ed 100644 --- a/src/login/loginchrif.hpp +++ b/src/login/loginchrif.hpp @@ -11,7 +11,7 @@ #ifndef _LOGINCHRIF_HPP_ #define _LOGINCHRIF_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" /** * Entry point from char-server to log-server. diff --git a/src/login/loginclif.cpp b/src/login/loginclif.cpp index bcb9d84a41..dfaa40924d 100644 --- a/src/login/loginclif.cpp +++ b/src/login/loginclif.cpp @@ -12,14 +12,14 @@ #include <stdlib.h> #include <string.h> -#include "../common/timer.h" //difftick -#include "../common/strlib.h" //safeprint -#include "../common/showmsg.h" //show notice -#include "../common/socket.h" //wfifo session -#include "../common/malloc.h" -#include "../common/utils.h" -#include "../common/md5calc.h" -#include "../common/random.h" +#include "../common/timer.hpp" //difftick +#include "../common/strlib.hpp" //safeprint +#include "../common/showmsg.hpp" //show notice +#include "../common/socket.hpp" //wfifo session +#include "../common/malloc.hpp" +#include "../common/utils.hpp" +#include "../common/md5calc.hpp" +#include "../common/random.hpp" #include "account.hpp" #include "ipban.hpp" //ipban_check diff --git a/src/login/logincnslif.cpp b/src/login/logincnslif.cpp index e5055b3589..820bafd262 100644 --- a/src/login/logincnslif.cpp +++ b/src/login/logincnslif.cpp @@ -12,13 +12,13 @@ #include <stdlib.h> #include <string.h> -#include "../common/mmo.h" //cbasetype + NAME_LENGTH -#include "../common/showmsg.h" //show notice -#include "../common/md5calc.h" -#include "../common/ers.h" -#include "../common/cli.h" -#include "../common/timer.h" -#include "../common/strlib.h" +#include "../common/mmo.hpp" //cbasetype + NAME_LENGTH +#include "../common/showmsg.hpp" //show notice +#include "../common/md5calc.hpp" +#include "../common/ers.hpp" +#include "../common/cli.hpp" +#include "../common/timer.hpp" +#include "../common/strlib.hpp" #include "login.hpp" @@ -97,7 +97,7 @@ int logcnslif_get_options(int argc, char ** argv) { /** * Console Command Parser - * Transmited from command cli.c + * Transmited from command cli.cpp * note common name for all serv do not rename (extern in cli) * @author [Wizputer] * @param buf: buffer to parse, (from console) diff --git a/src/login/logincnslif.hpp b/src/login/logincnslif.hpp index 7ce329fee3..00c31a5005 100644 --- a/src/login/logincnslif.hpp +++ b/src/login/logincnslif.hpp @@ -11,18 +11,10 @@ #ifndef _LOGINCNSLIF_HPP_ #define _LOGINCNSLIF_HPP_ -extern "C" { -/** - * Login-server console help: starting option info. - * Do not rename function used as extern. - * @param do_exit: terminate program execution ? - */ -void display_helpscreen(bool do_exit); -} /** * Console Command Parser - * Transmited from command cli.c + * Transmited from command cli.cpp * note common name for all serv do not rename (extern in cli) * @author [Wizputer] * @param buf: buffer to parse, (from console) diff --git a/src/login/loginlog.cpp b/src/login/loginlog.cpp index 4c96afaf66..a0784acbf8 100644 --- a/src/login/loginlog.cpp +++ b/src/login/loginlog.cpp @@ -12,12 +12,12 @@ #include <stdlib.h> // exit #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/mmo.h" -#include "../common/socket.h" -#include "../common/sql.h" -#include "../common/strlib.h" -#include "../common/showmsg.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" +#include "../common/socket.hpp" +#include "../common/sql.hpp" +#include "../common/strlib.hpp" +#include "../common/showmsg.hpp" // global sql settings (in ipban_sql.c) static char global_db_hostname[64] = "127.0.0.1"; // Doubled to reflect the change on commit #0f2dd7f diff --git a/src/login/loginlog.hpp b/src/login/loginlog.hpp index 099d077eb0..73b03a2cde 100644 --- a/src/login/loginlog.hpp +++ b/src/login/loginlog.hpp @@ -13,7 +13,7 @@ #include <memory> -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" /** * Get the number of failed login attempts by the ip in the last minutes. diff --git a/src/map/Makefile.in b/src/map/Makefile.in index 6dca40358a..acd1d94f3c 100644 --- a/src/map/Makefile.in +++ b/src/map/Makefile.in @@ -1,12 +1,8 @@ -COMMON_H = $(shell ls ../common/*.h) +COMMON_H = $(shell ls ../common/*.hpp) COMMON_AR = ../common/obj/common.a COMMON_INCLUDE = -I../common/ -MT19937AR_OBJ = ../../3rdparty/mt19937ar/mt19937ar.o -MT19937AR_H = ../../3rdparty/mt19937ar/mt19937ar.h -MT19937AR_INCLUDE = -I../../3rdparty/mt19937ar - LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h) LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig @@ -21,7 +17,7 @@ MAP_OBJ = $(shell ls *.cpp | sed -e "s/\.cpp/\.o/g") #MAP_OBJ += $(shell ls *.c | sed -e "s/\.c/\.o/g") MAP_DIR_OBJ = $(MAP_OBJ:%=obj/%) MAP_H = $(shell ls ../map/*.hpp) \ - $(shell ls ../config/*.h) + $(shell ls ../config/*.hpp) HAVE_MYSQL=@HAVE_MYSQL@ ifeq ($(HAVE_MYSQL),yes) @@ -74,30 +70,23 @@ obj: map-server: obj $(MAP_DIR_OBJ) $(COMMON_AR) $(LIBCONFIG_AR) $(YAML_CPP_AR) @echo " LD @OMAP@@EXEEXT@" - @@CXX@ @LDFLAGS@ -o ../../@OMAP@@EXEEXT@ $(MAP_DIR_OBJ) $(COMMON_AR) $(MT19937AR_OBJ) $(LIBCONFIG_AR) $(YAML_CPP_AR) @LIBS@ @PCRE_LIBS@ @MYSQL_LIBS@ + @@CXX@ @LDFLAGS@ -o ../../@OMAP@@EXEEXT@ $(MAP_DIR_OBJ) $(COMMON_AR) $(LIBCONFIG_AR) $(YAML_CPP_AR) @LIBS@ @PCRE_LIBS@ @MYSQL_LIBS@ # map object files #cause this one failling otherwise -obj/npc.o: npc.cpp $(MAP_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) +obj/npc.o: npc.cpp $(MAP_H) $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H) @echo " CXX $< (custom rule)" - @@CXX@ @CXXFLAG_CLEARS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(PCRE_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< - -obj/%.o: %.c $(MAP_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) - @echo " CC $<" - @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(PCRE_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAG_CLEARS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) $(PCRE_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< -obj/%.o: %.cpp $(MAP_H) $(COMMON_H) $(MT19937AR_H) $(LIBCONFIG_H) $(YAML_CPP_H) +obj/%.o: %.cpp $(MAP_H) $(COMMON_H) $(LIBCONFIG_H) $(YAML_CPP_H) @echo " CXX $<" - @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(MT19937AR_INCLUDE) $(LIBCONFIG_INCLUDE) $(PCRE_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< + @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) $(PCRE_CFLAGS) $(YAML_CPP_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing object files $(COMMON_AR): @$(MAKE) -C ../common server -$(MT19937AR_OBJ): - @$(MAKE) -C ../../3rdparty/mt19937ar - $(LIBCONFIG_AR): @$(MAKE) -C ../../3rdparty/libconfig diff --git a/src/map/achievement.cpp b/src/map/achievement.cpp index ebfe45f1d5..beefe9b53c 100644 --- a/src/map/achievement.cpp +++ b/src/map/achievement.cpp @@ -10,12 +10,12 @@ #include <setjmp.h> #include <yaml-cpp/yaml.h> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "battle.hpp" #include "chrif.hpp" @@ -292,11 +292,6 @@ bool achievement_update_achievement(struct map_session_data *sd, int achievement clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount); sd->achievement_data.save = true; // Flag to save with the autosave interval - if (sd->achievement_data.sendlist) { - clif_achievement_list_all(sd); - sd->achievement_data.sendlist = false; - } - return true; } @@ -329,15 +324,16 @@ void achievement_get_reward(struct map_session_data *sd, int achievement_id, tim // Only update in the cache, db was updated already sd->achievement_data.achievements[i].rewarded = rewarded; + sd->achievement_data.save = true; run_script(adb->rewards.script, 0, sd->bl.id, fake_nd->bl.id); if (adb->rewards.title_id) { sd->titles.push_back(adb->rewards.title_id); - sd->achievement_data.sendlist = true; + clif_achievement_list_all(sd); + }else{ + clif_achievement_reward_ack(sd->fd, 1, achievement_id); + clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount); } - - clif_achievement_reward_ack(sd->fd, 1, achievement_id); - clif_achievement_update(sd, &sd->achievement_data.achievements[i], sd->achievement_data.count - sd->achievement_data.incompleteCount); } /** diff --git a/src/map/achievement.hpp b/src/map/achievement.hpp index 5abecdf568..7e4c288cfb 100644 --- a/src/map/achievement.hpp +++ b/src/map/achievement.hpp @@ -10,8 +10,8 @@ #include <unordered_map> #include <vector> -#include "../common/mmo.h" -#include "../common/db.h" +#include "../common/mmo.hpp" +#include "../common/db.hpp" struct map_session_data; struct block_list; diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 7ca92673d5..ea3249d252 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -6,18 +6,19 @@ #include <stdlib.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/mmo.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" +#include "../common/cli.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "../common/utilities.hpp" -#include "../common/conf.h" +#include "../common/conf.hpp" #include "map.hpp" #include "battle.hpp" @@ -1064,7 +1065,8 @@ ACMD_FUNC(jobchange) if (job == JOB_KNIGHT2 || job == JOB_CRUSADER2 || job == JOB_WEDDING || job == JOB_XMAS || job == JOB_SUMMER || job == JOB_HANBOK || job == JOB_OKTOBERFEST || job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2 - || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2) || job == JOB_BABY_STAR_GLADIATOR2) + || (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2) || job == JOB_BABY_STAR_GLADIATOR2 + || job == JOB_STAR_EMPEROR2 || job == JOB_BABY_STAR_EMPEROR2) { // Deny direct transformation into dummy jobs clif_displaymessage(fd, msg_txt(sd,923)); //"You can not change to this job by command." return 0; @@ -2969,7 +2971,7 @@ ACMD_FUNC(char_block) /*========================================== * accountban command (usage: ban <%time> <player_name>) * charban command (usage: charban <%time> <player_name>) - * %time see common/timer.c::solve_time() + * %time see common/timer.cpp::solve_time() *------------------------------------------*/ ACMD_FUNC(char_ban) { @@ -7346,7 +7348,7 @@ ACMD_FUNC(showmobs) if((mob_id = atoi(mob_name)) == 0) mob_id = mobdb_searchname(mob_name); - if(mob_id > 0 && mobdb_checkid(mob_id) == 0){ + if(mobdb_checkid(mob_id) == 0){ snprintf(atcmd_output, sizeof atcmd_output, msg_txt(sd,1250),mob_name); // Invalid mob id %s! clif_displaymessage(fd, atcmd_output); return 0; @@ -9726,18 +9728,41 @@ ACMD_FUNC(fullstrip) { return 0; } +ACMD_FUNC(changedress){ + sc_type name2id[] = { + SC_WEDDING, + SC_XMAS, + SC_SUMMER, + SC_DRESSUP, + SC_HANBOK, + SC_OKTOBERFEST + }; + + for( sc_type type : name2id ) { + if( sd->sc.data[type] ) { + status_change_end( &sd->bl, type, INVALID_TIMER ); + // You should only be able to have one - so we cancel here + return 0; + } + } + + return -1; +} + ACMD_FUNC(costume) { const char* names[] = { "Wedding", "Xmas", "Summer", + "Summer2", "Hanbok", - "Oktoberfest", + "Oktoberfest" }; const int name2id[] = { SC_WEDDING, SC_XMAS, SC_SUMMER, + SC_DRESSUP, SC_HANBOK, SC_OKTOBERFEST }; @@ -9779,7 +9804,7 @@ ACMD_FUNC(costume) { return -1; } - sc_start(&sd->bl, &sd->bl, (sc_type)name2id[k], 100, 0, -1); + sc_start(&sd->bl, &sd->bl, (sc_type)name2id[k], 100, name2id[k] == SC_DRESSUP ? 1 : 0, -1); return 0; } @@ -9985,6 +10010,18 @@ ACMD_FUNC(adopt) return -1; } +/** + * Opens the limited sale window. + * Usage: @limitedsale or client command /limitedsale on supported clients + */ +ACMD_FUNC(limitedsale){ + nullpo_retr(-1, sd); + + clif_sale_open(sd); + + return 0; +} + #include "../custom/atcommand.inc" /** @@ -10282,6 +10319,8 @@ void atcommand_basecommands(void) { ACMD_DEF(adopt), ACMD_DEF(agitstart3), ACMD_DEF(agitend3), + ACMD_DEFR(limitedsale, ATCMD_NOCONSOLE|ATCMD_NOAUTOTRADE), + ACMD_DEFR(changedress, ATCMD_NOCONSOLE|ATCMD_NOAUTOTRADE), }; AtCommandInfo* atcommand; int i; diff --git a/src/map/atcommand.hpp b/src/map/atcommand.hpp index ffce9a7412..b8f762bd59 100644 --- a/src/map/atcommand.hpp +++ b/src/map/atcommand.hpp @@ -4,8 +4,8 @@ #ifndef _ATCOMMAND_HPP_ #define _ATCOMMAND_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" struct map_session_data; diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 909293e409..fdebbd327e 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -6,16 +6,16 @@ #include <stdlib.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/ers.h" -#include "../common/random.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/ers.hpp" +#include "../common/random.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "map.hpp" #include "path.hpp" @@ -33,7 +33,7 @@ #include "log.hpp" #include "pc_groups.hpp" -int attr_fix_table[4][ELE_MAX][ELE_MAX]; +int attr_fix_table[MAX_ELE_LEVEL][ELE_MAX][ELE_MAX]; struct Battle_Config battle_config; static struct eri *delay_damage_ers; //For battle delay damage structures. @@ -1270,7 +1270,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam { struct status_change *d_sc = status_get_sc(d_bl); - if( d_sc && d_sc->data[SC_DEFENDER] && (flag&(BF_LONG|BF_MAGIC)) == BF_LONG && skill_id != ASC_BREAKER && skill_id != CR_ACIDDEMONSTRATION && skill_id != NJ_ZENYNAGE && skill_id != KO_MUCHANAGE ) + if( d_sc && d_sc->data[SC_DEFENDER] && (flag&(BF_LONG|BF_MAGIC)) == BF_LONG && skill_id != ASC_BREAKER && skill_id != CR_ACIDDEMONSTRATION && skill_id != NJ_ZENYNAGE && skill_id != GN_FIRE_EXPANSION_ACID && skill_id != KO_MUCHANAGE ) damage -= damage * d_sc->data[SC_DEFENDER]->val2 / 100; } } @@ -1289,7 +1289,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (sc->data[SC_DEFENDER] && skill_id != NJ_ZENYNAGE && skill_id != KO_MUCHANAGE && #ifdef RENEWAL - ((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) || skill_id == CR_ACIDDEMONSTRATION)) + ((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON) || skill_id == CR_ACIDDEMONSTRATION || skill_id == GN_FIRE_EXPANSION_ACID)) #else (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON)) #endif @@ -1334,6 +1334,10 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if( sc->data[SC_SPL_DEF] && status_get_race2(src) == RC2_SPLENDIDE ){ damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100; } + if (sc->data[SC_GLASTHEIM_DEF] && status_get_race2(src) == RC2_OGH_ATK_DEF) + return 0; + if (sc->data[SC_GLASTHEIM_HIDDEN] && status_get_race2(src) == RC2_OGH_HIDDEN) + damage -= damage * sc->data[SC_GLASTHEIM_HIDDEN]->val1 / 100; } if((sce=sc->data[SC_ARMOR]) && //NPC_DEFENDER @@ -1506,6 +1510,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam ) { damage += damage * sce->val1 / 100; } + if (sc->data[SC_GLASTHEIM_ATK] && status_get_race2(bl) == RC2_OGH_ATK_DEF) + damage <<= 1; } /* Self Buff that destroys the armor of any target hit with melee or ranged physical attacks */ if( sc->data[SC_SHIELDSPELL_REF] && sc->data[SC_SHIELDSPELL_REF]->val1 == 1 && flag&BF_WEAPON ) { @@ -3322,12 +3328,16 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis if( sd && !skill_id ) { // if no skill_id passed, check for double attack [helvetica] short i; if( ( ( skill_lv = pc_checkskill(sd,TF_DOUBLE) ) > 0 && sd->weapontype1 == W_DAGGER ) - || ( sd->bonus.double_rate > 0 && sd->weapontype1 != W_FIST ) //Will fail bare-handed - || ( sc && sc->data[SC_KAGEMUSYA] && sd->weapontype1 != W_FIST )) // Need confirmation + || ( sd->bonus.double_rate > 0 && sd->weapontype1 != W_FIST ) // Will fail bare-handed + || ( sc && sc->data[SC_KAGEMUSYA] && sd->weapontype1 != W_FIST )) // Will fail bare-handed { //Success chance is not added, the higher one is used [Skotlex] - int max_rate = max(5*skill_lv,sd->bonus.double_rate); - if(sc && sc->data[SC_KAGEMUSYA]) max_rate= max(max_rate,sc->data[SC_KAGEMUSYA]->val1*3); - + int max_rate = 0; + + if (sc && sc->data[SC_KAGEMUSYA]) + max_rate = sc->data[SC_KAGEMUSYA]->val1 * 10; // Same rate as even levels of TF_DOUBLE + else + max_rate = max(5 * skill_lv, sd->bonus.double_rate); + if( rnd()%100 < max_rate ) { wd.div_ = skill_get_num(TF_DOUBLE,skill_lv?skill_lv:1); wd.type = DMG_MULTI_HIT; @@ -4468,10 +4478,12 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s if (sc->data[SC_MADNESSCANCEL]) ATK_ADD(wd.equipAtk, wd.equipAtk2, 100); if (sc->data[SC_MAGICALBULLET]) { - if (sstatus->matk_max > sstatus->matk_min) { - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max((sstatus->matk_min + rnd() % (sstatus->matk_max - sstatus->matk_min)) - (tstatus->mdef + tstatus->mdef2), 0)); + short tmdef = tstatus->mdef + tstatus->mdef2; + + if (sstatus->matk_min > tmdef && sstatus->matk_max > sstatus->matk_min) { + ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max((sstatus->matk_min + rnd() % (sstatus->matk_max - sstatus->matk_min)) - tmdef, 0)); } else { - ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max(sstatus->matk_min - (tstatus->mdef + tstatus->mdef2), 0)); + ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max(sstatus->matk_min - tmdef, 0)); } } if (sc->data[SC_GATLINGFEVER]) { @@ -5819,22 +5831,6 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case AB_RENOVATIO: ad.damage = status_get_lv(src) * 10 + sstatus->int_; break; - case GN_FIRE_EXPANSION_ACID: -#ifdef RENEWAL - { - struct Damage wd = battle_calc_weapon_attack(src, target, skill_id, skill_lv, 0); - - ad.damage = (int64)(7 * ((wd.damage / skill_lv + ad.damage / skill_lv) * tstatus->vit / 100)); - } -#else - if(tstatus->vit + sstatus->int_) - ad.damage = (int64)(7 * tstatus->vit * sstatus->int_ * sstatus->int_ / (10 * (tstatus->vit + sstatus->int_))); - else - ad.damage = 0; - if(tsd) - ad.damage >>= 1; -#endif - break; default: { if (sstatus->matk_max > sstatus->matk_min) { MATK_ADD(sstatus->matk_min+rnd()%(sstatus->matk_max-sstatus->matk_min)); @@ -6014,6 +6010,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list RE_LVL_DMOD(100); break; case WL_JACKFROST: + case NPC_JACKFROST: if (tsc && tsc->data[SC_FREEZING]) { skillratio += 900 + 300 * skill_lv; RE_LVL_DMOD(100); @@ -6222,6 +6219,11 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list case NPC_VENOMFOG: skillratio += 600 + 100 * skill_lv; break; + case NPC_COMET: + i = (sc ? distance_xy(target->x, target->y, sc->comet_x, sc->comet_y) : 8) / 2; + i = cap_value(i, 1, 4); + skillratio = 2500 + ((skill_lv - i + 1) * 500); + break; } if (sc) {// Insignia's increases the damage of offensive magic by a fixed percentage depending on the element. @@ -6573,6 +6575,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } break; case CR_ACIDDEMONSTRATION: + case GN_FIRE_EXPANSION_ACID: #ifdef RENEWAL // Official Renewal formula [helvetica] // damage = 7 * ((atk + matk)/skill level) * (target vit/100) @@ -6847,7 +6850,7 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i ssc = status_get_sc(src); if (flag & BF_SHORT) {//Bounces back part of the damage. - if ( !status_reflect && sd && sd->bonus.short_weapon_damage_return ) { + if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { @@ -7439,14 +7442,14 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t if (DIFF_TICK(ud->canact_tick, tick + autospell_tick) < 0) { ud->canact_tick = max(tick + autospell_tick, ud->canact_tick); if (battle_config.display_status_timers && sd) - clif_status_change(src, SI_ACTIONDELAY, 1, autospell_tick, 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, autospell_tick, 0, 0, 0); } } } } if (sd) { uint16 r_skill = 0, sk_idx = 0; - if( wd.flag&BF_SHORT && sc && sc->data[SC__AUTOSHADOWSPELL] && rnd()%100 < sc->data[SC__AUTOSHADOWSPELL]->val3 && + if( wd.flag&BF_WEAPON && sc && sc->data[SC__AUTOSHADOWSPELL] && rnd()%100 < sc->data[SC__AUTOSHADOWSPELL]->val3 && (r_skill = (uint16)sc->data[SC__AUTOSHADOWSPELL]->val1) && (sk_idx = skill_get_index(r_skill)) && sd->status.skill[sk_idx].id != 0 && sd->status.skill[sk_idx].flag == SKILL_FLAG_PLAGIARIZED ) { @@ -7502,7 +7505,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t sd->state.autocast = 0; sd->ud.canact_tick = max(tick + skill_delayfix(src, r_skill, r_lv), sd->ud.canact_tick); - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, r_skill, r_lv), 0, 0, 1); + clif_status_change(src, EFST_POSTDELAY, 1, skill_delayfix(src, r_skill, r_lv), 0, 0, 1); } } @@ -8009,7 +8012,11 @@ static const struct _battle_data { { "player_damage_delay_rate", &battle_config.pc_damage_delay_rate, 100, 0, INT_MAX, }, { "defunit_not_enemy", &battle_config.defnotenemy, 0, 0, 1, }, { "gvg_traps_target_all", &battle_config.vs_traps_bctall, BL_PC, BL_NUL, BL_ALL, }, +#ifdef RENEWAL + { "traps_setting", &battle_config.traps_setting, 2, 0, 2, }, +#else { "traps_setting", &battle_config.traps_setting, 0, 0, 2, }, +#endif { "summon_flora_setting", &battle_config.summon_flora, 1|2, 0, 1|2, }, { "clear_skills_on_death", &battle_config.clear_unit_ondeath, BL_NUL, BL_NUL, BL_ALL, }, { "clear_skills_on_warp", &battle_config.clear_unit_onwarp, BL_ALL, BL_NUL, BL_ALL, }, @@ -8123,7 +8130,9 @@ static const struct _battle_data { { "max_walk_speed", &battle_config.max_walk_speed, 300, 100, 100*DEFAULT_WALK_SPEED, }, { "max_lv", &battle_config.max_lv, 99, 0, MAX_LEVEL, }, { "aura_lv", &battle_config.aura_lv, 99, 0, INT_MAX, }, - { "max_hp", &battle_config.max_hp, 32500, 100, 1000000000, }, + { "max_hp_lv99", &battle_config.max_hp_lv99, 330000, 100, 1000000000, }, + { "max_hp_lv150", &battle_config.max_hp_lv150, 660000, 100, 1000000000, }, + { "max_hp", &battle_config.max_hp, 1100000, 100, 1000000000, }, { "max_sp", &battle_config.max_sp, 32500, 100, 1000000000, }, { "max_cart_weight", &battle_config.max_cart_weight, 8000, 100, 1000000, }, { "max_parameter", &battle_config.max_parameter, 99, 10, SHRT_MAX, }, @@ -8494,6 +8503,10 @@ static const struct _battle_data { { "event_refine_chance", &battle_config.event_refine_chance, 0, 0, 1, }, { "autoloot_adjust", &battle_config.autoloot_adjust, 0, 0, 1, }, { "broadcast_hide_name", &battle_config.broadcast_hide_name, 2, 0, NAME_LENGTH, }, + { "skill_drop_items_full", &battle_config.skill_drop_items_full, 0, 0, 1, }, + { "feature.homunculus_autofeed", &battle_config.feature_homunculus_autofeed, 1, 0, 1, }, + { "summoner_trait", &battle_config.summoner_trait, 3, 0, 3, }, + { "homunculus_autofeed_always", &battle_config.homunculus_autofeed_always, 1, 0, 1, }, #include "../custom/battle_config_init.inc" }; @@ -8624,6 +8637,13 @@ void battle_adjust_conf() } #endif +#if PACKETVER < 20170920 + if( battle_config.feature_homunculus_autofeed ){ + ShowWarning("conf/battle/feature.conf homunculus autofeeding is enabled but it requires PACKETVER 2017-09-20 or newer, disabling...\n"); + battle_config.feature_homunculus_autofeed = 0; + } +#endif + #ifndef CELL_NOSTACK if (battle_config.custom_cell_stack_limit != 1) ShowWarning("Battle setting 'custom_cell_stack_limit' takes no effect as this server was compiled without Cell Stack Limit support.\n"); diff --git a/src/map/battle.hpp b/src/map/battle.hpp index e107390ad6..5bcf65ee41 100644 --- a/src/map/battle.hpp +++ b/src/map/battle.hpp @@ -4,10 +4,10 @@ #ifndef _BATTLE_HPP_ #define _BATTLE_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" -#include "../config/core.h" +#include "../config/core.hpp" #include "map.hpp" //ELE_MAX @@ -83,7 +83,7 @@ struct Damage { }; //(Used in read pc.c,) attribute table (battle_attr_fix) -extern int attr_fix_table[4][ELE_MAX][ELE_MAX]; +extern int attr_fix_table[MAX_ELE_LEVEL][ELE_MAX][ELE_MAX]; // Damage Calculation @@ -265,6 +265,8 @@ struct Battle_Config int arrow_decrement; int max_aspd; int max_walk_speed; //Maximum walking speed after buffs [Skotlex] + int max_hp_lv99; + int max_hp_lv150; int max_hp; int max_sp; int max_lv, aura_lv; @@ -638,6 +640,10 @@ struct Battle_Config int event_refine_chance; int autoloot_adjust; int broadcast_hide_name; + int skill_drop_items_full; + int feature_homunculus_autofeed; + int summoner_trait; + int homunculus_autofeed_always; #include "../custom/battle_config_struct.inc" }; diff --git a/src/map/battleground.cpp b/src/map/battleground.cpp index 6d11dbac06..3f7316741d 100644 --- a/src/map/battleground.cpp +++ b/src/map/battleground.cpp @@ -3,12 +3,12 @@ #include "battleground.hpp" -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" #include "battle.hpp" #include "clif.hpp" diff --git a/src/map/battleground.hpp b/src/map/battleground.hpp index 507428320f..36de4f245f 100644 --- a/src/map/battleground.hpp +++ b/src/map/battleground.hpp @@ -4,8 +4,8 @@ #ifndef _BATTLEGROUND_HPP_ #define _BATTLEGROUND_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" // struct party +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" // struct party #define MAX_BG_MEMBERS 30 diff --git a/src/map/buyingstore.cpp b/src/map/buyingstore.cpp index 039b223fc3..8b1656ce77 100644 --- a/src/map/buyingstore.cpp +++ b/src/map/buyingstore.cpp @@ -5,13 +5,13 @@ #include <stdlib.h> // atoi -#include "../common/nullpo.h" -#include "../common/db.h" // ARR_FIND -#include "../common/malloc.h" // aMalloc, aFree -#include "../common/showmsg.h" // ShowWarning -#include "../common/socket.h" // RBUF* -#include "../common/strlib.h" // safestrncpy -#include "../common/timer.h" // gettick +#include "../common/nullpo.hpp" +#include "../common/db.hpp" // ARR_FIND +#include "../common/malloc.hpp" // aMalloc, aFree +#include "../common/showmsg.hpp" // ShowWarning +#include "../common/socket.hpp" // RBUF* +#include "../common/strlib.hpp" // safestrncpy +#include "../common/timer.hpp" // gettick #include "atcommand.hpp" // msg_txt #include "battle.hpp" // battle_config.* diff --git a/src/map/buyingstore.hpp b/src/map/buyingstore.hpp index 812a50212a..860cfdb610 100644 --- a/src/map/buyingstore.hpp +++ b/src/map/buyingstore.hpp @@ -4,7 +4,7 @@ #ifndef _BUYINGSTORE_HPP_ #define _BUYINGSTORE_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" #include "map.hpp" //MESSAGE_SIZE diff --git a/src/map/cashshop.cpp b/src/map/cashshop.cpp index 1000115329..5c554ff1ae 100644 --- a/src/map/cashshop.cpp +++ b/src/map/cashshop.cpp @@ -6,9 +6,9 @@ #include <string.h> // memset #include <stdlib.h> // atoi -#include "../common/cbasetypes.h" // uint16, uint32 -#include "../common/malloc.h" // CREATE, RECREATE, aFree -#include "../common/showmsg.h" // ShowWarning, ShowStatus +#include "../common/cbasetypes.hpp" // uint16, uint32 +#include "../common/malloc.hpp" // CREATE, RECREATE, aFree +#include "../common/showmsg.hpp" // ShowWarning, ShowStatus #include "pc.hpp" // s_map_session_data #include "pet.hpp" // pet_create_egg diff --git a/src/map/cashshop.hpp b/src/map/cashshop.hpp index fcf355f1de..a8240823cf 100644 --- a/src/map/cashshop.hpp +++ b/src/map/cashshop.hpp @@ -4,10 +4,10 @@ #ifndef _CASHSHOP_HPP_ #define _CASHSHOP_HPP_ -#include "../common/cbasetypes.h" // uint16, uint32 -#include "../common/timer.h" // ShowWarning, ShowStatus +#include "../common/cbasetypes.hpp" // uint16, uint32 +#include "../common/timer.hpp" // ShowWarning, ShowStatus -#include "../config/core.h" +#include "../config/core.hpp" struct map_session_data; diff --git a/src/map/channel.cpp b/src/map/channel.cpp index d4a42fd30d..10888365b6 100644 --- a/src/map/channel.cpp +++ b/src/map/channel.cpp @@ -5,14 +5,14 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/conf.h" //libconfig -#include "../common/showmsg.h" -#include "../common/strlib.h" //safestrncpy -#include "../common/socket.h" //set_eof -#include "../common/timer.h" // DIFF_TICK -#include "../common/nullpo.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/conf.hpp" //libconfig +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" //safestrncpy +#include "../common/socket.hpp" //set_eof +#include "../common/timer.hpp" // DIFF_TICK +#include "../common/nullpo.hpp" #include "map.hpp" //msg_conf #include "clif.hpp" //clif_chsys_msg diff --git a/src/map/channel.hpp b/src/map/channel.hpp index 438d9da609..0b29dcf04a 100644 --- a/src/map/channel.hpp +++ b/src/map/channel.hpp @@ -4,8 +4,8 @@ #ifndef CHANNEL_H #define CHANNEL_H -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" //namespace rA { diff --git a/src/map/chat.cpp b/src/map/chat.cpp index 1ba3d65cbe..65d819c891 100644 --- a/src/map/chat.cpp +++ b/src/map/chat.cpp @@ -5,12 +5,12 @@ #include <cstring> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/mmo.hpp" #include "map.hpp" #include "atcommand.hpp" // msg_txt() diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index 82c1a52346..a2937ea2f9 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -6,14 +6,14 @@ #include <cstdlib> #include <cstring> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/socket.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/ers.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/socket.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/ers.hpp" #include "map.hpp" #include "battle.hpp" @@ -1705,7 +1705,7 @@ int chrif_bsdata_save(struct map_session_data *sd, bool quit) { } if (i != sd->bonus_script.count && sd->bonus_script.count > MAX_PC_BONUS_SCRIPT) - ShowWarning("Only allowed to save %d (mmo.h::MAX_PC_BONUS_SCRIPT) bonus script each player.\n", MAX_PC_BONUS_SCRIPT); + ShowWarning("Only allowed to save %d (mmo.hpp::MAX_PC_BONUS_SCRIPT) bonus script each player.\n", MAX_PC_BONUS_SCRIPT); } WFIFOB(char_fd, 8) = i; @@ -1746,7 +1746,7 @@ int chrif_bsdata_received(int fd) { if (bs->script_str[0] == '\0' || !bs->tick) continue; - if (!(entry = pc_bonus_script_add(sd, bs->script_str, bs->tick, (enum si_type)bs->icon, bs->flag, bs->type))) + if (!(entry = pc_bonus_script_add(sd, bs->script_str, bs->tick, (enum efst_types)bs->icon, bs->flag, bs->type))) continue; linkdb_insert(&sd->bonus_script.head, (void *)((intptr_t)entry), entry); diff --git a/src/map/chrif.hpp b/src/map/chrif.hpp index c58a36d811..16990428f2 100644 --- a/src/map/chrif.hpp +++ b/src/map/chrif.hpp @@ -6,8 +6,8 @@ #include <time.h> -#include "../common/cbasetypes.h" -#include "../common/socket.h" // enum chrif_req_op +#include "../common/cbasetypes.hpp" +#include "../common/socket.hpp" // enum chrif_req_op //fwd declaration struct map_session_data; diff --git a/src/map/clan.cpp b/src/map/clan.cpp index d2480f8c47..7840a28627 100644 --- a/src/map/clan.cpp +++ b/src/map/clan.cpp @@ -5,11 +5,11 @@ #include <string.h> //memset -#include "../common/cbasetypes.h" -#include "../common/mmo.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" #include "clif.hpp" #include "intif.hpp" diff --git a/src/map/clan.hpp b/src/map/clan.hpp index 54c85ec60f..5b4309d4ac 100644 --- a/src/map/clan.hpp +++ b/src/map/clan.hpp @@ -4,7 +4,7 @@ #ifndef _CLAN_HPP_ #define _CLAN_HPP_ -#include "../common/mmo.h" +#include "../common/mmo.hpp" struct clan; struct map_session_data; diff --git a/src/map/clif.cpp b/src/map/clif.cpp index ceb08f6533..7ae702bb3d 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -9,18 +9,18 @@ #include <cstdarg> #include <ctime> -#include "../common/cbasetypes.h" -#include "../common/socket.h" -#include "../common/timer.h" -#include "../common/grfio.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/ers.h" -#include "../common/conf.h" +#include "../common/cbasetypes.hpp" +#include "../common/socket.hpp" +#include "../common/timer.hpp" +#include "../common/grfio.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" +#include "../common/conf.hpp" #include "map.hpp" #include "chrif.hpp" @@ -78,7 +78,7 @@ enum mail_type { /** Converts item type to display it on client if necessary. * @param nameid: Item ID -* @return item type. For IT_PETEGG will be displayed as IT_WEAPON. If Shadow Weapon of IT_SHADOWGEAR as IT_WEAPON and else as IT_ARMOR +* @return item type. For IT_PETEGG will be displayed as IT_ARMOR. If Shadow Weapon of IT_SHADOWGEAR as IT_WEAPON and else as IT_ARMOR */ static inline int itemtype(unsigned short nameid) { struct item_data* id = itemdb_search(nameid); //Use itemdb_search, so non-existance item will use dummy data and won't crash the server. bugreport:8468 @@ -89,7 +89,7 @@ static inline int itemtype(unsigned short nameid) { else return IT_ARMOR; } - return ( type == IT_PETEGG ) ? IT_WEAPON : type; + return ( type == IT_PETEGG ) ? IT_ARMOR : type; } @@ -1851,22 +1851,31 @@ void clif_changemap(struct map_session_data *sd, short m, int x, int y) } -/// Notifies the client of a position change to coordinates on given map, which is on another map-server (ZC_NPCACK_SERVERMOVE). -/// 0092 <map name>.16B <x>.W <y>.W <ip>.L <port>.W +/// Notifies the client of a position change to coordinates on given map, which is on another map-server. +/// 0092 <map name>.16B <x>.W <y>.W <ip>.L <port>.W (ZC_NPCACK_SERVERMOVE) +/// 0ac7 <map name>.16B <x>.W <y>.W <ip>.L <port>.W <unknown>.128B (ZC_NPCACK_SERVERMOVE2) void clif_changemapserver(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port) { int fd; +#if PACKETVER >= 20170315 + int cmd = 0xac7; +#else + int cmd = 0x92; +#endif nullpo_retv(sd); fd = sd->fd; - WFIFOHEAD(fd,packet_len(0x92)); - WFIFOW(fd,0) = 0x92; + WFIFOHEAD(fd,packet_len(cmd)); + WFIFOW(fd,0) = cmd; mapindex_getmapname_ext(mapindex_id2name(map_index), WFIFOCP(fd,2)); WFIFOW(fd,18) = x; WFIFOW(fd,20) = y; WFIFOL(fd,22) = htonl(ip); WFIFOW(fd,26) = ntows(htons(port)); // [!] LE byte order here [!] - WFIFOSET(fd,packet_len(0x92)); +#if PACKETVER >= 20170315 + memset(WFIFOP(fd, 28), 0, 128); // Unknown +#endif + WFIFOSET(fd,packet_len(cmd)); } @@ -2477,8 +2486,8 @@ void clif_add_random_options(unsigned char* buf, struct item *it) { /// 029a <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.W <item type>.B <result>.B <expire time>.L (ZC_ITEM_PICKUP_ACK2) /// 02d4 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.W <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK3) /// 0990 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V5) -/// 0a0c <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W (ZC_ITEM_PICKUP_ACK_V6) -/// 0a37 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W <favorite>.B <view id>.W (ZC_ITEM_PICKUP_ACK_V7) +/// 0a0c <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W { <option id>.W <option value>.W <option param>.B }*5 (ZC_ITEM_PICKUP_ACK_V6) +/// 0a37 <index>.W <amount>.W <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W <equip location>.L <item type>.B <result>.B <expire time>.L <bindOnEquipType>.W { <option id>.W <option value>.W <option param>.B }*5 <favorite>.B <view id>.W (ZC_ITEM_PICKUP_ACK_V7) void clif_additem(struct map_session_data *sd, int n, int amount, unsigned char fail) { int fd, header, offs=0; @@ -3693,7 +3702,7 @@ void clif_arrowequip(struct map_session_data *sd,int val) { nullpo_retv(sd); #if PACKETVER >= 20121128 - clif_status_change(&sd->bl, SI_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0); + clif_status_change(&sd->bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0); #endif fd=sd->fd; WFIFOHEAD(fd, packet_len(0x013c)); @@ -4320,7 +4329,7 @@ void clif_tradestart(struct map_session_data* sd, uint8 type) /// Notifies the client about an item from other player in current trade. /// 00e9 <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM) /// 080f <nameid>.W <item type>.B <amount>.L <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM2) -/// 0a09 <nameid>.W <item type>.B <amount>.L <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_EXCHANGE_ITEM3) +/// 0a09 <nameid>.W <item type>.B <amount>.L <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W { <option id>.W <option value>.W <option param>.B }*5 (ZC_ADD_EXCHANGE_ITEM3) void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd, int index, int amount) { int fd; @@ -4495,7 +4504,7 @@ void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_a /// Notifies the client of an item being added to the storage. /// 00f4 <index>.W <amount>.L <nameid>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE) /// 01c4 <index>.W <amount>.L <nameid>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE2) -/// 0a0a <index>.W <amount>.L <nameid>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_STORE3) +/// 0a0a <index>.W <amount>.L <nameid>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W { <option id>.W <option value>.W <option param>.B }*5 (ZC_ADD_ITEM_TO_STORE3) void clif_storageitemadded(struct map_session_data* sd, struct item* i, int index, int amount) { #if PACKETVER < 5 @@ -4519,7 +4528,7 @@ void clif_storageitemadded(struct map_session_data* sd, struct item* i, int inde WFIFOL(fd, 4) = amount; // amount WFIFOW(fd, 8) = ( view > 0 ) ? view : i->nameid; // id #if PACKETVER >= 5 - WFIFOB(fd,10) = itemdb_type(i->nameid); //type + WFIFOB(fd,10) = itemtype(i->nameid); //type offset += 1; #endif WFIFOB(fd,10+offset) = i->identify; //identify flag @@ -5948,7 +5957,7 @@ void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id /// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (ZC_MSG_STATE_CHANGE3) (PACKETVER >= 20120618) /// @param bl Sends packet to clients around this object /// @param id ID of object that has this effect -/// @param type Status icon see enum si_type +/// @param type Status icon see enum efst_types /// @param flag 1:Active, 0:Deactive /// @param tick Duration in ms /// @param val1 @@ -5958,10 +5967,10 @@ void clif_status_change_sub(struct block_list *bl, int id, int type, int flag, i { unsigned char buf[32]; - if (type == SI_BLANK) //It shows nothing on the client... + if (type == EFST_BLANK) //It shows nothing on the client... return; - if (type == SI_ACTIONDELAY && tick == 0) + if (type == EFST_POSTDELAY && tick == 0) return; nullpo_retv(bl); @@ -6006,7 +6015,7 @@ void clif_status_change_sub(struct block_list *bl, int id, int type, int flag, i /* Sends status effect to clients around the bl * @param bl Object that has the effect - * @param type Status icon see enum si_type + * @param type Status icon see enum efst_types * @param flag 1:Active, 0:Deactive * @param tick Duration in ms * @param val1 @@ -6016,13 +6025,13 @@ void clif_status_change_sub(struct block_list *bl, int id, int type, int flag, i void clif_status_change(struct block_list *bl, int type, int flag, int tick, int val1, int val2, int val3) { struct map_session_data *sd = NULL; - if (type == SI_BLANK) //It shows nothing on the client... + if (type == EFST_BLANK) //It shows nothing on the client... return; - if (type == SI_ACTIONDELAY && tick == 0) + if (type == EFST_POSTDELAY && tick == 0) return; - if (type == SI_HALLUCINATION && !battle_config.display_hallucination) // Disable Hallucination. + if (type == EFST_ILLUSION && !battle_config.display_hallucination) // Disable Hallucination. return; nullpo_retv(bl); @@ -6096,7 +6105,7 @@ void clif_efst_status_change(struct block_list *bl, int tid, enum send_target ta #endif int offset = 0; - if (type == SI_BLANK) + if (type == EFST_BLANK) return; nullpo_retv(bl); @@ -6509,13 +6518,23 @@ void clif_wis_end(int fd, int result) /// Returns character name requested by char_id (ZC_ACK_REQNAME_BYGID). /// 0194 <char id>.L <name>.24B +/// 0af7 <flag>.W <char id>.L <name>.24B void clif_solved_charname(int fd, int charid, const char* name) { +#if PACKETVER >= 20180221 + WFIFOHEAD(fd,packet_len(0xaf7)); + WFIFOW(fd,0) = 0xaf7; + WFIFOW(fd,2) = name[0] ? 3 : 2; + WFIFOL(fd,4) = charid; + safestrncpy(WFIFOCP(fd, 8), name, NAME_LENGTH); + WFIFOSET(fd,packet_len(0x0af7)); +#else WFIFOHEAD(fd,packet_len(0x194)); WFIFOW(fd,0)=0x194; WFIFOL(fd,2)=charid; safestrncpy(WFIFOCP(fd,6), name, NAME_LENGTH); WFIFOSET(fd,packet_len(0x194)); +#endif } @@ -6783,7 +6802,7 @@ void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv /// Adds an item to character's cart. /// 0124 <index>.W <amount>.L <name id>.W <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART) /// 01c5 <index>.W <amount>.L <name id>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART2) -/// 0a0b <index>.W <amount>.L <name id>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W (ZC_ADD_ITEM_TO_CART3) +/// 0a0b <index>.W <amount>.L <name id>.W <type>.B <identified>.B <damaged>.B <refine>.B <card1>.W <card2>.W <card3>.W <card4>.W { <option id>.W <option value>.W <option param>.B }*5 (ZC_ADD_ITEM_TO_CART3) void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail) { #if PACKETVER < 5 @@ -7902,20 +7921,23 @@ void clif_send_petstatus(struct map_session_data *sd) void clif_pet_emotion(struct pet_data *pd,int param) { unsigned char buf[16]; + s_pet_db *pet_db_ptr; nullpo_retv(pd); + pet_db_ptr = pd->get_pet_db(); + memset(buf,0,packet_len(0x1aa)); WBUFW(buf,0)=0x1aa; WBUFL(buf,2)=pd->bl.id; - if(param >= 100 && pd->petDB->talk_convert_class) { - if(pd->petDB->talk_convert_class < 0) + if(param >= 100 && pet_db_ptr->talk_convert_class) { + if(pet_db_ptr->talk_convert_class < 0) return; - else if(pd->petDB->talk_convert_class > 0) { + else if(pet_db_ptr->talk_convert_class > 0) { // replace mob_id component of talk/act data param -= (pd->pet.class_ - 100)*100; - param += (pd->petDB->talk_convert_class - 100)*100; + param += (pet_db_ptr->talk_convert_class - 100)*100; } } WBUFL(buf,6)=param; @@ -8386,7 +8408,7 @@ void clif_guild_allianceinfo(struct map_session_data *sd) /// 1 = online /// memo: /// probably member's self-introduction (unused, no client UI/packets for editing it) -/// 0aa5 <packet len>.W { <account>.L <char id>.L <hair style>.W <hair color>.W <gender>.W <class>.W <level>.W <contrib exp>.L <state>.L <position>.L }* (ZC_MEMBERMGR_INFO2) +/// 0aa5 <packet len>.W { <account>.L <char id>.L <hair style>.W <hair color>.W <gender>.W <class>.W <level>.W <contrib exp>.L <state>.L <position>.L <lastlogin>.L }* (ZC_MEMBERMGR_INFO2) void clif_guild_memberlist(struct map_session_data *sd) { int fd; @@ -9752,23 +9774,21 @@ void clif_feel_hate_reset(struct map_session_data *sd) } -/// Equip window (un)tick ack (ZC_CONFIG). -/// 02d9 <type>.L <value>.L -/// type: -/// 0 = open equip window -/// value: -/// 0 = disabled -/// 1 = enabled -void clif_equiptickack(struct map_session_data* sd, int flag) -{ +/// Send out reply to configuration change +/// 02d9 <type>.L <value>.L (ZC_CONFIG) +/// type: see enum e_config_type +/// value: +/// false = disabled +/// true = enabled +void clif_configuration( struct map_session_data* sd, enum e_config_type type, bool enabled ){ int fd; nullpo_retv(sd); fd = sd->fd; WFIFOHEAD(fd, packet_len(0x2d9)); WFIFOW(fd, 0) = 0x2d9; - WFIFOL(fd, 2) = 0; - WFIFOL(fd, 6) = flag; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = enabled; WFIFOSET(fd, packet_len(0x2d9)); } @@ -10376,13 +10396,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif_initialstatus(sd); if (sd->sc.option&OPTION_FALCON) - clif_status_load(&sd->bl, SI_FALCON, 1); + clif_status_load(&sd->bl, EFST_FALCON, 1); else if (sd->sc.option&(OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR)) - clif_status_load(&sd->bl, SI_RIDING, 1); + clif_status_load(&sd->bl, EFST_RIDING, 1); else if (sd->sc.option&OPTION_WUGRIDER) - clif_status_load(&sd->bl, SI_WUGRIDER, 1); + clif_status_load(&sd->bl, EFST_WUGRIDER, 1); else if (sd->sc.data[SC_ALL_RIDING]) - clif_status_load(&sd->bl, SI_ALL_RIDING, 1); + clif_status_load(&sd->bl, EFST_ALL_RIDING, 1); if(sd->status.manner < 0) sc_start(&sd->bl,&sd->bl,SC_NOCHAT,100,0,0); @@ -10403,7 +10423,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if (night_flag && map[sd->bl.m].flag.nightenabled) { sd->state.night = 1; - clif_status_load(&sd->bl, SI_NIGHT, 1); + clif_status_load(&sd->bl, EFST_SKE, 1); } // Notify everyone that this char logged in [Skotlex]. @@ -10436,6 +10456,21 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) clif_partyinvitationstate(sd); clif_equipcheckbox(sd); #endif +#if PACKETVER >= 20170920 + if( battle_config.homunculus_autofeed_always ){ + // Always send ON or OFF + if( sd->hd && battle_config.feature_homunculus_autofeed ){ + clif_configuration( sd, CONFIG_HOMUNCULUS_AUTOFEED, sd->hd->homunculus.autofeed ); + }else{ + clif_configuration( sd, CONFIG_HOMUNCULUS_AUTOFEED, false ); + } + }else{ + // Only send when enabled + if( sd->hd && battle_config.feature_homunculus_autofeed && sd->hd->homunculus.autofeed ){ + clif_configuration( sd, CONFIG_HOMUNCULUS_AUTOFEED, true ); + } + } +#endif if (sd->guild && battle_config.guild_notice_changemap == 1) clif_guild_notice(sd); // Displays after VIP @@ -10449,13 +10484,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) if( !sd->state.night ) { sd->state.night = 1; - clif_status_load(&sd->bl, SI_NIGHT, 1); + clif_status_load(&sd->bl, EFST_SKE, 1); } } else if( sd->state.night ) { //Clear night display. sd->state.night = 0; - clif_status_load(&sd->bl, SI_NIGHT, 0); + clif_status_load(&sd->bl, EFST_SKE, 0); } if( map[sd->bl.m].flag.battleground ) @@ -10522,7 +10557,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) npc_script_event(sd, NPCE_LOADMAP); if (pc_checkskill(sd, SG_DEVIL) && pc_is_maxjoblv(sd)) - clif_status_load(&sd->bl, SI_DEVIL, 1); //blindness [Komurka] + clif_status_load(&sd->bl, EFST_DEVIL1, 1); //blindness [Komurka] if (sd->sc.opt2) //Client loses these on warp. clif_changeoption(&sd->bl); @@ -12275,6 +12310,7 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin /// Request to use a ground skill. /// 0116 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND) /// 0366 <skill lv>.W <skill id>.W <x>.W <y>.W (CZ_USE_SKILL_TOGROUND2) +/// 0AF4 <skill lv>.W <skill id>.W <x>.W <y>.W <unknown>.B (CZ_USE_SKILL_TOGROUND3) /// There are various variants of this packet, some of them have padding between fields. void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) { @@ -12289,6 +12325,8 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) RFIFOW(fd,info->pos[1]), //skill num RFIFOW(fd,info->pos[2]), //pos x RFIFOW(fd,info->pos[3]), //pos y + // TODO: find out what this is intended to do + //RFIFOB(fd, info->pos[4]) -1 //Skill more info. ); } @@ -14300,6 +14338,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) /// Toggles a single friend online/offline [Skotlex] (ZC_FRIENDS_STATE). /// 0206 <account id>.L <char id>.L <state>.B +/// 0206 <account id>.L <char id>.L <state>.B <name>.24B >= 20180221 /// state: /// 0 = online /// 1 = offline @@ -14319,6 +14358,9 @@ void clif_friendslist_toggle(struct map_session_data *sd,uint32 account_id, uint WFIFOL(fd, 2) = sd->status.friends[i].account_id; WFIFOL(fd, 6) = sd->status.friends[i].char_id; WFIFOB(fd,10) = !online; //Yeah, a 1 here means "logged off", go figure... +#if PACKETVER >= 20180221 + safestrncpy(WFIFOCP(fd, 11), sd->status.friends[i].name, NAME_LENGTH); +#endif WFIFOSET(fd, packet_len(0x206)); } @@ -14337,21 +14379,29 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap) /// Sends the whole friends list (ZC_FRIENDS_LIST). /// 0201 <packet len>.W { <account id>.L <char id>.L <name>.24B }* +/// 0201 <packet len>.W { <account id>.L <char id>.L }* >= 20180221 void clif_friendslist_send(struct map_session_data *sd) { int i = 0, n, fd = sd->fd; +#if PACKETVER >= 20180221 + const int size = 8; +#else + const int size = 8 + NAME_LENGTH; +#endif // Send friends list - WFIFOHEAD(fd, MAX_FRIENDS * 32 + 4); + WFIFOHEAD(fd, MAX_FRIENDS * size + 4); WFIFOW(fd, 0) = 0x201; for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) { - WFIFOL(fd, 4 + 32 * i + 0) = sd->status.friends[i].account_id; - WFIFOL(fd, 4 + 32 * i + 4) = sd->status.friends[i].char_id; - safestrncpy(WFIFOCP(fd, 4 + 32 * i + 8), sd->status.friends[i].name, NAME_LENGTH); + WFIFOL(fd, 4 + size * i + 0) = sd->status.friends[i].account_id; + WFIFOL(fd, 4 + size * i + 4) = sd->status.friends[i].char_id; +#if PACKETVER < 20180221 + safestrncpy(WFIFOCP(fd, 4 + size * i + 8), sd->status.friends[i].name, NAME_LENGTH); +#endif } if (i) { - WFIFOW(fd,2) = 4 + 32 * i; + WFIFOW(fd,2) = 4 + size * i; WFIFOSET(fd, WFIFOW(fd,2)); } @@ -15199,8 +15249,12 @@ void clif_Mail_refreshinbox(struct map_session_data *sd,enum mail_inbox_type typ } } +#if PACKETVER >= 20170419 // If it came from an npc? - //mailType |= MAIL_TYPE_NPC; + if( !msg->send_id ){ + mailType |= MAIL_TYPE_NPC; + } +#endif WFIFOB(fd, offset + 9) = mailType; safestrncpy(WFIFOCP(fd, offset + 10), msg->send_name, NAME_LENGTH); @@ -15360,7 +15414,7 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id) msg_len += 1; // Zero Termination - itemsize = 24 + 5 * MAX_ITEM_RDM_OPT; + itemsize = 24 + 5 * 5; len = 24 + msg_len+1 + itemsize * count; WFIFOHEAD(fd, len); @@ -16515,19 +16569,38 @@ void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd) } -/// Request to change equip window tick (CZ_CONFIG). -/// 02d8 <type>.L <flag>.L -/// type: -/// 0 = open equip window +/// Request to a configuration. +/// 02d8 <type>.L <flag>.L (CZ_CONFIG) +/// type: see enum e_config_type /// flag: -/// 0 = disabled -/// 1 = enabled -void clif_parse_EquipTick(int fd, struct map_session_data* sd) -{ - //int type = RFIFOL(fd,packet_db[cmd].pos[0]); - bool flag = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[1]) != 0; - sd->status.show_equip = flag; - clif_equiptickack(sd, flag); +/// false = disabled +/// true = enabled +void clif_parse_configuration( int fd, struct map_session_data* sd ){ + int cmd = RFIFOW(fd,0); + int type = RFIFOL(fd,packet_db[cmd].pos[0]); + bool flag = RFIFOL(fd,packet_db[cmd].pos[1]) != 0; + + switch( type ){ + case CONFIG_OPEN_EQUIPMENT_WINDOW: + sd->status.show_equip = flag; + break; + case CONFIG_PET_AUTOFEED: + // TODO: Implement with pet evolution system + break; + case CONFIG_HOMUNCULUS_AUTOFEED: + // Player can not click this if he does not have a homunculus or it is vaporized + if( sd->hd == nullptr || sd->hd->homunculus.vaporize || !battle_config.feature_homunculus_autofeed ){ + return; + } + + sd->hd->homunculus.autofeed = flag; + break; + default: + ShowWarning( "clif_parse_configuration: received unknown configuration type '%d'...\n", type ); + return; + } + + clif_configuration( sd, static_cast<e_config_type>(type), flag ); } /// Request to change party invitation tick. @@ -16558,10 +16631,10 @@ static void clif_quest_len(int def_len, int info_len, int avail_quests, int *lim (*len_out) = ((*limit_out) * info_len) + def_len; } -/// Sends list of all quest states (ZC_ALL_QUEST_LIST). -/// 02b1 <packet len>.W <num>.L { <quest id>.L <active>.B }*num +/// Sends list of all quest states +/// 02b1 <packet len>.W <num>.L { <quest id>.L <active>.B }*num (ZC_ALL_QUEST_LIST) /// 097a <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <mob_id>.L <killed>.W <total>.W <mob name>.24B }*count }*num (ZC_ALL_QUEST_LIST2) -/// 09f8 <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <mob_id>.L <killed>.W <total>.W <mob name>.24B }*count }*num (ZC_ALL_QUEST_LIST3) // TODO! +/// 09f8 <packet len>.W <num>.L { <quest id>.L <active>.B <remaining time>.L <time>.L <count>.W { <hunt identification>.L <mob type>.L <mob_id>.L <min level>.W <max level>.W <killed>.W <total>.W <mob name>.24B }*count }*num (ZC_ALL_QUEST_LIST3) void clif_quest_send_list(struct map_session_data *sd) { int fd = sd->fd; @@ -16570,9 +16643,19 @@ void clif_quest_send_list(struct map_session_data *sd) int limit = 0; #if PACKETVER >= 20141022 - clif_quest_len(offset, 15 + ((10 + NAME_LENGTH) * MAX_QUEST_OBJECTIVES), sd->avail_quests, &limit, &i); +#if PACKETVER >= 20150513 + int size = 22 + NAME_LENGTH; +#else + int size = 10 + NAME_LENGTH; +#endif + + clif_quest_len(offset, 15 + ( size * MAX_QUEST_OBJECTIVES), sd->avail_quests, &limit, &i); WFIFOHEAD(fd,i); +#if PACKETVER >= 20150513 + WFIFOW(fd, 0) = 0x9f8; +#else WFIFOW(fd, 0) = 0x97a; +#endif WFIFOL(fd, 4) = limit; for (i = 0; i < limit; i++) { @@ -16596,8 +16679,20 @@ void clif_quest_send_list(struct map_session_data *sd) for( j = 0; j < qi->objectives_count; j++ ){ mob = mob_db(qi->objectives[j].mob); +#if PACKETVER >= 20150513 + WFIFOL(fd, offset) = sd->quest_log[i].quest_id * 1000 + j; + offset += 4; + WFIFOL(fd, offset) = 0; // TODO: Find info - mobType + offset += 4; +#endif WFIFOL(fd, offset) = qi->objectives[j].mob; offset += 4; +#if PACKETVER >= 20150513 + WFIFOW(fd, offset) = 0; // TODO: Find info - levelMin + offset += 2; + WFIFOW(fd, offset) = 0; // TODO: Find info - levelMax + offset += 2; +#endif WFIFOW(fd, offset) = sd->quest_log[i].count[j]; offset += 2; WFIFOW(fd, offset) = qi->objectives[j].count; @@ -16663,31 +16758,71 @@ void clif_quest_send_mission(struct map_session_data *sd) } -/// Notification about a new quest (ZC_ADD_QUEST). -/// 02b3 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3 +/// Notification about a new quest +/// 02b3 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <mob id>.L <mob count>.W <mob name>.24B }*3 (ZC_ADD_QUEST) +/// 08fe <packet len>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3 (ZC_HUNTING_QUEST_INFO) +/// 09f9 <quest id>.L <active>.B <start time>.L <expire time>.L <mobs>.W { <hunt identification>.L <mob type>.L <mob id>.L <min level>.W <max level>.W <mob count>.W <mob name>.24B }*3 (ZC_ADD_QUEST_EX) void clif_quest_add(struct map_session_data *sd, struct quest *qd) { int fd = sd->fd; - int i; + int i, offset; struct quest_db *qi = quest_search(qd->quest_id); +#if PACKETVER >= 20150513 + int cmd = 0x9f9; +#else + int cmd = 0x2b3; +#endif - WFIFOHEAD(fd, packet_len(0x2b3)); - WFIFOW(fd, 0) = 0x2b3; + WFIFOHEAD(fd, packet_len(cmd)); + WFIFOW(fd, 0) = cmd; WFIFOL(fd, 2) = qd->quest_id; WFIFOB(fd, 6) = qd->state; WFIFOB(fd, 7) = qd->time - qi->time; WFIFOL(fd, 11) = qd->time; WFIFOW(fd, 15) = qi->objectives_count; - for (i = 0; i < qi->objectives_count; i++) { + for (i = 0, offset = 17; i < qi->objectives_count; i++) { struct mob_db *mob; - WFIFOL(fd, i*30+17) = qi->objectives[i].mob; - WFIFOW(fd, i*30+21) = qd->count[i]; +#if PACKETVER >= 20150513 + WFIFOL(fd, offset) = qd->quest_id * 1000 + i; + offset += 4; + WFIFOL(fd, offset) = 0; // TODO: Find info - mobType + offset += 4; +#endif + WFIFOL(fd, offset) = qi->objectives[i].mob; + offset += 4; +#if PACKETVER >= 20150513 + WFIFOW(fd, offset) = 0; // TODO: Find info - levelMin + offset += 2; + WFIFOW(fd, offset) = 0; // TODO: Find info - levelMax + offset += 2; +#endif + WFIFOW(fd, offset) = qd->count[i]; + offset += 2; mob = mob_db(qi->objectives[i].mob); - safestrncpy(WFIFOCP(fd, i*30+23), mob->jname, NAME_LENGTH); + safestrncpy(WFIFOCP(fd, offset), mob->jname, NAME_LENGTH); + offset += NAME_LENGTH; } - WFIFOSET(fd, packet_len(0x2b3)); + WFIFOSET(fd, packet_len(cmd)); + +#if PACKETVER >= 20150513 + int len = 4 + qi->objectives_count * 12; + + WFIFOHEAD(fd, len); + WFIFOW(fd, 0) = 0x8fe; + WFIFOW(fd, 2) = len; + + for( i = 0, offset = 4; i < qi->objectives_count; i++, offset += 12 ){ + WFIFOL(fd, offset) = qd->quest_id * 1000 + i; + WFIFOL(fd, offset+4) = qi->objectives[i].mob; + WFIFOW(fd, offset + 10) = qi->objectives[i].count; + WFIFOW(fd, offset + 12) = qd->count[i]; + } + + WFIFOSET(fd, len); + +#endif } @@ -16704,30 +16839,45 @@ void clif_quest_delete(struct map_session_data *sd, int quest_id) } -/// Notification of an update to the hunting mission counter (ZC_UPDATE_MISSION_HUNT). -/// 02b5 <packet len>.W <mobs>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3 +/// Notification of an update to the hunting mission counter +/// 02b5 <packet len>.W <mobs>.W { <quest id>.L <mob id>.L <total count>.W <current count>.W }*3 (ZC_UPDATE_MISSION_HUNT) +/// 09fa <packet len>.W <mobs>.W { <quest id>.L <hunt identification>.L <total count>.W <current count>.W }*3 (ZC_UPDATE_MISSION_HUNT_EX) void clif_quest_update_objective(struct map_session_data *sd, struct quest *qd, int mobid) { int fd = sd->fd; - int i; + int i, offset; struct quest_db *qi = quest_search(qd->quest_id); int len = qi->objectives_count * 12 + 6; +#if PACKETVER >= 20150513 + int cmd = 0x9fa; +#else + int cmd = 0x2b5; +#endif WFIFOHEAD(fd, len); - WFIFOW(fd, 0) = 0x2b5; - WFIFOW(fd, 2) = len; + WFIFOW(fd, 0) = cmd; WFIFOW(fd, 4) = qi->objectives_count; - for (i = 0; i < qi->objectives_count; i++) { + for (i = 0, offset = 6; i < qi->objectives_count; i++) { if (mobid == 0 || mobid == qi->objectives[i].mob) { - WFIFOL(fd, i * 12 + 6) = qd->quest_id; - WFIFOL(fd, i * 12 + 10) = qi->objectives[i].mob; - WFIFOW(fd, i * 12 + 14) = qi->objectives[i].count; - WFIFOW(fd, i * 12 + 16) = qd->count[i]; + WFIFOL(fd, offset) = qd->quest_id; + offset += 4; +#if PACKETVER >= 20150513 + WFIFOL(fd, offset) = qd->quest_id * 1000 + i; + offset += 4; +#else + WFIFOL(fd, offset) = qi->objectives[i].mob; + offset += 4; +#endif + WFIFOW(fd, offset) = qi->objectives[i].count; + offset += 2; + WFIFOW(fd, offset) = qd->count[i]; + offset += 2; } } - WFIFOSET(fd, len); + WFIFOW(fd, 2) = offset; + WFIFOSET(fd, offset); } @@ -17863,7 +18013,7 @@ static void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) void clif_search_store_info_ack(struct map_session_data* sd) { #if PACKETVER >= 20150225 - const unsigned int blocksize = MESSAGE_SIZE+26+5*MAX_ITEM_RDM_OPT; + const unsigned int blocksize = MESSAGE_SIZE+26+5*5; #else const unsigned int blocksize = MESSAGE_SIZE+26; #endif @@ -19534,7 +19684,7 @@ void clif_parse_merge_item_cancel(int fd, struct map_session_data* sd) { * type: ITEMOBTAIN_TYPE_BOXITEM & ITEMOBTAIN_TYPE_MONSTER_ITEM "[playername] ... [sourcename] ... [itemname]" -> MsgStringTable[1629] * type: ITEMOBTAIN_TYPE_NPC "[playername] ... [itemname]" -> MsgStringTable[1870] **/ -void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type, const char *srcname) { +void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type) { unsigned char buf[9 + NAME_LENGTH * 2]; unsigned short cmd = 0; struct s_packet_db *info = NULL; @@ -19784,9 +19934,15 @@ void clif_parse_sale_refresh( int fd, struct map_session_data* sd ){ /// 09b5 (ZC_OPEN_BARGAIN_SALE_TOOL) void clif_sale_open( struct map_session_data* sd ){ #if PACKETVER_SUPPORTS_SALES - int fd = sd->fd; + nullpo_retv(sd); - // TODO: do we want state tracking? + if( sd->state.sale_open ){ + return; + } + + sd->state.sale_open = true; + + int fd = sd->fd; WFIFOHEAD(fd, 2); WFIFOW(fd, 0) = 0x9b5; @@ -19805,11 +19961,11 @@ void clif_parse_sale_open( int fd, struct map_session_data* sd ){ return; } - if( !pc_has_permission( sd, PC_PERM_CASHSHOP_SALE ) ){ - return; - } + char command[CHAT_SIZE_MAX]; - clif_sale_open(sd); + safesnprintf( command, sizeof(command), "%climitedsale", atcommand_symbol ); + + is_atcommand(fd, sd, command, 1); #endif } @@ -19817,6 +19973,14 @@ void clif_parse_sale_open( int fd, struct map_session_data* sd ){ /// 09bd (ZC_CLOSE_BARGAIN_SALE_TOOL) void clif_sale_close(struct map_session_data* sd) { #if PACKETVER_SUPPORTS_SALES + nullpo_retv(sd); + + if( !sd->state.sale_open ){ + return; + } + + sd->state.sale_open = false; + int fd = sd->fd; WFIFOHEAD(fd, 2); @@ -19835,8 +19999,6 @@ void clif_parse_sale_close(int fd, struct map_session_data* sd) { return; } - // TODO: do we want state tracking? - clif_sale_close(sd); #endif } @@ -19875,7 +20037,7 @@ void clif_parse_sale_search( int fd, struct map_session_data* sd ){ return; } - if( !pc_has_permission( sd, PC_PERM_CASHSHOP_SALE ) ){ + if( !sd->state.sale_open ){ return; } @@ -19929,7 +20091,7 @@ void clif_parse_sale_add( int fd, struct map_session_data* sd ){ return; } - if( !pc_has_permission( sd, PC_PERM_CASHSHOP_SALE ) ){ + if( !sd->state.sale_open ){ return; } @@ -19972,7 +20134,7 @@ void clif_parse_sale_remove( int fd, struct map_session_data* sd ){ return; } - if( !pc_has_permission( sd, PC_PERM_CASHSHOP_SALE ) ){ + if( !sd->state.sale_open ){ return; } @@ -20091,6 +20253,21 @@ void clif_achievement_reward_ack(int fd, unsigned char result, int achievement_i WFIFOSET(fd, packet_len(0xa26)); } +/* + * This packet is sent by /changedress or /nocosplay + * + * 0ae8 + */ +void clif_parse_changedress( int fd, struct map_session_data* sd ){ +#if PACKETVER >= 20180103 + char command[CHAT_SIZE_MAX]; + + safesnprintf( command, sizeof(command), "%cchangedress", atcommand_symbol ); + + is_atcommand( fd, sd, command, 1 ); +#endif +} + /*========================================== * Main client packet processing function *------------------------------------------*/ diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 3993cb7bba..dfa29fe5ca 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -6,9 +6,9 @@ #include <stdarg.h> -#include "../common/cbasetypes.h" -#include "../common/db.h" //dbmap -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/db.hpp" //dbmap +#include "../common/mmo.hpp" struct Channel; struct clan; @@ -536,6 +536,13 @@ enum e_damage_type : uint8_t { DMG_TOUCH, /// (touch skill?) }; +enum e_config_type : uint32 { + CONFIG_OPEN_EQUIPMENT_WINDOW = 0, + // Unknown + CONFIG_PET_AUTOFEED = 2, + CONFIG_HOMUNCULUS_AUTOFEED +}; + int clif_setip(const char* ip); void clif_setbindip(const char* ip); void clif_setport(uint16 port); @@ -862,7 +869,7 @@ void clif_homskillup(struct map_session_data *sd, uint16 skill_id); //[orn] int clif_hom_food(struct map_session_data *sd,int foodid,int fail); //[orn] void clif_send_homdata(struct map_session_data *sd, int state, int param); //[orn] -void clif_equiptickack(struct map_session_data* sd, int flag); +void clif_configuration( struct map_session_data* sd, enum e_config_type type, bool enabled ); void clif_partytickack(struct map_session_data* sd, bool flag); void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* tsd); void clif_equipcheckbox(struct map_session_data* sd); @@ -1024,6 +1031,7 @@ void clif_clan_leave( struct map_session_data* sd ); void clif_sale_start(struct sale_item_data* sale_item, struct block_list* bl, enum send_target target); void clif_sale_end(struct sale_item_data* sale_item, struct block_list* bl, enum send_target target); void clif_sale_amount(struct sale_item_data* sale_item, struct block_list* bl, enum send_target target); +void clif_sale_open(struct map_session_data* sd); /** * Color Table @@ -1056,7 +1064,7 @@ void clif_notify_bindOnEquip(struct map_session_data *sd, int n); void clif_merge_item_open(struct map_session_data *sd); -void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type, const char *srcname); +void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type); void clif_dressing_room(struct map_session_data *sd, int flag); void clif_navigateTo(struct map_session_data *sd, const char* mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id ); @@ -1065,7 +1073,6 @@ void clif_SelectCart(struct map_session_data *sd); /// Achievement System void clif_achievement_list_all(struct map_session_data *sd); void clif_achievement_update(struct map_session_data *sd, struct achievement *ach, int count); -void clif_pAchievementCheckReward(int fd, struct map_session_data *sd); void clif_achievement_reward_ack(int fd, unsigned char result, int ach_id); #endif /* _CLIF_HPP_ */ diff --git a/src/map/clif_obfuscation.hpp b/src/map/clif_obfuscation.hpp index 2b909b8d90..02219f654e 100644 --- a/src/map/clif_obfuscation.hpp +++ b/src/map/clif_obfuscation.hpp @@ -408,6 +408,18 @@ packet_keys(0x348F4BD7,0x7A425A54,0x628F589A); #elif PACKETVER == 20180117 // 2018-01-17aRagexeRE packet_keys(0x21F477F4,0x37F437F4,0x37F437F4); + #elif PACKETVER == 20180124 // 2018-01-24bRagexeRE + packet_keys(0x7EAA1CE0,0x415D1CFD,0x4C8F19FA); + #elif PACKETVER == 20180207 // 2018-02-07bRagexeRE + packet_keys(0x45AA1B44,0x20E716B7,0x5388105C); + #elif PACKETVER == 20180213 // 2018-02-13aRagexeRE + packet_keys(0x189D69B2,0x43B85EAD,0x2B7A687E); + #elif PACKETVER == 20180221 // 2018-02-21aRagexeRE or 2018-02-21bRagexeRE + packet_keys(0x6E2F6233,0x193B0A66,0x0D1D2CA5); + #elif PACKETVER == 20180307 // 2018-03-07bRagexeRE + packet_keys(0x47DA10EB,0x4B922CCF,0x765C5055); + #elif PACKETVER > 20180307 // Clients after 2018-03-07bRagexeRE do not obfuscate packets anymore + packet_keys(0x00000000,0x00000000,0x00000000); #elif PACKETVER > 20110817 #error Unsupported packet version. #endif diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index 48a1e1c7be..296234954b 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -1123,7 +1123,7 @@ packet(0x02d5,2); parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2); packet(0x02d7,-1); - parseable_packet(0x02d8,10,clif_parse_EquipTick,2,6); + parseable_packet(0x02d8,10,clif_parse_configuration,2,6); packet(0x02d9,10); packet(0x02da,3); parseable_packet(0x02db,-1,clif_parse_BattleChat,2,4); @@ -2222,7 +2222,6 @@ packet(0x09FD,-1); // ZC_NOTIFY_MOVEENTRY11 packet(0x09FE,-1); // ZC_NOTIFY_NEWENTRY11 packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11 - //packet(0x09F8,-1); // ZC_ALL_QUEST_LIST3 #endif // 2015-02-25aRagexeRE @@ -2282,6 +2281,12 @@ // Pet Evolution System parseable_packet(0x09FB,-1,clif_parse_dull,0); // CZ_PET_EVOLUTION packet(0x09FC,6); // ZC_PET_EVOLUTION_RESULT + + // Quest UI + packet(0x08FE,-1); // ZC_HUNTING_QUEST_INFO + packet(0x09F8,-1); // ZC_ALL_QUEST_LIST3 + packet(0x09F9,143); // ZC_ADD_QUEST_EX + packet(0x09FA,-1); // ZC_UPDATE_MISSION_HUNT_EX #endif // 2015-05-20aRagexe @@ -2333,6 +2338,11 @@ packet(0x0AA5,-1); #endif +// 2017-03-15cRagexeRE +#if PACKETVER >= 20170315 + packet(0xac7,156); +#endif + // 2017-04-19bRagexeRE #if PACKETVER >= 20170419 parseable_packet(0x0AC0,26,clif_parse_Mail_refreshinbox,2,10); @@ -2344,6 +2354,7 @@ packet(0x0A43,85); packet(0x0A44,-1); packet(0x0ABD,10); + parseable_packet(0x0ACE,4,clif_parse_dull,0); #endif // 2017-08-30bRagexeRE @@ -2352,4 +2363,28 @@ packet(0x0ACC,18); #endif +// 2018-01-03aRagexeRE or 2018-01-03bRagexeRE +#if PACKETVER >= 20180103 + parseable_packet(0x0ae8,2,clif_parse_changedress,0); +#endif + +// 2018-02-07bRagexeRE +#if PACKETVER >= 20180207 + parseable_packet(0x0AF4,11,clif_parse_UseSkillToPos,2,4,6,8,10); +#endif + +// 2018-02-21aRagexeRE or 2018-02-21bRagexeRE +#if PACKETVER >= 20180221 + packet(0x0206,35); // ZC_FRIENDS_STATE + packet(0x0af7,32); +#endif + +// 2018-03-07bRagexeRE +#if PACKETVER >= 20180307 + parseable_packet(0x0A68,3,clif_parse_dull,0); + packet(0x0AE2,7); + parseable_packet(0x0AEF,2,clif_parse_dull,0); + packet(0x0AF0,10); +#endif + #endif /* _CLIF_PACKETDB_HPP_ */ diff --git a/src/map/clif_shuffle.hpp b/src/map/clif_shuffle.hpp index fc7a1bf858..f7ef14f917 100644 --- a/src/map/clif_shuffle.hpp +++ b/src/map/clif_shuffle.hpp @@ -4008,6 +4008,7 @@ parseable_packet(0x0281,6,clif_parse_GetCharNameRequest,2); // 2017-09-13bRagexeRE #elif PACKETVER == 20170913 + parseable_packet(0x0281,6,clif_parse_GetCharNameRequest,2); parseable_packet(0x035F,26,clif_parse_FriendsListAdd,2); parseable_packet(0x0437,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); parseable_packet(0x07E4,8,clif_parse_MoveFromKafra,2,4); @@ -4563,6 +4564,192 @@ parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); parseable_packet(0x0875,36,clif_parse_StoragePassword,0); parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2018-01-24bRagexeRE +#elif PACKETVER == 20180124 + parseable_packet(0x035F,6,clif_parse_TickSend,2); + parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0436,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0802,6,clif_parse_DropItem,2,4); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x085F,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0868,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x086A,18,clif_parse_PartyBookingRegisterReq,2,4); + //parseable_packet(0x086F,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x087A,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0888,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0890,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0919,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0940,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0946,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x094D,6,clif_parse_TakeItem,2); + parseable_packet(0x0958,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0961,5,clif_parse_HomMenu,2,4); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2018-02-07bRagexeRE +#elif PACKETVER == 20180207 + parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x035F,6,clif_parse_ReqClickBuyingStore,2); + //parseable_packet(0x0360,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0362,6,clif_parse_DropItem,2,4); + //parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_SolveCharName,2); + parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0437,5,clif_parse_WalkToXY,2); + parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x07E4,6,clif_parse_TakeItem,2); + parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0802,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x0870,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0881,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x092C,5,clif_parse_HomMenu,2,4); + parseable_packet(0x092E,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0940,6,clif_parse_TickSend,2); + parseable_packet(0x0950,36,clif_parse_StoragePassword,0); + parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2); +// 2018-02-13aRagexeRE +#elif PACKETVER == 20180213 + parseable_packet(0x0369,36,clif_parse_StoragePassword,0); + parseable_packet(0x0802,6,clif_parse_DropItem,2,4); + parseable_packet(0x0817,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x085A,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x086F,26,clif_parse_PartyInvite2,2); + parseable_packet(0x0874,6,clif_parse_TickSend,2); + parseable_packet(0x0875,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0878,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x087B,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0882,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x088C,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0892,6,clif_parse_TakeItem,2); + parseable_packet(0x0898,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + //parseable_packet(0x089C,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x08A3,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x08A5,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x08A9,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x08AD,6,clif_parse_SolveCharName,2); + parseable_packet(0x0917,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0922,5,clif_parse_WalkToXY,2); + parseable_packet(0x0924,10,clif_parse_UseSkillToPos,2,4,6,8); + //parseable_packet(0x0926,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0933,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0936,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x093C,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0943,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0955,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x095A,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0962,5,clif_parse_HomMenu,2,4); +// 2018-02-21aRagexeRE or 2018-02-21bRagexeRE +#elif PACKETVER == 20180221 + parseable_packet(0x0202,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + //parseable_packet(0x0366,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0436,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x0838,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0867,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x086C,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x086F,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0871,6,clif_parse_DropItem,2,4); + parseable_packet(0x0876,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0879,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x087D,5,clif_parse_WalkToXY,2); + parseable_packet(0x0880,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0881,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0883,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x088F,6,clif_parse_SolveCharName,2); + //parseable_packet(0x0891,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x0897,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0899,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x089D,6,clif_parse_TickSend,2); + parseable_packet(0x0917,36,clif_parse_StoragePassword,0); + parseable_packet(0x091E,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0929,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x093D,26,clif_parse_PartyInvite2,2); + parseable_packet(0x094B,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x094D,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x094E,6,clif_parse_TakeItem,2); + parseable_packet(0x0957,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0964,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x096A,7,clif_parse_ActionRequest,2,6); +// 2018-03-07bRagexeRE +#elif PACKETVER == 20180307 + parseable_packet(0x035F,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0437,6,clif_parse_DropItem,2,4); + parseable_packet(0x07E4,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0861,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0862,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0864,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x086C,6,clif_parse_TickSend,2); + parseable_packet(0x0870,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + parseable_packet(0x0872,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0877,5,clif_parse_WalkToXY,2); + parseable_packet(0x088D,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0893,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x089B,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08A6,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x08AA,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x08AB,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0917,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0920,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0937,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0939,36,clif_parse_StoragePassword,0); + parseable_packet(0x093D,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0941,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0944,5,clif_parse_HomMenu,2,4); + parseable_packet(0x0948,26,clif_parse_PartyInvite2,2); + //parseable_packet(0x0951,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0954,6,clif_parse_TakeItem,2); + parseable_packet(0x0957,6,clif_parse_SolveCharName,2); + parseable_packet(0x0969,7,clif_parse_ActionRequest,2,6); + //parseable_packet(0x0281,4,NULL,0); // CZ_GANGSI_RANK +// Clients after 2018-03-07bRagexeRE do not have shuffled packets anymore +#elif PACKETVER > 20180307 + parseable_packet(0x0202,26,clif_parse_FriendsListAdd,2); + parseable_packet(0x022D,5,clif_parse_HomMenu,2,4); + parseable_packet(0x023B,36,clif_parse_StoragePassword,0); + //parseable_packet(0x0281,4,NULL,0); // CZ_GANGSI_RANK + parseable_packet(0x02C4,26,clif_parse_PartyInvite2,2); + parseable_packet(0x035F,5,clif_parse_WalkToXY,2); + parseable_packet(0x0360,6,clif_parse_TickSend,2); + parseable_packet(0x0361,5,clif_parse_ChangeDir,2,4); + parseable_packet(0x0362,6,clif_parse_TakeItem,2); + parseable_packet(0x0363,6,clif_parse_DropItem,2,4); + parseable_packet(0x0364,8,clif_parse_MoveToKafra,2,4); + parseable_packet(0x0365,8,clif_parse_MoveFromKafra,2,4); + parseable_packet(0x0366,10,clif_parse_UseSkillToPos,2,4,6,8); + parseable_packet(0x0367,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); + parseable_packet(0x0368,6,clif_parse_GetCharNameRequest,2); + parseable_packet(0x0369,6,clif_parse_SolveCharName,2); + parseable_packet(0x0436,19,clif_parse_WantToConnection,2,6,10,14,18); + parseable_packet(0x0437,7,clif_parse_ActionRequest,2,6); + parseable_packet(0x0438,10,clif_parse_UseSkillToId,2,4,6); + parseable_packet(0x07E4,-1,clif_parse_ItemListWindowSelected,2,4,8,12); + //parseable_packet(0x07EC,8,NULL,0); // CZ_JOIN_BATTLE_FIELD + parseable_packet(0x0802,18,clif_parse_PartyBookingRegisterReq,2,4); + parseable_packet(0x0811,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89); + parseable_packet(0x0815,2,clif_parse_ReqCloseBuyingStore,0); + parseable_packet(0x0817,6,clif_parse_ReqClickBuyingStore,2); + parseable_packet(0x0819,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); + parseable_packet(0x0835,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); + parseable_packet(0x0838,2,clif_parse_SearchStoreInfoNextPage,0); + parseable_packet(0x083C,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); #endif #endif /* _CLIF_SHUFFLE_HPP_ */ diff --git a/src/map/date.hpp b/src/map/date.hpp index 6859b0403d..c12d78fe9e 100644 --- a/src/map/date.hpp +++ b/src/map/date.hpp @@ -4,7 +4,7 @@ #ifndef _DATE_HPP_ #define _DATE_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" enum e_month{ JANUARY = 1, diff --git a/src/map/duel.cpp b/src/map/duel.cpp index 09e1f72057..858519033c 100644 --- a/src/map/duel.cpp +++ b/src/map/duel.cpp @@ -8,8 +8,8 @@ #include <string.h> #include <unordered_map> -#include "../common/cbasetypes.h" -#include "../common/timer.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" #include "atcommand.hpp" // msg_txt #include "clif.hpp" diff --git a/src/map/duel.hpp b/src/map/duel.hpp index 03ac699dfb..fad6c4338c 100644 --- a/src/map/duel.hpp +++ b/src/map/duel.hpp @@ -4,7 +4,7 @@ #ifndef _DUEL_HPP_ #define _DUEL_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct duel { int members_count; diff --git a/src/map/elemental.cpp b/src/map/elemental.cpp index 203c5d49ed..7699f64b1b 100644 --- a/src/map/elemental.cpp +++ b/src/map/elemental.cpp @@ -8,15 +8,15 @@ #include <ctgmath> //floor #include <cstring> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/mmo.h" -#include "../common/showmsg.h" -#include "../common/random.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/mmo.hpp" +#include "../common/showmsg.hpp" +#include "../common/random.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "log.hpp" #include "clif.hpp" diff --git a/src/map/elemental.hpp b/src/map/elemental.hpp index 6c4df795cc..82b911ad64 100644 --- a/src/map/elemental.hpp +++ b/src/map/elemental.hpp @@ -4,7 +4,7 @@ #ifndef _ELEMENTAL_HPP_ #define _ELEMENTAL_HPP_ -#include "../common/mmo.h" +#include "../common/mmo.hpp" #include "status.hpp" // struct status_data, struct status_change #include "unit.hpp" // struct unit_data diff --git a/src/map/guild.cpp b/src/map/guild.cpp index cd85673b16..196c3dcb2d 100644 --- a/src/map/guild.cpp +++ b/src/map/guild.cpp @@ -5,15 +5,15 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/mapindex.h" -#include "../common/showmsg.h" -#include "../common/ers.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/mapindex.hpp" +#include "../common/showmsg.hpp" +#include "../common/ers.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "map.hpp" #include "storage.hpp" diff --git a/src/map/guild.hpp b/src/map/guild.hpp index df3303ee50..7553d154f7 100644 --- a/src/map/guild.hpp +++ b/src/map/guild.hpp @@ -4,8 +4,8 @@ #ifndef _GUILD_HPP_ #define _GUILD_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" #include "map.hpp" // NAME_LENGTH diff --git a/src/map/homunculus.cpp b/src/map/homunculus.cpp index f093d42ebd..484ad791c4 100644 --- a/src/map/homunculus.cpp +++ b/src/map/homunculus.cpp @@ -5,15 +5,15 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/mmo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/mmo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "log.hpp" #include "clif.hpp" @@ -1041,7 +1041,6 @@ void hom_alloc(struct map_session_data *sd, struct s_homunculus *hom) map_addiddb(&hd->bl); status_calc_homunculus(hd, SCO_FIRST); - status_percent_heal(&hd->bl, 100, 100); hd->hungry_timer = INVALID_TIMER; hd->masterteleport_timer = INVALID_TIMER; @@ -1117,6 +1116,7 @@ int hom_recv_data(uint32 account_id, struct s_homunculus *sh, int flag) { struct map_session_data *sd; struct homun_data *hd; + bool created = false; sd = map_id2sd(account_id); if(!sd) @@ -1133,14 +1133,19 @@ int hom_recv_data(uint32 account_id, struct s_homunculus *sh, int flag) return 0; } - if (!sd->status.hom_id) //Hom just created. + if (!sd->status.hom_id) { //Hom just created. sd->status.hom_id = sh->hom_id; + created = true; + } if (sd->hd) //uh? Overwrite the data. memcpy(&sd->hd->homunculus, sh, sizeof(struct s_homunculus)); else hom_alloc(sd, sh); hd = sd->hd; + if (created) + status_percent_heal(&hd->bl, 100, 100); + if(hd && hd->homunculus.hp && !hd->homunculus.vaporize && hd->bl.prev == NULL && sd->bl.prev != NULL) { if(map_addblock(&hd->bl)) diff --git a/src/map/homunculus.hpp b/src/map/homunculus.hpp index 44371dc0b3..5460a3d23c 100644 --- a/src/map/homunculus.hpp +++ b/src/map/homunculus.hpp @@ -4,7 +4,7 @@ #ifndef _HOMUNCULUS_HPP_ #define _HOMUNCULUS_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" #include "status.hpp" // struct status_data, struct status_change #include "unit.hpp" // struct unit_data diff --git a/src/map/instance.cpp b/src/map/instance.cpp index 3504f0cbbb..46731bc3f5 100644 --- a/src/map/instance.cpp +++ b/src/map/instance.cpp @@ -5,15 +5,15 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/socket.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/ers.h" // ers_destroy +#include "../common/cbasetypes.hpp" +#include "../common/socket.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/ers.hpp" // ers_destroy #include "clan.hpp" #include "clif.hpp" diff --git a/src/map/instance.hpp b/src/map/instance.hpp index f9d65a4f23..8c47f7c40d 100644 --- a/src/map/instance.hpp +++ b/src/map/instance.hpp @@ -4,9 +4,9 @@ #ifndef _INSTANCE_HPP_ #define _INSTANCE_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" // struct point -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" // struct point +#include "../common/strlib.hpp" #include "script.hpp" // struct reg_db diff --git a/src/map/intif.cpp b/src/map/intif.cpp index 4da47d8a67..e588ac7143 100644 --- a/src/map/intif.cpp +++ b/src/map/intif.cpp @@ -5,13 +5,13 @@ #include <stdlib.h> -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/strlib.h" -#include "../common/mmo.h" -#include "../common/timer.h" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/strlib.hpp" +#include "../common/mmo.hpp" +#include "../common/timer.hpp" #include "map.hpp" #include "battle.hpp" @@ -2309,11 +2309,12 @@ int intif_parse_Mail_inboxreceived(int fd) memcpy(&sd->mail.inbox, RFIFOP(fd,10), sizeof(struct mail_data)); sd->mail.changed = false; // cache is now in sync - if (flag){ #if PACKETVER >= 20150513 - // Refresh top right icon - clif_Mail_new(sd, 0, NULL, NULL); + // Refresh top right icon + clif_Mail_new(sd, 0, NULL, NULL); #endif + + if (flag){ clif_Mail_refreshinbox(sd,static_cast<mail_inbox_type>(RFIFOB(fd,9)),0); }else if( battle_config.mail_show_status && ( battle_config.mail_show_status == 1 || sd->mail.inbox.unread ) ) { @@ -3221,12 +3222,12 @@ int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned sh // Should not be here! if (type == ITEMOBTAIN_TYPE_NPC) { - intif_broadcast_obtain_special_item_npc(sd, nameid, NULL /*wisp_server_name*/); + intif_broadcast_obtain_special_item_npc(sd, nameid); return 0; } // Send local - clif_broadcast_obtain_special_item(sd->status.name, nameid, sourceid, (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type, NULL); + clif_broadcast_obtain_special_item(sd->status.name, nameid, sourceid, (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type); if (CheckForCharServer()) return 0; @@ -3255,11 +3256,11 @@ int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned sh * @param srcname Source name * @return **/ -int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid, const char *srcname) { +int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid) { nullpo_retr(0, sd); // Send local - clif_broadcast_obtain_special_item(sd->status.name, nameid, 0, ITEMOBTAIN_TYPE_NPC, srcname); + clif_broadcast_obtain_special_item(sd->status.name, nameid, 0, ITEMOBTAIN_TYPE_NPC); if (CheckForCharServer()) return 0; @@ -3274,7 +3275,6 @@ int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigne WFIFOW(inter_fd, 6) = 0; WFIFOB(inter_fd, 8) = ITEMOBTAIN_TYPE_NPC; safestrncpy(WFIFOCP(inter_fd, 9), sd->status.name, NAME_LENGTH); - safestrncpy(WFIFOCP(inter_fd, 9 + NAME_LENGTH), srcname, NAME_LENGTH); WFIFOSET(inter_fd, WFIFOW(inter_fd, 2)); return 1; @@ -3287,13 +3287,13 @@ int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigne **/ void intif_parse_broadcast_obtain_special_item(int fd) { int type = RFIFOB(fd, 8); - char name[NAME_LENGTH], srcname[NAME_LENGTH]; + char name[NAME_LENGTH]; safestrncpy(name, RFIFOCP(fd, 9), NAME_LENGTH); if (type == ITEMOBTAIN_TYPE_NPC) safestrncpy(name, RFIFOCP(fd, 9 + NAME_LENGTH), NAME_LENGTH); - clif_broadcast_obtain_special_item(name, RFIFOW(fd, 4), RFIFOW(fd, 6), (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type, srcname); + clif_broadcast_obtain_special_item(name, RFIFOW(fd, 4), RFIFOW(fd, 6), (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type); } /*========================================== diff --git a/src/map/intif.hpp b/src/map/intif.hpp index ab1e4c8c41..2222afdf84 100644 --- a/src/map/intif.hpp +++ b/src/map/intif.hpp @@ -4,8 +4,8 @@ #ifndef _INTIF_HPP_ #define _INTIF_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" struct party_member; struct guild_member; @@ -24,7 +24,7 @@ int intif_parse(int fd); int intif_broadcast(const char* mes, int len, int type); int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY); int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned short nameid, unsigned int sourceid, unsigned char type); -int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid, const char *srcname); +int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid); int intif_main_message(struct map_session_data* sd, const char* message); int intif_wis_message(struct map_session_data *sd,char *nick,char *mes,int mes_len); diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index 6513ce1e62..898513da34 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -5,12 +5,12 @@ #include <stdlib.h> -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "battle.hpp" // struct battle_config #include "cashshop.hpp" @@ -633,6 +633,11 @@ static bool itemdb_read_group(char* str[], int columns, int current) { } } + if( columns < 3 ){ + ShowError("itemdb_read_group: Insufficient columns (found %d, need at least 3).\n", columns); + return false; + } + // Checking sub group prob = atoi(str[2]); @@ -1419,6 +1424,12 @@ static int itemdb_readdb(void){ continue; memset(str, 0, sizeof(str)); + p = strstr(line,"//"); + + if( p != nullptr ){ + *p = '\0'; + } + p = line; while( ISSPACE(*p) ) ++p; @@ -1446,14 +1457,14 @@ static int itemdb_readdb(void){ ShowError("itemdb_readdb: Invalid format (Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } - str[19] = p; + str[19] = p + 1; p = strstr(p+1,"},"); if( p == NULL ) { ShowError("itemdb_readdb: Invalid format (Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } - p[1] = '\0'; + *p = '\0'; p += 2; // OnEquip_Script @@ -1462,14 +1473,14 @@ static int itemdb_readdb(void){ ShowError("itemdb_readdb: Invalid format (OnEquip_Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } - str[20] = p; + str[20] = p + 1; p = strstr(p+1,"},"); if( p == NULL ) { ShowError("itemdb_readdb: Invalid format (OnEquip_Script column) in line %d of \"%s\" (item with id %d), skipping.\n", lines, path, atoi(str[0])); continue; } - p[1] = '\0'; + *p = '\0'; p += 2; // OnUnequip_Script (last column) @@ -1479,16 +1490,19 @@ static int itemdb_readdb(void){ continue; } str[21] = p; + p = &str[21][strlen(str[21]) - 2]; - if ( str[21][strlen(str[21])-2] != '}' ) { + if ( *p != '}' ) { /* lets count to ensure it's not something silly e.g. a extra space at line ending */ int v, lcurly = 0, rcurly = 0; for( v = 0; v < strlen(str[21]); v++ ) { if( str[21][v] == '{' ) lcurly++; - else if ( str[21][v] == '}' ) + else if (str[21][v] == '}') { rcurly++; + p = &str[21][v]; + } } if( lcurly != rcurly ) { @@ -1496,8 +1510,10 @@ static int itemdb_readdb(void){ continue; } } + str[21] = str[21] + 1; //skip the first left curly + *p = '\0'; //null the last right curly - if (!itemdb_parse_dbrow(str, path, lines, 0)) + if (!itemdb_parse_dbrow(str, path, lines, SCRIPT_IGNORE_EXTERNAL_BRACKETS)) continue; count++; diff --git a/src/map/itemdb.hpp b/src/map/itemdb.hpp index 27e2f0a3e9..0fea7b2e05 100644 --- a/src/map/itemdb.hpp +++ b/src/map/itemdb.hpp @@ -4,8 +4,8 @@ #ifndef _ITEMDB_HPP_ #define _ITEMDB_HPP_ -#include "../common/db.h" -#include "../common/mmo.h" // ITEM_NAME_LENGTH +#include "../common/db.hpp" +#include "../common/mmo.hpp" // ITEM_NAME_LENGTH ///Maximum allowed Item ID (range: 1 ~ 65,534) #define MAX_ITEMID USHRT_MAX @@ -731,6 +731,7 @@ enum e_random_item_group { IG_CHRISTMAS_BOX, IG_SPECIAL_CHRISTMAS_BOX, IG_SANTA_GIFT, + IG_PRIZEOFHERO, }; /// Enum for bound/sell restricted selling diff --git a/src/map/log.cpp b/src/map/log.cpp index fbf01b9851..cd7453f6a2 100644 --- a/src/map/log.cpp +++ b/src/map/log.cpp @@ -5,11 +5,11 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/sql.h" // SQL_INNODB -#include "../common/strlib.h" -#include "../common/nullpo.h" -#include "../common/showmsg.h" +#include "../common/cbasetypes.hpp" +#include "../common/sql.hpp" // SQL_INNODB +#include "../common/strlib.hpp" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" #include "map.hpp" #include "battle.hpp" @@ -170,12 +170,6 @@ void log_branch(struct map_session_data* sd) return; if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`branch_date`, `account_id`, `char_id`, `char_name`, `map`) VALUES (NOW(), '%d', '%d', '%s', '%s')", log_config.log_branch, sd->status.account_id, sd->status.char_id, sd->status.name, mapindex_id2name(sd->mapindex)); - queryThread_log(entry,e_length); -#else SqlStmt* stmt; stmt = SqlStmt_Malloc(logmysql_handle); if( SQL_SUCCESS != SqlStmt_Prepare(stmt, LOG_QUERY " INTO `%s` (`branch_date`, `account_id`, `char_id`, `char_name`, `map`) VALUES (NOW(), '%d', '%d', ?, '%s')", log_config.log_branch, sd->status.account_id, sd->status.char_id, mapindex_id2name(sd->mapindex) ) @@ -187,7 +181,6 @@ void log_branch(struct map_session_data* sd) return; } SqlStmt_Free(stmt); -#endif } else { @@ -218,20 +211,12 @@ void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* it if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `unique_id`, `bound`) VALUES (NOW(), '%d', '%c', '%hu', '%d', '%d', '%hu', '%hu', '%hu', '%hu', '%s', '%" PRIu64 "', '%d')", - log_config.log_pick, id, log_picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3], map[m].name?map[m].name:"", itm->unique_id, itm->bound); - queryThread_log(entry,e_length); -#else if( SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, `map`, `unique_id`, `bound`) VALUES (NOW(), '%d', '%c', '%hu', '%d', '%d', '%hu', '%hu', '%hu', '%hu', '%s', '%" PRIu64 "', '%d')", log_config.log_pick, id, log_picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3], map[m].name?map[m].name:"", itm->unique_id, itm->bound) ) { Sql_ShowDebug(logmysql_handle); return; } -#endif } else { @@ -273,20 +258,12 @@ void log_zeny(struct map_session_data* sd, e_log_pick_type type, struct map_sess if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`time`, `char_id`, `src_id`, `type`, `amount`, `map`) VALUES (NOW(), '%d', '%d', '%c', '%d', '%s')", - log_config.log_zeny, sd->status.char_id, src_sd->status.char_id, log_picktype2char(type), amount, mapindex_id2name(sd->mapindex)); - queryThread_log(entry,e_length); -#else if( SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `src_id`, `type`, `amount`, `map`) VALUES (NOW(), '%d', '%d', '%c', '%d', '%s')", log_config.log_zeny, sd->status.char_id, src_sd->status.char_id, log_picktype2char(type), amount, mapindex_id2name(sd->mapindex)) ) { Sql_ShowDebug(logmysql_handle); return; } -#endif } else { @@ -314,20 +291,12 @@ void log_mvpdrop(struct map_session_data* sd, int monster_id, unsigned int* log_ if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%hu', '%u', '%s') ", - log_config.log_mvpdrop, sd->status.char_id, monster_id, (unsigned short)log_mvp[0], log_mvp[1], mapindex_id2name(sd->mapindex)); - queryThread_log(entry,e_length); -#else if( SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%hu', '%u', '%s') ", log_config.log_mvpdrop, sd->status.char_id, monster_id, (unsigned short)log_mvp[0], log_mvp[1], mapindex_id2name(sd->mapindex)) ) { Sql_ShowDebug(logmysql_handle); return; } -#endif } else { @@ -356,12 +325,6 @@ void log_atcommand(struct map_session_data* sd, const char* message) if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES (NOW(), '%d', '%d', '%s', '%s', '%s')", log_config.log_gm, sd->status.account_id, sd->status.char_id, sd->status.name ,mapindex_id2name(sd->mapindex), message); - queryThread_log(entry,e_length); -#else SqlStmt* stmt; stmt = SqlStmt_Malloc(logmysql_handle); @@ -375,7 +338,6 @@ void log_atcommand(struct map_session_data* sd, const char* message) return; } SqlStmt_Free(stmt); -#endif } else { @@ -403,12 +365,6 @@ void log_npc(struct map_session_data* sd, const char* message) if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`npc_date`, `account_id`, `char_id`, `char_name`, `map`, `mes`) VALUES (NOW(), '%d', '%d', '%s', '%s', '%s')", log_config.log_npc, sd->status.account_id, sd->status.char_id, sd->status.name, mapindex_id2name(sd->mapindex), message ); - queryThread_log(entry,e_length); -#else SqlStmt* stmt; stmt = SqlStmt_Malloc(logmysql_handle); if( SQL_SUCCESS != SqlStmt_Prepare(stmt, LOG_QUERY " INTO `%s` (`npc_date`, `account_id`, `char_id`, `char_name`, `map`, `mes`) VALUES (NOW(), '%d', '%d', ?, '%s', ?)", log_config.log_npc, sd->status.account_id, sd->status.char_id, mapindex_id2name(sd->mapindex) ) @@ -421,7 +377,6 @@ void log_npc(struct map_session_data* sd, const char* message) return; } SqlStmt_Free(stmt); -#endif } else { @@ -453,12 +408,6 @@ void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, } if( log_config.sql_logs ) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`time`, `type`, `type_id`, `src_charid`, `src_accountid`, `src_map`, `src_map_x`, `src_map_y`, `dst_charname`, `message`) VALUES (NOW(), '%c', '%d', '%d', '%d', '%s', '%d', '%d', '%s', '%s')", log_config.log_chat, log_chattype2char(type), type_id, src_charid, src_accid, mapname, x, y, dst_charname, message ); - queryThread_log(entry,e_length); -#else SqlStmt* stmt; stmt = SqlStmt_Malloc(logmysql_handle); @@ -472,7 +421,6 @@ void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, return; } SqlStmt_Free(stmt); -#endif } else { @@ -497,20 +445,12 @@ void log_cash( struct map_session_data* sd, e_log_pick_type type, e_log_cash_typ return; if( log_config.sql_logs ){ -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf( entry, LOG_QUERY " INTO `%s` ( `time`, `char_id`, `type`, `cash_type`, `amount`, `map` ) VALUES ( NOW(), '%d', '%c', '%c', '%d', '%s' )", - log_config.log_cash, sd->status.char_id, log_picktype2char( type ), log_cashtype2char( cash_type ), amount, mapindex_id2name( sd->mapindex ) ); - queryThread_log( entry, e_length ); -#else if( SQL_ERROR == Sql_Query( logmysql_handle, LOG_QUERY " INTO `%s` ( `time`, `char_id`, `type`, `cash_type`, `amount`, `map` ) VALUES ( NOW(), '%d', '%c', '%c', '%d', '%s' )", log_config.log_cash, sd->status.char_id, log_picktype2char( type ), log_cashtype2char( cash_type ), amount, mapindex_id2name( sd->mapindex ) ) ) { Sql_ShowDebug( logmysql_handle ); return; } -#endif }else{ char timestring[255]; time_t curtime; @@ -558,20 +498,12 @@ void log_feeding(struct map_session_data *sd, e_log_feeding_type type, unsigned } if (log_config.sql_logs) { -#ifdef BETA_THREAD_TEST - char entry[512]; - int e_length = 0; - e_length = sprintf(entry, LOG_QUERY " INTO `%s` (`time`, `char_id`, `target_id`, `target_class`, `type`, `intimacy`, `item_id`, `map`, `x`, `y`) VALUES ( NOW(), '%" PRIu32 "', '%" PRIu32 "', '%hu', '%c', '%" PRIu32 "', '%hu', '%s', '%hu', '%hu' )", - log_config.log_feeding, sd->status.char_id, target_id, target_class, log_feedingtype2char(type), intimacy, nameid, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); - queryThread_log(entry, e_length); -#else if (SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `target_id`, `target_class`, `type`, `intimacy`, `item_id`, `map`, `x`, `y`) VALUES ( NOW(), '%" PRIu32 "', '%" PRIu32 "', '%hu', '%c', '%" PRIu32 "', '%hu', '%s', '%hu', '%hu' )", log_config.log_feeding, sd->status.char_id, target_id, target_class, log_feedingtype2char(type), intimacy, nameid, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y)) { Sql_ShowDebug(logmysql_handle); return; } -#endif } else { char timestring[255]; time_t curtime; diff --git a/src/map/log.hpp b/src/map/log.hpp index a0b80accad..6dc3114974 100644 --- a/src/map/log.hpp +++ b/src/map/log.hpp @@ -4,7 +4,7 @@ #ifndef _LOG_HPP_ #define _LOG_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct block_list; struct map_session_data; @@ -97,11 +97,4 @@ extern struct Log_Config char log_feeding[64]; } log_config; -#ifdef BETA_THREAD_TEST - struct { - char** entry; - int count; - } logThreadData; -#endif - #endif /* _LOG_HPP_ */ diff --git a/src/map/mail.cpp b/src/map/mail.cpp index ee9c9635f3..3a028b8580 100644 --- a/src/map/mail.cpp +++ b/src/map/mail.cpp @@ -3,10 +3,10 @@ #include "mail.hpp" -#include "../common/nullpo.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/timer.h" +#include "../common/nullpo.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" #include "atcommand.hpp" #include "itemdb.hpp" diff --git a/src/map/mail.hpp b/src/map/mail.hpp index 99594b0c13..25796113e0 100644 --- a/src/map/mail.hpp +++ b/src/map/mail.hpp @@ -4,7 +4,7 @@ #ifndef _MAIL_HPP_ #define _MAIL_HPP_ -#include "../common/mmo.h" +#include "../common/mmo.hpp" enum mail_attach_result { MAIL_ATTACH_SUCCESS = 0, diff --git a/src/map/map-server.vcxproj b/src/map/map-server.vcxproj index 107b105b1f..4c634905d9 100644 --- a/src/map/map-server.vcxproj +++ b/src/map/map-server.vcxproj @@ -100,7 +100,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> @@ -117,7 +117,7 @@ <Link> <SubSystem>Console</SubSystem> <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> @@ -138,7 +138,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> @@ -159,7 +159,7 @@ <GenerateDebugInformation>true</GenerateDebugInformation> <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> </ItemDefinitionGroup> <ItemGroup> diff --git a/src/map/map.cpp b/src/map/map.cpp index 8b70459939..cf30daffca 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -6,19 +6,19 @@ #include <stdlib.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/core.h" -#include "../common/timer.h" -#include "../common/grfio.h" -#include "../common/malloc.h" -#include "../common/socket.h" // WFIFO*() -#include "../common/showmsg.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/cli.h" -#include "../common/ers.h" +#include "../common/cbasetypes.hpp" +#include "../common/core.hpp" +#include "../common/timer.hpp" +#include "../common/grfio.hpp" +#include "../common/malloc.hpp" +#include "../common/socket.hpp" // WFIFO*() +#include "../common/showmsg.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/cli.hpp" +#include "../common/ers.hpp" #include "path.hpp" #include "chrif.hpp" @@ -2052,6 +2052,14 @@ int map_quit(struct map_session_data *sd) { status_change_end(&sd->bl, SC_P_ALTER, INVALID_TIMER); status_change_end(&sd->bl, SC_E_CHAIN, INVALID_TIMER); status_change_end(&sd->bl, SC_SIGHTBLASTER, INVALID_TIMER); + status_change_end(&sd->bl, SC_BENEDICTIO, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_ATK, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_DEF, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_HEAL, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_HIDDEN, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_STATE, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_ITEMDEF, INVALID_TIMER); + status_change_end(&sd->bl, SC_GLASTHEIM_HPSP, INVALID_TIMER); } } @@ -3237,13 +3245,13 @@ void map_iwall_get(struct map_session_data *sd) { dbi_destroy(iter); } -void map_iwall_remove(const char *wall_name) +bool map_iwall_remove(const char *wall_name) { struct iwall_data *iwall; int16 i, x1, y1; if( (iwall = (struct iwall_data *)strdb_get(iwall_db, wall_name)) == NULL ) - return; // Nothing to do + return false; // Nothing to do for( i = 0; i < iwall->size; i++ ) { map_iwall_nextxy(iwall->x, iwall->y, iwall->dir, i, &x1, &y1); @@ -3256,6 +3264,7 @@ void map_iwall_remove(const char *wall_name) map[iwall->m].iwall_num--; strdb_remove(iwall_db, iwall->wall_name); + return true; } /** @@ -4097,20 +4106,19 @@ int map_sql_close(void) Sql_Free(qsmysql_handle); mmysql_handle = NULL; qsmysql_handle = NULL; -#ifndef BETA_THREAD_TEST + if (log_config.sql_logs) { ShowStatus("Close Log DB Connection....\n"); Sql_Free(logmysql_handle); logmysql_handle = NULL; } -#endif + return 0; } int log_sql_init(void) { -#ifndef BETA_THREAD_TEST // log db connection logmysql_handle = Sql_Malloc(); @@ -4127,7 +4135,7 @@ int log_sql_init(void) if( strlen(default_codepage) > 0 ) if ( SQL_ERROR == Sql_SetEncoding(logmysql_handle, default_codepage) ) Sql_ShowDebug(logmysql_handle); -#endif + return 0; } diff --git a/src/map/map.hpp b/src/map/map.hpp index 8aad2c7909..cfb6b8b996 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -6,26 +6,14 @@ #include <stdarg.h> -#include "../common/cbasetypes.h" -#include "../common/core.h" // CORE_ST_LAST -#include "../common/mmo.h" -#include "../common/mapindex.h" -#include "../common/db.h" -#include "../common/msg_conf.h" +#include "../common/cbasetypes.hpp" +#include "../common/core.hpp" // CORE_ST_LAST +#include "../common/mmo.hpp" +#include "../common/mapindex.hpp" +#include "../common/db.hpp" +#include "../common/msg_conf.hpp" -#include "../config/core.h" - -extern "C" { - //Options read in cli (c-linkage for now) - extern const char*INTER_CONF_NAME; - extern const char*LOG_CONF_NAME; - extern const char*MAP_CONF_NAME; - extern const char*BATTLE_CONF_FILENAME; - extern const char*ATCOMMAND_CONF_FILENAME; - extern const char*SCRIPT_CONF_NAME; - extern const char*MSG_CONF_NAME_EN; - extern const char*GRF_PATH_FILENAME; -} +#include "../config/core.hpp" struct npc_data; struct item_data; @@ -184,6 +172,7 @@ enum e_mapid { MAPID_ARCH_BISHOP, MAPID_MECHANIC, MAPID_GUILLOTINE_CROSS, + MAPID_STAR_EMPEROR, //3-2 Jobs MAPID_ROYAL_GUARD = JOBL_THIRD|MAPID_CRUSADER, MAPID_SORCERER, @@ -191,6 +180,7 @@ enum e_mapid { MAPID_SURA, MAPID_GENETIC, MAPID_SHADOW_CHASER, + MAPID_SOUL_REAPER, //Trans 3-1 Jobs MAPID_RUNE_KNIGHT_T = JOBL_THIRD|MAPID_LORD_KNIGHT, MAPID_WARLOCK_T, @@ -213,6 +203,7 @@ enum e_mapid { MAPID_BABY_BISHOP, MAPID_BABY_MECHANIC, MAPID_BABY_CROSS, + MAPID_BABY_STAR_EMPEROR, //Baby 3-2 Jobs MAPID_BABY_GUARD = JOBL_THIRD|MAPID_BABY_CRUSADER, MAPID_BABY_SORCERER, @@ -220,6 +211,7 @@ enum e_mapid { MAPID_BABY_SURA, MAPID_BABY_GENETIC, MAPID_BABY_CHASER, + MAPID_BABY_SOUL_REAPER, }; //Max size for inputs to Graffiti, Talkie Box and Vending text prompts @@ -325,6 +317,8 @@ enum e_race2 : uint8{ RC2_MANUK, RC2_SPLENDIDE, RC2_SCARABA, + RC2_OGH_ATK_DEF, + RC2_OGH_HIDDEN, RC2_MAX }; @@ -495,7 +489,7 @@ enum _sp { SP_HP_VANISH_RACE_RATE, SP_SP_VANISH_RACE_RATE, SP_ABSORB_DMG_MAXHP, SP_SUB_SKILL, SP_SUBDEF_ELE, // 2074-2078 SP_STATE_NORECOVER_RACE, SP_CRITICAL_RANGEATK, SP_MAGIC_ADDRACE2, SP_IGNORE_MDEF_RACE2_RATE, // 2079-2082 SP_WEAPON_ATK_RATE, SP_WEAPON_MATK_RATE, SP_DROP_ADDRACE, SP_DROP_ADDCLASS, SP_NO_MADO_FUEL, // 2083-2087 - SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, //2088-2091 + SP_IGNORE_DEF_CLASS_RATE, SP_REGEN_PERCENT_HP, SP_REGEN_PERCENT_SP, SP_SKILL_DELAY //2088-2092 }; enum _look { @@ -919,7 +913,7 @@ void map_flags_init(void); bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name); void map_iwall_get(struct map_session_data *sd); -void map_iwall_remove(const char *wall_name); +bool map_iwall_remove(const char *wall_name); int map_addmobtolist(unsigned short m, struct spawn_data *spawn); // [Wizputer] void map_spawnmobs(int16 m); // [Wizputer] @@ -964,25 +958,7 @@ typedef struct elemental_data TBL_ELEM; #define BL_CAST(type_, bl) \ ( ((bl) == (struct block_list*)NULL || (bl)->type != (type_)) ? (T ## type_ *)NULL : (T ## type_ *)(bl) ) - -#ifdef BETA_THREAD_TEST - -extern char default_codepage[32]; -extern int map_server_port; -extern char map_server_ip[32]; -extern char map_server_id[32]; -extern char map_server_pw[32]; -extern char map_server_db[32]; - -extern char log_db_ip[32]; -extern int log_db_port; -extern char log_db_id[32]; -extern char log_db_pw[32]; -extern char log_db_db[32]; - -#endif - -#include "../common/sql.h" +#include "../common/sql.hpp" extern int db_use_sqldbs; diff --git a/src/map/mapreg.cpp b/src/map/mapreg.cpp index 77facc29f1..94ddf2b15e 100644 --- a/src/map/mapreg.cpp +++ b/src/map/mapreg.cpp @@ -5,14 +5,14 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/db.h" -#include "../common/ers.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/sql.h" -#include "../common/strlib.h" -#include "../common/timer.h" +#include "../common/cbasetypes.hpp" +#include "../common/db.hpp" +#include "../common/ers.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/sql.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" #include "map.hpp" // mmysql_handle #include "script.hpp" diff --git a/src/map/mapreg.hpp b/src/map/mapreg.hpp index 48b101fb8d..8b757e5a78 100644 --- a/src/map/mapreg.hpp +++ b/src/map/mapreg.hpp @@ -4,8 +4,8 @@ #ifndef _MAPREG_HPP_ #define _MAPREG_HPP_ -#include "../common/cbasetypes.h" -#include "../common/db.h" +#include "../common/cbasetypes.hpp" +#include "../common/db.hpp" struct mapreg_save { int64 uid; ///< Unique ID diff --git a/src/map/mercenary.cpp b/src/map/mercenary.cpp index cd6b8fc139..b31a8a4b9f 100644 --- a/src/map/mercenary.cpp +++ b/src/map/mercenary.cpp @@ -4,17 +4,20 @@ #include "mercenary.hpp" #include <stdlib.h> +#include <map> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/mmo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" +#include "../common/utilities.hpp" + +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/mmo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" #include "log.hpp" #include "clif.hpp" @@ -25,27 +28,17 @@ #include "trade.hpp" #include "npc.hpp" -struct s_mercenary_db mercenary_db[MAX_MERCENARY_CLASS]; // Mercenary Database -static uint16 mercenary_count; +using namespace rathena; + +std::map<uint16, struct s_mercenary_db> mercenary_db_data; /** -* Search Mercenary by class -* @param class_ Class ID of Mercenary -* @return The index of mercenary on mercenary_db, or -1 if not found -**/ -static int16 mercenary_search_index(int class_) { - int16 i; - ARR_FIND(0, mercenary_count, i, mercenary_db[i].class_ == class_); - return (i == mercenary_count)?-1:i; -} - -/** -* Check if the Class ID is a Mercenary -* @param class_ The Class ID -* @return true if Class ID is a Mercenary, false otherwise -**/ -bool mercenary_class(int class_){ - return (bool)(mercenary_search_index(class_) > -1); + * Search Mercenary by class + * @param class_ Class ID of Mercenary + * @return A pointer to the mercenary db entry or nullptr if not found + **/ +struct s_mercenary_db *mercenary_db( uint16 class_ ){ + return util::map_find( mercenary_db_data, class_ ); } /** @@ -53,12 +46,14 @@ bool mercenary_class(int class_){ * @param class_ The Class ID * @return View Data of Mercenary **/ -struct view_data * mercenary_get_viewdata(int class_){ - int i = mercenary_search_index(class_); - if( i < 0 ) - return 0; +struct view_data *mercenary_get_viewdata( uint16 class_ ){ + struct s_mercenary_db *db = mercenary_db(class_); - return &mercenary_db[i].vd; + if( db ){ + return &db->vd; + }else{ + return nullptr; + } } /** @@ -82,16 +77,17 @@ short mercenary_skill_get_index(uint16 skill_id) { * @param lifetime Contract duration * @return false if failed, true otherwise **/ -bool mercenary_create(struct map_session_data *sd, int class_, unsigned int lifetime) { +bool mercenary_create(struct map_session_data *sd, uint16 class_, unsigned int lifetime) { struct s_mercenary merc; struct s_mercenary_db *db; - int16 i; nullpo_retr(false,sd); - if( (i = mercenary_search_index(class_)) < 0 ) - return false; + db = mercenary_db(class_); + + if( !db ){ + return false; + } - db = &mercenary_db[i]; memset(&merc,0,sizeof(struct s_mercenary)); merc.char_id = sd->status.char_id; @@ -123,24 +119,24 @@ int mercenary_get_lifetime(struct mercenary_data *md) { /** * Get Guild type of Mercenary * @param md Mercenary -* @return -1 if not found, 0 - ARCH_MERC_GUILD, 1 - SPEAR_MERC_GUILD, or 2 - SWORD_MERC_GUILD +* @return enum e_MercGuildType **/ -int mercenary_get_guild(struct mercenary_data *md){ +enum e_MercGuildType mercenary_get_guild(struct mercenary_data *md){ uint16 class_; if( md == NULL || md->db == NULL ) - return -1; + return NONE_MERC_GUILD; class_ = md->db->class_; - if( class_ >= 6017 && class_ <= 6026 ) + if( class_ >= MERID_MER_ARCHER01 && class_ <= MERID_MER_ARCHER10 ) return ARCH_MERC_GUILD; - if( class_ >= 6027 && class_ <= 6036 ) + if( class_ >= MERID_MER_LANCER01 && class_ <= MERID_MER_LANCER10 ) return SPEAR_MERC_GUILD; - if( class_ >= 6037 && class_ <= 6046 ) + if( class_ >= MERID_MER_SWORDMAN01 && class_ <= MERID_MER_SWORDMAN10 ) return SWORD_MERC_GUILD; - return -1; + return NONE_MERC_GUILD; } /** @@ -150,21 +146,24 @@ int mercenary_get_guild(struct mercenary_data *md){ **/ int mercenary_get_faith(struct mercenary_data *md) { struct map_session_data *sd; - uint16 class_; + enum e_MercGuildType guild; if( md == NULL || md->db == NULL || (sd = md->master) == NULL ) return 0; - class_ = md->db->class_; + guild = mercenary_get_guild(md); - if( class_ >= 6017 && class_ <= 6026 ) - return sd->status.arch_faith; - if( class_ >= 6027 && class_ <= 6036 ) - return sd->status.spear_faith; - if( class_ >= 6037 && class_ <= 6046 ) - return sd->status.sword_faith; - - return 0; + switch( guild ){ + case ARCH_MERC_GUILD: + return sd->status.arch_faith; + case SPEAR_MERC_GUILD: + return sd->status.spear_faith; + case SWORD_MERC_GUILD: + return sd->status.sword_faith; + case NONE_MERC_GUILD: + default: + return 0; + } } /** @@ -174,22 +173,27 @@ int mercenary_get_faith(struct mercenary_data *md) { **/ void mercenary_set_faith(struct mercenary_data *md, int value) { struct map_session_data *sd; - uint16 class_; + enum e_MercGuildType guild; int *faith; if( md == NULL || md->db == NULL || (sd = md->master) == NULL ) return; - class_ = md->db->class_; + guild = mercenary_get_guild(md); - if( class_ >= 6017 && class_ <= 6026 ) - faith = &sd->status.arch_faith; - else if( class_ >= 6027 && class_ <= 6036 ) - faith = &sd->status.spear_faith; - else if( class_ >= 6037 && class_ <= 6046 ) - faith = &sd->status.sword_faith; - else - return; + switch( guild ){ + case ARCH_MERC_GUILD: + faith = &sd->status.arch_faith; + break; + case SPEAR_MERC_GUILD: + faith = &sd->status.spear_faith; + break; + case SWORD_MERC_GUILD: + faith = &sd->status.sword_faith; + break; + case NONE_MERC_GUILD: + return; + } *faith += value; *faith = cap_value(*faith, 0, SHRT_MAX); @@ -203,21 +207,24 @@ void mercenary_set_faith(struct mercenary_data *md, int value) { **/ int mercenary_get_calls(struct mercenary_data *md) { struct map_session_data *sd; - uint16 class_; + enum e_MercGuildType guild; if( md == NULL || md->db == NULL || (sd = md->master) == NULL ) return 0; - class_ = md->db->class_; + guild = mercenary_get_guild(md); - if( class_ >= 6017 && class_ <= 6026 ) - return sd->status.arch_calls; - if( class_ >= 6027 && class_ <= 6036 ) - return sd->status.spear_calls; - if( class_ >= 6037 && class_ <= 6046 ) - return sd->status.sword_calls; - - return 0; + switch( guild ){ + case ARCH_MERC_GUILD: + return sd->status.arch_calls; + case SPEAR_MERC_GUILD: + return sd->status.spear_calls; + case SWORD_MERC_GUILD: + return sd->status.sword_calls; + case NONE_MERC_GUILD: + default: + return 0; + } } /** @@ -227,22 +234,27 @@ int mercenary_get_calls(struct mercenary_data *md) { **/ void mercenary_set_calls(struct mercenary_data *md, int value) { struct map_session_data *sd; - uint16 class_; + enum e_MercGuildType guild; int *calls; if( md == NULL || md->db == NULL || (sd = md->master) == NULL ) return; - class_ = md->db->class_; + guild = mercenary_get_guild(md); - if( class_ >= 6017 && class_ <= 6026 ) - calls = &sd->status.arch_calls; - else if( class_ >= 6027 && class_ <= 6036 ) - calls = &sd->status.spear_calls; - else if( class_ >= 6037 && class_ <= 6046 ) - calls = &sd->status.sword_calls; - else - return; + switch( guild ){ + case ARCH_MERC_GUILD: + calls = &sd->status.arch_calls; + break; + case SPEAR_MERC_GUILD: + calls = &sd->status.spear_calls; + break; + case SWORD_MERC_GUILD: + calls = &sd->status.sword_calls; + break; + case NONE_MERC_GUILD: + return; + } *calls += value; *calls = cap_value(*calls, 0, INT_MAX); @@ -347,16 +359,16 @@ bool mercenary_recv_data(struct s_mercenary *merc, bool flag) struct map_session_data *sd; struct mercenary_data *md; struct s_mercenary_db *db; - int i = mercenary_search_index(merc->class_); + + db = mercenary_db(merc->class_); if( (sd = map_charid2sd(merc->char_id)) == NULL ) return false; - if( !flag || i < 0 ) { // Not created - loaded - DB info + if( !flag || !db ){ // Not created - loaded - DB info sd->status.mer_id = 0; return false; } - db = &mercenary_db[i]; if( !sd->md ) { sd->md = md = (struct mercenary_data*)aCalloc(1,sizeof(struct mercenary_data)); md->bl.type = BL_MER; @@ -477,16 +489,11 @@ int mercenary_checkskill(struct mercenary_data *md, uint16 skill_id) { static bool mercenary_readdb_sub(char* str[], int columns, int current) { int ele; - uint16 i, class_ = atoi(str[0]); + uint16 class_ = atoi(str[0]); struct s_mercenary_db *db; struct status_data *status; - //Find the ID, already exist or not in mercenary_db - ARR_FIND(0,mercenary_count,i,mercenary_db[i].class_ == class_); - if (i >= mercenary_count) - db = &mercenary_db[mercenary_count]; - else - db = &mercenary_db[i]; + db = &mercenary_db_data[class_]; db->class_ = class_; safestrncpy(db->sprite, str[1], NAME_LENGTH); @@ -534,8 +541,6 @@ static bool mercenary_readdb_sub(char* str[], int columns, int current) status->amotion = atoi(str[24]); status->dmotion = atoi(str[25]); - if (i >= mercenary_count) - mercenary_count++; return true; } @@ -546,10 +551,10 @@ void mercenary_readdb(void) { const char *filename[]={ "mercenary_db.txt",DBIMPORT"/mercenary_db.txt"}; uint8 i; - mercenary_count = 0; //Reset the counter - memset(mercenary_db,0,sizeof(mercenary_db)); + mercenary_db_data.clear(); + for(i = 0; i<ARRAYLENGTH(filename); i++){ - sv_readdb(db_path, filename[i], ',', 26, 26, MAX_MERCENARY_CLASS, &mercenary_readdb_sub, i > 0); + sv_readdb(db_path, filename[i], ',', 26, 26, -1, &mercenary_readdb_sub, i > 0); } } @@ -560,13 +565,11 @@ static bool mercenary_read_skilldb_sub(char* str[], int columns, int current) {// <merc id>,<skill id>,<skill level> struct s_mercenary_db *db; uint16 class_, skill_id, skill_lv; - uint8 i = 0; short idx = -1; class_ = atoi(str[0]); - ARR_FIND(0, MAX_MERCENARY_CLASS, i, class_ == mercenary_db[i].class_); - if( i == MAX_MERCENARY_CLASS ) - { + db = mercenary_db(class_); + if( !db ){ ShowError("read_mercenary_skilldb : Class %d not found in mercenary_db for skill entry.\n", class_); return false; } @@ -577,7 +580,6 @@ static bool mercenary_read_skilldb_sub(char* str[], int columns, int current) return false; } - db = &mercenary_db[i]; skill_lv = atoi(str[2]); db->skill[idx].id = skill_id; @@ -612,5 +614,5 @@ void do_init_mercenary(void){ * Do Final Mercenary datas **/ void do_final_mercenary(void){ - //Nothing to do yet + mercenary_db_data.clear(); } diff --git a/src/map/mercenary.hpp b/src/map/mercenary.hpp index 92c32dbd95..1b2139f73b 100644 --- a/src/map/mercenary.hpp +++ b/src/map/mercenary.hpp @@ -4,7 +4,7 @@ #ifndef _MERCENARY_HPP_ #define _MERCENARY_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" #include "status.hpp" // struct status_data, struct status_change #include "unit.hpp" // struct unit_data @@ -13,11 +13,21 @@ #define MAX_MER_DISTANCE 15 enum e_MercGuildType { + NONE_MERC_GUILD = -1, ARCH_MERC_GUILD, SPEAR_MERC_GUILD, SWORD_MERC_GUILD, }; +enum MERID { + MERID_MER_ARCHER01 = 6017, + MERID_MER_ARCHER10 = 6026, + MERID_MER_LANCER01, + MERID_MER_LANCER10 = 6036, + MERID_MER_SWORDMAN01, + MERID_MER_SWORDMAN10 = 6046 +}; + struct s_mercenary_db { int class_; char sprite[NAME_LENGTH], name[NAME_LENGTH]; @@ -30,8 +40,6 @@ struct s_mercenary_db { } skill[MAX_MERCSKILL]; }; -extern struct s_mercenary_db mercenary_db[MAX_MERCENARY_CLASS]; - struct mercenary_data { struct block_list bl; struct unit_data ud; @@ -51,10 +59,10 @@ struct mercenary_data { unsigned devotion_flag : 1; }; -bool mercenary_class(int class_); -struct view_data * mercenary_get_viewdata(int class_); +struct s_mercenary_db *mercenary_db(uint16 class_); +struct view_data * mercenary_get_viewdata(uint16 class_); -bool mercenary_create(struct map_session_data *sd, int class_, unsigned int lifetime); +bool mercenary_create(struct map_session_data *sd, uint16 class_, unsigned int lifetime); bool mercenary_recv_data(struct s_mercenary *merc, bool flag); void mercenary_save(struct mercenary_data *md); @@ -65,7 +73,7 @@ int mercenary_delete(struct mercenary_data *md, int reply); void mercenary_contract_stop(struct mercenary_data *md); int mercenary_get_lifetime(struct mercenary_data *md); -int mercenary_get_guild(struct mercenary_data *md); +enum e_MercGuildType mercenary_get_guild(struct mercenary_data *md); int mercenary_get_faith(struct mercenary_data *md); void mercenary_set_faith(struct mercenary_data *md, int value); int mercenary_get_calls(struct mercenary_data *md); diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 673770385d..beb38d3c47 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -7,17 +7,19 @@ #include <map> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/db.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/ers.h" -#include "../common/random.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/socket.h" +#include "../common/utilities.hpp" + +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/db.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/ers.hpp" +#include "../common/random.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/socket.hpp" #include "map.hpp" #include "path.hpp" @@ -40,6 +42,8 @@ #include <unordered_map> #include <algorithm> +using namespace rathena; + #define ACTIVE_AI_RANGE 2 //Distance added on top of 'AREA_SIZE' at which mobs enter active AI mode. #define IDLE_SKILL_INTERVAL 10 //Active idle skills should be triggered every 1 second (1000/MIN_MOBTHINKTIME) @@ -76,11 +80,7 @@ //Dynamic mob database std::map<uint16, struct mob_db> mob_db_data; struct mob_db *mob_db( int mob_id ){ - if( mob_db_data.find( mob_id ) != mob_db_data.end() ){ - return &mob_db_data.at(mob_id); - }else{ - return nullptr; - } + return util::map_find( mob_db_data, (uint16)mob_id ); } // holds Monster Spawn informations @@ -89,11 +89,7 @@ std::unordered_map<uint16, std::vector<spawn_info>> mob_spawn_data; //Dynamic mob chat database std::map<short,struct mob_chat> mob_chat_db; struct mob_chat *mob_chat(short id) { - if( mob_chat_db.find(id) != mob_chat_db.end() ){ - return &mob_chat_db.at(id); - }else{ - return nullptr; - } + return util::map_find( mob_chat_db, id ); } //Dynamic item drop ratio database for per-item drop ratio modifiers overriding global drop ratios. @@ -3043,8 +3039,12 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } - if(!md->spawn) //Tell status_damage to remove it from memory. - return 5; // Note: Actually, it's 4. Oh well... + if(!md->spawn){ //Tell status_damage to remove it from memory. + struct unit_data *ud = unit_bl2ud(&md->bl); + + // If the unit is currently in a walk script, it will be removed there + return ud->state.walk_script ? 3 : 5; // Note: Actually, it's 4. Oh well... + } // MvP tomb [GreenBox] if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map[md->bl.m].flag.notomb != 1) @@ -3390,7 +3390,7 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,uint16 skill_id) if (mobdb_checkid(data.id) == 0) continue; - if (map_search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) { + if (skill_id != NPC_DEATHSUMMON && map_search_freecell(&md2->bl, 0, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 0)) { data.x = x; data.y = y; } else { diff --git a/src/map/mob.hpp b/src/map/mob.hpp index adc107f958..bfa7950b0b 100644 --- a/src/map/mob.hpp +++ b/src/map/mob.hpp @@ -4,7 +4,7 @@ #ifndef _MOB_HPP_ #define _MOB_HPP_ -#include "../common/mmo.h" // struct item +#include "../common/mmo.hpp" // struct item #include "status.hpp" // struct status data, struct status_change #include "unit.hpp" // unit_stop_walking(), unit_stop_attack() @@ -44,6 +44,11 @@ struct guardian_data; enum MOBID { MOBID_PORING = 1002, MOBID_RED_PLANT = 1078, + MOBID_BLUE_PLANT, + MOBID_GREEN_PLANT, + MOBID_YELLOW_PLANT, + MOBID_WHITE_PLANT, + MOBID_SHINING_PLANT, MOBID_BLACK_MUSHROOM = 1084, MOBID_MARINE_SPHERE = 1142, MOBID_EMPERIUM = 1288, diff --git a/src/map/npc.cpp b/src/map/npc.cpp index ca9c2d7104..35181ee5b6 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -3,18 +3,21 @@ #include "npc.hpp" +#include <map> +#include <vector> + #include <stdlib.h> #include <errno.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/ers.h" -#include "../common/db.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" +#include "../common/db.hpp" #include "map.hpp" #include "log.hpp" @@ -108,12 +111,13 @@ static DBMap *npc_path_db; static struct view_data npc_viewdb[MAX_NPC_CLASS]; static struct view_data npc_viewdb2[MAX_NPC_CLASS2_END-MAX_NPC_CLASS2_START]; -static struct script_event_s -{ //Holds pointers to the commonly executed scripts for speedup. [Skotlex] - struct event_data *event[UCHAR_MAX]; - const char *event_name[EVENT_NAME_LENGTH]; - uint8 event_count; -} script_event[NPCE_MAX]; +struct script_event_s{ + struct event_data *event; + const char *event_name; +}; + +// Holds pointers to the commonly executed scripts for speedup. [Skotlex] +std::map<enum npce_event, std::vector<struct script_event_s>> script_event; struct view_data* npc_get_viewdata(int class_) { //Returns the viewdata for normal npc classes. @@ -263,7 +267,7 @@ struct npc_data* npc_name2id(const char* name) return (struct npc_data *) strdb_get(npcname_db, name); } /** - * For the Secure NPC Timeout option (check config/Secure.h) [RR] + * For the Secure NPC Timeout option (check src/config/secure.hpp) [RR] **/ #ifdef SECURE_NPCTIMEOUT /** @@ -3770,7 +3774,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c short m,x,y,xs = -1, ys = -1; char mapname[MAP_NAME_LENGTH_EXT], mobname[NAME_LENGTH]; struct spawn_data mob, *data; - int ai; // mob_ai + int ai = AI_NONE; // mob_ai memset(&mob, 0, sizeof(struct spawn_data)); @@ -4249,7 +4253,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con } } #else - ShowInfo("npc_parse_mapflag: skill_damage: ADJUST_SKILL_DAMAGE is inactive (core.h). Skipping this mapflag..\n"); + ShowInfo("npc_parse_mapflag: skill_damage: ADJUST_SKILL_DAMAGE is inactive (core.hpp). Skipping this mapflag..\n"); #endif } else @@ -4448,18 +4452,21 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) return 1; } -int npc_script_event(struct map_session_data* sd, enum npce_event type) -{ - int i; +int npc_script_event(struct map_session_data* sd, enum npce_event type){ if (type == NPCE_MAX) return 0; if (!sd) { ShowError("npc_script_event: NULL sd. Event Type %d\n", type); return 0; } - for (i = 0; i<script_event[type].event_count; i++) - npc_event_sub(sd,script_event[type].event[i],script_event[type].event_name[i]); - return i; + + std::vector<struct script_event_s>& vector = script_event[type]; + + for( struct script_event_s& evt : vector ){ + npc_event_sub( sd, evt.event, evt.event_name ); + } + + return vector.size(); } const char *npc_get_script_event_name(int npce_index) @@ -4493,6 +4500,8 @@ void npc_read_event_script(void) { int i; + script_event.clear(); + for (i = 0; i < NPCE_MAX; i++) { DBIterator* iter; @@ -4502,25 +4511,19 @@ void npc_read_event_script(void) safesnprintf(name,EVENT_NAME_LENGTH,"::%s", npc_get_script_event_name(i)); - script_event[i].event_count = 0; iter = db_iterator(ev_db); for( data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key) ) { const char* p = key.str; struct event_data* ed = (struct event_data*)db_data2ptr(data); - unsigned char count = script_event[i].event_count; - if( count >= ARRAYLENGTH(script_event[i].event) ) - { - ShowWarning("npc_read_event_script: too many occurences of event '%s'!\n", npc_get_script_event_name(i)); - break; - } + if( (p=strchr(p,':')) && strcmpi(name,p)==0 ){ + struct script_event_s evt; - if( (p=strchr(p,':')) && p && strcmpi(name,p)==0 ) - { - script_event[i].event[count] = ed; - script_event[i].event_name[count] = key.str; - script_event[i].event_count++; + evt.event = ed; + evt.event_name = key.str; + + script_event[static_cast<enum npce_event>(i)].push_back(evt); } } dbi_destroy(iter); @@ -4529,7 +4532,7 @@ void npc_read_event_script(void) if (battle_config.etc_log) { //Print summary. for (i = 0; i < NPCE_MAX; i++) - ShowInfo("%d '%s' events.\n", script_event[i].event_count, npc_get_script_event_name(i)); + ShowInfo("%d '%s' events.\n", script_event[static_cast<enum npce_event>(i)].size(), npc_get_script_event_name(i)); } } @@ -4686,6 +4689,7 @@ void do_clear_npc(void) { *------------------------------------------*/ void do_final_npc(void) { npc_clear_pathlist(); + script_event.clear(); ev_db->destroy(ev_db, NULL); npcname_db->destroy(npcname_db, NULL); npc_path_db->destroy(npc_path_db, NULL); @@ -4773,7 +4777,6 @@ void do_init_npc(void){ npc_id - START_NPC_NUM, npc_warp, npc_shop, npc_script, npc_mob, npc_cache_mob, npc_delay_mob); // set up the events cache - memset(script_event, 0, sizeof(script_event)); npc_read_event_script(); #if PACKETVER >= 20131223 diff --git a/src/map/npc.hpp b/src/map/npc.hpp index 9e92d5fa2a..8c748d925b 100644 --- a/src/map/npc.hpp +++ b/src/map/npc.hpp @@ -1082,11 +1082,20 @@ enum e_job_types JT_4_M_SNOWMAN_R, JT_4_M_SNOWMAN_G, JT_WARPEFFECTNPC, - - JT_4_F_DANGDANG = 10286, + JT_4_HEN, + JT_4_F_DANGDANG, JT_4_M_DANGDANG, JT_4_F_DANGDANG1, JT_4_LEAFCAT, + JT_4_NASARIAN, + JT_4_NASARIAN_EM, + JT_4_TEDDY_BEAR_W, + JT_4_TEDDY_BEAR_B, + JT_4_TEDDY_BEAR_B_L, + JT_4_M_SOULREAPER, + JT_4_F_SE_SUN, + JT_4_M_SE_MOON, + JT_4_M_SE_STAR, NPC_RANGE3_END, // Official: JT_NEW_NPC_3RD_END=19999 // Unofficial diff --git a/src/map/npc_chat.cpp b/src/map/npc_chat.cpp index 8d8e5d1302..6cafb6219b 100644 --- a/src/map/npc_chat.cpp +++ b/src/map/npc_chat.cpp @@ -7,10 +7,10 @@ #include "../../3rdparty/pcre/include/pcre.h" -#include "../common/timer.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" +#include "../common/timer.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" #include "mob.hpp" // struct mob_data #include "pc.hpp" // struct map_session_data diff --git a/src/map/party.cpp b/src/map/party.cpp index 406a9f8970..aa67d81e19 100644 --- a/src/map/party.cpp +++ b/src/map/party.cpp @@ -5,15 +5,15 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/socket.h" // last_tick -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/utils.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/socket.hpp" // last_tick +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/utils.hpp" +#include "../common/strlib.hpp" #include "atcommand.hpp" //msg_txt() #include "pc.hpp" @@ -246,6 +246,8 @@ static void party_check_state(struct party_data *p) break; case JOB_STAR_GLADIATOR: case JOB_BABY_STAR_GLADIATOR: + case JOB_STAR_EMPEROR: + case JOB_BABY_STAR_EMPEROR: p->state.sg = 1; break; case JOB_SUPER_NOVICE: @@ -964,6 +966,7 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id if(!party_id || (p = party_search(party_id)) == NULL) return 0; + party_check_state(p); switch(skill_id) { case TK_COUNTER: //Increase Triple Attack rate of Monks. if (!p->state.monk) return 0; diff --git a/src/map/party.hpp b/src/map/party.hpp index 3abb970828..f23e32fad5 100644 --- a/src/map/party.hpp +++ b/src/map/party.hpp @@ -6,7 +6,7 @@ #include <stdarg.h> -#include "../common/mmo.h" // struct party +#include "../common/mmo.hpp" // struct party struct block_list; struct map_session_data; diff --git a/src/map/path.cpp b/src/map/path.cpp index 8fd10d0ead..afd40775f3 100644 --- a/src/map/path.cpp +++ b/src/map/path.cpp @@ -8,12 +8,12 @@ #include <string.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" +#include "../common/cbasetypes.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" #include "map.hpp" #include "battle.hpp" diff --git a/src/map/path.hpp b/src/map/path.hpp index 5227bcccc2..8c8172ce05 100644 --- a/src/map/path.hpp +++ b/src/map/path.hpp @@ -4,7 +4,7 @@ #ifndef _PATH_HPP_ #define _PATH_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" enum cell_chk : uint8; diff --git a/src/map/pc.cpp b/src/map/pc.cpp index 6e6001f2e0..5f762c3bfc 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -6,18 +6,18 @@ #include <stdlib.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/core.h" // get_svn_revision() -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/socket.h" // session[] -#include "../common/strlib.h" // safestrncpy() -#include "../common/timer.h" -#include "../common/utils.h" -#include "../common/mmo.h" //NAME_LENGTH -#include "../common/ers.h" // ers_destroy +#include "../common/cbasetypes.hpp" +#include "../common/core.hpp" // get_svn_revision() +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" // session[] +#include "../common/strlib.hpp" // safestrncpy() +#include "../common/timer.hpp" +#include "../common/utils.hpp" +#include "../common/mmo.hpp" //NAME_LENGTH +#include "../common/ers.hpp" // ers_destroy #include "atcommand.hpp" // get_atcommand_level() #include "map.hpp" @@ -1114,6 +1114,8 @@ uint8 pc_isequip(struct map_session_data *sd,int n) return ITEM_EQUIP_ACK_FAIL; if(item->equip & EQP_ACC && sd->sc.data[SC__STRIPACCESSORY]) return ITEM_EQUIP_ACK_FAIL; + if (item->equip & EQP_ARMS && sd->sc.data[SC__WEAKNESS]) + return ITEM_EQUIP_ACK_FAIL; if(item->equip && (sd->sc.data[SC_KYOUGAKU] || sd->sc.data[SC_SUHIDE])) return ITEM_EQUIP_ACK_FAIL; @@ -1532,7 +1534,6 @@ void pc_reg_received(struct map_session_data *sd) sd->achievement_data.total_score = 0; sd->achievement_data.level = 0; sd->achievement_data.save = false; - sd->achievement_data.sendlist = false; sd->achievement_data.count = 0; sd->achievement_data.incompleteCount = 0; sd->achievement_data.achievements = NULL; @@ -2911,7 +2912,7 @@ void pc_bonus(struct map_session_data *sd,int type,int val) case SP_INTRAVISION: // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG] if(sd->state.lr_flag != 2) { sd->special_state.intravision = 1; - clif_status_load(&sd->bl, SI_INTRAVISION, 1); + clif_status_load(&sd->bl, EFST_CLAIRVOYANCE, 1); } break; case SP_NO_KNOCKBACK: @@ -3662,6 +3663,21 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val) sd->skillusesprate[i].val = val; } break; + case SP_SKILL_DELAY: + if(sd->state.lr_flag == 2) + break; + ARR_FIND(0, ARRAYLENGTH(sd->skilldelay), i, sd->skilldelay[i].id == 0 || sd->skilldelay[i].id == type2); + if (i == ARRAYLENGTH(sd->skilldelay)) { + ShowError("pc_bonus2: SP_SKILL_DELAY: Reached max (%d) number of skills per character, bonus skill %d (%d) lost.\n", ARRAYLENGTH(sd->skilldelay), type2, val); + break; + } + if (sd->skilldelay[i].id == type2) + sd->skilldelay[i].val += val; + else { + sd->skilldelay[i].id = type2; + sd->skilldelay[i].val = val; + } + break; case SP_SKILL_COOLDOWN: // bonus2 bSkillCooldown,sk,t; if(sd->state.lr_flag == 2) break; @@ -5398,22 +5414,23 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skil *------------------------------------------*/ int pc_steal_coin(struct map_session_data *sd,struct block_list *target) { - int rate,skill; + int rate, target_lv; struct mob_data *md; + if(!sd || !target || target->type != BL_MOB) return 0; md = (TBL_MOB*)target; + target_lv = status_get_lv(target); if (md->state.steal_coin_flag || md->sc.data[SC_STONE] || md->sc.data[SC_FREEZE] || status_bl_has_mode(target,MD_STATUS_IMMUNE) || status_get_race2(&md->bl) == RC2_TREASURE) return 0; - // FIXME: This formula is either custom or outdated. - skill = pc_checkskill(sd,RG_STEALCOIN)*10; - rate = skill + (sd->status.base_level - md->level)*3 + sd->battle_status.dex*2 + sd->battle_status.luk*2; + rate = sd->battle_status.dex / 2 + 2 * (sd->status.base_level - target_lv) + (10 * pc_checkskill(sd, RG_STEALCOIN)) + sd->battle_status.luk / 2; if(rnd()%1000 < rate) { - int amount = md->level*10 + rnd()%100; + // Zeny Steal Amount: (rnd() % (10 * target_lv + 1 - 8 * target_lv)) + 8 * target_lv + int amount = (rnd() % (2 * target_lv + 1)) + 8 * target_lv; // Reduced formula pc_getzeny(sd, amount, LOG_TYPE_STEAL, NULL); md->state.steal_coin_flag = 1; @@ -5988,6 +6005,7 @@ int pc_jobid2mapid(unsigned short b_class) case JOB_ARCH_BISHOP: return MAPID_ARCH_BISHOP; case JOB_MECHANIC: return MAPID_MECHANIC; case JOB_GUILLOTINE_CROSS: return MAPID_GUILLOTINE_CROSS; + case JOB_STAR_EMPEROR: return MAPID_STAR_EMPEROR; //3-2 Jobs case JOB_ROYAL_GUARD: return MAPID_ROYAL_GUARD; case JOB_SORCERER: return MAPID_SORCERER; @@ -5996,6 +6014,7 @@ int pc_jobid2mapid(unsigned short b_class) case JOB_SURA: return MAPID_SURA; case JOB_GENETIC: return MAPID_GENETIC; case JOB_SHADOW_CHASER: return MAPID_SHADOW_CHASER; + case JOB_SOUL_REAPER: return MAPID_SOUL_REAPER; //Trans 3-1 Jobs case JOB_RUNE_KNIGHT_T: return MAPID_RUNE_KNIGHT_T; case JOB_WARLOCK_T: return MAPID_WARLOCK_T; @@ -6019,6 +6038,7 @@ int pc_jobid2mapid(unsigned short b_class) case JOB_BABY_BISHOP: return MAPID_BABY_BISHOP; case JOB_BABY_MECHANIC: return MAPID_BABY_MECHANIC; case JOB_BABY_CROSS: return MAPID_BABY_CROSS; + case JOB_BABY_STAR_EMPEROR: return MAPID_BABY_STAR_EMPEROR; //Baby 3-2 Jobs case JOB_BABY_GUARD: return MAPID_BABY_GUARD; case JOB_BABY_SORCERER: return MAPID_BABY_SORCERER; @@ -6027,6 +6047,7 @@ int pc_jobid2mapid(unsigned short b_class) case JOB_BABY_SURA: return MAPID_BABY_SURA; case JOB_BABY_GENETIC: return MAPID_BABY_GENETIC; case JOB_BABY_CHASER: return MAPID_BABY_CHASER; + case JOB_BABY_SOUL_REAPER: return MAPID_BABY_SOUL_REAPER; //Doram Jobs case JOB_SUMMONER: return MAPID_SUMMONER; default: @@ -6137,6 +6158,7 @@ int pc_mapid2jobid(unsigned short class_, int sex) case MAPID_ARCH_BISHOP: return JOB_ARCH_BISHOP; case MAPID_MECHANIC: return JOB_MECHANIC; case MAPID_GUILLOTINE_CROSS: return JOB_GUILLOTINE_CROSS; + case MAPID_STAR_EMPEROR: return JOB_STAR_EMPEROR; //3-2 Jobs case MAPID_ROYAL_GUARD: return JOB_ROYAL_GUARD; case MAPID_SORCERER: return JOB_SORCERER; @@ -6144,6 +6166,7 @@ int pc_mapid2jobid(unsigned short class_, int sex) case MAPID_SURA: return JOB_SURA; case MAPID_GENETIC: return JOB_GENETIC; case MAPID_SHADOW_CHASER: return JOB_SHADOW_CHASER; + case MAPID_SOUL_REAPER: return JOB_SOUL_REAPER; //Trans 3-1 Jobs case MAPID_RUNE_KNIGHT_T: return JOB_RUNE_KNIGHT_T; case MAPID_WARLOCK_T: return JOB_WARLOCK_T; @@ -6166,6 +6189,7 @@ int pc_mapid2jobid(unsigned short class_, int sex) case MAPID_BABY_BISHOP: return JOB_BABY_BISHOP; case MAPID_BABY_MECHANIC: return JOB_BABY_MECHANIC; case MAPID_BABY_CROSS: return JOB_BABY_CROSS; + case MAPID_BABY_STAR_EMPEROR: return JOB_BABY_STAR_EMPEROR; //Baby 3-2 Jobs case MAPID_BABY_GUARD: return JOB_BABY_GUARD; case MAPID_BABY_SORCERER: return JOB_BABY_SORCERER; @@ -6173,6 +6197,7 @@ int pc_mapid2jobid(unsigned short class_, int sex) case MAPID_BABY_SURA: return JOB_BABY_SURA; case MAPID_BABY_GENETIC: return JOB_BABY_GENETIC; case MAPID_BABY_CHASER: return JOB_BABY_CHASER; + case MAPID_BABY_SOUL_REAPER: return JOB_BABY_SOUL_REAPER; //Doram Jobs case MAPID_SUMMONER: return JOB_SUMMONER; default: @@ -6421,6 +6446,18 @@ const char* job_name(int class_) case JOB_BABY_STAR_GLADIATOR2: return msg_txt(NULL,756); + case JOB_STAR_EMPEROR: + case JOB_SOUL_REAPER: + case JOB_BABY_STAR_EMPEROR: + case JOB_BABY_SOUL_REAPER: + return msg_txt(NULL,782 - JOB_STAR_EMPEROR + class_); + + case JOB_STAR_EMPEROR2: + return msg_txt(NULL,782); + + case JOB_BABY_STAR_EMPEROR2: + return msg_txt(NULL,784); + default: return msg_txt(NULL,655); } @@ -6599,7 +6636,7 @@ int pc_checkjoblevelup(struct map_session_data *sd) status_calc_pc(sd,SCO_FORCE); clif_misceffect(&sd->bl,1); if (pc_checkskill(sd, SG_DEVIL) && pc_is_maxbaselv(sd)) - clif_status_change(&sd->bl,SI_DEVIL, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. + clif_status_change(&sd->bl, EFST_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. npc_script_event(sd, NPCE_JOBLVUP); achievement_update_objective(sd, AG_GOAL_LEVEL, 1, sd->status.job_level); @@ -7379,7 +7416,7 @@ int pc_resetskill(struct map_session_data* sd, int flag) return 0; if( pc_checkskill(sd, SG_DEVIL) && pc_is_maxjoblv(sd) ) - clif_status_load(&sd->bl, SI_DEVIL, 0); //Remove perma blindness due to skill-reset. [Skotlex] + clif_status_load(&sd->bl, EFST_DEVIL1, 0); //Remove perma blindness due to skill-reset. [Skotlex] i = sd->sc.option; if( i&OPTION_RIDING && pc_checkskill(sd, KN_RIDING) ) i &= ~OPTION_RIDING; @@ -7714,7 +7751,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) if(sd->status.pet_id > 0 && sd->pd) { struct pet_data *pd = sd->pd; if( !map[sd->bl.m].flag.noexppenalty ) { - pet_set_intimate(pd, pd->pet.intimate - pd->petDB->die); + pet_set_intimate(pd, pd->pet.intimate - pd->get_pet_db()->die); if( pd->pet.intimate < 0 ) pd->pet.intimate = 0; clif_send_petdata(sd,sd->pd,1,pd->pet.intimate); @@ -7744,7 +7781,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src) /* e.g. not killed thru pc_damage */ if( pc_issit(sd) ) { - clif_status_load(&sd->bl,SI_SIT,0); + clif_status_load(&sd->bl,EFST_SIT,0); } pc_setdead(sd); @@ -8247,7 +8284,12 @@ bool pc_setparam(struct map_session_data *sd,int type,int val) sd->battle_status.hp = cap_value(val, 1, (int)sd->battle_status.max_hp); break; case SP_MAXHP: - sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp); + if (sd->status.base_level < 100) + sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp_lv99); + else if (sd->status.base_level < 151) + sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp_lv150); + else + sd->battle_status.max_hp = cap_value(val, 1, battle_config.max_hp); if( sd->battle_status.max_hp < sd->battle_status.hp ) { @@ -8832,12 +8874,12 @@ void pc_setoption(struct map_session_data *sd,int type) if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc_checkskill(sd,RK_DRAGONTRAINING) > 0) ) { // Mounting - clif_status_load(&sd->bl,SI_RIDING,1); + clif_status_load(&sd->bl,EFST_RIDING,1); status_calc_pc(sd,SCO_NONE); } else if( (!(type&OPTION_RIDING) && p_type&OPTION_RIDING) || (!(type&OPTION_DRAGON) && p_type&OPTION_DRAGON && pc_checkskill(sd,RK_DRAGONTRAINING) > 0) ) { // Dismount - clif_status_load(&sd->bl,SI_RIDING,0); + clif_status_load(&sd->bl,EFST_RIDING,0); status_calc_pc(sd,SCO_NONE); } @@ -8855,16 +8897,16 @@ void pc_setoption(struct map_session_data *sd,int type) #endif if (type&OPTION_FALCON && !(p_type&OPTION_FALCON)) //Falcon ON - clif_status_load(&sd->bl,SI_FALCON,1); + clif_status_load(&sd->bl,EFST_FALCON,1); else if (!(type&OPTION_FALCON) && p_type&OPTION_FALCON) //Falcon OFF - clif_status_load(&sd->bl,SI_FALCON,0); + clif_status_load(&sd->bl,EFST_FALCON,0); if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER ) { if( type&OPTION_WUGRIDER && !(p_type&OPTION_WUGRIDER) ) { // Mounting - clif_status_load(&sd->bl,SI_WUGRIDER,1); + clif_status_load(&sd->bl,EFST_WUGRIDER,1); status_calc_pc(sd,SCO_NONE); } else if( !(type&OPTION_WUGRIDER) && p_type&OPTION_WUGRIDER ) { // Dismount - clif_status_load(&sd->bl,SI_WUGRIDER,0); + clif_status_load(&sd->bl,EFST_WUGRIDER,0); status_calc_pc(sd,SCO_NONE); } } @@ -8886,6 +8928,9 @@ void pc_setoption(struct map_session_data *sd,int type) status_change_end(&sd->bl,SC_ACCELERATION,INVALID_TIMER); status_change_end(&sd->bl,SC_OVERHEAT_LIMITPOINT,INVALID_TIMER); status_change_end(&sd->bl,SC_OVERHEAT,INVALID_TIMER); + status_change_end(&sd->bl,SC_MAGNETICFIELD,INVALID_TIMER); + status_change_end(&sd->bl,SC_NEUTRALBARRIER_MASTER,INVALID_TIMER); + status_change_end(&sd->bl,SC_STEALTHFIELD_MASTER,INVALID_TIMER); pc_bonus_script_clear(sd,BSF_REM_ON_MADOGEAR); } } @@ -10500,7 +10545,7 @@ static int pc_daynight_timer_sub(struct map_session_data *sd,va_list ap) { if (sd->state.night != night_flag && map[sd->bl.m].flag.nightenabled) { //Night/day state does not match. - clif_status_load(&sd->bl, SI_NIGHT, night_flag); //New night effect by dynamix [Skotlex] + clif_status_load(&sd->bl, EFST_SKE, night_flag); //New night effect by dynamix [Skotlex] sd->state.night = night_flag; return 1; } @@ -10563,7 +10608,7 @@ bool pc_setstand(struct map_session_data *sd, bool force){ return false; status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER); - clif_status_load(&sd->bl,SI_SIT,0); + clif_status_load(&sd->bl,EFST_SIT,0); clif_standing(&sd->bl); //Inform area PC is standing //Reset sitting tick. sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0; @@ -10872,10 +10917,15 @@ static bool pc_readdb_skilltree(char* fields[], int columns, int current) baselv = (uint32)atoi(fields[3]); joblv = (uint32)atoi(fields[4]); offset = 5; - } else { + } + else if (columns == 3 + MAX_PC_SKILL_REQUIRE * 2) { baselv = joblv = 0; offset = 3; } + else { + ShowWarning("pc_readdb_skilltree: Invalid number of colums in skill %hu of job %d's tree.\n", skill_id, class_); + return false; + } if(!pcdb_checkid(class_)) { @@ -11876,7 +11926,7 @@ void pc_bonus_script(struct map_session_data *sd) { if ((entry = (struct s_bonus_script_entry *)node->data)) { // Only start timer for new bonus_script if (entry->tid == INVALID_TIMER) { - if (entry->icon != SI_BLANK) // Gives status icon if exist + if (entry->icon != EFST_BLANK) // Gives status icon if exist clif_status_change(&sd->bl, entry->icon, 1, entry->tick, 1, 0, 0); entry->tick += now; @@ -11898,13 +11948,13 @@ void pc_bonus_script(struct map_session_data *sd) { * @param sd Player * @param script_str Script string * @param dur Duration in ms - * @param icon SI + * @param icon EFST * @param flag Flags @see enum e_bonus_script_flags * @param type 0 - None, 1 - Buff, 2 - Debuff * @return New created entry pointer or NULL if failed or NULL if duplicate fail * @author [Cydh] **/ -struct s_bonus_script_entry *pc_bonus_script_add(struct map_session_data *sd, const char *script_str, uint32 dur, enum si_type icon, uint16 flag, uint8 type) { +struct s_bonus_script_entry *pc_bonus_script_add(struct map_session_data *sd, const char *script_str, uint32 dur, enum efst_types icon, uint16 flag, uint8 type) { struct script_code *script = NULL; struct linkdb_node *node = NULL; struct s_bonus_script_entry *entry = NULL; @@ -11970,7 +12020,7 @@ void pc_bonus_script_free_entry(struct map_session_data *sd, struct s_bonus_scri StringBuf_Free(entry->script_buf); if (sd) { - if (entry->icon != SI_BLANK) + if (entry->icon != EFST_BLANK) clif_status_load(&sd->bl, entry->icon, 0); if (sd->bonus_script.count > 0) sd->bonus_script.count--; diff --git a/src/map/pc.hpp b/src/map/pc.hpp index 54b6fa275e..05187a0505 100644 --- a/src/map/pc.hpp +++ b/src/map/pc.hpp @@ -6,8 +6,8 @@ #include <vector> -#include "../common/mmo.h" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus -#include "../common/strlib.h"// StringBuf +#include "../common/mmo.hpp" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus +#include "../common/strlib.hpp"// StringBuf #include "map.hpp" // RC_ALL #include "itemdb.hpp" // MAX_ITEMGROUP @@ -24,7 +24,6 @@ enum AtCommandType : uint8; //enum e_log_chat_type : uint8; enum e_log_pick_type : uint32; enum sc_type : int16; -enum si_type : short; #define MAX_PC_BONUS 10 /// Max bonus, usually used by item bonus #define MAX_PC_SKILL_REQUIRE 5 /// Max skill tree requirement @@ -195,7 +194,7 @@ struct s_bonus_script_entry { StringBuf *script_buf; //Used for comparing and storing on table uint32 tick; uint16 flag; - enum si_type icon; + enum efst_types icon; uint8 type; //0 - Ignore; 1 - Buff; 2 - Debuff int tid; }; @@ -267,6 +266,7 @@ struct map_session_data { bool keepshop; // Whether shop data should be removed when the player disconnects bool mail_writing; // Whether the player is currently writing a mail in RODEX or not bool cashshop_open; + bool sale_open; } state; struct { unsigned char no_weapon_damage, no_magic_damage, no_misc_damage; @@ -412,7 +412,7 @@ struct map_session_data { struct s_skill_bonus_i32 { uint16 id; int32 val; - } skillcooldown[MAX_PC_BONUS], skillfixcast[MAX_PC_BONUS], skillvarcast[MAX_PC_BONUS]; + } skillcooldown[MAX_PC_BONUS], skillfixcast[MAX_PC_BONUS], skillvarcast[MAX_PC_BONUS], skilldelay[MAX_PC_BONUS]; struct s_regen { short value; int rate; @@ -607,7 +607,6 @@ struct map_session_data { int total_score; ///< Total achievement points int level; ///< Achievement level bool save; ///< Flag to know if achievements need to be saved - bool sendlist; ///< Flag to know if all achievements should be sent to the player (refresh list if an achievement has a title) uint16 count; ///< Total achievements in log uint16 incompleteCount; ///< Total incomplete achievements in log struct achievement *achievements; ///< Achievement log entries @@ -949,7 +948,7 @@ short pc_maxaspd(struct map_session_data *sd); (class_) == JOB_REBELLION || (class_) == JOB_SUMMONER || \ (class_) == JOB_BABY_SUMMONER || \ ( (class_) >= JOB_BABY_NINJA && (class_) <= JOB_BABY_REBELLION ) || \ - (class_) == JOB_BABY_STAR_GLADIATOR2 \ + ( (class_) >= JOB_BABY_STAR_GLADIATOR2 && (class_) <= JOB_BABY_STAR_EMPEROR2 ) \ ) #define pcdb_checkid(class_) pcdb_checkid_sub((unsigned int)class_) @@ -1306,7 +1305,7 @@ void pc_show_version(struct map_session_data *sd); int pc_bonus_script_timer(int tid, unsigned int tick, int id, intptr_t data); void pc_bonus_script(struct map_session_data *sd); -struct s_bonus_script_entry *pc_bonus_script_add(struct map_session_data *sd, const char *script_str, uint32 dur, enum si_type icon, uint16 flag, uint8 type); +struct s_bonus_script_entry *pc_bonus_script_add(struct map_session_data *sd, const char *script_str, uint32 dur, enum efst_types icon, uint16 flag, uint8 type); void pc_bonus_script_clear(struct map_session_data *sd, uint16 flag); void pc_cell_basilica(struct map_session_data *sd); diff --git a/src/map/pc_groups.cpp b/src/map/pc_groups.cpp index 5e74b240a6..608cc8ee85 100644 --- a/src/map/pc_groups.cpp +++ b/src/map/pc_groups.cpp @@ -3,12 +3,12 @@ #include "pc_groups.hpp" -#include "../common/conf.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" // strcmp -#include "../common/socket.h" +#include "../common/conf.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" // strcmp +#include "../common/socket.hpp" #include "atcommand.hpp" // AtCommandType #include "pc.hpp" // e_pc_permission diff --git a/src/map/pc_groups.hpp b/src/map/pc_groups.hpp index 932ae0513c..c4b89ce824 100644 --- a/src/map/pc_groups.hpp +++ b/src/map/pc_groups.hpp @@ -4,7 +4,7 @@ #ifndef _PC_GROUPS_HPP_ #define _PC_GROUPS_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" enum AtCommandType : uint8; @@ -51,7 +51,6 @@ enum e_pc_permission : uint32 { PC_PERM_ENABLE_COMMAND = 0x01000000, PC_PERM_BYPASS_STAT_ONCLONE = 0x02000000, PC_PERM_BYPASS_MAX_STAT = 0x04000000, - PC_PERM_CASHSHOP_SALE = 0x08000000, //.. add other here PC_PERM_ALLPERMISSION = 0xFFFFFFFF, }; @@ -87,7 +86,6 @@ static const struct s_pcg_permission_name { { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, - { "cashshop_sale", PC_PERM_CASHSHOP_SALE }, { "all_permission", PC_PERM_ALLPERMISSION }, }; diff --git a/src/map/pet.cpp b/src/map/pet.cpp index 668a8f2621..f7acbe9546 100644 --- a/src/map/pet.cpp +++ b/src/map/pet.cpp @@ -7,15 +7,17 @@ #include <stdlib.h> -#include "../common/db.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/ers.h" +#include "../common/utilities.hpp" + +#include "../common/db.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" #include "pc.hpp" #include "intif.hpp" @@ -27,16 +29,14 @@ #include "log.hpp" #include "achievement.hpp" +using namespace rathena; + #define MIN_PETTHINKTIME 100 //Dynamic pet database std::map<uint16, struct s_pet_db> pet_db_data; struct s_pet_db *pet_db( uint16 pet_id ){ - if( pet_db_data.find(pet_id) != pet_db_data.end() ){ - return &pet_db_data.at(pet_id); - }else{ - return nullptr; - } + return util::map_find( pet_db_data, pet_id ); } static struct eri *item_drop_ers; //For loot drops delay structures. @@ -167,11 +167,14 @@ int pet_attackskill(struct pet_data *pd, int target_id) int pet_target_check(struct pet_data *pd,struct block_list *bl,int type) { int rate; + s_pet_db* pet_db_ptr; nullpo_ret(pd); Assert((pd->master == 0) || (pd->master->pd == pd)); + pet_db_ptr = pd->get_pet_db(); + if(bl == NULL || bl->type != BL_MOB || bl->prev == NULL || pd->pet.intimate < battle_config.pet_support_min_friendly || pd->pet.hungry < 1 || @@ -191,21 +194,21 @@ int pet_target_check(struct pet_data *pd,struct block_list *bl,int type) return 0; if(!type) { - rate = pd->petDB->attack_rate; + rate = pet_db_ptr->attack_rate; rate = rate * pd->rate_fix / 1000; - if(pd->petDB->attack_rate > 0 && rate <= 0) + if(pet_db_ptr->attack_rate > 0 && rate <= 0) rate = 1; } else { - rate = pd->petDB->defence_attack_rate; + rate = pet_db_ptr->defence_attack_rate; rate = rate * pd->rate_fix / 1000; - if(pd->petDB->defence_attack_rate > 0 && rate <= 0) + if(pet_db_ptr->defence_attack_rate > 0 && rate <= 0) rate = 1; } if(rnd()%10000 < rate) { - if(pd->target_id == 0 || rnd()%10000 < pd->petDB->change_target_rate) + if(pd->target_id == 0 || rnd()%10000 < pet_db_ptr->change_target_rate) pd->target_id = bl->id; } @@ -249,6 +252,7 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data) { struct map_session_data *sd; struct pet_data *pd; + s_pet_db *pet_db_ptr; int interval; sd = map_id2sd(id); @@ -260,6 +264,7 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data) return 1; pd = sd->pd; + pet_db_ptr = pd->get_pet_db(); if(pd->pet_hungry_timer != tid) { ShowError("pet_hungry_timer %d != %d\n",pd->pet_hungry_timer,tid); @@ -290,9 +295,9 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data) clif_send_petdata(sd,pd,2,pd->pet.hungry); if(battle_config.pet_hungry_delay_rate != 100) - interval = (pd->petDB->hungry_delay*battle_config.pet_hungry_delay_rate)/100; + interval = (pet_db_ptr->hungry_delay*battle_config.pet_hungry_delay_rate)/100; else - interval = pd->petDB->hungry_delay; + interval = pet_db_ptr->hungry_delay; if(interval <= 0) interval = 1; @@ -354,7 +359,7 @@ static int pet_performance(struct map_session_data *sd, struct pet_data *pd) int val; if (pd->pet.intimate > 900) - val = (pd->petDB->s_perfor > 0) ? 4 : 3; + val = (pd->get_pet_db()->s_perfor > 0) ? 4 : 3; else if(pd->pet.intimate > 750) //TODO: this is way too high val = 2; else @@ -380,7 +385,7 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) pet_lootitem_drop(pd,sd); memset(&tmp_item,0,sizeof(tmp_item)); - tmp_item.nameid = pd->petDB->EggID; + tmp_item.nameid = pd->get_pet_db()->EggID; tmp_item.identify = 1; tmp_item.card[0] = CARD0_PET; tmp_item.card[1] = GetWord(pd->pet.pet_id,0); @@ -450,7 +455,6 @@ bool pet_data_init(struct map_session_data *sd, struct s_pet *pet) pd->bl.id = npc_get_new_npc_id(); pd->master = sd; - pd->petDB = pet_db_ptr; pd->db = mob_db(pet->class_); memcpy(&pd->pet, pet, sizeof(struct s_pet)); status_set_viewdata(&pd->bl, pet->class_); @@ -473,7 +477,7 @@ bool pet_data_init(struct map_session_data *sd, struct s_pet *pet) if( battle_config.pet_status_support ) run_script(pet_db_ptr->pet_script,0,sd->bl.id,0); - if( pd->petDB ) { + if( pd->get_pet_db() ) { if( pet_db_ptr->pet_loyal_script ) status_calc_pc(sd,SCO_NONE); @@ -778,7 +782,7 @@ int pet_menu(struct map_session_data *sd,int menunum) if(!sd->status.pet_id || sd->pd->pet.intimate <= 0 || sd->pd->pet.incubate) return 1; - egg_id = itemdb_exists(sd->pd->petDB->EggID); + egg_id = itemdb_exists(sd->pd->get_pet_db()->EggID); if (egg_id) { if ((egg_id->flag.trade_restriction&0x01) && !pc_inventoryblank(sd)) { @@ -874,6 +878,7 @@ int pet_change_name_ack(struct map_session_data *sd, char* name, int flag) int pet_equipitem(struct map_session_data *sd,int index) { struct pet_data *pd; + s_pet_db *pet_db_ptr; unsigned short nameid; nullpo_retr(1, sd); @@ -882,10 +887,13 @@ int pet_equipitem(struct map_session_data *sd,int index) if (!pd) return 1; + + if((pet_db_ptr = pd->get_pet_db()) == nullptr) + return 1; nameid = sd->inventory.u.items_inventory[index].nameid; - if(pd->petDB->AcceID == 0 || nameid != pd->petDB->AcceID || pd->pet.equip != 0) { + if(pet_db_ptr->AcceID == 0 || nameid != pet_db_ptr->AcceID || pd->pet.equip != 0) { clif_equipitemack(sd,0,0,ITEM_EQUIP_ACK_FAIL); return 1; } @@ -971,9 +979,13 @@ static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) */ static int pet_food(struct map_session_data *sd, struct pet_data *pd) { + nullpo_retr(1, sd); + nullpo_retr(1, pd); + + s_pet_db *pet_db_ptr = pd->get_pet_db(); int i,k; - k = pd->petDB->FoodID; + k = pet_db_ptr->FoodID; i = pc_search_inventory(sd,k); if( i < 0 ) { @@ -985,12 +997,12 @@ static int pet_food(struct map_session_data *sd, struct pet_data *pd) pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME); if( pd->pet.hungry > 90 ) - pet_set_intimate(pd, pd->pet.intimate - pd->petDB->r_full); + pet_set_intimate(pd, pd->pet.intimate - pet_db_ptr->r_full); else { if( battle_config.pet_friendly_rate != 100 ) - k = (pd->petDB->r_hungry * battle_config.pet_friendly_rate) / 100; + k = (pet_db_ptr->r_hungry * battle_config.pet_friendly_rate) / 100; else - k = pd->petDB->r_hungry; + k = pet_db_ptr->r_hungry; if( pd->pet.hungry > 75 ) { k = k >> 1; @@ -1009,16 +1021,16 @@ static int pet_food(struct map_session_data *sd, struct pet_data *pd) pd->pet.intimate = 1000; status_calc_pet(pd,SCO_NONE); - pd->pet.hungry += pd->petDB->fullness; + pd->pet.hungry += pet_db_ptr->fullness; if( pd->pet.hungry > 100 ) pd->pet.hungry = 100; - log_feeding(sd, LOG_FEED_PET, pd->petDB->FoodID); + log_feeding(sd, LOG_FEED_PET, pet_db_ptr->FoodID); clif_send_petdata(sd,pd,2,pd->pet.hungry); clif_send_petdata(sd,pd,1,pd->pet.intimate); - clif_pet_food(sd,pd->petDB->FoodID,1); + clif_pet_food(sd, pet_db_ptr->FoodID,1); return 0; } @@ -1136,11 +1148,11 @@ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, uns } // Return speed to normal. - if (pd->status.speed != pd->petDB->speed) { + if (pd->status.speed != pd->get_pet_db()->speed) { if (pd->ud.walktimer != INVALID_TIMER) return 0; // Wait until the pet finishes walking back to master. - pd->status.speed = pd->petDB->speed; + pd->status.speed = pd->get_pet_db()->speed; pd->ud.state.change_walk_target = pd->ud.state.speed_changed = 1; } diff --git a/src/map/pet.hpp b/src/map/pet.hpp index 2d725f4118..eba53c051e 100644 --- a/src/map/pet.hpp +++ b/src/map/pet.hpp @@ -4,8 +4,8 @@ #ifndef _PET_HPP_ #define _PET_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" #include "script.hpp" #include "status.hpp" @@ -98,6 +98,8 @@ struct pet_loot { unsigned short max; }; +struct s_pet_db *pet_db(uint16 pet_id); + struct pet_data { struct block_list bl; struct unit_data ud; @@ -105,7 +107,6 @@ struct pet_data { struct s_pet pet; struct status_data status; struct mob_db *db; - struct s_pet_db *petDB; int pet_hungry_timer; int target_id; struct { @@ -123,9 +124,11 @@ struct pet_data { int masterteleport_timer; struct map_session_data *master; -}; -struct s_pet_db *pet_db(uint16 pet_id); + s_pet_db* get_pet_db() { + return pet_db(this->pet.class_); + } +}; bool pet_create_egg(struct map_session_data *sd, unsigned short item_id); int pet_hungry_val(struct pet_data *pd); diff --git a/src/map/quest.cpp b/src/map/quest.cpp index 79d680514f..cb2dcb63f3 100644 --- a/src/map/quest.cpp +++ b/src/map/quest.cpp @@ -5,13 +5,13 @@ #include <stdlib.h> -#include "../common/cbasetypes.h" -#include "../common/socket.h" -#include "../common/malloc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/socket.hpp" +#include "../common/malloc.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" #include "itemdb.hpp" #include "map.hpp" diff --git a/src/map/quest.hpp b/src/map/quest.hpp index bb02651df3..a9a8fce886 100644 --- a/src/map/quest.hpp +++ b/src/map/quest.hpp @@ -4,8 +4,8 @@ #ifndef _QUEST_HPP_ #define _QUEST_HPP_ -#include "../common/cbasetypes.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/strlib.hpp" #include "map.hpp" diff --git a/src/map/script.cpp b/src/map/script.cpp index a203d0e6d1..5080ead890 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -20,23 +20,17 @@ #include "../../3rdparty/pcre/include/pcre.h" // preg_match #endif -#include "../common/cbasetypes.h" -#include "../common/malloc.h" -#include "../common/md5calc.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/socket.h" -#include "../common/strlib.h" -#include "../common/timer.h" -#include "../common/utils.h" -#include "../common/ers.h" // ers_destroy -#ifdef BETA_THREAD_TEST - #include "../common/atomic.h" - #include "../common/spinlock.h" - #include "../common/thread.h" - #include "../common/mutex.h" -#endif +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" +#include "../common/md5calc.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/socket.hpp" +#include "../common/strlib.hpp" +#include "../common/timer.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" // ers_destroy #include "map.hpp" #include "path.hpp" @@ -381,30 +375,6 @@ extern script_function buildin_func[]; static struct linkdb_node *sleep_db; // int oid -> struct script_state * -#ifdef BETA_THREAD_TEST -/** - * MySQL Query Slave - **/ -static SPIN_LOCK queryThreadLock; -static rAthread queryThread = NULL; -static ramutex queryThreadMutex = NULL; -static racond queryThreadCond = NULL; -static volatile int32 queryThreadTerminate = 0; - -struct queryThreadEntry { - bool ok; - bool type; /* main db or log db? */ - struct script_state *st; -}; - -/* Ladies and Gentleman the Manager! */ -struct { - struct queryThreadEntry **entry;/* array of structs */ - int count; - int timer;/* used to receive processed entries */ -} queryThreadData; -#endif - /*========================================== * (Only those needed) local declaration prototype *------------------------------------------*/ @@ -4641,185 +4611,6 @@ void script_generic_ui_array_expand (unsigned int plus) RECREATE(generic_ui_array, unsigned int, generic_ui_array_size); } -int buildin_query_sql_sub(struct script_state *st, Sql *handle); - -#ifdef BETA_THREAD_TEST -/* used to receive items the queryThread has already processed */ -int queryThread_timer(int tid, unsigned int tick, int id, intptr_t data) { - int i, cursor = 0; - bool allOk = true; - - EnterSpinLock(&queryThreadLock); - - for( i = 0; i < queryThreadData.count; i++ ) { - struct queryThreadEntry *entry = queryThreadData.entry[i]; - - if( !entry->ok ) { - allOk = false; - continue; - } - - run_script_main(entry->st); - - entry->st = NULL;/* empty entries */ - aFree(entry); - queryThreadData.entry[i] = NULL; - } - - - if( allOk ) { - /* cancel the repeating timer -- it'll re-create itself when necessary, dont need to remain looping */ - delete_timer(queryThreadData.timer, queryThread_timer); - queryThreadData.timer = INVALID_TIMER; - } - - /* now lets clear the mess. */ - for( i = 0; i < queryThreadData.count; i++ ) { - struct queryThreadEntry *entry = queryThreadData.entry[i]; - if( entry == NULL ) - continue;/* entry on hold */ - - /* move */ - memmove(&queryThreadData.entry[cursor], &queryThreadData.entry[i], sizeof(struct queryThreadEntry*)); - - cursor++; - } - - queryThreadData.count = cursor; - - LeaveSpinLock(&queryThreadLock); - - return 0; -} - -void queryThread_add(struct script_state *st, bool type) { - int idx = 0; - struct queryThreadEntry* entry = NULL; - - EnterSpinLock(&queryThreadLock); - - if( queryThreadData.count++ != 0 ) - RECREATE(queryThreadData.entry, struct queryThreadEntry* , queryThreadData.count); - - idx = queryThreadData.count-1; - - CREATE(queryThreadData.entry[idx],struct queryThreadEntry,1); - - entry = queryThreadData.entry[idx]; - - entry->st = st; - entry->ok = false; - entry->type = type; - if( queryThreadData.timer == INVALID_TIMER ) { /* start the receiver timer */ - queryThreadData.timer = add_timer_interval(gettick() + 100, queryThread_timer, 0, 0, 100); - } - - LeaveSpinLock(&queryThreadLock); - - /* unlock the queryThread */ - racond_signal(queryThreadCond); -} -/* adds a new log to the queue */ -void queryThread_log(char * entry, int length) { - int idx = logThreadData.count; - - EnterSpinLock(&queryThreadLock); - - if( logThreadData.count++ != 0 ) - RECREATE(logThreadData.entry, char* , logThreadData.count); - - CREATE(logThreadData.entry[idx], char, length + 1 ); - safestrncpy(logThreadData.entry[idx], entry, length + 1 ); - - LeaveSpinLock(&queryThreadLock); - - /* unlock the queryThread */ - racond_signal(queryThreadCond); -} - -/* queryThread_main */ -static void *queryThread_main(void *x) { - Sql *queryThread_handle = Sql_Malloc(); - int i; - - if ( SQL_ERROR == Sql_Connect(queryThread_handle, map_server_id, map_server_pw, map_server_ip, map_server_port, map_server_db) ){ - ShowError("Couldn't connect with uname='%s',passwd='%s',host='%s',port='%d',database='%s'\n", - map_server_id, map_server_pw, map_server_ip, map_server_port, map_server_db); - Sql_ShowDebug(queryThread_handle); - Sql_Free(queryThread_handle); - exit(EXIT_FAILURE); - } - - if( strlen(default_codepage) > 0 ) - if ( SQL_ERROR == Sql_SetEncoding(queryThread_handle, default_codepage) ) - Sql_ShowDebug(queryThread_handle); - - if( log_config.sql_logs ) { - logmysql_handle = Sql_Malloc(); - - if ( SQL_ERROR == Sql_Connect(logmysql_handle, log_db_id, log_db_pw, log_db_ip, log_db_port, log_db_db) ){ - ShowError("Couldn't connect with uname='%s',passwd='%s',host='%s',port='%d',database='%s'\n", - log_db_id, log_db_pw, log_db_ip, log_db_port, log_db_db); - Sql_ShowDebug(logmysql_handle); - Sql_Free(logmysql_handle); - exit(EXIT_FAILURE); - } - - if( strlen(default_codepage) > 0 ) - if ( SQL_ERROR == Sql_SetEncoding(logmysql_handle, default_codepage) ) - Sql_ShowDebug(logmysql_handle); - } - - while( 1 ) { - - if(queryThreadTerminate > 0) - break; - - EnterSpinLock(&queryThreadLock); - - /* mess with queryThreadData within the lock */ - for( i = 0; i < queryThreadData.count; i++ ) { - struct queryThreadEntry *entry = queryThreadData.entry[i]; - - if( entry->ok ) - continue; - else if ( !entry->st || !entry->st->stack ) { - entry->ok = true;/* dispose */ - continue; - } - - buildin_query_sql_sub(entry->st, entry->type ? logmysql_handle : queryThread_handle); - - entry->ok = true;/* we're done with this */ - } - - /* also check for any logs in need to be sent */ - if( log_config.sql_logs ) { - for( i = 0; i < logThreadData.count; i++ ) { - if( SQL_ERROR == Sql_Query(logmysql_handle, logThreadData.entry[i]) ) - Sql_ShowDebug(logmysql_handle); - aFree(logThreadData.entry[i]); - } - logThreadData.count = 0; - } - - LeaveSpinLock(&queryThreadLock); - - ramutex_lock( queryThreadMutex ); - racond_wait( queryThreadCond, queryThreadMutex, -1 ); - ramutex_unlock( queryThreadMutex ); - - } - - Sql_Free(queryThread_handle); - - if( log_config.sql_logs ) { - Sql_Free(logmysql_handle); - } - - return NULL; -} -#endif /*========================================== * Destructor *------------------------------------------*/ @@ -4913,30 +4704,6 @@ void do_final_script() { ers_destroy(st_ers); ers_destroy(stack_ers); db_destroy(st_db); - -#ifdef BETA_THREAD_TEST - /* QueryThread */ - InterlockedIncrement(&queryThreadTerminate); - racond_signal(queryThreadCond); - rathread_wait(queryThread, NULL); - - // Destroy cond var and mutex. - racond_destroy( queryThreadCond ); - ramutex_destroy( queryThreadMutex ); - - /* Clear missing vars */ - for( i = 0; i < queryThreadData.count; i++ ) { - aFree(queryThreadData.entry[i]); - } - - aFree(queryThreadData.entry); - - for( i = 0; i < logThreadData.count; i++ ) { - aFree(logThreadData.entry[i]); - } - - aFree(logThreadData.entry); -#endif } /*========================================== * Initialization @@ -4958,29 +4725,6 @@ void do_init_script(void) { next_id = 0; mapreg_init(); -#ifdef BETA_THREAD_TEST - CREATE(queryThreadData.entry, struct queryThreadEntry*, 1); - queryThreadData.count = 0; - CREATE(logThreadData.entry, char *, 1); - logThreadData.count = 0; - /* QueryThread Start */ - - InitializeSpinLock(&queryThreadLock); - - queryThreadData.timer = INVALID_TIMER; - queryThreadTerminate = 0; - queryThreadMutex = ramutex_create(); - queryThreadCond = racond_create(); - - queryThread = rathread_create(queryThread_main, NULL); - - if(queryThread == NULL){ - ShowFatalError("do_init_script: cannot spawn Query Thread.\n"); - exit(EXIT_FAILURE); - } - - add_timer_func_list(queryThread_timer, "queryThread_timer"); -#endif } void script_reload(void) { @@ -4988,23 +4732,6 @@ void script_reload(void) { DBIterator *iter; struct script_state *st; -#ifdef BETA_THREAD_TEST - /* we're reloading so any queries undergoing should be...exterminated. */ - EnterSpinLock(&queryThreadLock); - - for( i = 0; i < queryThreadData.count; i++ ) { - aFree(queryThreadData.entry[i]); - } - queryThreadData.count = 0; - - if( queryThreadData.timer != INVALID_TIMER ) { - delete_timer(queryThreadData.timer, queryThread_timer); - queryThreadData.timer = INVALID_TIMER; - } - - LeaveSpinLock(&queryThreadLock); -#endif - userfunc_db->clear(userfunc_db, db_script_free_code_sub); db_clear(scriptlabel_db); @@ -5089,6 +4816,20 @@ BUILDIN_FUNC(next) return SCRIPT_CMD_SUCCESS; } +/// Clears the dialog and continues the script without a next button. +/// +/// clear; +BUILDIN_FUNC(clear) +{ + TBL_PC* sd; + + if (!script_rid2sd(sd)) + return SCRIPT_CMD_FAILURE; + + clif_scriptclear(sd, st->oid); + return SCRIPT_CMD_SUCCESS; +} + /// Ends the script and displays the button 'close' on the npc dialog. /// The dialog is closed when the button is pressed. /// @@ -6647,6 +6388,189 @@ BUILDIN_FUNC(getelementofarray) return SCRIPT_CMD_SUCCESS; } +/// Return the index number of the first matching value in an array. +/// ex: inarray arr,1; +/// +/// inarray <array variable>,<value>; +BUILDIN_FUNC(inarray) +{ + struct script_data *data; + const char* name; + int id, i, array_size; + struct map_session_data* sd = NULL; + struct reg_db *ref = NULL; + data = script_getdata(st, 2); + + if (!data_isreference(data)) + { + ShowError("buildin_inarray: not a variable\n"); + script_reportdata(data); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + name = reference_getname(data); + ref = reference_getref(data); + + if (not_server_variable(*name) && !script_rid2sd(sd)) + return SCRIPT_CMD_FAILURE; + + array_size = script_array_highest_key(st, sd, name, ref) - 1; + + if (array_size > SCRIPT_MAX_ARRAYSIZE) + { + ShowError("buildin_inarray: The array is too large.\n"); + script_reportdata(data); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + id = reference_getid(data); + if (is_string_variable(name)) + { + const char* temp; + const char* value; + value = script_getstr(st, 3); + for (i = 0; i <= array_size; ++i) + { + temp = (char*)get_val2(st, reference_uid(id, i), ref); + script_removetop(st, -1, 0); + if (!strcmp(temp, value)) + { + script_pushint(st, i); + return SCRIPT_CMD_SUCCESS; + } + + } + } + else + { + int temp, value; + value = script_getnum(st, 3); + for (i = 0; i <= array_size; ++i) + { + temp = (int32)__64BPRTSIZE(get_val2(st, reference_uid(id, i), ref)); + script_removetop(st, -1, 0); + if (temp == value) + { + script_pushint(st, i); + return SCRIPT_CMD_SUCCESS; + } + + } + } + + script_pushint(st, -1); + return SCRIPT_CMD_SUCCESS; +} + +/// Return the number of matches in two arrays. +/// ex: countinarray arr[0],arr1[0]; +/// +/// countinarray <array variable>,<array variable>; +BUILDIN_FUNC(countinarray) +{ + struct script_data *data1 , *data2; + const char* name1; + const char* name2; + int id1, id2, i, j, array_size1, array_size2, case_count = 0; + struct map_session_data* sd = NULL; + struct reg_db *ref1 = NULL, *ref2 = NULL; + data1 = script_getdata(st, 2); + data2 = script_getdata(st, 3); + + if (!data_isreference(data1) || !data_isreference(data2)) + { + ShowError("buildin_countinarray: not a variable\n"); + script_reportdata(data1); + script_reportdata(data2); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + name1 = reference_getname(data1); + name2 = reference_getname(data2); + ref1 = reference_getref(data1); + ref2 = reference_getref(data2); + + if (not_server_variable(*name1) && not_server_variable(*name2) && !script_rid2sd(sd)) + return SCRIPT_CMD_FAILURE; + + array_size1 = script_array_highest_key(st, sd, name1, ref1) - 1; + array_size2 = script_array_highest_key(st, sd, name2, ref2) - 1; + + if (array_size1 > SCRIPT_MAX_ARRAYSIZE || array_size2 > SCRIPT_MAX_ARRAYSIZE) + { + ShowError("buildin_countinarray: The array is too large.\n"); + script_reportdata(data1); + script_reportdata(data2); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + i = reference_getindex(data1); + j = reference_getindex(data2); + if (array_size1 < i || array_size2 < j) + { //To prevent unintended behavior + ShowError("buildin_countinarray: The given index of the array is higher than the array size.\n"); + script_reportdata(data1); + script_reportdata(data2); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + id1 = reference_getid(data1); + id2 = reference_getid(data2); + if (is_string_variable(name1) && is_string_variable(name2)) + { + const char* temp1; + const char* temp2; + for (; i <= array_size1; ++i) + { + temp1 = (char*)get_val2(st, reference_uid(id1, i), ref1); + for (j = reference_getindex(data2); j <= array_size2; j++) + { + temp2 = (char*)get_val2(st, reference_uid(id2, j), ref2); + if (!strcmp(temp1, temp2)) + { + case_count++; + } + script_removetop(st, -1, 0); + } + script_removetop(st, -1, 0); + } + } + else if (!is_string_variable(name1) && !is_string_variable(name2)) + { + int temp1, temp2; + for (; i <= array_size1; ++i) + { + temp1 = (int32)__64BPRTSIZE(get_val2(st, reference_uid(id1, i), ref1)); + for (j = reference_getindex(data2); j <= array_size2; j++) + { + temp2 = (int32)__64BPRTSIZE(get_val2(st, reference_uid(id2, j), ref2)); + if (temp1 == temp2) + { + case_count++; + } + script_removetop(st, -1, 0); + } + script_removetop(st, -1, 0); + } + } + else + { + ShowError("buildin_countinarray: Arrays does not match , You can't compare int array to string array.\n"); + script_reportdata(data1); + script_reportdata(data2); + st->state = END; + return SCRIPT_CMD_FAILURE; + } + + script_pushint(st, case_count); + return SCRIPT_CMD_SUCCESS; +} + ///////////////////////////////////////////////////////////////////// /// ... /// @@ -9192,7 +9116,7 @@ BUILDIN_FUNC(statusup2) BUILDIN_FUNC(bonus) { int type; - int val1; + int val1 = 0; int val2 = 0; int val3 = 0; int val4 = 0; @@ -9220,6 +9144,7 @@ BUILDIN_FUNC(bonus) case SP_SKILL_VARIABLECAST: case SP_VARCASTRATE: case SP_FIXCASTRATE: + case SP_SKILL_DELAY: case SP_SKILL_USE_SP: case SP_SUB_SKILL: // these bonuses support skill names @@ -9228,11 +9153,13 @@ BUILDIN_FUNC(bonus) val1 = ( data_isstring(data) ? skill_name2id(script_getstr(st,3)) : script_getnum(st,3) ); break; default: - val1 = script_getnum(st,3); + if (script_hasdata(st, 3)) + val1 = script_getnum(st, 3); break; } switch( script_lastdata(st)-2 ) { + case 0: case 1: pc_bonus(sd, type, val1); break; @@ -13568,7 +13495,12 @@ BUILDIN_FUNC(setwall) BUILDIN_FUNC(delwall) { const char *name = script_getstr(st,2); - map_iwall_remove(name); + + if( !map_iwall_remove(name) ){ + ShowError( "buildin_delwall: wall \"%s\" does not exist.\n", name ); + return SCRIPT_CMD_FAILURE; + } + return SCRIPT_CMD_SUCCESS; } @@ -13868,7 +13800,7 @@ BUILDIN_FUNC(petloot) BUILDIN_FUNC(getinventorylist) { TBL_PC *sd; - char card_var[NAME_LENGTH]; + char card_var[NAME_LENGTH], randopt_var[50]; int i,j=0,k; if (!script_charid2sd(2,sd)) @@ -13888,6 +13820,15 @@ BUILDIN_FUNC(getinventorylist) } pc_setreg(sd,reference_uid(add_str("@inventorylist_expire"), j),sd->inventory.u.items_inventory[i].expire_time); pc_setreg(sd,reference_uid(add_str("@inventorylist_bound"), j),sd->inventory.u.items_inventory[i].bound); + for (k = 0; k < MAX_ITEM_RDM_OPT; k++) + { + sprintf(randopt_var, "@inventorylist_option_id%d",k+1); + pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].id); + sprintf(randopt_var, "@inventorylist_option_value%d",k+1); + pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].value); + sprintf(randopt_var, "@inventorylist_option_parameter%d",k+1); + pc_setreg(sd,reference_uid(add_str(randopt_var), j),sd->inventory.u.items_inventory[i].option[k].param); + } j++; } } @@ -14704,6 +14645,8 @@ BUILDIN_FUNC(getpetinfo) case PETINFO_RENAMED: script_pushint(st,pd->pet.rename_flag); break; case PETINFO_LEVEL: script_pushint(st,(int)pd->pet.level); break; case PETINFO_BLOCKID: script_pushint(st,pd->bl.id); break; + case PETINFO_EGGID: script_pushint(st,pd->pet.egg_id); break; + case PETINFO_FOODID: script_pushint(st,pd->get_pet_db()->FoodID); break; default: script_pushint(st,0); break; @@ -16714,18 +16657,7 @@ int buildin_query_sql_sub(struct script_state* st, Sql* handle) } BUILDIN_FUNC(query_sql) { -#ifdef BETA_THREAD_TEST - if( st->state != RERUNLINE ) { - queryThread_add(st,false); - - st->state = RERUNLINE;/* will continue when the query is finished running. */ - } else - st->state = RUN; - - return SCRIPT_CMD_SUCCESS; -#else return buildin_query_sql_sub(st, qsmysql_handle); -#endif } BUILDIN_FUNC(query_logsql) { @@ -16734,18 +16666,8 @@ BUILDIN_FUNC(query_logsql) { script_pushint(st,-1); return SCRIPT_CMD_FAILURE; } -#ifdef BETA_THREAD_TEST - if( st->state != RERUNLINE ) { - queryThread_add(st,true); - st->state = RERUNLINE;/* will continue when the query is finished running. */ - } else - st->state = RUN; - - return SCRIPT_CMD_SUCCESS; -#else return buildin_query_sql_sub(st, logmysql_handle); -#endif } //Allows escaping of a given string. @@ -17550,6 +17472,7 @@ BUILDIN_FUNC(getunitdata) getunitdata_sub(UMOB_AMOTION, md->status.amotion); getunitdata_sub(UMOB_ADELAY, md->status.adelay); getunitdata_sub(UMOB_DMOTION, md->status.dmotion); + getunitdata_sub(UMOB_TARGETID, md->target_id); break; case BL_HOM: @@ -17596,6 +17519,7 @@ BUILDIN_FUNC(getunitdata) getunitdata_sub(UHOM_AMOTION, hd->battle_status.amotion); getunitdata_sub(UHOM_ADELAY, hd->battle_status.adelay); getunitdata_sub(UHOM_DMOTION, hd->battle_status.dmotion); + getunitdata_sub(UHOM_TARGETID, hd->ud.target); break; case BL_PET: @@ -17683,6 +17607,7 @@ BUILDIN_FUNC(getunitdata) getunitdata_sub(UMER_AMOTION, mc->base_status.amotion); getunitdata_sub(UMER_ADELAY, mc->base_status.adelay); getunitdata_sub(UMER_DMOTION, mc->base_status.dmotion); + getunitdata_sub(UMER_TARGETID, mc->ud.target); break; case BL_ELEM: @@ -17728,6 +17653,7 @@ BUILDIN_FUNC(getunitdata) getunitdata_sub(UELE_AMOTION, ed->base_status.amotion); getunitdata_sub(UELE_ADELAY, ed->base_status.adelay); getunitdata_sub(UELE_DMOTION, ed->base_status.dmotion); + getunitdata_sub(UELE_TARGETID, ed->ud.target); break; case BL_NPC: @@ -17923,6 +17849,15 @@ BUILDIN_FUNC(setunitdata) case UMOB_AMOTION: md->base_status->amotion = (short)value; calc_status = true; break; case UMOB_ADELAY: md->base_status->adelay = (short)value; calc_status = true; break; case UMOB_DMOTION: md->base_status->dmotion = (short)value; calc_status = true; break; + case UMOB_TARGETID: { + struct block_list* target = map_id2bl(value); + if (!target) { + ShowWarning("buildin_setunitdata: Error in finding target for BL_MOB!\n"); + return SCRIPT_CMD_FAILURE; + } + mob_target(md,target,0); + break; + } default: ShowError("buildin_setunitdata: Unknown data identifier %d for BL_MOB.\n", type); return SCRIPT_CMD_FAILURE; @@ -17976,6 +17911,15 @@ BUILDIN_FUNC(setunitdata) case UHOM_AMOTION: hd->base_status.amotion = (short)value; calc_status = true; break; case UHOM_ADELAY: hd->base_status.adelay = (short)value; calc_status = true; break; case UHOM_DMOTION: hd->base_status.dmotion = (short)value; calc_status = true; break; + case UHOM_TARGETID: { + struct block_list* target = map_id2bl(value); + if (!target) { + ShowWarning("buildin_setunitdata: Error in finding target for BL_HOM!\n"); + return SCRIPT_CMD_FAILURE; + } + unit_attack(&hd->bl, target->id, 1); + break; + } default: ShowError("buildin_setunitdata: Unknown data identifier %d for BL_HOM.\n", type); return SCRIPT_CMD_FAILURE; @@ -18075,6 +18019,15 @@ BUILDIN_FUNC(setunitdata) case UMER_AMOTION: mc->base_status.amotion = (short)value; calc_status = true; break; case UMER_ADELAY: mc->base_status.adelay = (short)value; calc_status = true; break; case UMER_DMOTION: mc->base_status.dmotion = (short)value; calc_status = true; break; + case UMER_TARGETID: { + struct block_list* target = map_id2bl(value); + if (!target) { + ShowWarning("buildin_setunitdata: Error in finding target for BL_MER!\n"); + return SCRIPT_CMD_FAILURE; + } + unit_attack(&mc->bl, target->id, 1); + break; + } default: ShowError("buildin_setunitdata: Unknown data identifier %d for BL_MER.\n", type); return SCRIPT_CMD_FAILURE; @@ -18127,6 +18080,16 @@ BUILDIN_FUNC(setunitdata) case UELE_AMOTION: ed->base_status.amotion = (short)value; calc_status = true; break; case UELE_ADELAY: ed->base_status.adelay = (short)value; calc_status = true; break; case UELE_DMOTION: ed->base_status.dmotion = (short)value; calc_status = true; break; + case UELE_TARGETID: { + struct block_list* target = map_id2bl(value); + if (!target) { + ShowWarning("buildin_setunitdata: Error in finding target for BL_ELEM!\n"); + return SCRIPT_CMD_FAILURE; + } + elemental_change_mode(ed, static_cast<e_mode>(EL_MODE_AGGRESSIVE)); + unit_attack(&ed->bl, target->id, 1); + break; + } default: ShowError("buildin_setunitdata: Unknown data identifier %d for BL_ELEM.\n", type); return SCRIPT_CMD_FAILURE; @@ -18601,7 +18564,7 @@ BUILDIN_FUNC(unitskillusepos) /// Pauses the execution of the script, detaching the player /// -/// sleep <mili seconds>; +/// sleep <milli seconds>; BUILDIN_FUNC(sleep) { // First call(by function call) @@ -18611,7 +18574,7 @@ BUILDIN_FUNC(sleep) ticks = script_getnum(st, 2); if (ticks <= 0) { - ShowError("buildin_sleep2: negative amount('%d') of milli seconds is not supported\n", ticks); + ShowError("buildin_sleep: negative or zero amount('%d') of milli seconds is not supported\n", ticks); return SCRIPT_CMD_FAILURE; } @@ -18644,7 +18607,7 @@ BUILDIN_FUNC(sleep2) ticks = script_getnum(st, 2); if (ticks <= 0) { - ShowError( "buildin_sleep2: negative amount('%d') of milli seconds is not supported\n", ticks ); + ShowError( "buildin_sleep2: negative or zero amount('%d') of milli seconds is not supported\n", ticks ); return SCRIPT_CMD_FAILURE; } @@ -18982,7 +18945,7 @@ BUILDIN_FUNC(mercenary_create) class_ = script_getnum(st,2); - if( !mercenary_class(class_) ) + if( !mercenary_db(class_) ) return SCRIPT_CMD_SUCCESS; contract_time = script_getnum(st,3); @@ -21655,7 +21618,7 @@ BUILDIN_FUNC(montransform) { **/ BUILDIN_FUNC(bonus_script) { uint16 flag = 0; - int16 icon = SI_BLANK; + int16 icon = EFST_BLANK; uint32 dur; uint8 type = 0; TBL_PC* sd; @@ -21682,10 +21645,10 @@ BUILDIN_FUNC(bonus_script) { return SCRIPT_CMD_FAILURE; } - if (icon <= SI_BLANK || icon >= SI_MAX) - icon = SI_BLANK; + if (icon <= EFST_BLANK || icon >= EFST_MAX) + icon = EFST_BLANK; - if ((entry = pc_bonus_script_add(sd, script_str, dur, (enum si_type)icon, flag, type))) { + if ((entry = pc_bonus_script_add(sd, script_str, dur, (enum efst_types)icon, flag, type))) { linkdb_insert(&sd->bonus_script.head, (void *)((intptr_t)entry), entry); status_calc_pc(sd,SCO_NONE); } @@ -22125,7 +22088,6 @@ BUILDIN_FUNC(getvar) { else script_pushstrcopy(st, conv_str_(st, data, sd)); - push_val2(st->stack, C_NAME, reference_getuid(data), reference_getref(data)); return SCRIPT_CMD_SUCCESS; } @@ -23379,6 +23341,10 @@ BUILDIN_FUNC(unloadnpc) { if( nd == NULL ){ ShowError( "buildin_unloadnpc: npc '%s' was not found.\n", name ); return SCRIPT_CMD_FAILURE; + } else if ( nd->bl.id == st->oid ) { + // Supporting self-unload isn't worth the problem it may cause. [Secret] + ShowError("buildin_unloadnpc: You cannot self-unload NPC '%s'.\n.", name); + return SCRIPT_CMD_FAILURE; } npc_unload_duplicates(nd); @@ -23730,6 +23696,260 @@ BUILDIN_FUNC(getequiptradability) { return SCRIPT_CMD_SUCCESS; } +static inline bool mail_sub( struct script_state *st, struct script_data *data, struct map_session_data *sd, int i, const char **out_name, unsigned int *start, unsigned int *end, int32 *id ){ + const char *name; + + // Check if it is a variable + if( !data_isreference(data) ){ + ShowError("buildin_mail: argument %d is not a variable.\n", i ); + return false; + } + + name = reference_getname(data); + + if( is_string_variable(name) ){ + ShowError( "buildin_mail: variable \"%s\" is a string variable.\n", name ); + return false; + } + + // Check if the variable requires a player + if( not_server_variable(*name) && sd == NULL ){ + // If no player is attached + if( !script_rid2sd(sd) ){ + ShowError( "buildin_mail: variable \"%s\" was not a server variable, but no player was attached.\n", name ); + return false; + } + } + + // Try to find the array's source pointer + if( !script_array_src( st, sd, name, reference_getref(data) ) ){ + ShowError( "buildin_mail: variable \"%s\" is not an array.\n" ); + return false; + } + + // Store the name for later usage + *out_name = name; + + // Get the start and end indices of the array + *start = reference_getindex(data); + *end = script_array_highest_key( st, sd, name, reference_getref(data) ); + + // For getting the values we need the id of the array + *id = reference_getid(data); + + return true; +} + +BUILDIN_FUNC(mail){ + const char *sender, *title, *body, *name; + struct mail_message msg; + struct script_data *data; + struct map_session_data *sd = NULL; + unsigned int i, j, k, num_items, start, end; + int32 id; + + memset(&msg, 0, sizeof(struct mail_message)); + + msg.dest_id = script_getnum(st,2); + + sender = script_getstr(st, 3); + + if( strlen(sender) > NAME_LENGTH ){ + ShowError( "buildin_mail: sender name can not be longer than %d characters.\n", NAME_LENGTH ); + return SCRIPT_CMD_FAILURE; + } + + safestrncpy(msg.send_name, sender, NAME_LENGTH); + + title = script_getstr(st, 4); + + if( strlen(title) > MAIL_TITLE_LENGTH ){ + ShowError( "buildin_mail: title can not be longer than %d characters.\n", MAIL_TITLE_LENGTH ); + return SCRIPT_CMD_FAILURE; + } + + safestrncpy(msg.title, title, MAIL_TITLE_LENGTH); + + body = script_getstr(st, 5); + + if( strlen(body) > MAIL_BODY_LENGTH ){ + ShowError( "buildin_mail: body can not be longer than %d characters.\n", MAIL_BODY_LENGTH ); + return SCRIPT_CMD_FAILURE; + } + + safestrncpy(msg.body, body, MAIL_BODY_LENGTH); + + if( script_hasdata(st,6) ){ + int zeny = script_getnum(st, 6); + + if( zeny < 0 ){ + ShowError( "buildin_mail: a negative amount of zeny can not be sent.\n" ); + return SCRIPT_CMD_FAILURE; + }else if( zeny > MAX_ZENY ){ + ShowError( "buildin_mail: amount of zeny %u is exceeding maximum of %u. Capping...\n", zeny, MAX_ZENY ); + zeny = MAX_ZENY; + } + + msg.zeny = zeny; + } + + // Items + num_items = 0; + while( script_hasdata(st,7) ){ + data = script_getdata(st,7); + + if( !mail_sub( st, data, sd, 7, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + num_items = end - start; + + if( num_items == 0 ){ + ShowWarning( "buildin_mail: array \"%s\" contained no items.\n", name ); + break; + } + + if( num_items > MAIL_MAX_ITEM ){ + ShowWarning( "buildin_mail: array \"%s\" contained %d items, capping to maximum of %d...\n", name, num_items, MAIL_MAX_ITEM ); + num_items = MAIL_MAX_ITEM; + } + + for( i = 0; i < num_items && start < end; i++, start++ ){ + msg.item[i].nameid = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + msg.item[i].identify = 1; + + script_removetop(st, -1, 0); + + if( !itemdb_exists(msg.item[i].nameid) ){ + ShowError( "buildin_mail: invalid item id %hu.\n", msg.item[i].nameid ); + return SCRIPT_CMD_FAILURE; + } + } + + // Amounts + if( !script_hasdata(st,8) ){ + ShowError("buildin_mail: missing item count variable at position %d.\n", 8); + return SCRIPT_CMD_FAILURE; + } + + data = script_getdata(st,8); + + if( !mail_sub( st, data, sd, 8, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + for( i = 0; i < num_items && start < end; i++, start++ ){ + struct item_data *item = itemdb_exists(msg.item[i].nameid); + + msg.item[i].amount = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + + script_removetop(st, -1, 0); + + if( msg.item[i].amount <= 0 ){ + ShowError( "buildin_mail: amount %d for item %hu is invalid.\n", msg.item[i].amount, msg.item[i].nameid ); + return SCRIPT_CMD_FAILURE; + }else if( itemdb_isstackable2(item) ){ + uint16 max = item->stack.amount > 0 ? item->stack.amount : MAX_AMOUNT; + + if( msg.item[i].amount > max ){ + ShowWarning( "buildin_mail: amount %d for item %hu is exceeding the maximum of %d. Capping...\n", msg.item[i].amount, msg.item[i].nameid, max ); + msg.item[i].amount = max; + } + }else{ + if( msg.item[i].amount > 1 ){ + ShowWarning( "buildin_mail: amount %d is invalid for non-stackable item %hu.\n", msg.item[i].amount, msg.item[i].nameid ); + msg.item[i].amount = 1; + } + } + } + + // Cards + if( !script_hasdata(st,9) ){ + break; + } + + for( i = 0, j = 9; i < MAX_SLOTS && script_hasdata(st,j); i++, j++ ){ + data = script_getdata(st,j); + + if( !mail_sub( st, data, sd, j + 1, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + for( k = 0; k < num_items && start < end; k++, start++ ){ + msg.item[k].card[i] = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + + script_removetop(st, -1, 0); + + if( msg.item[k].card[i] != 0 && !itemdb_exists(msg.item[k].card[i]) ){ + ShowError( "buildin_mail: invalid card id %hu.\n", msg.item[k].card[i] ); + return SCRIPT_CMD_FAILURE; + } + } + } + + // Random Options + if( !script_hasdata(st,9 + MAX_SLOTS) ){ + break; + } + + for( i = 0, j = 9 + MAX_SLOTS; i < MAX_ITEM_RDM_OPT && script_hasdata(st,j) && script_hasdata(st,j + 1) && script_hasdata(st,j + 2); i++, j++ ){ + // Option IDs + data = script_getdata(st, j); + + if( !mail_sub( st, data, sd, j + 1, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + for( k = 0; k < num_items && start < end; k++, start++ ){ + msg.item[k].option[i].id = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + + script_removetop(st, -1, 0); + } + + j++; + + // Option values + data = script_getdata(st, j); + + if( !mail_sub( st, data, sd, j + 1, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + for( k = 0; k < num_items && start < end; k++, start++ ){ + msg.item[k].option[i].value = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + + script_removetop(st, -1, 0); + } + + j++; + + // Option parameters + data = script_getdata(st, j); + + if( !mail_sub( st, data, sd, j + 1, &name, &start, &end, &id ) ){ + return SCRIPT_CMD_FAILURE; + } + + for( k = 0; k < num_items && start < end; k++, start++ ){ + msg.item[k].option[i].param = (int32)__64BPRTSIZE( get_val2( st, reference_uid( id, start ), reference_getref( data ) ) ); + + script_removetop(st, -1, 0); + } + } + + // Break the pseudo scope + break; + } + + msg.status = MAIL_NEW; + msg.type = MAIL_INBOX_NORMAL; + msg.timestamp = time(NULL); + + intif_Mail_send(0, &msg); + + return SCRIPT_CMD_SUCCESS; +} + /** * Swaps position of two array elements. * This function does not guarantee that the array is accessible, so the burden fall to the caller. @@ -23926,6 +24146,7 @@ struct script_function buildin_func[] = { // NPC interaction BUILDIN_DEF(mes,"s*"), BUILDIN_DEF(next,""), + BUILDIN_DEF(clear,""), BUILDIN_DEF(close,""), BUILDIN_DEF(close2,""), BUILDIN_DEF(menu,"sl*"), @@ -23955,6 +24176,8 @@ struct script_function buildin_func[] = { BUILDIN_DEF(getarraysize,"r"), BUILDIN_DEF(deletearray,"r?"), BUILDIN_DEF(getelementofarray,"ri"), + BUILDIN_DEF(inarray,"rv"), + BUILDIN_DEF(countinarray,"rr"), BUILDIN_DEF(getitem,"vi?"), BUILDIN_DEF(rentitem,"vi?"), BUILDIN_DEF(rentitem2,"viiiiiiii?"), @@ -24016,7 +24239,7 @@ struct script_function buildin_func[] = { BUILDIN_DEF(downrefitem,"i??"), BUILDIN_DEF(statusup,"i?"), BUILDIN_DEF(statusup2,"ii?"), - BUILDIN_DEF(bonus,"iv"), + BUILDIN_DEF(bonus,"i?"), BUILDIN_DEF2(bonus,"bonus2","ivi"), BUILDIN_DEF2(bonus,"bonus3","ivii"), BUILDIN_DEF2(bonus,"bonus4","ivvii"), @@ -24520,6 +24743,7 @@ struct script_function buildin_func[] = { BUILDIN_DEF2(round, "ceil", "i"), BUILDIN_DEF2(round, "floor", "i"), BUILDIN_DEF(getequiptradability, "i?"), + BUILDIN_DEF(mail, "isss*"), BUILDIN_DEF(sortarray, "r"), #include "../custom/script_def.inc" diff --git a/src/map/script.hpp b/src/map/script.hpp index 7050c69911..51b196e1e4 100644 --- a/src/map/script.hpp +++ b/src/map/script.hpp @@ -4,9 +4,9 @@ #ifndef _SCRIPT_HPP_ #define _SCRIPT_HPP_ -#include "../common/cbasetypes.h" -#include "../common/db.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/db.hpp" +#include "../common/mmo.hpp" #define NUM_WHISPER_VAR 10 @@ -378,7 +378,9 @@ enum petinfo_types { PETINFO_HUNGRY, PETINFO_RENAMED, PETINFO_LEVEL, - PETINFO_BLOCKID + PETINFO_BLOCKID, + PETINFO_EGGID, + PETINFO_FOODID }; enum questinfo_types { @@ -470,6 +472,7 @@ enum unitdata_mobtypes { UMOB_AMOTION, UMOB_ADELAY, UMOB_DMOTION, + UMOB_TARGETID, }; enum unitdata_homuntypes { @@ -512,6 +515,7 @@ enum unitdata_homuntypes { UHOM_AMOTION, UHOM_ADELAY, UHOM_DMOTION, + UHOM_TARGETID, }; enum unitdata_pettypes { @@ -591,6 +595,7 @@ enum unitdata_merctypes { UMER_AMOTION, UMER_ADELAY, UMER_DMOTION, + UMER_TARGETID, }; enum unitdata_elemtypes { @@ -632,6 +637,7 @@ enum unitdata_elemtypes { UELE_AMOTION, UELE_ADELAY, UELE_DMOTION, + UELE_TARGETID, }; enum unitdata_npctypes { @@ -1865,6 +1871,35 @@ enum e_hat_effects { HAT_EF_QSCARABA, HAT_EF_FSTONE, HAT_EF_MAGICCIRCLE, + HAT_EF_GODCLASS, + HAT_EF_GODCLASS2, + HAT_EF_LEVEL99_RED, + HAT_EF_LEVEL99_ULTRAMARINE, + HAT_EF_LEVEL99_CYAN, + HAT_EF_LEVEL99_LIME, + HAT_EF_LEVEL99_VIOLET, + HAT_EF_LEVEL99_LILAC, + HAT_EF_LEVEL99_SUN_ORANGE, + HAT_EF_LEVEL99_DEEP_PINK, + HAT_EF_LEVEL99_BLACK, + HAT_EF_LEVEL99_WHITE, + HAT_EF_LEVEL160_RED, + HAT_EF_LEVEL160_ULTRAMARINE, + HAT_EF_LEVEL160_CYAN, + HAT_EF_LEVEL160_LIME, + HAT_EF_LEVEL160_VIOLET, + HAT_EF_LEVEL160_LILAC, + HAT_EF_LEVEL160_SUN_ORANGE, + HAT_EF_LEVEL160_DEEP_PINK, + HAT_EF_LEVEL160_BLACK, + HAT_EF_LEVEL160_WHITE, + HAT_EF_FULL_BLOOMCHERRY_TREE, + HAT_EF_C_BLESSINGS_OF_SOUL, + HAT_EF_MANYSTARS, + HAT_EF_SUBJECT_AURA_GOLD, + HAT_EF_SUBJECT_AURA_WHITE, + HAT_EF_SUBJECT_AURA_RED, + HAT_EF_C_SHINING_ANGEL_WING, HAT_EF_MAX }; @@ -1943,10 +1978,6 @@ int script_reg_destroy(DBKey key, DBData *data, va_list ap); void script_generic_ui_array_expand(unsigned int plus); unsigned int *script_array_cpy_list(struct script_array *sa); -#ifdef BETA_THREAD_TEST -void queryThread_log(char * entry, int length); -#endif - bool script_check_RegistryVariableLength(int pType, const char *val, size_t* vlen); #endif /* _SCRIPT_HPP_ */ diff --git a/src/map/script_constants.hpp b/src/map/script_constants.hpp index e02d557b2c..5f56440090 100644 --- a/src/map/script_constants.hpp +++ b/src/map/script_constants.hpp @@ -8,6 +8,8 @@ #define export_constant2(a,b) script_set_constant(a,b,false,false) #define export_constant_offset(a,offset) script_set_constant(#a + (offset),a,false,false) #define export_parameter(a,b) script_set_constant(a,b,true,false) + #define export_deprecated_constant(a) script_set_constant(#a,a,false,true) + #define export_deprecated_constant2(a,b) script_set_constant(a,b,false,true) /* min and maximum variable value */ export_constant(INT_MIN); @@ -209,6 +211,13 @@ export_constant(JOB_BABY_STAR_GLADIATOR2); + export_constant(JOB_STAR_EMPEROR); + export_constant(JOB_SOUL_REAPER); + export_constant(JOB_BABY_STAR_EMPEROR); + export_constant(JOB_BABY_SOUL_REAPER); + export_constant(JOB_STAR_EMPEROR2); + export_constant(JOB_BABY_STAR_EMPEROR2); + /* EA jobs */ export_constant2("EAJL_2_1",JOBL_2_1); export_constant2("EAJL_2_2",JOBL_2_2); @@ -311,6 +320,7 @@ export_constant2("EAJ_ARCH_BISHOP",MAPID_ARCH_BISHOP); export_constant2("EAJ_MECHANIC",MAPID_MECHANIC); export_constant2("EAJ_GUILLOTINE_CROSS",MAPID_GUILLOTINE_CROSS); + export_constant2("EAJ_STAR_EMPEROR",MAPID_STAR_EMPEROR); export_constant2("EAJ_ROYAL_GUARD",MAPID_ROYAL_GUARD); export_constant2("EAJ_SORCERER",MAPID_SORCERER); @@ -318,6 +328,7 @@ export_constant2("EAJ_SURA",MAPID_SURA); export_constant2("EAJ_GENETIC",MAPID_GENETIC); export_constant2("EAJ_SHADOW_CHASER",MAPID_SHADOW_CHASER); + export_constant2("EAJ_SOUL_REAPER",MAPID_SOUL_REAPER); export_constant2("EAJ_RUNE_KNIGHT_T",MAPID_RUNE_KNIGHT_T); export_constant2("EAJ_WARLOCK_T",MAPID_WARLOCK_T); @@ -339,6 +350,7 @@ export_constant2("EAJ_BABY_BISHOP",MAPID_BABY_BISHOP); export_constant2("EAJ_BABY_MECHANIC",MAPID_BABY_MECHANIC); export_constant2("EAJ_BABY_CROSS",MAPID_BABY_CROSS); + export_constant2("EAJ_BABY_STAR_EMPEROR",MAPID_BABY_STAR_EMPEROR); export_constant2("EAJ_BABY_GUARD",MAPID_BABY_GUARD); export_constant2("EAJ_BABY_SORCERER",MAPID_BABY_SORCERER); @@ -346,6 +358,7 @@ export_constant2("EAJ_BABY_SURA",MAPID_BABY_SURA); export_constant2("EAJ_BABY_GENETIC",MAPID_BABY_GENETIC); export_constant2("EAJ_BABY_CHASER",MAPID_BABY_CHASER); + export_constant2("EAJ_BABY_SOUL_REAPER",MAPID_BABY_SOUL_REAPER); export_constant2("EAJ_SUPER_NOVICE",MAPID_SUPER_NOVICE); export_constant2("EAJ_SUPER_BABY",MAPID_SUPER_BABY); @@ -707,6 +720,7 @@ export_constant2("bIgnoreDefClassRate", SP_IGNORE_DEF_CLASS_RATE); export_constant2("bRegenPercentHP", SP_REGEN_PERCENT_HP); export_constant2("bRegenPercentSP", SP_REGEN_PERCENT_SP); + export_constant2("bSkillDelay",SP_SKILL_DELAY); /* equip indices */ export_constant(EQI_COMPOUND_ON); @@ -1481,1059 +1495,2081 @@ export_constant(SC_DORAM_SVSP); export_constant(SC_FALLEN_ANGEL); export_constant(SC_CHEERUP); + export_constant(SC_DRESSUP); + export_constant(SC_GLASTHEIM_ATK); + export_constant(SC_GLASTHEIM_DEF); + export_constant(SC_GLASTHEIM_HEAL); + export_constant(SC_GLASTHEIM_HIDDEN); + export_constant(SC_GLASTHEIM_STATE); + export_constant(SC_GLASTHEIM_ITEMDEF); + export_constant(SC_GLASTHEIM_HPSP); #ifdef RENEWAL export_constant(SC_EXTREMITYFIST2); #endif /* status icons */ - export_constant(SI_BLANK); - export_constant(SI_PROVOKE); - export_constant(SI_ENDURE); - export_constant(SI_TWOHANDQUICKEN); - export_constant(SI_CONCENTRATE); - export_constant(SI_HIDING); - export_constant(SI_CLOAKING); - export_constant(SI_ENCPOISON); - export_constant(SI_POISONREACT); - export_constant(SI_QUAGMIRE); - export_constant(SI_ANGELUS); - export_constant(SI_BLESSING); - export_constant(SI_SIGNUMCRUCIS); - export_constant(SI_INCREASEAGI); - export_constant(SI_DECREASEAGI); - export_constant(SI_SLOWPOISON); - export_constant(SI_IMPOSITIO); - export_constant(SI_SUFFRAGIUM); - export_constant(SI_ASPERSIO); - export_constant(SI_BENEDICTIO); - export_constant(SI_KYRIE); - export_constant(SI_MAGNIFICAT); - export_constant(SI_GLORIA); - export_constant(SI_AETERNA); - export_constant(SI_ADRENALINE); - export_constant(SI_WEAPONPERFECTION); - export_constant(SI_OVERTHRUST); - export_constant(SI_MAXIMIZEPOWER); - export_constant(SI_RIDING); - export_constant(SI_FALCON); - export_constant(SI_TRICKDEAD); - export_constant(SI_LOUD); - export_constant(SI_ENERGYCOAT); - export_constant(SI_BROKENARMOR); - export_constant(SI_BROKENWEAPON); - export_constant(SI_HALLUCINATION); - export_constant(SI_WEIGHT50); - export_constant(SI_WEIGHT90); - export_constant(SI_ASPDPOTION0); - export_constant(SI_ASPDPOTION1); - export_constant(SI_ASPDPOTION2); - export_constant(SI_ASPDPOTIONINFINITY); - export_constant(SI_SPEEDPOTION1); + export_deprecated_constant(SI_BLANK); + export_deprecated_constant(SI_PROVOKE); + export_deprecated_constant(SI_ENDURE); + export_deprecated_constant(SI_TWOHANDQUICKEN); + export_deprecated_constant(SI_CONCENTRATE); + export_deprecated_constant(SI_HIDING); + export_deprecated_constant(SI_CLOAKING); + export_deprecated_constant(SI_ENCPOISON); + export_deprecated_constant(SI_POISONREACT); + export_deprecated_constant(SI_QUAGMIRE); + export_deprecated_constant(SI_ANGELUS); + export_deprecated_constant(SI_BLESSING); + export_deprecated_constant(SI_SIGNUMCRUCIS); + export_deprecated_constant(SI_INCREASEAGI); + export_deprecated_constant(SI_DECREASEAGI); + export_deprecated_constant(SI_SLOWPOISON); + export_deprecated_constant(SI_IMPOSITIO); + export_deprecated_constant(SI_SUFFRAGIUM); + export_deprecated_constant(SI_ASPERSIO); + export_deprecated_constant(SI_BENEDICTIO); + export_deprecated_constant(SI_KYRIE); + export_deprecated_constant(SI_MAGNIFICAT); + export_deprecated_constant(SI_GLORIA); + export_deprecated_constant(SI_AETERNA); + export_deprecated_constant(SI_ADRENALINE); + export_deprecated_constant(SI_WEAPONPERFECTION); + export_deprecated_constant(SI_OVERTHRUST); + export_deprecated_constant(SI_MAXIMIZEPOWER); + export_deprecated_constant(SI_RIDING); + export_deprecated_constant(SI_FALCON); + export_deprecated_constant(SI_TRICKDEAD); + export_deprecated_constant(SI_LOUD); + export_deprecated_constant(SI_ENERGYCOAT); + export_deprecated_constant(SI_BROKENARMOR); + export_deprecated_constant(SI_BROKENWEAPON); + export_deprecated_constant(SI_HALLUCINATION); + export_deprecated_constant(SI_WEIGHT50); + export_deprecated_constant(SI_WEIGHT90); + export_deprecated_constant(SI_ASPDPOTION0); + export_deprecated_constant(SI_ASPDPOTION1); + export_deprecated_constant(SI_ASPDPOTION2); + export_deprecated_constant(SI_ASPDPOTIONINFINITY); + export_deprecated_constant(SI_SPEEDPOTION1); // disabled source side, does not make sense to export it //export_constant(SI_MOVHASTE_INFINITY); - export_constant(SI_AUTOCOUNTER); - export_constant(SI_SPLASHER); - export_constant(SI_ANKLESNARE); - export_constant(SI_ACTIONDELAY); + export_deprecated_constant(SI_AUTOCOUNTER); + export_deprecated_constant(SI_SPLASHER); + export_deprecated_constant(SI_ANKLESNARE); + export_deprecated_constant(SI_ACTIONDELAY); // disabled source side, does not make sense to export it //export_constant(SI_NOACTION); // disabled source side, does not make sense to export it //export_constant(SI_IMPOSSIBLEPICKUP); - export_constant(SI_BARRIER); - export_constant(SI_STRIPWEAPON); - export_constant(SI_STRIPSHIELD); - export_constant(SI_STRIPARMOR); - export_constant(SI_STRIPHELM); - export_constant(SI_CP_WEAPON); - export_constant(SI_CP_SHIELD); - export_constant(SI_CP_ARMOR); - export_constant(SI_CP_HELM); - export_constant(SI_AUTOGUARD); - export_constant(SI_REFLECTSHIELD); - export_constant(SI_DEVOTION); - export_constant(SI_PROVIDENCE); - export_constant(SI_DEFENDER); - export_constant(SI_MAGICROD); - // disabled source side, does not make sense to export it - //export_constant(SI_WEAPONPROPERTY); - export_constant(SI_AUTOSPELL); - // disabled source side, does not make sense to export it - //export_constant(SI_SPECIALZONE); - // disabled source side, does not make sense to export it - //export_constant(SI_MASK); - export_constant(SI_SPEARQUICKEN); - export_constant(SI_BDPLAYING); - export_constant(SI_WHISTLE); - export_constant(SI_ASSASSINCROSS); - export_constant(SI_POEMBRAGI); - export_constant(SI_APPLEIDUN); - export_constant(SI_HUMMING); - export_constant(SI_DONTFORGETME); - export_constant(SI_FORTUNEKISS); - export_constant(SI_SERVICEFORYOU); - export_constant(SI_RICHMANKIM); - export_constant(SI_ETERNALCHAOS); - export_constant(SI_DRUMBATTLEFIELD); - export_constant(SI_RINGNIBELUNGEN); - export_constant(SI_ROKISWEIL); - export_constant(SI_INTOABYSS); - export_constant(SI_SIEGFRIED); - export_constant(SI_BLADESTOP); - export_constant(SI_EXPLOSIONSPIRITS); - export_constant(SI_STEELBODY); - export_constant(SI_EXTREMITYFIST); - // disabled source side, does not make sense to export it - //export_constant(SI_COMBOATTACK); - export_constant(SI_FIREWEAPON); - export_constant(SI_WATERWEAPON); - export_constant(SI_WINDWEAPON); - export_constant(SI_EARTHWEAPON); - // disabled source side, does not make sense to export it - //export_constant(SI_MAGICATTACK); - export_constant(SI_STOP); - // disabled source side, does not make sense to export it - //export_constant(SI_WEAPONBRAKER); - export_constant(SI_UNDEAD); - // disabled source side, does not make sense to export it - //export_constant(SI_POWERUP); - // disabled source side, does not make sense to export it - //export_constant(SI_AGIUP); - // disabled source side, does not make sense to export it - //export_constant(SI_SIEGEMODE); - // disabled source side, does not make sense to export it - //export_constant(SI_INVISIBLE); - // disabled source side, does not make sense to export it - //export_constant(SI_STATUSONE); - export_constant(SI_AURABLADE); - export_constant(SI_PARRYING); - export_constant(SI_CONCENTRATION); - export_constant(SI_TENSIONRELAX); - export_constant(SI_BERSERK); - // disabled source side, does not make sense to export it - //export_constant(SI_SACRIFICE); - export_constant(SI_GOSPEL); - export_constant(SI_ASSUMPTIO); - export_constant(SI_BASILICA); - export_constant(SI_LANDENDOW); - export_constant(SI_MAGICPOWER); - export_constant(SI_EDP); - export_constant(SI_TRUESIGHT); - export_constant(SI_WINDWALK); - export_constant(SI_MELTDOWN); - export_constant(SI_CARTBOOST); - export_constant(SI_CHASEWALK); - export_constant(SI_REJECTSWORD); - export_constant(SI_MARIONETTE); - export_constant(SI_MARIONETTE2); - export_constant(SI_MOONLIT); - export_constant(SI_BLEEDING); - export_constant(SI_JOINTBEAT); - export_constant(SI_MINDBREAKER); - export_constant(SI_MEMORIZE); - export_constant(SI_FOGWALL); - export_constant(SI_SPIDERWEB); - export_constant(SI_BABY); - // disabled source side, does not make sense to export it - //export_constant(SI_SUB_WEAPONPROPERTY); - export_constant(SI_AUTOBERSERK); - export_constant(SI_RUN); - export_constant(SI_BUMP); - export_constant(SI_READYSTORM); - // disabled source side, does not make sense to export it - //export_constant(SI_STORMKICK_READY); - export_constant(SI_READYDOWN); - // disabled source side, does not make sense to export it - //export_constant(SI_DOWNKICK_READY); - export_constant(SI_READYTURN); - // disabled source side, does not make sense to export it - //export_constant(SI_TURNKICK_READY); - export_constant(SI_READYCOUNTER); - // disabled source side, does not make sense to export it - //export_constant(SI_COUNTER_READY); - export_constant(SI_DODGE); - // disabled source side, does not make sense to export it - //export_constant(SI_DODGE_READY); - export_constant(SI_SPURT); - export_constant(SI_SHADOWWEAPON); - export_constant(SI_ADRENALINE2); - export_constant(SI_GHOSTWEAPON); - export_constant(SI_SPIRIT); - export_constant(SI_PLUSATTACKPOWER); - export_constant(SI_PLUSMAGICPOWER); - export_constant(SI_DEVIL); - export_constant(SI_KAITE); - export_constant(SI_SWOO); - // disabled source side, does not make sense to export it - //export_constant(SI_STAR2); - export_constant(SI_KAIZEL); - export_constant(SI_KAAHI); - export_constant(SI_KAUPE); - export_constant(SI_SMA); - export_constant(SI_NIGHT); - export_constant(SI_ONEHAND); + export_deprecated_constant(SI_BARRIER); + export_deprecated_constant(SI_STRIPWEAPON); + export_deprecated_constant(SI_STRIPSHIELD); + export_deprecated_constant(SI_STRIPARMOR); + export_deprecated_constant(SI_STRIPHELM); + export_deprecated_constant(SI_CP_WEAPON); + export_deprecated_constant(SI_CP_SHIELD); + export_deprecated_constant(SI_CP_ARMOR); + export_deprecated_constant(SI_CP_HELM); + export_deprecated_constant(SI_AUTOGUARD); + export_deprecated_constant(SI_REFLECTSHIELD); + export_deprecated_constant(SI_DEVOTION); + export_deprecated_constant(SI_PROVIDENCE); + export_deprecated_constant(SI_DEFENDER); + export_deprecated_constant(SI_MAGICROD); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_WEAPONPROPERTY); + export_deprecated_constant(SI_AUTOSPELL); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_SPECIALZONE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_MASK); + export_deprecated_constant(SI_SPEARQUICKEN); + export_deprecated_constant(SI_BDPLAYING); + export_deprecated_constant(SI_WHISTLE); + export_deprecated_constant(SI_ASSASSINCROSS); + export_deprecated_constant(SI_POEMBRAGI); + export_deprecated_constant(SI_APPLEIDUN); + export_deprecated_constant(SI_HUMMING); + export_deprecated_constant(SI_DONTFORGETME); + export_deprecated_constant(SI_FORTUNEKISS); + export_deprecated_constant(SI_SERVICEFORYOU); + export_deprecated_constant(SI_RICHMANKIM); + export_deprecated_constant(SI_ETERNALCHAOS); + export_deprecated_constant(SI_DRUMBATTLEFIELD); + export_deprecated_constant(SI_RINGNIBELUNGEN); + export_deprecated_constant(SI_ROKISWEIL); + export_deprecated_constant(SI_INTOABYSS); + export_deprecated_constant(SI_SIEGFRIED); + export_deprecated_constant(SI_BLADESTOP); + export_deprecated_constant(SI_EXPLOSIONSPIRITS); + export_deprecated_constant(SI_STEELBODY); + export_deprecated_constant(SI_EXTREMITYFIST); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_COMBOATTACK); + export_deprecated_constant(SI_FIREWEAPON); + export_deprecated_constant(SI_WATERWEAPON); + export_deprecated_constant(SI_WINDWEAPON); + export_deprecated_constant(SI_EARTHWEAPON); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_MAGICATTACK); + export_deprecated_constant(SI_STOP); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_WEAPONBRAKER); + export_deprecated_constant(SI_UNDEAD); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_POWERUP); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_AGIUP); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_SIEGEMODE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_INVISIBLE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_STATUSONE); + export_deprecated_constant(SI_AURABLADE); + export_deprecated_constant(SI_PARRYING); + export_deprecated_constant(SI_CONCENTRATION); + export_deprecated_constant(SI_TENSIONRELAX); + export_deprecated_constant(SI_BERSERK); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_SACRIFICE); + export_deprecated_constant(SI_GOSPEL); + export_deprecated_constant(SI_ASSUMPTIO); + export_deprecated_constant(SI_BASILICA); + export_deprecated_constant(SI_LANDENDOW); + export_deprecated_constant(SI_MAGICPOWER); + export_deprecated_constant(SI_EDP); + export_deprecated_constant(SI_TRUESIGHT); + export_deprecated_constant(SI_WINDWALK); + export_deprecated_constant(SI_MELTDOWN); + export_deprecated_constant(SI_CARTBOOST); + export_deprecated_constant(SI_CHASEWALK); + export_deprecated_constant(SI_REJECTSWORD); + export_deprecated_constant(SI_MARIONETTE); + export_deprecated_constant(SI_MARIONETTE2); + export_deprecated_constant(SI_MOONLIT); + export_deprecated_constant(SI_BLEEDING); + export_deprecated_constant(SI_JOINTBEAT); + export_deprecated_constant(SI_MINDBREAKER); + export_deprecated_constant(SI_MEMORIZE); + export_deprecated_constant(SI_FOGWALL); + export_deprecated_constant(SI_SPIDERWEB); + export_deprecated_constant(SI_BABY); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_SUB_WEAPONPROPERTY); + export_deprecated_constant(SI_AUTOBERSERK); + export_deprecated_constant(SI_RUN); + export_deprecated_constant(SI_BUMP); + export_deprecated_constant(SI_READYSTORM); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_STORMKICK_READY); + export_deprecated_constant(SI_READYDOWN); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_DOWNKICK_READY); + export_deprecated_constant(SI_READYTURN); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_TURNKICK_READY); + export_deprecated_constant(SI_READYCOUNTER); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_COUNTER_READY); + export_deprecated_constant(SI_DODGE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_DODGE_READY); + export_deprecated_constant(SI_SPURT); + export_deprecated_constant(SI_SHADOWWEAPON); + export_deprecated_constant(SI_ADRENALINE2); + export_deprecated_constant(SI_GHOSTWEAPON); + export_deprecated_constant(SI_SPIRIT); + export_deprecated_constant(SI_PLUSATTACKPOWER); + export_deprecated_constant(SI_PLUSMAGICPOWER); + export_deprecated_constant(SI_DEVIL); + export_deprecated_constant(SI_KAITE); + export_deprecated_constant(SI_SWOO); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_STAR2); + export_deprecated_constant(SI_KAIZEL); + export_deprecated_constant(SI_KAAHI); + export_deprecated_constant(SI_KAUPE); + export_deprecated_constant(SI_SMA); + export_deprecated_constant(SI_NIGHT); + export_deprecated_constant(SI_ONEHAND); // disabled source side, does not make sense to export it - //export_constant(SI_FRIEND); + //export_deprecated_constant(SI_FRIEND); // disabled source side, does not make sense to export it - //export_constant(SI_FRIENDUP); + //export_deprecated_constant(SI_FRIENDUP); // disabled source side, does not make sense to export it - //export_constant(SI_SG_WARM); - export_constant(SI_WARM); + //export_deprecated_constant(SI_SG_WARM); + export_deprecated_constant(SI_WARM); // disabled source side, does not make sense to export it - //export_constant(SI_EMOTION); - export_constant(SI_SUN_COMFORT); - export_constant(SI_MOON_COMFORT); - export_constant(SI_STAR_COMFORT); + //export_deprecated_constant(SI_EMOTION); + export_deprecated_constant(SI_SUN_COMFORT); + export_deprecated_constant(SI_MOON_COMFORT); + export_deprecated_constant(SI_STAR_COMFORT); // disabled source side, does not make sense to export it - //export_constant(SI_EXPUP); - export_constant(SI_GDSKILL_BATTLEORDER); - export_constant(SI_GDSKILL_REGENERATION); + //export_deprecated_constant(SI_EXPUP); + export_deprecated_constant(SI_GDSKILL_BATTLEORDER); + export_deprecated_constant(SI_GDSKILL_REGENERATION); // disabled source side, does not make sense to export it - //export_constant(SI_GDSKILL_POSTDELAY); + //export_deprecated_constant(SI_GDSKILL_POSTDELAY); // disabled source side, does not make sense to export it - //export_constant(SI_RESISTHANDICAP); + //export_deprecated_constant(SI_RESISTHANDICAP); // disabled source side, does not make sense to export it - //export_constant(SI_MAXHPPERCENT); + //export_deprecated_constant(SI_MAXHPPERCENT); // disabled source side, does not make sense to export it - //export_constant(SI_MAXSPPERCENT); + //export_deprecated_constant(SI_MAXSPPERCENT); // disabled source side, does not make sense to export it - //export_constant(SI_DEFENCE); + //export_deprecated_constant(SI_DEFENCE); // disabled source side, does not make sense to export it - //export_constant(SI_SLOWDOWN); - export_constant(SI_PRESERVE); - export_constant(SI_CHASEWALK2); + //export_deprecated_constant(SI_SLOWDOWN); + export_deprecated_constant(SI_PRESERVE); + export_deprecated_constant(SI_CHASEWALK2); // disabled source side, does not make sense to export it - //export_constant(SI_NOT_EXTREMITYFIST); - export_constant(SI_INTRAVISION); + //export_deprecated_constant(SI_NOT_EXTREMITYFIST); + export_deprecated_constant(SI_INTRAVISION); // disabled source side, does not make sense to export it - //export_constant(SI_MOVESLOW_POTION); - export_constant(SI_DOUBLECAST); - export_constant(SI_GRAVITATION); - export_constant(SI_MAXOVERTHRUST); - export_constant(SI_LONGING); - export_constant(SI_HERMODE); - export_constant(SI_TAROT); + //export_deprecated_constant(SI_MOVESLOW_POTION); + export_deprecated_constant(SI_DOUBLECAST); + export_deprecated_constant(SI_GRAVITATION); + export_deprecated_constant(SI_MAXOVERTHRUST); + export_deprecated_constant(SI_LONGING); + export_deprecated_constant(SI_HERMODE); + export_deprecated_constant(SI_TAROT); // disabled source side, does not make sense to export it - //export_constant(SI_HLIF_AVOID); + //export_deprecated_constant(SI_HLIF_AVOID); // disabled source side, does not make sense to export it - //export_constant(SI_HFLI_FLEET); + //export_deprecated_constant(SI_HFLI_FLEET); // disabled source side, does not make sense to export it - //export_constant(SI_HFLI_SPEED); + //export_deprecated_constant(SI_HFLI_SPEED); // disabled source side, does not make sense to export it - //export_constant(SI_HLIF_CHANGE); + //export_deprecated_constant(SI_HLIF_CHANGE); // disabled source side, does not make sense to export it - //export_constant(SI_HAMI_BLOODLUST); - export_constant(SI_SHRINK); - export_constant(SI_SIGHTBLASTER); - export_constant(SI_WINKCHARM); - export_constant(SI_CLOSECONFINE); - export_constant(SI_CLOSECONFINE2); + //export_deprecated_constant(SI_HAMI_BLOODLUST); + export_deprecated_constant(SI_SHRINK); + export_deprecated_constant(SI_SIGHTBLASTER); + export_deprecated_constant(SI_WINKCHARM); + export_deprecated_constant(SI_CLOSECONFINE); + export_deprecated_constant(SI_CLOSECONFINE2); // disabled source side, does not make sense to export it - //export_constant(SI_DISABLEMOVE); - export_constant(SI_MADNESSCANCEL); - export_constant(SI_GATLINGFEVER); - export_constant(SI_EARTHSCROLL); - export_constant(SI_UTSUSEMI); - export_constant(SI_BUNSINJYUTSU); - export_constant(SI_NEN); - export_constant(SI_ADJUSTMENT); - export_constant(SI_ACCURACY); + //export_deprecated_constant(SI_DISABLEMOVE); + export_deprecated_constant(SI_MADNESSCANCEL); + export_deprecated_constant(SI_GATLINGFEVER); + export_deprecated_constant(SI_EARTHSCROLL); + export_deprecated_constant(SI_UTSUSEMI); + export_deprecated_constant(SI_BUNSINJYUTSU); + export_deprecated_constant(SI_NEN); + export_deprecated_constant(SI_ADJUSTMENT); + export_deprecated_constant(SI_ACCURACY); // disabled source side, does not make sense to export it - //export_constant(SI_NJ_SUITON); + //export_deprecated_constant(SI_NJ_SUITON); // disabled source side, does not make sense to export it - //export_constant(SI_PET); + //export_deprecated_constant(SI_PET); // disabled source side, does not make sense to export it - //export_constant(SI_MENTAL); + //export_deprecated_constant(SI_MENTAL); // disabled source side, does not make sense to export it - //export_constant(SI_EXPMEMORY); + //export_deprecated_constant(SI_EXPMEMORY); // disabled source side, does not make sense to export it - //export_constant(SI_PERFORMANCE); + //export_deprecated_constant(SI_PERFORMANCE); // disabled source side, does not make sense to export it - //export_constant(SI_GAIN); + //export_deprecated_constant(SI_GAIN); // disabled source side, does not make sense to export it - //export_constant(SI_GRIFFON); + //export_deprecated_constant(SI_GRIFFON); // disabled source side, does not make sense to export it - //export_constant(SI_DRIFT); + //export_deprecated_constant(SI_DRIFT); // disabled source side, does not make sense to export it - //export_constant(SI_WALLSHIFT); + //export_deprecated_constant(SI_WALLSHIFT); // disabled source side, does not make sense to export it - //export_constant(SI_REINCARNATION); + //export_deprecated_constant(SI_REINCARNATION); // disabled source side, does not make sense to export it - //export_constant(SI_PATTACK); + //export_deprecated_constant(SI_PATTACK); // disabled source side, does not make sense to export it - //export_constant(SI_PSPEED); + //export_deprecated_constant(SI_PSPEED); // disabled source side, does not make sense to export it - //export_constant(SI_PDEFENSE); + //export_deprecated_constant(SI_PDEFENSE); // disabled source side, does not make sense to export it - //export_constant(SI_PCRITICAL); + //export_deprecated_constant(SI_PCRITICAL); // disabled source side, does not make sense to export it - //export_constant(SI_RANKING); + //export_deprecated_constant(SI_RANKING); // disabled source side, does not make sense to export it - //export_constant(SI_PTRIPLE); + //export_deprecated_constant(SI_PTRIPLE); // disabled source side, does not make sense to export it - //export_constant(SI_DENERGY); + //export_deprecated_constant(SI_DENERGY); // disabled source side, does not make sense to export it - //export_constant(SI_WAVE1); + //export_deprecated_constant(SI_WAVE1); // disabled source side, does not make sense to export it - //export_constant(SI_WAVE2); + //export_deprecated_constant(SI_WAVE2); // disabled source side, does not make sense to export it - //export_constant(SI_WAVE3); + //export_deprecated_constant(SI_WAVE3); // disabled source side, does not make sense to export it - //export_constant(SI_WAVE4); + //export_deprecated_constant(SI_WAVE4); // disabled source side, does not make sense to export it - //export_constant(SI_DAURA); + //export_deprecated_constant(SI_DAURA); // disabled source side, does not make sense to export it - //export_constant(SI_DFREEZER); + //export_deprecated_constant(SI_DFREEZER); // disabled source side, does not make sense to export it - //export_constant(SI_DPUNISH); + //export_deprecated_constant(SI_DPUNISH); // disabled source side, does not make sense to export it - //export_constant(SI_DBARRIER); + //export_deprecated_constant(SI_DBARRIER); // disabled source side, does not make sense to export it - //export_constant(SI_DWARNING); + //export_deprecated_constant(SI_DWARNING); // disabled source side, does not make sense to export it - //export_constant(SI_MOUSEWHEEL); + //export_deprecated_constant(SI_MOUSEWHEEL); // disabled source side, does not make sense to export it - //export_constant(SI_DGAUGE); + //export_deprecated_constant(SI_DGAUGE); // disabled source side, does not make sense to export it - //export_constant(SI_DACCEL); + //export_deprecated_constant(SI_DACCEL); // disabled source side, does not make sense to export it - //export_constant(SI_DBLOCK); - export_constant(SI_FOODSTR); - export_constant(SI_FOODAGI); - export_constant(SI_FOODVIT); - export_constant(SI_FOODDEX); - export_constant(SI_FOODINT); - export_constant(SI_FOODLUK); - export_constant(SI_FOODFLEE); - export_constant(SI_FOODHIT); - export_constant(SI_FOODCRI); - export_constant(SI_EXPBOOST); - export_constant(SI_LIFEINSURANCE); - export_constant(SI_ITEMBOOST); - export_constant(SI_BOSSMAPINFO); + //export_deprecated_constant(SI_DBLOCK); + export_deprecated_constant(SI_FOODSTR); + export_deprecated_constant(SI_FOODAGI); + export_deprecated_constant(SI_FOODVIT); + export_deprecated_constant(SI_FOODDEX); + export_deprecated_constant(SI_FOODINT); + export_deprecated_constant(SI_FOODLUK); + export_deprecated_constant(SI_FOODFLEE); + export_deprecated_constant(SI_FOODHIT); + export_deprecated_constant(SI_FOODCRI); + export_deprecated_constant(SI_EXPBOOST); + export_deprecated_constant(SI_LIFEINSURANCE); + export_deprecated_constant(SI_ITEMBOOST); + export_deprecated_constant(SI_BOSSMAPINFO); // disabled source side, does not make sense to export it - //export_constant(SI_DA_ENERGY); + //export_deprecated_constant(SI_DA_ENERGY); // disabled source side, does not make sense to export it - //export_constant(SI_DA_FIRSTSLOT); + //export_deprecated_constant(SI_DA_FIRSTSLOT); // disabled source side, does not make sense to export it - //export_constant(SI_DA_HEADDEF); + //export_deprecated_constant(SI_DA_HEADDEF); // disabled source side, does not make sense to export it - //export_constant(SI_DA_SPACE); + //export_deprecated_constant(SI_DA_SPACE); // disabled source side, does not make sense to export it - //export_constant(SI_DA_TRANSFORM); + //export_deprecated_constant(SI_DA_TRANSFORM); // disabled source side, does not make sense to export it - //export_constant(SI_DA_ITEMREBUILD); + //export_deprecated_constant(SI_DA_ITEMREBUILD); // disabled source side, does not make sense to export it - //export_constant(SI_DA_ILLUSION); + //export_deprecated_constant(SI_DA_ILLUSION); // disabled source side, does not make sense to export it - //export_constant(SI_DA_DARKPOWER); + //export_deprecated_constant(SI_DA_DARKPOWER); // disabled source side, does not make sense to export it - //export_constant(SI_DA_EARPLUG); + //export_deprecated_constant(SI_DA_EARPLUG); // disabled source side, does not make sense to export it - //export_constant(SI_DA_CONTRACT); + //export_deprecated_constant(SI_DA_CONTRACT); // disabled source side, does not make sense to export it - //export_constant(SI_DA_BLACK); + //export_deprecated_constant(SI_DA_BLACK); // disabled source side, does not make sense to export it - //export_constant(SI_DA_MAGICCART); + //export_deprecated_constant(SI_DA_MAGICCART); // disabled source side, does not make sense to export it - //export_constant(SI_CRYSTAL); + //export_deprecated_constant(SI_CRYSTAL); // disabled source side, does not make sense to export it - //export_constant(SI_DA_REBUILD); + //export_deprecated_constant(SI_DA_REBUILD); // disabled source side, does not make sense to export it - //export_constant(SI_DA_EDARKNESS); + //export_deprecated_constant(SI_DA_EDARKNESS); // disabled source side, does not make sense to export it - //export_constant(SI_DA_EGUARDIAN); + //export_deprecated_constant(SI_DA_EGUARDIAN); // disabled source side, does not make sense to export it - //export_constant(SI_DA_TIMEOUT); - export_constant(SI_FOOD_STR_CASH); - export_constant(SI_FOOD_AGI_CASH); - export_constant(SI_FOOD_VIT_CASH); - export_constant(SI_FOOD_DEX_CASH); - export_constant(SI_FOOD_INT_CASH); - export_constant(SI_FOOD_LUK_CASH); - export_constant(SI_MERC_FLEEUP); - export_constant(SI_MERC_ATKUP); - export_constant(SI_MERC_HPUP); - export_constant(SI_MERC_SPUP); - export_constant(SI_MERC_HITUP); - export_constant(SI_SLOWCAST); - // disabled source side, does not make sense to export it - //export_constant(SI_MAGICMIRROR); - // disabled source side, does not make sense to export it - //export_constant(SI_STONESKIN); - // disabled source side, does not make sense to export it - //export_constant(SI_ANTIMAGIC); - export_constant(SI_CRITICALWOUND); - // disabled source side, does not make sense to export it - //export_constant(SI_NPC_DEFENDER); - // disabled source side, does not make sense to export it - //export_constant(SI_NOACTION_WAIT); - export_constant(SI_MOVHASTE_HORSE); - export_constant(SI_DEF_RATE); - export_constant(SI_MDEF_RATE); - export_constant(SI_INCHEALRATE); - export_constant(SI_S_LIFEPOTION); - export_constant(SI_L_LIFEPOTION); - export_constant(SI_INCCRI); - export_constant(SI_PLUSAVOIDVALUE); - // disabled source side, does not make sense to export it - //export_constant(SI_ATKER_ASPD); - // disabled source side, does not make sense to export it - //export_constant(SI_TARGET_ASPD); - // disabled source side, does not make sense to export it - //export_constant(SI_ATKER_MOVESPEED); - export_constant(SI_ATKER_BLOOD); - export_constant(SI_TARGET_BLOOD); - export_constant(SI_ARMOR_PROPERTY); - export_constant(SI_REUSE_LIMIT_A); - export_constant(SI_HELLPOWER); - export_constant(SI_STEAMPACK); - export_constant(SI_REUSE_LIMIT_B); - export_constant(SI_REUSE_LIMIT_C); - export_constant(SI_REUSE_LIMIT_D); - export_constant(SI_REUSE_LIMIT_E); - export_constant(SI_REUSE_LIMIT_F); - export_constant(SI_INVINCIBLE); - export_constant(SI_CASH_PLUSONLYJOBEXP); - export_constant(SI_PARTYFLEE); - export_constant(SI_ANGEL_PROTECT); - export_constant(SI_ENDURE_MDEF); - export_constant(SI_ENCHANTBLADE); - export_constant(SI_DEATHBOUND); - export_constant(SI_REFRESH); - export_constant(SI_GIANTGROWTH); - export_constant(SI_STONEHARDSKIN); - export_constant(SI_VITALITYACTIVATION); - export_constant(SI_FIGHTINGSPIRIT); - export_constant(SI_ABUNDANCE); - export_constant(SI_REUSE_MILLENNIUMSHIELD); - export_constant(SI_REUSE_CRUSHSTRIKE); - export_constant(SI_REUSE_REFRESH); - export_constant(SI_REUSE_STORMBLAST); - export_constant(SI_VENOMIMPRESS); - export_constant(SI_EPICLESIS); - export_constant(SI_ORATIO); - export_constant(SI_LAUDAAGNUS); - export_constant(SI_LAUDARAMUS); - export_constant(SI_CLOAKINGEXCEED); - export_constant(SI_HALLUCINATIONWALK); - export_constant(SI_HALLUCINATIONWALK_POSTDELAY); - export_constant(SI_RENOVATIO); - export_constant(SI_WEAPONBLOCKING); - export_constant(SI_WEAPONBLOCKING_POSTDELAY); - export_constant(SI_ROLLINGCUTTER); - export_constant(SI_EXPIATIO); - export_constant(SI_POISONINGWEAPON); - export_constant(SI_TOXIN); - export_constant(SI_PARALYSE); - export_constant(SI_VENOMBLEED); - export_constant(SI_MAGICMUSHROOM); - export_constant(SI_DEATHHURT); - export_constant(SI_PYREXIA); - export_constant(SI_OBLIVIONCURSE); - export_constant(SI_LEECHESEND); - export_constant(SI_DUPLELIGHT); - export_constant(SI_FROSTMISTY); - export_constant(SI_FEARBREEZE); - export_constant(SI_ELECTRICSHOCKER); - export_constant(SI_MARSHOFABYSS); - export_constant(SI_RECOGNIZEDSPELL); - export_constant(SI_STASIS); - export_constant(SI_WUGRIDER); - export_constant(SI_WUGDASH); - export_constant(SI_WUGBITE); - export_constant(SI_CAMOUFLAGE); - export_constant(SI_ACCELERATION); - export_constant(SI_HOVERING); - export_constant(SI_SPHERE_1); - export_constant(SI_SPHERE_2); - export_constant(SI_SPHERE_3); - export_constant(SI_SPHERE_4); - export_constant(SI_SPHERE_5); - export_constant(SI_MVPCARD_TAOGUNKA); - export_constant(SI_MVPCARD_MISTRESS); - export_constant(SI_MVPCARD_ORCHERO); - export_constant(SI_MVPCARD_ORCLORD); - export_constant(SI_OVERHEAT_LIMITPOINT); - export_constant(SI_OVERHEAT); - export_constant(SI_SHAPESHIFT); - export_constant(SI_INFRAREDSCAN); - export_constant(SI_MAGNETICFIELD); - export_constant(SI_NEUTRALBARRIER); - export_constant(SI_NEUTRALBARRIER_MASTER); - export_constant(SI_STEALTHFIELD); - export_constant(SI_STEALTHFIELD_MASTER); - export_constant(SI_MANU_ATK); - export_constant(SI_MANU_DEF); - export_constant(SI_SPL_ATK); - export_constant(SI_SPL_DEF); - export_constant(SI_REPRODUCE); - export_constant(SI_MANU_MATK); - export_constant(SI_SPL_MATK); - export_constant(SI_STR_SCROLL); - export_constant(SI_INT_SCROLL); - export_constant(SI_LG_REFLECTDAMAGE); - export_constant(SI_FORCEOFVANGUARD); - export_constant(SI_BUCHEDENOEL); - export_constant(SI_AUTOSHADOWSPELL); - export_constant(SI_SHADOWFORM); - export_constant(SI_RAID); - export_constant(SI_SHIELDSPELL_DEF); - export_constant(SI_SHIELDSPELL_MDEF); - export_constant(SI_SHIELDSPELL_REF); - export_constant(SI_BODYPAINT); - export_constant(SI_EXEEDBREAK); - export_constant(SI_ADORAMUS); - export_constant(SI_PRESTIGE); - export_constant(SI_INVISIBILITY); - export_constant(SI_DEADLYINFECT); - export_constant(SI_BANDING); - export_constant(SI_EARTHDRIVE); - export_constant(SI_INSPIRATION); - export_constant(SI_ENERVATION); - export_constant(SI_GROOMY); - export_constant(SI_RAISINGDRAGON); - export_constant(SI_IGNORANCE); - export_constant(SI_LAZINESS); - export_constant(SI_LIGHTNINGWALK); - export_constant(SI_ACARAJE); - export_constant(SI_UNLUCKY); - export_constant(SI_CURSEDCIRCLE_ATKER); - export_constant(SI_CURSEDCIRCLE_TARGET); - export_constant(SI_WEAKNESS); - export_constant(SI_CRESCENTELBOW); - export_constant(SI_NOEQUIPACCESSARY); - export_constant(SI_STRIPACCESSARY); - export_constant(SI_MANHOLE); - export_constant(SI_POPECOOKIE); - export_constant(SI_FALLENEMPIRE); - export_constant(SI_GENTLETOUCH_ENERGYGAIN); - export_constant(SI_GENTLETOUCH_CHANGE); - export_constant(SI_GENTLETOUCH_REVITALIZE); - export_constant(SI_BLOODYLUST); - export_constant(SI_SWINGDANCE); - export_constant(SI_SYMPHONYOFLOVERS); - export_constant(SI_PROPERTYWALK); - export_constant(SI_SPELLFIST); - export_constant(SI_NETHERWORLD); - export_constant(SI_VOICEOFSIREN); - export_constant(SI_DEEPSLEEP); - export_constant(SI_SIRCLEOFNATURE); - export_constant(SI_COLD); - export_constant(SI_GLOOMYDAY); - export_constant(SI_SONGOFMANA); - export_constant(SI_CLOUDKILL); - export_constant(SI_DANCEWITHWUG); - export_constant(SI_RUSHWINDMILL); - export_constant(SI_ECHOSONG); - export_constant(SI_HARMONIZE); - export_constant(SI_STRIKING); - export_constant(SI_WARMER); - export_constant(SI_MOONLITSERENADE); - export_constant(SI_SATURDAYNIGHTFEVER); - export_constant(SI_SITDOWN_FORCE); - export_constant(SI_ANALYZE); - export_constant(SI_LERADSDEW); - export_constant(SI_MELODYOFSINK); - export_constant(SI_WARCRYOFBEYOND); - export_constant(SI_UNLIMITEDHUMMINGVOICE); - export_constant(SI_SPELLBOOK1); - export_constant(SI_SPELLBOOK2); - export_constant(SI_SPELLBOOK3); - export_constant(SI_FREEZE_SP); - export_constant(SI_GN_TRAINING_SWORD); - export_constant(SI_GN_REMODELING_CART); - export_constant(SI_GN_CARTBOOST); - export_constant(SI_FIXEDCASTINGTM_REDUCE); - export_constant(SI_THORNTRAP); - export_constant(SI_BLOODSUCKER); - export_constant(SI_SPORE_EXPLOSION); - export_constant(SI_DEMONIC_FIRE); - export_constant(SI_FIRE_EXPANSION_SMOKE_POWDER); - export_constant(SI_FIRE_EXPANSION_TEAR_GAS); - export_constant(SI_BLOCKING_PLAY); - export_constant(SI_MANDRAGORA); - export_constant(SI_ACTIVATE); - export_constant(SI_SECRAMENT); - export_constant(SI_ASSUMPTIO2); - export_constant(SI_TK_SEVENWIND); - export_constant(SI_LIMIT_ODINS_RECALL); - export_constant(SI_STOMACHACHE); - export_constant(SI_MYSTERIOUS_POWDER); - export_constant(SI_MELON_BOMB); - export_constant(SI_BANANA_BOMB_SITDOWN_POSTDELAY); - export_constant(SI_PROMOTE_HEALTH_RESERCH); - export_constant(SI_ENERGY_DRINK_RESERCH); - export_constant(SI_EXTRACT_WHITE_POTION_Z); - export_constant(SI_VITATA_500); - export_constant(SI_EXTRACT_SALAMINE_JUICE); - export_constant(SI_BOOST500); - export_constant(SI_FULL_SWING_K); - export_constant(SI_MANA_PLUS); - export_constant(SI_MUSTLE_M); - export_constant(SI_LIFE_FORCE_F); - export_constant(SI_VACUUM_EXTREME); - export_constant(SI_SAVAGE_STEAK); - export_constant(SI_COCKTAIL_WARG_BLOOD); - export_constant(SI_MINOR_BBQ); - export_constant(SI_SIROMA_ICE_TEA); - export_constant(SI_DROCERA_HERB_STEAMED); - export_constant(SI_PUTTI_TAILS_NOODLES); - export_constant(SI_BANANA_BOMB); - export_constant(SI_SUMMON_AGNI); - export_constant(SI_SPELLBOOK4); - export_constant(SI_SPELLBOOK5); - export_constant(SI_SPELLBOOK6); - export_constant(SI_SPELLBOOK7); - export_constant(SI_ELEMENTAL_AGGRESSIVE); - export_constant(SI_RETURN_TO_ELDICASTES); - export_constant(SI_BANDING_DEFENCE); - export_constant(SI_SKELSCROLL); - export_constant(SI_DISTRUCTIONSCROLL); - export_constant(SI_ROYALSCROLL); - export_constant(SI_IMMUNITYSCROLL); - export_constant(SI_MYSTICSCROLL); - export_constant(SI_BATTLESCROLL); - export_constant(SI_ARMORSCROLL); - export_constant(SI_FREYJASCROLL); - export_constant(SI_SOULSCROLL); - export_constant(SI_CIRCLE_OF_FIRE); - export_constant(SI_CIRCLE_OF_FIRE_OPTION); - export_constant(SI_FIRE_CLOAK); - export_constant(SI_FIRE_CLOAK_OPTION); - export_constant(SI_WATER_SCREEN); - export_constant(SI_WATER_SCREEN_OPTION); - export_constant(SI_WATER_DROP); - export_constant(SI_WATER_DROP_OPTION); - export_constant(SI_WIND_STEP); - export_constant(SI_WIND_STEP_OPTION); - export_constant(SI_WIND_CURTAIN); - export_constant(SI_WIND_CURTAIN_OPTION); - export_constant(SI_WATER_BARRIER); - export_constant(SI_ZEPHYR); - export_constant(SI_SOLID_SKIN); - export_constant(SI_SOLID_SKIN_OPTION); - export_constant(SI_STONE_SHIELD); - export_constant(SI_STONE_SHIELD_OPTION); - export_constant(SI_POWER_OF_GAIA); - // disabled source side, does not make sense to export it - //export_constant(SI_EL_WAIT); - // disabled source side, does not make sense to export it - //export_constant(SI_EL_PASSIVE); - // disabled source side, does not make sense to export it - //export_constant(SI_EL_DEFENSIVE); - // disabled source side, does not make sense to export it - //export_constant(SI_EL_OFFENSIVE); - // disabled source side, does not make sense to export it - //export_constant(SI_EL_COST); - export_constant(SI_PYROTECHNIC); - export_constant(SI_PYROTECHNIC_OPTION); - export_constant(SI_HEATER); - export_constant(SI_HEATER_OPTION); - export_constant(SI_TROPIC); - export_constant(SI_TROPIC_OPTION); - export_constant(SI_AQUAPLAY); - export_constant(SI_AQUAPLAY_OPTION); - export_constant(SI_COOLER); - export_constant(SI_COOLER_OPTION); - export_constant(SI_CHILLY_AIR); - export_constant(SI_CHILLY_AIR_OPTION); - export_constant(SI_GUST); - export_constant(SI_GUST_OPTION); - export_constant(SI_BLAST); - export_constant(SI_BLAST_OPTION); - export_constant(SI_WILD_STORM); - export_constant(SI_WILD_STORM_OPTION); - export_constant(SI_PETROLOGY); - export_constant(SI_PETROLOGY_OPTION); - export_constant(SI_CURSED_SOIL); - export_constant(SI_CURSED_SOIL_OPTION); - export_constant(SI_UPHEAVAL); - export_constant(SI_UPHEAVAL_OPTION); - export_constant(SI_TIDAL_WEAPON); - export_constant(SI_TIDAL_WEAPON_OPTION); - export_constant(SI_ROCK_CRUSHER); - export_constant(SI_ROCK_CRUSHER_ATK); - export_constant(SI_FIRE_INSIGNIA); - export_constant(SI_WATER_INSIGNIA); - export_constant(SI_WIND_INSIGNIA); - export_constant(SI_EARTH_INSIGNIA); - export_constant(SI_EQUIPED_FLOOR); - export_constant(SI_GUARDIAN_RECALL); - export_constant(SI_MORA_BUFF); - export_constant(SI_REUSE_LIMIT_G); - export_constant(SI_REUSE_LIMIT_H); - export_constant(SI_NEEDLE_OF_PARALYZE); - export_constant(SI_PAIN_KILLER); - export_constant(SI_G_LIFEPOTION); - export_constant(SI_VITALIZE_POTION); - export_constant(SI_LIGHT_OF_REGENE); - export_constant(SI_OVERED_BOOST); - export_constant(SI_SILENT_BREEZE); - export_constant(SI_ODINS_POWER); - export_constant(SI_STYLE_CHANGE); - export_constant(SI_SONIC_CLAW_POSTDELAY); - export_constant(SI_SILVERVEIN_RUSH_POSTDELAY); - export_constant(SI_MIDNIGHT_FRENZY_POSTDELAY); - export_constant(SI_GOLDENE_FERSE); - export_constant(SI_ANGRIFFS_MODUS); - export_constant(SI_TINDER_BREAKER); - export_constant(SI_TINDER_BREAKER_POSTDELAY); - export_constant(SI_CBC); - export_constant(SI_CBC_POSTDELAY); - export_constant(SI_EQC); - export_constant(SI_MAGMA_FLOW); - export_constant(SI_GRANITIC_ARMOR); - export_constant(SI_PYROCLASTIC); - export_constant(SI_VOLCANIC_ASH); - export_constant(SI_SPIRITS_SAVEINFO1); - export_constant(SI_SPIRITS_SAVEINFO2); - export_constant(SI_MAGIC_CANDY); - export_constant(SI_SEARCH_STORE_INFO); - export_constant(SI_ALL_RIDING); - export_constant(SI_ALL_RIDING_REUSE_LIMIT); - export_constant(SI_MACRO); - export_constant(SI_MACRO_POSTDELAY); - export_constant(SI_BEER_BOTTLE_CAP); - export_constant(SI_OVERLAPEXPUP); - export_constant(SI_PC_IZ_DUN05); - export_constant(SI_CRUSHSTRIKE); - export_constant(SI_MONSTER_TRANSFORM); - export_constant(SI_SIT); - export_constant(SI_ONAIR); - export_constant(SI_MTF_ASPD); - export_constant(SI_MTF_RANGEATK); - export_constant(SI_MTF_MATK); - export_constant(SI_MTF_MLEATKED); - export_constant(SI_MTF_CRIDAMAGE); - export_constant(SI_REUSE_LIMIT_MTF); - export_constant(SI_MACRO_PERMIT); - export_constant(SI_MACRO_PLAY); - export_constant(SI_SKF_CAST); - export_constant(SI_SKF_ASPD); - export_constant(SI_SKF_ATK); - export_constant(SI_SKF_MATK); - export_constant(SI_REWARD_PLUSONLYJOBEXP); - export_constant(SI_HANDICAPSTATE_NORECOVER); - export_constant(SI_SET_NUM_DEF); - export_constant(SI_SET_NUM_MDEF); - export_constant(SI_SET_PER_DEF); - export_constant(SI_SET_PER_MDEF); - export_constant(SI_PARTYBOOKING_SEARCH_DELAY); - export_constant(SI_PARTYBOOKING_REGISTER_DELAY); - export_constant(SI_PERIOD_TIME_CHECK_DETECT_SKILL); - export_constant(SI_KO_JYUMONJIKIRI); - export_constant(SI_MEIKYOUSISUI); - export_constant(SI_ATTHASTE_CASH); - export_constant(SI_EQUIPPED_DIVINE_ARMOR); - export_constant(SI_EQUIPPED_HOLY_ARMOR); - export_constant(SI_2011RWC); - export_constant(SI_KYOUGAKU); - export_constant(SI_IZAYOI); - export_constant(SI_ZENKAI); - export_constant(SI_KG_KAGEHUMI); - export_constant(SI_KYOMU); - export_constant(SI_KAGEMUSYA); - export_constant(SI_ZANGETSU); - export_constant(SI_PHI_DEMON); - export_constant(SI_GENSOU); - export_constant(SI_AKAITSUKI); - export_constant(SI_TETANY); - export_constant(SI_GM_BATTLE); - export_constant(SI_GM_BATTLE2); - export_constant(SI_2011RWC_SCROLL); - export_constant(SI_ACTIVE_MONSTER_TRANSFORM); - export_constant(SI_MYSTICPOWDER); - export_constant(SI_ECLAGE_RECALL); - export_constant(SI_ENTRY_QUEUE_APPLY_DELAY); - export_constant(SI_REUSE_LIMIT_ECL); - export_constant(SI_M_LIFEPOTION); - export_constant(SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT); - export_constant(SI_UNKNOWN_NAME); - export_constant(SI_ON_PUSH_CART); - export_constant(SI_HAT_EFFECT); - export_constant(SI_FLOWER_LEAF); - export_constant(SI_RAY_OF_PROTECTION); - export_constant(SI_GLASTHEIM_ATK); - export_constant(SI_GLASTHEIM_DEF); - export_constant(SI_GLASTHEIM_HEAL); - export_constant(SI_GLASTHEIM_HIDDEN); - export_constant(SI_GLASTHEIM_STATE); - export_constant(SI_GLASTHEIM_ITEMDEF); - export_constant(SI_GLASTHEIM_HPSP); - export_constant(SI_HOMUN_SKILL_POSTDELAY); - export_constant(SI_ALMIGHTY); - export_constant(SI_GVG_GIANT); - export_constant(SI_GVG_GOLEM); - export_constant(SI_GVG_STUN); - export_constant(SI_GVG_STONE); - export_constant(SI_GVG_FREEZ); - export_constant(SI_GVG_SLEEP); - export_constant(SI_GVG_CURSE); - export_constant(SI_GVG_SILENCE); - export_constant(SI_GVG_BLIND); - export_constant(SI_CLIENT_ONLY_EQUIP_ARROW); - export_constant(SI_CLAN_INFO); - export_constant(SI_JP_EVENT01); - export_constant(SI_JP_EVENT02); - export_constant(SI_JP_EVENT03); - export_constant(SI_JP_EVENT04); - export_constant(SI_TELEPORT_FIXEDCASTINGDELAY); - export_constant(SI_GEFFEN_MAGIC1); - export_constant(SI_GEFFEN_MAGIC2); - export_constant(SI_GEFFEN_MAGIC3); - export_constant(SI_QUEST_BUFF1); - export_constant(SI_QUEST_BUFF2); - export_constant(SI_QUEST_BUFF3); - export_constant(SI_REUSE_LIMIT_RECALL); - export_constant(SI_SAVEPOSITION); - export_constant(SI_HANDICAPSTATE_ICEEXPLO); - export_constant(SI_FENRIR_CARD); - export_constant(SI_REUSE_LIMIT_ASPD_POTION); - export_constant(SI_MAXPAIN); - export_constant(SI_PC_STOP); - export_constant(SI_FRIGG_SONG); - export_constant(SI_OFFERTORIUM); - export_constant(SI_TELEKINESIS_INTENSE); - export_constant(SI_MOONSTAR); - export_constant(SI_STRANGELIGHTS); - export_constant(SI_FULL_THROTTLE); - export_constant(SI_REBOUND); - export_constant(SI_UNLIMIT); - export_constant(SI_KINGS_GRACE); - export_constant(SI_ITEM_ATKMAX); - export_constant(SI_ITEM_ATKMIN); - export_constant(SI_ITEM_MATKMAX); - export_constant(SI_ITEM_MATKMIN); - export_constant(SI_SUPER_STAR); - export_constant(SI_HIGH_RANKER); - export_constant(SI_DARKCROW); - export_constant(SI_2013_VALENTINE1); - export_constant(SI_2013_VALENTINE2); - export_constant(SI_2013_VALENTINE3); - export_constant(SI_ILLUSIONDOPING); - export_constant(SI_WIDEWEB); - export_constant(SI_CHILL); - export_constant(SI_BURNT); - export_constant(SI_PCCAFE_PLAY_TIME); - export_constant(SI_TWISTED_TIME); - export_constant(SI_FLASHCOMBO); - export_constant(SI_JITTER_BUFF1); - export_constant(SI_JITTER_BUFF2); - export_constant(SI_JITTER_BUFF3); - export_constant(SI_JITTER_BUFF4); - export_constant(SI_JITTER_BUFF5); - export_constant(SI_JITTER_BUFF6); - export_constant(SI_JITTER_BUFF7); - export_constant(SI_JITTER_BUFF8); - export_constant(SI_JITTER_BUFF9); - export_constant(SI_JITTER_BUFF10); - export_constant(SI_CUP_OF_BOZA); - export_constant(SI_B_TRAP); - export_constant(SI_E_CHAIN); - export_constant(SI_E_QD_SHOT_READY); - export_constant(SI_C_MARKER); - export_constant(SI_H_MINE); - export_constant(SI_H_MINE_SPLASH); - export_constant(SI_P_ALTER); - export_constant(SI_HEAT_BARREL); - export_constant(SI_ANTI_M_BLAST); - export_constant(SI_SLUGSHOT); - export_constant(SI_SWORDCLAN); - export_constant(SI_ARCWANDCLAN); - export_constant(SI_GOLDENMACECLAN); - export_constant(SI_CROSSBOWCLAN); - export_constant(SI_PACKING_ENVELOPE1); - export_constant(SI_PACKING_ENVELOPE2); - export_constant(SI_PACKING_ENVELOPE3); - export_constant(SI_PACKING_ENVELOPE4); - export_constant(SI_PACKING_ENVELOPE5); - export_constant(SI_PACKING_ENVELOPE6); - export_constant(SI_PACKING_ENVELOPE7); - export_constant(SI_PACKING_ENVELOPE8); - export_constant(SI_PACKING_ENVELOPE9); - export_constant(SI_PACKING_ENVELOPE10); - export_constant(SI_GLASTHEIM_TRANS); - export_constant(SI_ZONGZI_POUCH_TRANS); - export_constant(SI_HEAT_BARREL_AFTER); - export_constant(SI_DECORATION_OF_MUSIC); - export_constant(SI_OVERSEAEXPUP); - export_constant(SI_CLOWN_N_GYPSY_CARD); - export_constant(SI_OPEN_NPC_MARKET); - export_constant(SI_BEEF_RIB_STEW); - export_constant(SI_PORK_RIB_STEW); - export_constant(SI_CHUSEOK_MONDAY); - export_constant(SI_CHUSEOK_TUESDAY); - export_constant(SI_CHUSEOK_WEDNESDAY); - export_constant(SI_CHUSEOK_THURSDAY); - export_constant(SI_CHUSEOK_FRIDAY); - export_constant(SI_CHUSEOK_WEEKEND); - export_constant(SI_ALL_LIGHTGUARD); - export_constant(SI_ALL_LIGHTGUARD_COOL_TIME); - export_constant(SI_MTF_MHP); - export_constant(SI_MTF_MSP); - export_constant(SI_MTF_PUMPKIN); - export_constant(SI_MTF_HITFLEE); - export_constant(SI_MTF_CRIDAMAGE2); - export_constant(SI_MTF_SPDRAIN); - export_constant(SI_ACUO_MINT_GUM); - export_constant(SI_S_HEALPOTION); - export_constant(SI_REUSE_LIMIT_S_HEAL_POTION); - export_constant(SI_PLAYTIME_STATISTICS); - export_constant(SI_GN_CHANGEMATERIAL_OPERATOR); - export_constant(SI_GN_MIX_COOKING_OPERATOR); - export_constant(SI_GN_MAKEBOMB_OPERATOR); - export_constant(SI_GN_S_PHARMACY_OPERATOR); - export_constant(SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR); - export_constant(SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR); - export_constant(SI_NC_MAGICDECOY_OPERATOR); - export_constant(SI_GUILD_STORAGE); - export_constant(SI_GC_POISONINGWEAPON_OPERATOR); - export_constant(SI_WS_WEAPONREFINE_OPERATOR); - export_constant(SI_BS_REPAIRWEAPON_OPERATOR); - export_constant(SI_GET_MAILBOX); - export_constant(SI_JUMPINGCLAN); - export_constant(SI_JP_OTP); - export_constant(SI_HANDICAPTOLERANCE_LEVELGAP); - export_constant(SI_MTF_RANGEATK2); - export_constant(SI_MTF_ASPD2); - export_constant(SI_MTF_MATK2); - export_constant(SI_SHOW_NPCHPBAR); - export_constant(SI_FLOWERSMOKE); - export_constant(SI_FSTONE); - export_constant(SI_DAILYSENDMAILCNT); - export_constant(SI_QSCARABA); - export_constant(SI_LJOSALFAR); - export_constant(SI_PAD_READER_KNIGHT); - export_constant(SI_PAD_READER_CRUSADER); - export_constant(SI_PAD_READER_BLACKSMITH); - export_constant(SI_PAD_READER_ALCHEMIST); - export_constant(SI_PAD_READER_ASSASSIN); - export_constant(SI_PAD_READER_ROGUE); - export_constant(SI_PAD_READER_WIZARD); - export_constant(SI_PAD_READER_SAGE); - export_constant(SI_PAD_READER_PRIEST); - export_constant(SI_PAD_READER_MONK); - export_constant(SI_PAD_READER_HUNTER); - export_constant(SI_PAD_READER_BARD); - export_constant(SI_PAD_READER_DANCER); - export_constant(SI_PAD_READER_TAEKWON); - export_constant(SI_PAD_READER_NINJA); - export_constant(SI_PAD_READER_GUNSLINGER); - export_constant(SI_PAD_READER_SUPERNOVICE); - export_constant(SI_ESSENCE_OF_TIME); - export_constant(SI_MINIGAME_ROULETTE); - export_constant(SI_MINIGAME_GOLD_POINT); - export_constant(SI_MINIGAME_SILVER_POINT); - export_constant(SI_MINIGAME_BRONZE_POINT); - export_constant(SI_HAPPINESS_STAR); - export_constant(SI_SUMMEREVENT01); - export_constant(SI_SUMMEREVENT02); - export_constant(SI_SUMMEREVENT03); - export_constant(SI_SUMMEREVENT04); - export_constant(SI_SUMMEREVENT05); - export_constant(SI_MINIGAME_ROULETTE_BONUS_ITEM); - export_constant(SI_DRESS_UP); - export_constant(SI_MAPLE_FALLS); - export_constant(SI_ALL_NIFLHEIM_RECALL); - export_constant(SI_MTF_MARIONETTE); - export_constant(SI_MTF_LUDE); - export_constant(SI_MTF_CRUISER); - export_constant(SI_MERMAID_LONGING); - export_constant(SI_MAGICAL_FEATHER); - export_constant(SI_DRACULA_CARD); - export_constant(SI_LIMIT_POWER_BOOSTER); - export_constant(SI_TIME_ACCESSORY); - export_constant(SI_EP16_DEF); - export_constant(SI_NORMAL_ATKED_SP); - export_constant(SI_BODYSTATE_STONECURSE); - export_constant(SI_BODYSTATE_FREEZING); - export_constant(SI_BODYSTATE_STUN); - export_constant(SI_BODYSTATE_SLEEP); - export_constant(SI_BODYSTATE_UNDEAD); - export_constant(SI_BODYSTATE_STONECURSE_ING); - export_constant(SI_BODYSTATE_BURNNING); - export_constant(SI_BODYSTATE_IMPRISON); - export_constant(SI_HEALTHSTATE_POISON); - export_constant(SI_HEALTHSTATE_CURSE); - export_constant(SI_HEALTHSTATE_SILENCE); - export_constant(SI_HEALTHSTATE_CONFUSION); - export_constant(SI_HEALTHSTATE_BLIND); - export_constant(SI_HEALTHSTATE_ANGELUS); - export_constant(SI_HEALTHSTATE_BLOODING); - export_constant(SI_HEALTHSTATE_HEAVYPOISON); - export_constant(SI_HEALTHSTATE_FEAR); - export_constant(SI_CHERRY_BLOSSOM_CAKE); - export_constant(SI_SU_STOOP); - export_constant(SI_CATNIPPOWDER); - export_constant(SI_SV_ROOTTWIST); - export_constant(SI_ATTACK_PROPERTY_NOTHING); - export_constant(SI_ATTACK_PROPERTY_WATER); - export_constant(SI_ATTACK_PROPERTY_GROUND); - export_constant(SI_ATTACK_PROPERTY_FIRE); - export_constant(SI_ATTACK_PROPERTY_WIND); - export_constant(SI_ATTACK_PROPERTY_POISON); - export_constant(SI_ATTACK_PROPERTY_SAINT); - export_constant(SI_ATTACK_PROPERTY_DARKNESS); - export_constant(SI_ATTACK_PROPERTY_TELEKINESIS); - export_constant(SI_ATTACK_PROPERTY_UNDEAD); - export_constant(SI_RESIST_PROPERTY_NOTHING); - export_constant(SI_RESIST_PROPERTY_WATER); - export_constant(SI_RESIST_PROPERTY_GROUND); - export_constant(SI_RESIST_PROPERTY_FIRE); - export_constant(SI_RESIST_PROPERTY_WIND); - export_constant(SI_RESIST_PROPERTY_POISON); - export_constant(SI_RESIST_PROPERTY_SAINT); - export_constant(SI_RESIST_PROPERTY_DARKNESS); - export_constant(SI_RESIST_PROPERTY_TELEKINESIS); - export_constant(SI_RESIST_PROPERTY_UNDEAD); - export_constant(SI_BITESCAR); - export_constant(SI_ARCLOUSEDASH); - export_constant(SI_TUNAPARTY); - export_constant(SI_SHRIMP); - export_constant(SI_FRESHSHRIMP); - export_constant(SI_PERIOD_RECEIVEITEM); - export_constant(SI_PERIOD_PLUSEXP); - export_constant(SI_PERIOD_PLUSJOBEXP); - export_constant(SI_RUNEHELM); - export_constant(SI_HELM_VERKANA); - export_constant(SI_HELM_RHYDO); - export_constant(SI_HELM_TURISUS); - export_constant(SI_HELM_HAGALAS); - export_constant(SI_HELM_ISIA); - export_constant(SI_HELM_ASIR); - export_constant(SI_HELM_URJ); - export_constant(SI_SUHIDE); - export_constant(SI_DORAM_BUF_01); - export_constant(SI_DORAM_BUF_02); - export_constant(SI_SPRITEMABLE); - export_constant(SI_AID_PERIOD_RECEIVEITEM); - export_constant(SI_AID_PERIOD_PLUSEXP); - export_constant(SI_AID_PERIOD_PLUSJOBEXP); - export_constant(SI_AID_PERIOD_DEADPENALTY); - export_constant(SI_AID_PERIOD_ADDSTOREITEMCOUNT); - export_constant(SI_HISS); - export_constant(SI_NYANGGRASS); - export_constant(SI_CHATTERING); - export_constant(SI_GROOMING); - export_constant(SI_PROTECTIONOFSHRIMP); - export_constant(SI_EP16_2_BUFF_SS); - export_constant(SI_EP16_2_BUFF_SC); - export_constant(SI_EP16_2_BUFF_AC); - export_constant(SI_GS_MAGICAL_BULLET); - export_constant(SI_FALLEN_ANGEL); - export_constant(SI_BLAZE_BEAD); - export_constant(SI_FROZEN_BEAD); - export_constant(SI_BREEZE_BEAD); - export_constant(SI_AID_PERIOD_RECEIVEITEM_2ND); - export_constant(SI_AID_PERIOD_PLUSEXP_2ND); - export_constant(SI_AID_PERIOD_PLUSJOBEXP_2ND); - export_constant(SI_PRONTERA_JP); - export_constant(SI_GLOOM_CARD); - export_constant(SI_PHARAOH_CARD); - export_constant(SI_KIEL_CARD); - export_constant(SI_CHEERUP); - export_constant(SI_S_MANAPOTION); - export_constant(SI_M_DEFSCROLL); + //export_deprecated_constant(SI_DA_TIMEOUT); + export_deprecated_constant(SI_FOOD_STR_CASH); + export_deprecated_constant(SI_FOOD_AGI_CASH); + export_deprecated_constant(SI_FOOD_VIT_CASH); + export_deprecated_constant(SI_FOOD_DEX_CASH); + export_deprecated_constant(SI_FOOD_INT_CASH); + export_deprecated_constant(SI_FOOD_LUK_CASH); + export_deprecated_constant(SI_MERC_FLEEUP); + export_deprecated_constant(SI_MERC_ATKUP); + export_deprecated_constant(SI_MERC_HPUP); + export_deprecated_constant(SI_MERC_SPUP); + export_deprecated_constant(SI_MERC_HITUP); + export_deprecated_constant(SI_SLOWCAST); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_MAGICMIRROR); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_STONESKIN); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_ANTIMAGIC); + export_deprecated_constant(SI_CRITICALWOUND); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_NPC_DEFENDER); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_NOACTION_WAIT); + export_deprecated_constant(SI_MOVHASTE_HORSE); + export_deprecated_constant(SI_DEF_RATE); + export_deprecated_constant(SI_MDEF_RATE); + export_deprecated_constant(SI_INCHEALRATE); + export_deprecated_constant(SI_S_LIFEPOTION); + export_deprecated_constant(SI_L_LIFEPOTION); + export_deprecated_constant(SI_INCCRI); + export_deprecated_constant(SI_PLUSAVOIDVALUE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_ATKER_ASPD); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_TARGET_ASPD); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_ATKER_MOVESPEED); + export_deprecated_constant(SI_ATKER_BLOOD); + export_deprecated_constant(SI_TARGET_BLOOD); + export_deprecated_constant(SI_ARMOR_PROPERTY); + export_deprecated_constant(SI_REUSE_LIMIT_A); + export_deprecated_constant(SI_HELLPOWER); + export_deprecated_constant(SI_STEAMPACK); + export_deprecated_constant(SI_REUSE_LIMIT_B); + export_deprecated_constant(SI_REUSE_LIMIT_C); + export_deprecated_constant(SI_REUSE_LIMIT_D); + export_deprecated_constant(SI_REUSE_LIMIT_E); + export_deprecated_constant(SI_REUSE_LIMIT_F); + export_deprecated_constant(SI_INVINCIBLE); + export_deprecated_constant(SI_CASH_PLUSONLYJOBEXP); + export_deprecated_constant(SI_PARTYFLEE); + export_deprecated_constant(SI_ANGEL_PROTECT); + export_deprecated_constant(SI_ENDURE_MDEF); + export_deprecated_constant(SI_ENCHANTBLADE); + export_deprecated_constant(SI_DEATHBOUND); + export_deprecated_constant(SI_REFRESH); + export_deprecated_constant(SI_GIANTGROWTH); + export_deprecated_constant(SI_STONEHARDSKIN); + export_deprecated_constant(SI_VITALITYACTIVATION); + export_deprecated_constant(SI_FIGHTINGSPIRIT); + export_deprecated_constant(SI_ABUNDANCE); + export_deprecated_constant(SI_REUSE_MILLENNIUMSHIELD); + export_deprecated_constant(SI_REUSE_CRUSHSTRIKE); + export_deprecated_constant(SI_REUSE_REFRESH); + export_deprecated_constant(SI_REUSE_STORMBLAST); + export_deprecated_constant(SI_VENOMIMPRESS); + export_deprecated_constant(SI_EPICLESIS); + export_deprecated_constant(SI_ORATIO); + export_deprecated_constant(SI_LAUDAAGNUS); + export_deprecated_constant(SI_LAUDARAMUS); + export_deprecated_constant(SI_CLOAKINGEXCEED); + export_deprecated_constant(SI_HALLUCINATIONWALK); + export_deprecated_constant(SI_HALLUCINATIONWALK_POSTDELAY); + export_deprecated_constant(SI_RENOVATIO); + export_deprecated_constant(SI_WEAPONBLOCKING); + export_deprecated_constant(SI_WEAPONBLOCKING_POSTDELAY); + export_deprecated_constant(SI_ROLLINGCUTTER); + export_deprecated_constant(SI_EXPIATIO); + export_deprecated_constant(SI_POISONINGWEAPON); + export_deprecated_constant(SI_TOXIN); + export_deprecated_constant(SI_PARALYSE); + export_deprecated_constant(SI_VENOMBLEED); + export_deprecated_constant(SI_MAGICMUSHROOM); + export_deprecated_constant(SI_DEATHHURT); + export_deprecated_constant(SI_PYREXIA); + export_deprecated_constant(SI_OBLIVIONCURSE); + export_deprecated_constant(SI_LEECHESEND); + export_deprecated_constant(SI_DUPLELIGHT); + export_deprecated_constant(SI_FROSTMISTY); + export_deprecated_constant(SI_FEARBREEZE); + export_deprecated_constant(SI_ELECTRICSHOCKER); + export_deprecated_constant(SI_MARSHOFABYSS); + export_deprecated_constant(SI_RECOGNIZEDSPELL); + export_deprecated_constant(SI_STASIS); + export_deprecated_constant(SI_WUGRIDER); + export_deprecated_constant(SI_WUGDASH); + export_deprecated_constant(SI_WUGBITE); + export_deprecated_constant(SI_CAMOUFLAGE); + export_deprecated_constant(SI_ACCELERATION); + export_deprecated_constant(SI_HOVERING); + export_deprecated_constant(SI_SPHERE_1); + export_deprecated_constant(SI_SPHERE_2); + export_deprecated_constant(SI_SPHERE_3); + export_deprecated_constant(SI_SPHERE_4); + export_deprecated_constant(SI_SPHERE_5); + export_deprecated_constant(SI_MVPCARD_TAOGUNKA); + export_deprecated_constant(SI_MVPCARD_MISTRESS); + export_deprecated_constant(SI_MVPCARD_ORCHERO); + export_deprecated_constant(SI_MVPCARD_ORCLORD); + export_deprecated_constant(SI_OVERHEAT_LIMITPOINT); + export_deprecated_constant(SI_OVERHEAT); + export_deprecated_constant(SI_SHAPESHIFT); + export_deprecated_constant(SI_INFRAREDSCAN); + export_deprecated_constant(SI_MAGNETICFIELD); + export_deprecated_constant(SI_NEUTRALBARRIER); + export_deprecated_constant(SI_NEUTRALBARRIER_MASTER); + export_deprecated_constant(SI_STEALTHFIELD); + export_deprecated_constant(SI_STEALTHFIELD_MASTER); + export_deprecated_constant(SI_MANU_ATK); + export_deprecated_constant(SI_MANU_DEF); + export_deprecated_constant(SI_SPL_ATK); + export_deprecated_constant(SI_SPL_DEF); + export_deprecated_constant(SI_REPRODUCE); + export_deprecated_constant(SI_MANU_MATK); + export_deprecated_constant(SI_SPL_MATK); + export_deprecated_constant(SI_STR_SCROLL); + export_deprecated_constant(SI_INT_SCROLL); + export_deprecated_constant(SI_LG_REFLECTDAMAGE); + export_deprecated_constant(SI_FORCEOFVANGUARD); + export_deprecated_constant(SI_BUCHEDENOEL); + export_deprecated_constant(SI_AUTOSHADOWSPELL); + export_deprecated_constant(SI_SHADOWFORM); + export_deprecated_constant(SI_RAID); + export_deprecated_constant(SI_SHIELDSPELL_DEF); + export_deprecated_constant(SI_SHIELDSPELL_MDEF); + export_deprecated_constant(SI_SHIELDSPELL_REF); + export_deprecated_constant(SI_BODYPAINT); + export_deprecated_constant(SI_EXEEDBREAK); + export_deprecated_constant(SI_ADORAMUS); + export_deprecated_constant(SI_PRESTIGE); + export_deprecated_constant(SI_INVISIBILITY); + export_deprecated_constant(SI_DEADLYINFECT); + export_deprecated_constant(SI_BANDING); + export_deprecated_constant(SI_EARTHDRIVE); + export_deprecated_constant(SI_INSPIRATION); + export_deprecated_constant(SI_ENERVATION); + export_deprecated_constant(SI_GROOMY); + export_deprecated_constant(SI_RAISINGDRAGON); + export_deprecated_constant(SI_IGNORANCE); + export_deprecated_constant(SI_LAZINESS); + export_deprecated_constant(SI_LIGHTNINGWALK); + export_deprecated_constant(SI_ACARAJE); + export_deprecated_constant(SI_UNLUCKY); + export_deprecated_constant(SI_CURSEDCIRCLE_ATKER); + export_deprecated_constant(SI_CURSEDCIRCLE_TARGET); + export_deprecated_constant(SI_WEAKNESS); + export_deprecated_constant(SI_CRESCENTELBOW); + export_deprecated_constant(SI_NOEQUIPACCESSARY); + export_deprecated_constant(SI_STRIPACCESSARY); + export_deprecated_constant(SI_MANHOLE); + export_deprecated_constant(SI_POPECOOKIE); + export_deprecated_constant(SI_FALLENEMPIRE); + export_deprecated_constant(SI_GENTLETOUCH_ENERGYGAIN); + export_deprecated_constant(SI_GENTLETOUCH_CHANGE); + export_deprecated_constant(SI_GENTLETOUCH_REVITALIZE); + export_deprecated_constant(SI_BLOODYLUST); + export_deprecated_constant(SI_SWINGDANCE); + export_deprecated_constant(SI_SYMPHONYOFLOVERS); + export_deprecated_constant(SI_PROPERTYWALK); + export_deprecated_constant(SI_SPELLFIST); + export_deprecated_constant(SI_NETHERWORLD); + export_deprecated_constant(SI_VOICEOFSIREN); + export_deprecated_constant(SI_DEEPSLEEP); + export_deprecated_constant(SI_SIRCLEOFNATURE); + export_deprecated_constant(SI_COLD); + export_deprecated_constant(SI_GLOOMYDAY); + export_deprecated_constant(SI_SONGOFMANA); + export_deprecated_constant(SI_CLOUDKILL); + export_deprecated_constant(SI_DANCEWITHWUG); + export_deprecated_constant(SI_RUSHWINDMILL); + export_deprecated_constant(SI_ECHOSONG); + export_deprecated_constant(SI_HARMONIZE); + export_deprecated_constant(SI_STRIKING); + export_deprecated_constant(SI_WARMER); + export_deprecated_constant(SI_MOONLITSERENADE); + export_deprecated_constant(SI_SATURDAYNIGHTFEVER); + export_deprecated_constant(SI_SITDOWN_FORCE); + export_deprecated_constant(SI_ANALYZE); + export_deprecated_constant(SI_LERADSDEW); + export_deprecated_constant(SI_MELODYOFSINK); + export_deprecated_constant(SI_WARCRYOFBEYOND); + export_deprecated_constant(SI_UNLIMITEDHUMMINGVOICE); + export_deprecated_constant(SI_SPELLBOOK1); + export_deprecated_constant(SI_SPELLBOOK2); + export_deprecated_constant(SI_SPELLBOOK3); + export_deprecated_constant(SI_FREEZE_SP); + export_deprecated_constant(SI_GN_TRAINING_SWORD); + export_deprecated_constant(SI_GN_REMODELING_CART); + export_deprecated_constant(SI_GN_CARTBOOST); + export_deprecated_constant(SI_FIXEDCASTINGTM_REDUCE); + export_deprecated_constant(SI_THORNTRAP); + export_deprecated_constant(SI_BLOODSUCKER); + export_deprecated_constant(SI_SPORE_EXPLOSION); + export_deprecated_constant(SI_DEMONIC_FIRE); + export_deprecated_constant(SI_FIRE_EXPANSION_SMOKE_POWDER); + export_deprecated_constant(SI_FIRE_EXPANSION_TEAR_GAS); + export_deprecated_constant(SI_BLOCKING_PLAY); + export_deprecated_constant(SI_MANDRAGORA); + export_deprecated_constant(SI_ACTIVATE); + export_deprecated_constant(SI_SECRAMENT); + export_deprecated_constant(SI_ASSUMPTIO2); + export_deprecated_constant(SI_TK_SEVENWIND); + export_deprecated_constant(SI_LIMIT_ODINS_RECALL); + export_deprecated_constant(SI_STOMACHACHE); + export_deprecated_constant(SI_MYSTERIOUS_POWDER); + export_deprecated_constant(SI_MELON_BOMB); + export_deprecated_constant(SI_BANANA_BOMB_SITDOWN_POSTDELAY); + export_deprecated_constant(SI_PROMOTE_HEALTH_RESERCH); + export_deprecated_constant(SI_ENERGY_DRINK_RESERCH); + export_deprecated_constant(SI_EXTRACT_WHITE_POTION_Z); + export_deprecated_constant(SI_VITATA_500); + export_deprecated_constant(SI_EXTRACT_SALAMINE_JUICE); + export_deprecated_constant(SI_BOOST500); + export_deprecated_constant(SI_FULL_SWING_K); + export_deprecated_constant(SI_MANA_PLUS); + export_deprecated_constant(SI_MUSTLE_M); + export_deprecated_constant(SI_LIFE_FORCE_F); + export_deprecated_constant(SI_VACUUM_EXTREME); + export_deprecated_constant(SI_SAVAGE_STEAK); + export_deprecated_constant(SI_COCKTAIL_WARG_BLOOD); + export_deprecated_constant(SI_MINOR_BBQ); + export_deprecated_constant(SI_SIROMA_ICE_TEA); + export_deprecated_constant(SI_DROCERA_HERB_STEAMED); + export_deprecated_constant(SI_PUTTI_TAILS_NOODLES); + export_deprecated_constant(SI_BANANA_BOMB); + export_deprecated_constant(SI_SUMMON_AGNI); + export_deprecated_constant(SI_SPELLBOOK4); + export_deprecated_constant(SI_SPELLBOOK5); + export_deprecated_constant(SI_SPELLBOOK6); + export_deprecated_constant(SI_SPELLBOOK7); + export_deprecated_constant(SI_ELEMENTAL_AGGRESSIVE); + export_deprecated_constant(SI_RETURN_TO_ELDICASTES); + export_deprecated_constant(SI_BANDING_DEFENCE); + export_deprecated_constant(SI_SKELSCROLL); + export_deprecated_constant(SI_DISTRUCTIONSCROLL); + export_deprecated_constant(SI_ROYALSCROLL); + export_deprecated_constant(SI_IMMUNITYSCROLL); + export_deprecated_constant(SI_MYSTICSCROLL); + export_deprecated_constant(SI_BATTLESCROLL); + export_deprecated_constant(SI_ARMORSCROLL); + export_deprecated_constant(SI_FREYJASCROLL); + export_deprecated_constant(SI_SOULSCROLL); + export_deprecated_constant(SI_CIRCLE_OF_FIRE); + export_deprecated_constant(SI_CIRCLE_OF_FIRE_OPTION); + export_deprecated_constant(SI_FIRE_CLOAK); + export_deprecated_constant(SI_FIRE_CLOAK_OPTION); + export_deprecated_constant(SI_WATER_SCREEN); + export_deprecated_constant(SI_WATER_SCREEN_OPTION); + export_deprecated_constant(SI_WATER_DROP); + export_deprecated_constant(SI_WATER_DROP_OPTION); + export_deprecated_constant(SI_WIND_STEP); + export_deprecated_constant(SI_WIND_STEP_OPTION); + export_deprecated_constant(SI_WIND_CURTAIN); + export_deprecated_constant(SI_WIND_CURTAIN_OPTION); + export_deprecated_constant(SI_WATER_BARRIER); + export_deprecated_constant(SI_ZEPHYR); + export_deprecated_constant(SI_SOLID_SKIN); + export_deprecated_constant(SI_SOLID_SKIN_OPTION); + export_deprecated_constant(SI_STONE_SHIELD); + export_deprecated_constant(SI_STONE_SHIELD_OPTION); + export_deprecated_constant(SI_POWER_OF_GAIA); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_EL_WAIT); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_EL_PASSIVE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_EL_DEFENSIVE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_EL_OFFENSIVE); + // disabled source side, does not make sense to export it + //export_deprecated_constant(SI_EL_COST); + export_deprecated_constant(SI_PYROTECHNIC); + export_deprecated_constant(SI_PYROTECHNIC_OPTION); + export_deprecated_constant(SI_HEATER); + export_deprecated_constant(SI_HEATER_OPTION); + export_deprecated_constant(SI_TROPIC); + export_deprecated_constant(SI_TROPIC_OPTION); + export_deprecated_constant(SI_AQUAPLAY); + export_deprecated_constant(SI_AQUAPLAY_OPTION); + export_deprecated_constant(SI_COOLER); + export_deprecated_constant(SI_COOLER_OPTION); + export_deprecated_constant(SI_CHILLY_AIR); + export_deprecated_constant(SI_CHILLY_AIR_OPTION); + export_deprecated_constant(SI_GUST); + export_deprecated_constant(SI_GUST_OPTION); + export_deprecated_constant(SI_BLAST); + export_deprecated_constant(SI_BLAST_OPTION); + export_deprecated_constant(SI_WILD_STORM); + export_deprecated_constant(SI_WILD_STORM_OPTION); + export_deprecated_constant(SI_PETROLOGY); + export_deprecated_constant(SI_PETROLOGY_OPTION); + export_deprecated_constant(SI_CURSED_SOIL); + export_deprecated_constant(SI_CURSED_SOIL_OPTION); + export_deprecated_constant(SI_UPHEAVAL); + export_deprecated_constant(SI_UPHEAVAL_OPTION); + export_deprecated_constant(SI_TIDAL_WEAPON); + export_deprecated_constant(SI_TIDAL_WEAPON_OPTION); + export_deprecated_constant(SI_ROCK_CRUSHER); + export_deprecated_constant(SI_ROCK_CRUSHER_ATK); + export_deprecated_constant(SI_FIRE_INSIGNIA); + export_deprecated_constant(SI_WATER_INSIGNIA); + export_deprecated_constant(SI_WIND_INSIGNIA); + export_deprecated_constant(SI_EARTH_INSIGNIA); + export_deprecated_constant(SI_EQUIPED_FLOOR); + export_deprecated_constant(SI_GUARDIAN_RECALL); + export_deprecated_constant(SI_MORA_BUFF); + export_deprecated_constant(SI_REUSE_LIMIT_G); + export_deprecated_constant(SI_REUSE_LIMIT_H); + export_deprecated_constant(SI_NEEDLE_OF_PARALYZE); + export_deprecated_constant(SI_PAIN_KILLER); + export_deprecated_constant(SI_G_LIFEPOTION); + export_deprecated_constant(SI_VITALIZE_POTION); + export_deprecated_constant(SI_LIGHT_OF_REGENE); + export_deprecated_constant(SI_OVERED_BOOST); + export_deprecated_constant(SI_SILENT_BREEZE); + export_deprecated_constant(SI_ODINS_POWER); + export_deprecated_constant(SI_STYLE_CHANGE); + export_deprecated_constant(SI_SONIC_CLAW_POSTDELAY); + export_deprecated_constant(SI_SILVERVEIN_RUSH_POSTDELAY); + export_deprecated_constant(SI_MIDNIGHT_FRENZY_POSTDELAY); + export_deprecated_constant(SI_GOLDENE_FERSE); + export_deprecated_constant(SI_ANGRIFFS_MODUS); + export_deprecated_constant(SI_TINDER_BREAKER); + export_deprecated_constant(SI_TINDER_BREAKER_POSTDELAY); + export_deprecated_constant(SI_CBC); + export_deprecated_constant(SI_CBC_POSTDELAY); + export_deprecated_constant(SI_EQC); + export_deprecated_constant(SI_MAGMA_FLOW); + export_deprecated_constant(SI_GRANITIC_ARMOR); + export_deprecated_constant(SI_PYROCLASTIC); + export_deprecated_constant(SI_VOLCANIC_ASH); + export_deprecated_constant(SI_SPIRITS_SAVEINFO1); + export_deprecated_constant(SI_SPIRITS_SAVEINFO2); + export_deprecated_constant(SI_MAGIC_CANDY); + export_deprecated_constant(SI_SEARCH_STORE_INFO); + export_deprecated_constant(SI_ALL_RIDING); + export_deprecated_constant(SI_ALL_RIDING_REUSE_LIMIT); + export_deprecated_constant(SI_MACRO); + export_deprecated_constant(SI_MACRO_POSTDELAY); + export_deprecated_constant(SI_BEER_BOTTLE_CAP); + export_deprecated_constant(SI_OVERLAPEXPUP); + export_deprecated_constant(SI_PC_IZ_DUN05); + export_deprecated_constant(SI_CRUSHSTRIKE); + export_deprecated_constant(SI_MONSTER_TRANSFORM); + export_deprecated_constant(SI_SIT); + export_deprecated_constant(SI_ONAIR); + export_deprecated_constant(SI_MTF_ASPD); + export_deprecated_constant(SI_MTF_RANGEATK); + export_deprecated_constant(SI_MTF_MATK); + export_deprecated_constant(SI_MTF_MLEATKED); + export_deprecated_constant(SI_MTF_CRIDAMAGE); + export_deprecated_constant(SI_REUSE_LIMIT_MTF); + export_deprecated_constant(SI_MACRO_PERMIT); + export_deprecated_constant(SI_MACRO_PLAY); + export_deprecated_constant(SI_SKF_CAST); + export_deprecated_constant(SI_SKF_ASPD); + export_deprecated_constant(SI_SKF_ATK); + export_deprecated_constant(SI_SKF_MATK); + export_deprecated_constant(SI_REWARD_PLUSONLYJOBEXP); + export_deprecated_constant(SI_HANDICAPSTATE_NORECOVER); + export_deprecated_constant(SI_SET_NUM_DEF); + export_deprecated_constant(SI_SET_NUM_MDEF); + export_deprecated_constant(SI_SET_PER_DEF); + export_deprecated_constant(SI_SET_PER_MDEF); + export_deprecated_constant(SI_PARTYBOOKING_SEARCH_DELAY); + export_deprecated_constant(SI_PARTYBOOKING_REGISTER_DELAY); + export_deprecated_constant(SI_PERIOD_TIME_CHECK_DETECT_SKILL); + export_deprecated_constant(SI_KO_JYUMONJIKIRI); + export_deprecated_constant(SI_MEIKYOUSISUI); + export_deprecated_constant(SI_ATTHASTE_CASH); + export_deprecated_constant(SI_EQUIPPED_DIVINE_ARMOR); + export_deprecated_constant(SI_EQUIPPED_HOLY_ARMOR); + export_deprecated_constant(SI_2011RWC); + export_deprecated_constant(SI_KYOUGAKU); + export_deprecated_constant(SI_IZAYOI); + export_deprecated_constant(SI_ZENKAI); + export_deprecated_constant(SI_KG_KAGEHUMI); + export_deprecated_constant(SI_KYOMU); + export_deprecated_constant(SI_KAGEMUSYA); + export_deprecated_constant(SI_ZANGETSU); + export_deprecated_constant(SI_PHI_DEMON); + export_deprecated_constant(SI_GENSOU); + export_deprecated_constant(SI_AKAITSUKI); + export_deprecated_constant(SI_TETANY); + export_deprecated_constant(SI_GM_BATTLE); + export_deprecated_constant(SI_GM_BATTLE2); + export_deprecated_constant(SI_2011RWC_SCROLL); + export_deprecated_constant(SI_ACTIVE_MONSTER_TRANSFORM); + export_deprecated_constant(SI_MYSTICPOWDER); + export_deprecated_constant(SI_ECLAGE_RECALL); + export_deprecated_constant(SI_ENTRY_QUEUE_APPLY_DELAY); + export_deprecated_constant(SI_REUSE_LIMIT_ECL); + export_deprecated_constant(SI_M_LIFEPOTION); + export_deprecated_constant(SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT); + export_deprecated_constant(SI_UNKNOWN_NAME); + export_deprecated_constant(SI_ON_PUSH_CART); + export_deprecated_constant(SI_HAT_EFFECT); + export_deprecated_constant(SI_FLOWER_LEAF); + export_deprecated_constant(SI_RAY_OF_PROTECTION); + export_deprecated_constant(SI_GLASTHEIM_ATK); + export_deprecated_constant(SI_GLASTHEIM_DEF); + export_deprecated_constant(SI_GLASTHEIM_HEAL); + export_deprecated_constant(SI_GLASTHEIM_HIDDEN); + export_deprecated_constant(SI_GLASTHEIM_STATE); + export_deprecated_constant(SI_GLASTHEIM_ITEMDEF); + export_deprecated_constant(SI_GLASTHEIM_HPSP); + export_deprecated_constant(SI_HOMUN_SKILL_POSTDELAY); + export_deprecated_constant(SI_ALMIGHTY); + export_deprecated_constant(SI_GVG_GIANT); + export_deprecated_constant(SI_GVG_GOLEM); + export_deprecated_constant(SI_GVG_STUN); + export_deprecated_constant(SI_GVG_STONE); + export_deprecated_constant(SI_GVG_FREEZ); + export_deprecated_constant(SI_GVG_SLEEP); + export_deprecated_constant(SI_GVG_CURSE); + export_deprecated_constant(SI_GVG_SILENCE); + export_deprecated_constant(SI_GVG_BLIND); + export_deprecated_constant(SI_CLIENT_ONLY_EQUIP_ARROW); + export_deprecated_constant(SI_CLAN_INFO); + export_deprecated_constant(SI_JP_EVENT01); + export_deprecated_constant(SI_JP_EVENT02); + export_deprecated_constant(SI_JP_EVENT03); + export_deprecated_constant(SI_JP_EVENT04); + export_deprecated_constant(SI_TELEPORT_FIXEDCASTINGDELAY); + export_deprecated_constant(SI_GEFFEN_MAGIC1); + export_deprecated_constant(SI_GEFFEN_MAGIC2); + export_deprecated_constant(SI_GEFFEN_MAGIC3); + export_deprecated_constant(SI_QUEST_BUFF1); + export_deprecated_constant(SI_QUEST_BUFF2); + export_deprecated_constant(SI_QUEST_BUFF3); + export_deprecated_constant(SI_REUSE_LIMIT_RECALL); + export_deprecated_constant(SI_SAVEPOSITION); + export_deprecated_constant(SI_HANDICAPSTATE_ICEEXPLO); + export_deprecated_constant(SI_FENRIR_CARD); + export_deprecated_constant(SI_REUSE_LIMIT_ASPD_POTION); + export_deprecated_constant(SI_MAXPAIN); + export_deprecated_constant(SI_PC_STOP); + export_deprecated_constant(SI_FRIGG_SONG); + export_deprecated_constant(SI_OFFERTORIUM); + export_deprecated_constant(SI_TELEKINESIS_INTENSE); + export_deprecated_constant(SI_MOONSTAR); + export_deprecated_constant(SI_STRANGELIGHTS); + export_deprecated_constant(SI_FULL_THROTTLE); + export_deprecated_constant(SI_REBOUND); + export_deprecated_constant(SI_UNLIMIT); + export_deprecated_constant(SI_KINGS_GRACE); + export_deprecated_constant(SI_ITEM_ATKMAX); + export_deprecated_constant(SI_ITEM_ATKMIN); + export_deprecated_constant(SI_ITEM_MATKMAX); + export_deprecated_constant(SI_ITEM_MATKMIN); + export_deprecated_constant(SI_SUPER_STAR); + export_deprecated_constant(SI_HIGH_RANKER); + export_deprecated_constant(SI_DARKCROW); + export_deprecated_constant(SI_2013_VALENTINE1); + export_deprecated_constant(SI_2013_VALENTINE2); + export_deprecated_constant(SI_2013_VALENTINE3); + export_deprecated_constant(SI_ILLUSIONDOPING); + export_deprecated_constant(SI_WIDEWEB); + export_deprecated_constant(SI_CHILL); + export_deprecated_constant(SI_BURNT); + export_deprecated_constant(SI_PCCAFE_PLAY_TIME); + export_deprecated_constant(SI_TWISTED_TIME); + export_deprecated_constant(SI_FLASHCOMBO); + export_deprecated_constant(SI_JITTER_BUFF1); + export_deprecated_constant(SI_JITTER_BUFF2); + export_deprecated_constant(SI_JITTER_BUFF3); + export_deprecated_constant(SI_JITTER_BUFF4); + export_deprecated_constant(SI_JITTER_BUFF5); + export_deprecated_constant(SI_JITTER_BUFF6); + export_deprecated_constant(SI_JITTER_BUFF7); + export_deprecated_constant(SI_JITTER_BUFF8); + export_deprecated_constant(SI_JITTER_BUFF9); + export_deprecated_constant(SI_JITTER_BUFF10); + export_deprecated_constant(SI_CUP_OF_BOZA); + export_deprecated_constant(SI_B_TRAP); + export_deprecated_constant(SI_E_CHAIN); + export_deprecated_constant(SI_E_QD_SHOT_READY); + export_deprecated_constant(SI_C_MARKER); + export_deprecated_constant(SI_H_MINE); + export_deprecated_constant(SI_H_MINE_SPLASH); + export_deprecated_constant(SI_P_ALTER); + export_deprecated_constant(SI_HEAT_BARREL); + export_deprecated_constant(SI_ANTI_M_BLAST); + export_deprecated_constant(SI_SLUGSHOT); + export_deprecated_constant(SI_SWORDCLAN); + export_deprecated_constant(SI_ARCWANDCLAN); + export_deprecated_constant(SI_GOLDENMACECLAN); + export_deprecated_constant(SI_CROSSBOWCLAN); + export_deprecated_constant(SI_PACKING_ENVELOPE1); + export_deprecated_constant(SI_PACKING_ENVELOPE2); + export_deprecated_constant(SI_PACKING_ENVELOPE3); + export_deprecated_constant(SI_PACKING_ENVELOPE4); + export_deprecated_constant(SI_PACKING_ENVELOPE5); + export_deprecated_constant(SI_PACKING_ENVELOPE6); + export_deprecated_constant(SI_PACKING_ENVELOPE7); + export_deprecated_constant(SI_PACKING_ENVELOPE8); + export_deprecated_constant(SI_PACKING_ENVELOPE9); + export_deprecated_constant(SI_PACKING_ENVELOPE10); + export_deprecated_constant(SI_GLASTHEIM_TRANS); + export_deprecated_constant(SI_ZONGZI_POUCH_TRANS); + export_deprecated_constant(SI_HEAT_BARREL_AFTER); + export_deprecated_constant(SI_DECORATION_OF_MUSIC); + export_deprecated_constant(SI_OVERSEAEXPUP); + export_deprecated_constant(SI_CLOWN_N_GYPSY_CARD); + export_deprecated_constant(SI_OPEN_NPC_MARKET); + export_deprecated_constant(SI_BEEF_RIB_STEW); + export_deprecated_constant(SI_PORK_RIB_STEW); + export_deprecated_constant(SI_CHUSEOK_MONDAY); + export_deprecated_constant(SI_CHUSEOK_TUESDAY); + export_deprecated_constant(SI_CHUSEOK_WEDNESDAY); + export_deprecated_constant(SI_CHUSEOK_THURSDAY); + export_deprecated_constant(SI_CHUSEOK_FRIDAY); + export_deprecated_constant(SI_CHUSEOK_WEEKEND); + export_deprecated_constant(SI_ALL_LIGHTGUARD); + export_deprecated_constant(SI_ALL_LIGHTGUARD_COOL_TIME); + export_deprecated_constant(SI_MTF_MHP); + export_deprecated_constant(SI_MTF_MSP); + export_deprecated_constant(SI_MTF_PUMPKIN); + export_deprecated_constant(SI_MTF_HITFLEE); + export_deprecated_constant(SI_MTF_CRIDAMAGE2); + export_deprecated_constant(SI_MTF_SPDRAIN); + export_deprecated_constant(SI_ACUO_MINT_GUM); + export_deprecated_constant(SI_S_HEALPOTION); + export_deprecated_constant(SI_REUSE_LIMIT_S_HEAL_POTION); + export_deprecated_constant(SI_PLAYTIME_STATISTICS); + export_deprecated_constant(SI_GN_CHANGEMATERIAL_OPERATOR); + export_deprecated_constant(SI_GN_MIX_COOKING_OPERATOR); + export_deprecated_constant(SI_GN_MAKEBOMB_OPERATOR); + export_deprecated_constant(SI_GN_S_PHARMACY_OPERATOR); + export_deprecated_constant(SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR); + export_deprecated_constant(SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR); + export_deprecated_constant(SI_NC_MAGICDECOY_OPERATOR); + export_deprecated_constant(SI_GUILD_STORAGE); + export_deprecated_constant(SI_GC_POISONINGWEAPON_OPERATOR); + export_deprecated_constant(SI_WS_WEAPONREFINE_OPERATOR); + export_deprecated_constant(SI_BS_REPAIRWEAPON_OPERATOR); + export_deprecated_constant(SI_GET_MAILBOX); + export_deprecated_constant(SI_JUMPINGCLAN); + export_deprecated_constant(SI_JP_OTP); + export_deprecated_constant(SI_HANDICAPTOLERANCE_LEVELGAP); + export_deprecated_constant(SI_MTF_RANGEATK2); + export_deprecated_constant(SI_MTF_ASPD2); + export_deprecated_constant(SI_MTF_MATK2); + export_deprecated_constant(SI_SHOW_NPCHPBAR); + export_deprecated_constant(SI_FLOWERSMOKE); + export_deprecated_constant(SI_FSTONE); + export_deprecated_constant(SI_DAILYSENDMAILCNT); + export_deprecated_constant(SI_QSCARABA); + export_deprecated_constant(SI_LJOSALFAR); + export_deprecated_constant(SI_PAD_READER_KNIGHT); + export_deprecated_constant(SI_PAD_READER_CRUSADER); + export_deprecated_constant(SI_PAD_READER_BLACKSMITH); + export_deprecated_constant(SI_PAD_READER_ALCHEMIST); + export_deprecated_constant(SI_PAD_READER_ASSASSIN); + export_deprecated_constant(SI_PAD_READER_ROGUE); + export_deprecated_constant(SI_PAD_READER_WIZARD); + export_deprecated_constant(SI_PAD_READER_SAGE); + export_deprecated_constant(SI_PAD_READER_PRIEST); + export_deprecated_constant(SI_PAD_READER_MONK); + export_deprecated_constant(SI_PAD_READER_HUNTER); + export_deprecated_constant(SI_PAD_READER_BARD); + export_deprecated_constant(SI_PAD_READER_DANCER); + export_deprecated_constant(SI_PAD_READER_TAEKWON); + export_deprecated_constant(SI_PAD_READER_NINJA); + export_deprecated_constant(SI_PAD_READER_GUNSLINGER); + export_deprecated_constant(SI_PAD_READER_SUPERNOVICE); + export_deprecated_constant(SI_ESSENCE_OF_TIME); + export_deprecated_constant(SI_MINIGAME_ROULETTE); + export_deprecated_constant(SI_MINIGAME_GOLD_POINT); + export_deprecated_constant(SI_MINIGAME_SILVER_POINT); + export_deprecated_constant(SI_MINIGAME_BRONZE_POINT); + export_deprecated_constant(SI_HAPPINESS_STAR); + export_deprecated_constant(SI_SUMMEREVENT01); + export_deprecated_constant(SI_SUMMEREVENT02); + export_deprecated_constant(SI_SUMMEREVENT03); + export_deprecated_constant(SI_SUMMEREVENT04); + export_deprecated_constant(SI_SUMMEREVENT05); + export_deprecated_constant(SI_MINIGAME_ROULETTE_BONUS_ITEM); + export_deprecated_constant(SI_DRESS_UP); + export_deprecated_constant(SI_MAPLE_FALLS); + export_deprecated_constant(SI_ALL_NIFLHEIM_RECALL); + export_deprecated_constant(SI_MTF_MARIONETTE); + export_deprecated_constant(SI_MTF_LUDE); + export_deprecated_constant(SI_MTF_CRUISER); + export_deprecated_constant(SI_MERMAID_LONGING); + export_deprecated_constant(SI_MAGICAL_FEATHER); + export_deprecated_constant(SI_DRACULA_CARD); + export_deprecated_constant(SI_LIMIT_POWER_BOOSTER); + export_deprecated_constant(SI_TIME_ACCESSORY); + export_deprecated_constant(SI_EP16_DEF); + export_deprecated_constant(SI_NORMAL_ATKED_SP); + export_deprecated_constant(SI_BODYSTATE_STONECURSE); + export_deprecated_constant(SI_BODYSTATE_FREEZING); + export_deprecated_constant(SI_BODYSTATE_STUN); + export_deprecated_constant(SI_BODYSTATE_SLEEP); + export_deprecated_constant(SI_BODYSTATE_UNDEAD); + export_deprecated_constant(SI_BODYSTATE_STONECURSE_ING); + export_deprecated_constant(SI_BODYSTATE_BURNNING); + export_deprecated_constant(SI_BODYSTATE_IMPRISON); + export_deprecated_constant(SI_HEALTHSTATE_POISON); + export_deprecated_constant(SI_HEALTHSTATE_CURSE); + export_deprecated_constant(SI_HEALTHSTATE_SILENCE); + export_deprecated_constant(SI_HEALTHSTATE_CONFUSION); + export_deprecated_constant(SI_HEALTHSTATE_BLIND); + export_deprecated_constant(SI_HEALTHSTATE_ANGELUS); + export_deprecated_constant(SI_HEALTHSTATE_BLOODING); + export_deprecated_constant(SI_HEALTHSTATE_HEAVYPOISON); + export_deprecated_constant(SI_HEALTHSTATE_FEAR); + export_deprecated_constant(SI_CHERRY_BLOSSOM_CAKE); + export_deprecated_constant(SI_SU_STOOP); + export_deprecated_constant(SI_CATNIPPOWDER); + export_deprecated_constant(SI_SV_ROOTTWIST); + export_deprecated_constant(SI_ATTACK_PROPERTY_NOTHING); + export_deprecated_constant(SI_ATTACK_PROPERTY_WATER); + export_deprecated_constant(SI_ATTACK_PROPERTY_GROUND); + export_deprecated_constant(SI_ATTACK_PROPERTY_FIRE); + export_deprecated_constant(SI_ATTACK_PROPERTY_WIND); + export_deprecated_constant(SI_ATTACK_PROPERTY_POISON); + export_deprecated_constant(SI_ATTACK_PROPERTY_SAINT); + export_deprecated_constant(SI_ATTACK_PROPERTY_DARKNESS); + export_deprecated_constant(SI_ATTACK_PROPERTY_TELEKINESIS); + export_deprecated_constant(SI_ATTACK_PROPERTY_UNDEAD); + export_deprecated_constant(SI_RESIST_PROPERTY_NOTHING); + export_deprecated_constant(SI_RESIST_PROPERTY_WATER); + export_deprecated_constant(SI_RESIST_PROPERTY_GROUND); + export_deprecated_constant(SI_RESIST_PROPERTY_FIRE); + export_deprecated_constant(SI_RESIST_PROPERTY_WIND); + export_deprecated_constant(SI_RESIST_PROPERTY_POISON); + export_deprecated_constant(SI_RESIST_PROPERTY_SAINT); + export_deprecated_constant(SI_RESIST_PROPERTY_DARKNESS); + export_deprecated_constant(SI_RESIST_PROPERTY_TELEKINESIS); + export_deprecated_constant(SI_RESIST_PROPERTY_UNDEAD); + export_deprecated_constant(SI_BITESCAR); + export_deprecated_constant(SI_ARCLOUSEDASH); + export_deprecated_constant(SI_TUNAPARTY); + export_deprecated_constant(SI_SHRIMP); + export_deprecated_constant(SI_FRESHSHRIMP); + export_deprecated_constant(SI_PERIOD_RECEIVEITEM); + export_deprecated_constant(SI_PERIOD_PLUSEXP); + export_deprecated_constant(SI_PERIOD_PLUSJOBEXP); + export_deprecated_constant(SI_RUNEHELM); + export_deprecated_constant(SI_HELM_VERKANA); + export_deprecated_constant(SI_HELM_RHYDO); + export_deprecated_constant(SI_HELM_TURISUS); + export_deprecated_constant(SI_HELM_HAGALAS); + export_deprecated_constant(SI_HELM_ISIA); + export_deprecated_constant(SI_HELM_ASIR); + export_deprecated_constant(SI_HELM_URJ); + export_deprecated_constant(SI_SUHIDE); + export_deprecated_constant(SI_DORAM_BUF_01); + export_deprecated_constant(SI_DORAM_BUF_02); + export_deprecated_constant(SI_SPRITEMABLE); + export_deprecated_constant(SI_AID_PERIOD_RECEIVEITEM); + export_deprecated_constant(SI_AID_PERIOD_PLUSEXP); + export_deprecated_constant(SI_AID_PERIOD_PLUSJOBEXP); + export_deprecated_constant(SI_AID_PERIOD_DEADPENALTY); + export_deprecated_constant(SI_AID_PERIOD_ADDSTOREITEMCOUNT); + export_deprecated_constant(SI_HISS); + export_deprecated_constant(SI_NYANGGRASS); + export_deprecated_constant(SI_CHATTERING); + export_deprecated_constant(SI_GROOMING); + export_deprecated_constant(SI_PROTECTIONOFSHRIMP); + export_deprecated_constant(SI_EP16_2_BUFF_SS); + export_deprecated_constant(SI_EP16_2_BUFF_SC); + export_deprecated_constant(SI_EP16_2_BUFF_AC); + export_deprecated_constant(SI_GS_MAGICAL_BULLET); + export_deprecated_constant(SI_FALLEN_ANGEL); + export_deprecated_constant(SI_BLAZE_BEAD); + export_deprecated_constant(SI_FROZEN_BEAD); + export_deprecated_constant(SI_BREEZE_BEAD); + export_deprecated_constant(SI_AID_PERIOD_RECEIVEITEM_2ND); + export_deprecated_constant(SI_AID_PERIOD_PLUSEXP_2ND); + export_deprecated_constant(SI_AID_PERIOD_PLUSJOBEXP_2ND); + export_deprecated_constant(SI_PRONTERA_JP); + export_deprecated_constant(SI_GLOOM_CARD); + export_deprecated_constant(SI_PHARAOH_CARD); + export_deprecated_constant(SI_KIEL_CARD); + export_deprecated_constant(SI_CHEERUP); + export_deprecated_constant(SI_S_MANAPOTION); + export_deprecated_constant(SI_M_DEFSCROLL); + +/// Do not modify code below this, until the end of the API hook, since it will be automatically generated again +/// @APIHOOK_START(EFST_CONST) + export_constant(EFST_BLANK); + export_constant(EFST_PROVOKE); + export_constant(EFST_ENDURE); + export_constant(EFST_TWOHANDQUICKEN); + export_constant(EFST_CONCENTRATION); + export_constant(EFST_HIDING); + export_constant(EFST_CLOAKING); + export_constant(EFST_ENCHANTPOISON); + export_constant(EFST_POISONREACT); + export_constant(EFST_QUAGMIRE); + export_constant(EFST_ANGELUS); + export_constant(EFST_BLESSING); + export_constant(EFST_CRUCIS); + export_constant(EFST_INC_AGI); + export_constant(EFST_DEC_AGI); + export_constant(EFST_SLOWPOISON); + export_constant(EFST_IMPOSITIO); + export_constant(EFST_SUFFRAGIUM); + export_constant(EFST_ASPERSIO); + export_constant(EFST_BENEDICTIO); + export_constant(EFST_KYRIE); + export_constant(EFST_MAGNIFICAT); + export_constant(EFST_GLORIA); + export_constant(EFST_LEXAETERNA); + export_constant(EFST_ADRENALINE); + export_constant(EFST_WEAPONPERFECT); + export_constant(EFST_OVERTHRUST); + export_constant(EFST_MAXIMIZE); + export_constant(EFST_RIDING); + export_constant(EFST_FALCON); + export_constant(EFST_TRICKDEAD); + export_constant(EFST_SHOUT); + export_constant(EFST_ENERGYCOAT); + export_constant(EFST_BROKENARMOR); + export_constant(EFST_BROKENWEAPON); + export_constant(EFST_ILLUSION); + export_constant(EFST_WEIGHTOVER50); + export_constant(EFST_WEIGHTOVER90); + export_constant(EFST_ATTHASTE_POTION1); + export_constant(EFST_ATTHASTE_POTION2); + export_constant(EFST_ATTHASTE_POTION3); + export_constant(EFST_ATTHASTE_INFINITY); + export_constant(EFST_MOVHASTE_POTION); + export_constant(EFST_MOVHASTE_INFINITY); + export_constant(EFST_AUTOCOUNTER); + export_constant(EFST_SPLASHER); + export_constant(EFST_ANKLESNARE); + export_constant(EFST_POSTDELAY); + export_constant(EFST_NOACTION); + export_constant(EFST_IMPOSSIBLEPICKUP); + export_constant(EFST_BARRIER); + export_constant(EFST_NOEQUIPWEAPON); + export_constant(EFST_NOEQUIPSHIELD); + export_constant(EFST_NOEQUIPARMOR); + export_constant(EFST_NOEQUIPHELM); + export_constant(EFST_PROTECTWEAPON); + export_constant(EFST_PROTECTSHIELD); + export_constant(EFST_PROTECTARMOR); + export_constant(EFST_PROTECTHELM); + export_constant(EFST_AUTOGUARD); + export_constant(EFST_REFLECTSHIELD); + export_constant(EFST_DEVOTION); + export_constant(EFST_PROVIDENCE); + export_constant(EFST_DEFENDER); + export_constant(EFST_MAGICROD); + export_constant(EFST_WEAPONPROPERTY); + export_constant(EFST_AUTOSPELL); + export_constant(EFST_SPECIALZONE); + export_constant(EFST_MASK); + export_constant(EFST_SPEARQUICKEN); + export_constant(EFST_BDPLAYING); + export_constant(EFST_WHISTLE); + export_constant(EFST_ASSASSINCROSS); + export_constant(EFST_POEMBRAGI); + export_constant(EFST_APPLEIDUN); + export_constant(EFST_HUMMING); + export_constant(EFST_DONTFORGETME); + export_constant(EFST_FORTUNEKISS); + export_constant(EFST_SERVICEFORYOU); + export_constant(EFST_RICHMANKIM); + export_constant(EFST_ETERNALCHAOS); + export_constant(EFST_DRUMBATTLEFIELD); + export_constant(EFST_RINGNIBELUNGEN); + export_constant(EFST_ROKISWEIL); + export_constant(EFST_INTOABYSS); + export_constant(EFST_SIEGFRIED); + export_constant(EFST_BLADESTOP); + export_constant(EFST_EXPLOSIONSPIRITS); + export_constant(EFST_STEELBODY); + export_constant(EFST_EXTREMITYFIST); + export_constant(EFST_COMBOATTACK); + export_constant(EFST_PROPERTYFIRE); + export_constant(EFST_PROPERTYWATER); + export_constant(EFST_PROPERTYWIND); + export_constant(EFST_PROPERTYGROUND); + export_constant(EFST_MAGICATTACK); + export_constant(EFST_STOP); + export_constant(EFST_WEAPONBRAKER); + export_constant(EFST_PROPERTYUNDEAD); + export_constant(EFST_POWERUP); + export_constant(EFST_AGIUP); + export_constant(EFST_SIEGEMODE); + export_constant(EFST_INVISIBLE); + export_constant(EFST_STATUSONE); + export_constant(EFST_AURABLADE); + export_constant(EFST_PARRYING); + export_constant(EFST_LKCONCENTRATION); + export_constant(EFST_TENSIONRELAX); + export_constant(EFST_BERSERK); + export_constant(EFST_SACRIFICE); + export_constant(EFST_GOSPEL); + export_constant(EFST_ASSUMPTIO); + export_constant(EFST_BASILICA); + export_constant(EFST_GROUNDMAGIC); + export_constant(EFST_MAGICPOWER); + export_constant(EFST_EDP); + export_constant(EFST_TRUESIGHT); + export_constant(EFST_WINDWALK); + export_constant(EFST_MELTDOWN); + export_constant(EFST_CARTBOOST); + export_constant(EFST_CHASEWALK); + export_constant(EFST_SWORDREJECT); + export_constant(EFST_MARIONETTE_MASTER); + export_constant(EFST_MARIONETTE); + export_constant(EFST_MOON); + export_constant(EFST_BLOODING); + export_constant(EFST_JOINTBEAT); + export_constant(EFST_MINDBREAKER); + export_constant(EFST_MEMORIZE); + export_constant(EFST_FOGWALL); + export_constant(EFST_SPIDERWEB); + export_constant(EFST_PROTECTEXP); + export_constant(EFST_SUB_WEAPONPROPERTY); + export_constant(EFST_AUTOBERSERK); + export_constant(EFST_RUN); + export_constant(EFST_TING); + export_constant(EFST_STORMKICK_ON); + export_constant(EFST_STORMKICK_READY); + export_constant(EFST_DOWNKICK_ON); + export_constant(EFST_DOWNKICK_READY); + export_constant(EFST_TURNKICK_ON); + export_constant(EFST_TURNKICK_READY); + export_constant(EFST_COUNTER_ON); + export_constant(EFST_COUNTER_READY); + export_constant(EFST_DODGE_ON); + export_constant(EFST_DODGE_READY); + export_constant(EFST_STRUP); + export_constant(EFST_PROPERTYDARK); + export_constant(EFST_ADRENALINE2); + export_constant(EFST_PROPERTYTELEKINESIS); + export_constant(EFST_SOULLINK); + export_constant(EFST_PLUSATTACKPOWER); + export_constant(EFST_PLUSMAGICPOWER); + export_constant(EFST_DEVIL1); + export_constant(EFST_KAITE); + export_constant(EFST_SWOO); + export_constant(EFST_STAR2); + export_constant(EFST_KAIZEL); + export_constant(EFST_KAAHI); + export_constant(EFST_KAUPE); + export_constant(EFST_SMA_READY); + export_constant(EFST_SKE); + export_constant(EFST_ONEHANDQUICKEN); + export_constant(EFST_FRIEND); + export_constant(EFST_FRIENDUP); + export_constant(EFST_SG_WARM); + export_constant(EFST_SG_SUN_WARM); + export_constant(EFST_SG_MOON_WARM); + export_constant(EFST_SG_STAR_WARM); + export_constant(EFST_EMOTION); + export_constant(EFST_SUN_COMFORT); + export_constant(EFST_MOON_COMFORT); + export_constant(EFST_STAR_COMFORT); + export_constant(EFST_EXPUP); + export_constant(EFST_GDSKILL_BATTLEORDER); + export_constant(EFST_GDSKILL_REGENERATION); + export_constant(EFST_GDSKILL_POSTDELAY); + export_constant(EFST_RESISTHANDICAP); + export_constant(EFST_MAXHPPERCENT); + export_constant(EFST_MAXSPPERCENT); + export_constant(EFST_DEFENCE); + export_constant(EFST_SLOWDOWN); + export_constant(EFST_PRESERVE); + export_constant(EFST_CHASEWALK2); + export_constant(EFST_NOT_EXTREMITYFIST); + export_constant(EFST_CLAIRVOYANCE); + export_constant(EFST_MOVESLOW_POTION); + export_constant(EFST_DOUBLECASTING); + export_constant(EFST_GRAVITATION); + export_constant(EFST_OVERTHRUSTMAX); + export_constant(EFST_LONGING); + export_constant(EFST_HERMODE); + export_constant(EFST_TAROTCARD); + export_constant(EFST_HLIF_AVOID); + export_constant(EFST_HFLI_FLEET); + export_constant(EFST_HFLI_SPEED); + export_constant(EFST_HLIF_CHANGE); + export_constant(EFST_HAMI_BLOODLUST); + export_constant(EFST_CR_SHRINK); + export_constant(EFST_WZ_SIGHTBLASTER); + export_constant(EFST_DC_WINKCHARM); + export_constant(EFST_RG_CCONFINE_M); + export_constant(EFST_RG_CCONFINE_S); + export_constant(EFST_DISABLEMOVE); + export_constant(EFST_GS_MADNESSCANCEL); + export_constant(EFST_GS_GATLINGFEVER); + export_constant(EFST_EARTHSCROLL); + export_constant(EFST_NJ_UTSUSEMI); + export_constant(EFST_NJ_BUNSINJYUTSU); + export_constant(EFST_NJ_NEN); + export_constant(EFST_GS_ADJUSTMENT); + export_constant(EFST_GS_ACCURACY); + export_constant(EFST_NJ_SUITON); + export_constant(EFST_PET); + export_constant(EFST_MENTAL); + export_constant(EFST_EXPMEMORY); + export_constant(EFST_PERFORMANCE); + export_constant(EFST_GAIN); + export_constant(EFST_GRIFFON); + export_constant(EFST_DRIFT); + export_constant(EFST_WALLSHIFT); + export_constant(EFST_REINCARNATION); + export_constant(EFST_PATTACK); + export_constant(EFST_PSPEED); + export_constant(EFST_PDEFENSE); + export_constant(EFST_PCRITICAL); + export_constant(EFST_RANKING); + export_constant(EFST_PTRIPLE); + export_constant(EFST_DENERGY); + export_constant(EFST_WAVE1); + export_constant(EFST_WAVE2); + export_constant(EFST_WAVE3); + export_constant(EFST_WAVE4); + export_constant(EFST_DAURA); + export_constant(EFST_DFREEZER); + export_constant(EFST_DPUNISH); + export_constant(EFST_DBARRIER); + export_constant(EFST_DWARNING); + export_constant(EFST_MOUSEWHEEL); + export_constant(EFST_DGAUGE); + export_constant(EFST_DACCEL); + export_constant(EFST_DBLOCK); + export_constant(EFST_FOOD_STR); + export_constant(EFST_FOOD_AGI); + export_constant(EFST_FOOD_VIT); + export_constant(EFST_FOOD_DEX); + export_constant(EFST_FOOD_INT); + export_constant(EFST_FOOD_LUK); + export_constant(EFST_FOOD_BASICAVOIDANCE); + export_constant(EFST_FOOD_BASICHIT); + export_constant(EFST_FOOD_CRITICALSUCCESSVALUE); + export_constant(EFST_CASH_PLUSEXP); + export_constant(EFST_CASH_DEATHPENALTY); + export_constant(EFST_CASH_RECEIVEITEM); + export_constant(EFST_CASH_BOSS_ALARM); + export_constant(EFST_DA_ENERGY); + export_constant(EFST_DA_FIRSTSLOT); + export_constant(EFST_DA_HEADDEF); + export_constant(EFST_DA_SPACE); + export_constant(EFST_DA_TRANSFORM); + export_constant(EFST_DA_ITEMREBUILD); + export_constant(EFST_DA_ILLUSION); + export_constant(EFST_DA_DARKPOWER); + export_constant(EFST_DA_EARPLUG); + export_constant(EFST_DA_CONTRACT); + export_constant(EFST_DA_BLACK); + export_constant(EFST_DA_MAGICCART); + export_constant(EFST_CRYSTAL); + export_constant(EFST_DA_REBUILD); + export_constant(EFST_DA_EDARKNESS); + export_constant(EFST_DA_EGUARDIAN); + export_constant(EFST_DA_TIMEOUT); + export_constant(EFST_FOOD_STR_CASH); + export_constant(EFST_FOOD_AGI_CASH); + export_constant(EFST_FOOD_VIT_CASH); + export_constant(EFST_FOOD_DEX_CASH); + export_constant(EFST_FOOD_INT_CASH); + export_constant(EFST_FOOD_LUK_CASH); + export_constant(EFST_MER_FLEE); + export_constant(EFST_MER_ATK); + export_constant(EFST_MER_HP); + export_constant(EFST_MER_SP); + export_constant(EFST_MER_HIT); + export_constant(EFST_SLOWCAST); + export_constant(EFST_MAGICMIRROR); + export_constant(EFST_STONESKIN); + export_constant(EFST_ANTIMAGIC); + export_constant(EFST_CRITICALWOUND); + export_constant(EFST_NPC_DEFENDER); + export_constant(EFST_NOACTION_WAIT); + export_constant(EFST_MOVHASTE_HORSE); + export_constant(EFST_PROTECT_DEF); + export_constant(EFST_PROTECT_MDEF); + export_constant(EFST_HEALPLUS); + export_constant(EFST_S_LIFEPOTION); + export_constant(EFST_L_LIFEPOTION); + export_constant(EFST_CRITICALPERCENT); + export_constant(EFST_PLUSAVOIDVALUE); + export_constant(EFST_ATKER_ASPD); + export_constant(EFST_TARGET_ASPD); + export_constant(EFST_ATKER_MOVESPEED); + export_constant(EFST_ATKER_BLOOD); + export_constant(EFST_TARGET_BLOOD); + export_constant(EFST_ARMOR_PROPERTY); + export_constant(EFST_REUSE_LIMIT_A); + export_constant(EFST_HELLPOWER); + export_constant(EFST_STEAMPACK); + export_constant(EFST_REUSE_LIMIT_B); + export_constant(EFST_REUSE_LIMIT_C); + export_constant(EFST_REUSE_LIMIT_D); + export_constant(EFST_REUSE_LIMIT_E); + export_constant(EFST_REUSE_LIMIT_F); + export_constant(EFST_INVINCIBLE); + export_constant(EFST_CASH_PLUSONLYJOBEXP); + export_constant(EFST_PARTYFLEE); + export_constant(EFST_ANGEL_PROTECT); + export_constant(EFST_ENDURE_MDEF); + export_constant(EFST_ENCHANTBLADE); + export_constant(EFST_DEATHBOUND); + export_constant(EFST_REFRESH); + export_constant(EFST_GIANTGROWTH); + export_constant(EFST_STONEHARDSKIN); + export_constant(EFST_VITALITYACTIVATION); + export_constant(EFST_FIGHTINGSPIRIT); + export_constant(EFST_ABUNDANCE); + export_constant(EFST_REUSE_MILLENNIUMSHIELD); + export_constant(EFST_REUSE_CRUSHSTRIKE); + export_constant(EFST_REUSE_REFRESH); + export_constant(EFST_REUSE_STORMBLAST); + export_constant(EFST_VENOMIMPRESS); + export_constant(EFST_EPICLESIS); + export_constant(EFST_ORATIO); + export_constant(EFST_LAUDAAGNUS); + export_constant(EFST_LAUDARAMUS); + export_constant(EFST_CLOAKINGEXCEED); + export_constant(EFST_HALLUCINATIONWALK); + export_constant(EFST_HALLUCINATIONWALK_POSTDELAY); + export_constant(EFST_RENOVATIO); + export_constant(EFST_WEAPONBLOCKING); + export_constant(EFST_WEAPONBLOCKING_POSTDELAY); + export_constant(EFST_ROLLINGCUTTER); + export_constant(EFST_EXPIATIO); + export_constant(EFST_POISONINGWEAPON); + export_constant(EFST_TOXIN); + export_constant(EFST_PARALYSE); + export_constant(EFST_VENOMBLEED); + export_constant(EFST_MAGICMUSHROOM); + export_constant(EFST_DEATHHURT); + export_constant(EFST_PYREXIA); + export_constant(EFST_OBLIVIONCURSE); + export_constant(EFST_LEECHESEND); + export_constant(EFST_DUPLELIGHT); + export_constant(EFST_FROSTMISTY); + export_constant(EFST_FEARBREEZE); + export_constant(EFST_ELECTRICSHOCKER); + export_constant(EFST_MARSHOFABYSS); + export_constant(EFST_RECOGNIZEDSPELL); + export_constant(EFST_STASIS); + export_constant(EFST_WUGRIDER); + export_constant(EFST_WUGDASH); + export_constant(EFST_WUGBITE); + export_constant(EFST_CAMOUFLAGE); + export_constant(EFST_ACCELERATION); + export_constant(EFST_HOVERING); + export_constant(EFST_SUMMON1); + export_constant(EFST_SUMMON2); + export_constant(EFST_SUMMON3); + export_constant(EFST_SUMMON4); + export_constant(EFST_SUMMON5); + export_constant(EFST_MVPCARD_TAOGUNKA); + export_constant(EFST_MVPCARD_MISTRESS); + export_constant(EFST_MVPCARD_ORCHERO); + export_constant(EFST_MVPCARD_ORCLORD); + export_constant(EFST_OVERHEAT_LIMITPOINT); + export_constant(EFST_OVERHEAT); + export_constant(EFST_SHAPESHIFT); + export_constant(EFST_INFRAREDSCAN); + export_constant(EFST_MAGNETICFIELD); + export_constant(EFST_NEUTRALBARRIER); + export_constant(EFST_NEUTRALBARRIER_MASTER); + export_constant(EFST_STEALTHFIELD); + export_constant(EFST_STEALTHFIELD_MASTER); + export_constant(EFST_MANU_ATK); + export_constant(EFST_MANU_DEF); + export_constant(EFST_SPL_ATK); + export_constant(EFST_SPL_DEF); + export_constant(EFST_REPRODUCE); + export_constant(EFST_MANU_MATK); + export_constant(EFST_SPL_MATK); + export_constant(EFST_STR_SCROLL); + export_constant(EFST_INT_SCROLL); + export_constant(EFST_LG_REFLECTDAMAGE); + export_constant(EFST_FORCEOFVANGUARD); + export_constant(EFST_BUCHEDENOEL); + export_constant(EFST_AUTOSHADOWSPELL); + export_constant(EFST_SHADOWFORM); + export_constant(EFST_RAID); + export_constant(EFST_SHIELDSPELL_DEF); + export_constant(EFST_SHIELDSPELL_MDEF); + export_constant(EFST_SHIELDSPELL_REF); + export_constant(EFST_BODYPAINT); + export_constant(EFST_EXEEDBREAK); + export_constant(EFST_ADORAMUS); + export_constant(EFST_PRESTIGE); + export_constant(EFST_INVISIBILITY); + export_constant(EFST_DEADLYINFECT); + export_constant(EFST_BANDING); + export_constant(EFST_EARTHDRIVE); + export_constant(EFST_INSPIRATION); + export_constant(EFST_ENERVATION); + export_constant(EFST_GROOMY); + export_constant(EFST_RAISINGDRAGON); + export_constant(EFST_IGNORANCE); + export_constant(EFST_LAZINESS); + export_constant(EFST_LIGHTNINGWALK); + export_constant(EFST_ACARAJE); + export_constant(EFST_UNLUCKY); + export_constant(EFST_CURSEDCIRCLE_ATKER); + export_constant(EFST_CURSEDCIRCLE_TARGET); + export_constant(EFST_WEAKNESS); + export_constant(EFST_CRESCENTELBOW); + export_constant(EFST_NOEQUIPACCESSARY); + export_constant(EFST_STRIPACCESSARY); + export_constant(EFST_MANHOLE); + export_constant(EFST_POPECOOKIE); + export_constant(EFST_FALLENEMPIRE); + export_constant(EFST_GENTLETOUCH_ENERGYGAIN); + export_constant(EFST_GENTLETOUCH_CHANGE); + export_constant(EFST_GENTLETOUCH_REVITALIZE); + export_constant(EFST_BLOODYLUST); + export_constant(EFST_SWING); + export_constant(EFST_SYMPHONY_LOVE); + export_constant(EFST_PROPERTYWALK); + export_constant(EFST_SPELLFIST); + export_constant(EFST_NETHERWORLD); + export_constant(EFST_SIREN); + export_constant(EFST_HANDICAPSTATE_DEEP_SLEEP); + export_constant(EFST_SIRCLEOFNATURE); + export_constant(EFST_COLD); + export_constant(EFST_GLOOMYDAY); + export_constant(EFST_SONG_OF_MANA); + export_constant(EFST_CLOUD_KILL); + export_constant(EFST_DANCE_WITH_WUG); + export_constant(EFST_RUSH_WINDMILL); + export_constant(EFST_ECHOSONG); + export_constant(EFST_HARMONIZE); + export_constant(EFST_STRIKING); + export_constant(EFST_WARMER); + export_constant(EFST_MOONLIT_SERENADE); + export_constant(EFST_SATURDAY_NIGHT_FEVER); + export_constant(EFST_SITDOWN_FORCE); + export_constant(EFST_ANALYZE); + export_constant(EFST_LERADS_DEW); + export_constant(EFST_MELODYOFSINK); + export_constant(EFST_BEYOND_OF_WARCRY); + export_constant(EFST_UNLIMITED_HUMMING_VOICE); + export_constant(EFST_SPELLBOOK1); + export_constant(EFST_SPELLBOOK2); + export_constant(EFST_SPELLBOOK3); + export_constant(EFST_FREEZE_SP); + export_constant(EFST_GN_TRAINING_SWORD); + export_constant(EFST_GN_REMODELING_CART); + export_constant(EFST_GN_CARTBOOST); + export_constant(EFST_FIXEDCASTINGTM_REDUCE); + export_constant(EFST_THORNS_TRAP); + export_constant(EFST_BLOOD_SUCKER); + export_constant(EFST_SPORE_EXPLOSION); + export_constant(EFST_DEMONIC_FIRE); + export_constant(EFST_FIRE_EXPANSION_SMOKE_POWDER); + export_constant(EFST_FIRE_EXPANSION_TEAR_GAS); + export_constant(EFST_BLOCKING_PLAY); + export_constant(EFST_MANDRAGORA); + export_constant(EFST_ACTIVATE); + export_constant(EFST_AB_SECRAMENT); + export_constant(EFST_ASSUMPTIO2); + export_constant(EFST_TK_SEVENWIND); + export_constant(EFST_LIMIT_ODINS_RECALL); + export_constant(EFST_STOMACHACHE); + export_constant(EFST_MYSTERIOUS_POWDER); + export_constant(EFST_MELON_BOMB); + export_constant(EFST_BANANA_BOMB_SITDOWN_POSTDELAY); + export_constant(EFST_PROMOTE_HEALTH_RESERCH); + export_constant(EFST_ENERGY_DRINK_RESERCH); + export_constant(EFST_EXTRACT_WHITE_POTION_Z); + export_constant(EFST_VITATA_500); + export_constant(EFST_EXTRACT_SALAMINE_JUICE); + export_constant(EFST_BOOST500); + export_constant(EFST_FULL_SWING_K); + export_constant(EFST_MANA_PLUS); + export_constant(EFST_MUSTLE_M); + export_constant(EFST_LIFE_FORCE_F); + export_constant(EFST_VACUUM_EXTREME); + export_constant(EFST_SAVAGE_STEAK); + export_constant(EFST_COCKTAIL_WARG_BLOOD); + export_constant(EFST_MINOR_BBQ); + export_constant(EFST_SIROMA_ICE_TEA); + export_constant(EFST_DROCERA_HERB_STEAMED); + export_constant(EFST_PUTTI_TAILS_NOODLES); + export_constant(EFST_BANANA_BOMB); + export_constant(XXX_EFST_SM_ELEMENTAL); + export_constant(EFST_SPELLBOOK4); + export_constant(EFST_SPELLBOOK5); + export_constant(EFST_SPELLBOOK6); + export_constant(EFST_SPELLBOOK7); + export_constant(EFST_ELEMENTAL_AGGRESSIVE); + export_constant(EFST_RETURN_TO_ELDICASTES); + export_constant(EFST_BANDING_DEFENCE); + export_constant(EFST_SKELSCROLL); + export_constant(EFST_DISTRUCTIONSCROLL); + export_constant(EFST_ROYALSCROLL); + export_constant(EFST_IMMUNITYSCROLL); + export_constant(EFST_MYSTICSCROLL); + export_constant(EFST_BATTLESCROLL); + export_constant(EFST_ARMORSCROLL); + export_constant(EFST_FREYJASCROLL); + export_constant(EFST_SOULSCROLL); + export_constant(EFST_CIRCLE_OF_FIRE); + export_constant(EFST_CIRCLE_OF_FIRE_OPTION); + export_constant(EFST_FIRE_CLOAK); + export_constant(EFST_FIRE_CLOAK_OPTION); + export_constant(EFST_WATER_SCREEN); + export_constant(EFST_WATER_SCREEN_OPTION); + export_constant(EFST_WATER_DROP); + export_constant(EFST_WATER_DROP_OPTION); + export_constant(EFST_WIND_STEP); + export_constant(EFST_WIND_STEP_OPTION); + export_constant(EFST_WIND_CURTAIN); + export_constant(EFST_WIND_CURTAIN_OPTION); + export_constant(EFST_WATER_BARRIER); + export_constant(EFST_ZEPHYR); + export_constant(EFST_SOLID_SKIN); + export_constant(EFST_SOLID_SKIN_OPTION); + export_constant(EFST_STONE_SHIELD); + export_constant(EFST_STONE_SHIELD_OPTION); + export_constant(EFST_POWER_OF_GAIA); + export_constant(EFST_EL_WAIT); + export_constant(EFST_EL_PASSIVE); + export_constant(EFST_EL_DEFENSIVE); + export_constant(EFST_EL_OFFENSIVE); + export_constant(EFST_EL_COST); + export_constant(EFST_PYROTECHNIC); + export_constant(EFST_PYROTECHNIC_OPTION); + export_constant(EFST_HEATER); + export_constant(EFST_HEATER_OPTION); + export_constant(EFST_TROPIC); + export_constant(EFST_TROPIC_OPTION); + export_constant(EFST_AQUAPLAY); + export_constant(EFST_AQUAPLAY_OPTION); + export_constant(EFST_COOLER); + export_constant(EFST_COOLER_OPTION); + export_constant(EFST_CHILLY_AIR); + export_constant(EFST_CHILLY_AIR_OPTION); + export_constant(EFST_GUST); + export_constant(EFST_GUST_OPTION); + export_constant(EFST_BLAST); + export_constant(EFST_BLAST_OPTION); + export_constant(EFST_WILD_STORM); + export_constant(EFST_WILD_STORM_OPTION); + export_constant(EFST_PETROLOGY); + export_constant(EFST_PETROLOGY_OPTION); + export_constant(EFST_CURSED_SOIL); + export_constant(EFST_CURSED_SOIL_OPTION); + export_constant(EFST_UPHEAVAL); + export_constant(EFST_UPHEAVAL_OPTION); + export_constant(EFST_TIDAL_WEAPON); + export_constant(EFST_TIDAL_WEAPON_OPTION); + export_constant(EFST_ROCK_CRUSHER); + export_constant(EFST_ROCK_CRUSHER_ATK); + export_constant(EFST_FIRE_INSIGNIA); + export_constant(EFST_WATER_INSIGNIA); + export_constant(EFST_WIND_INSIGNIA); + export_constant(EFST_EARTH_INSIGNIA); + export_constant(EFST_EQUIPED_FLOOR); + export_constant(EFST_GUARDIAN_RECALL); + export_constant(EFST_MORA_BUFF); + export_constant(EFST_REUSE_LIMIT_G); + export_constant(EFST_REUSE_LIMIT_H); + export_constant(EFST_NEEDLE_OF_PARALYZE); + export_constant(EFST_PAIN_KILLER); + export_constant(EFST_G_LIFEPOTION); + export_constant(EFST_VITALIZE_POTION); + export_constant(EFST_LIGHT_OF_REGENE); + export_constant(EFST_OVERED_BOOST); + export_constant(EFST_SILENT_BREEZE); + export_constant(EFST_ODINS_POWER); + export_constant(EFST_STYLE_CHANGE); + export_constant(EFST_SONIC_CLAW_POSTDELAY); + export_constant(EFST_SILVERVEIN_RUSH_POSTDELAY); + export_constant(EFST_MIDNIGHT_FRENZY_POSTDELAY); + export_constant(EFST_GOLDENE_FERSE); + export_constant(EFST_ANGRIFFS_MODUS); + export_constant(EFST_TINDER_BREAKER); + export_constant(EFST_TINDER_BREAKER_POSTDELAY); + export_constant(EFST_CBC); + export_constant(EFST_CBC_POSTDELAY); + export_constant(EFST_EQC); + export_constant(EFST_MAGMA_FLOW); + export_constant(EFST_GRANITIC_ARMOR); + export_constant(EFST_PYROCLASTIC); + export_constant(EFST_VOLCANIC_ASH); + export_constant(EFST_SPIRITS_SAVEINFO1); + export_constant(EFST_SPIRITS_SAVEINFO2); + export_constant(EFST_MAGIC_CANDY); + export_constant(EFST_SEARCH_STORE_INFO); + export_constant(EFST_ALL_RIDING); + export_constant(EFST_ALL_RIDING_REUSE_LIMIT); + export_constant(EFST_MACRO); + export_constant(EFST_MACRO_POSTDELAY); + export_constant(EFST_BEER_BOTTLE_CAP); + export_constant(EFST_OVERLAPEXPUP); + export_constant(EFST_PC_IZ_DUN05); + export_constant(EFST_CRUSHSTRIKE); + export_constant(EFST_MONSTER_TRANSFORM); + export_constant(EFST_SIT); + export_constant(EFST_ONAIR); + export_constant(EFST_MTF_ASPD); + export_constant(EFST_MTF_RANGEATK); + export_constant(EFST_MTF_MATK); + export_constant(EFST_MTF_MLEATKED); + export_constant(EFST_MTF_CRIDAMAGE); + export_constant(EFST_REUSE_LIMIT_MTF); + export_constant(EFST_MACRO_PERMIT); + export_constant(EFST_MACRO_PLAY); + export_constant(EFST_SKF_CAST); + export_constant(EFST_SKF_ASPD); + export_constant(EFST_SKF_ATK); + export_constant(EFST_SKF_MATK); + export_constant(EFST_REWARD_PLUSONLYJOBEXP); + export_constant(EFST_HANDICAPSTATE_NORECOVER); + export_constant(EFST_SET_NUM_DEF); + export_constant(EFST_SET_NUM_MDEF); + export_constant(EFST_SET_PER_DEF); + export_constant(EFST_SET_PER_MDEF); + export_constant(EFST_PARTYBOOKING_SEARCH_DELAY); + export_constant(EFST_PARTYBOOKING_REGISTER_DELAY); + export_constant(EFST_PERIOD_TIME_CHECK_DETECT_SKILL); + export_constant(EFST_KO_JYUMONJIKIRI); + export_constant(EFST_MEIKYOUSISUI); + export_constant(EFST_ATTHASTE_CASH); + export_constant(EFST_EQUIPPED_DIVINE_ARMOR); + export_constant(EFST_EQUIPPED_HOLY_ARMOR); + export_constant(EFST_2011RWC); + export_constant(EFST_KYOUGAKU); + export_constant(EFST_IZAYOI); + export_constant(EFST_ZENKAI); + export_constant(EFST_KG_KAGEHUMI); + export_constant(EFST_KYOMU); + export_constant(EFST_KAGEMUSYA); + export_constant(EFST_ZANGETSU); + export_constant(EFST_PHI_DEMON); + export_constant(EFST_GENSOU); + export_constant(EFST_AKAITSUKI); + export_constant(EFST_TETANY); + export_constant(EFST_GM_BATTLE); + export_constant(EFST_GM_BATTLE2); + export_constant(EFST_2011RWC_SCROLL); + export_constant(EFST_ACTIVE_MONSTER_TRANSFORM); + export_constant(EFST_MYSTICPOWDER); + export_constant(EFST_ECLAGE_RECALL); + export_constant(EFST_ENTRY_QUEUE_APPLY_DELAY); + export_constant(EFST_REUSE_LIMIT_ECL); + export_constant(EFST_M_LIFEPOTION); + export_constant(EFST_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT); + export_constant(EFST_UNKNOWN_NAME); + export_constant(EFST_ON_PUSH_CART); + export_constant(EFST_HAT_EFFECT); + export_constant(EFST_FLOWER_LEAF); + export_constant(EFST_RAY_OF_PROTECTION); + export_constant(EFST_GLASTHEIM_ATK); + export_constant(EFST_GLASTHEIM_DEF); + export_constant(EFST_GLASTHEIM_HEAL); + export_constant(EFST_GLASTHEIM_HIDDEN); + export_constant(EFST_GLASTHEIM_STATE); + export_constant(EFST_GLASTHEIM_ITEMDEF); + export_constant(EFST_GLASTHEIM_HPSP); + export_constant(EFST_FOLLOWER_NPC_SKILL_POSTDELAY); + export_constant(EFST_ALMIGHTY); + export_constant(EFST_GVG_GIANT); + export_constant(EFST_GVG_GOLEM); + export_constant(EFST_GVG_STUN); + export_constant(EFST_GVG_STONE); + export_constant(EFST_GVG_FREEZ); + export_constant(EFST_GVG_SLEEP); + export_constant(EFST_GVG_CURSE); + export_constant(EFST_GVG_SILENCE); + export_constant(EFST_GVG_BLIND); + export_constant(EFST_CLIENT_ONLY_EQUIP_ARROW); + export_constant(EFST_CLAN_INFO); + export_constant(EFST_JP_EVENT01); + export_constant(EFST_JP_EVENT02); + export_constant(EFST_JP_EVENT03); + export_constant(EFST_JP_EVENT04); + export_constant(EFST_TELEPORT_FIXEDCASTINGDELAY); + export_constant(EFST_GEFFEN_MAGIC1); + export_constant(EFST_GEFFEN_MAGIC2); + export_constant(EFST_GEFFEN_MAGIC3); + export_constant(EFST_QUEST_BUFF1); + export_constant(EFST_QUEST_BUFF2); + export_constant(EFST_QUEST_BUFF3); + export_constant(EFST_REUSE_LIMIT_RECALL); + export_constant(EFST_SAVEPOSITION); + export_constant(EFST_NPC_ICEEXPLO); + export_constant(EFST_FENRIR_CARD); + export_constant(EFST_REUSE_LIMIT_ASPD_POTION); + export_constant(EFST_MAXPAIN); + export_constant(EFST_PC_STOP); + export_constant(EFST_FRIGG_SONG); + export_constant(EFST_OFFERTORIUM); + export_constant(EFST_TELEKINESIS_INTENSE); + export_constant(EFST_MOONSTAR); + export_constant(EFST_STRANGELIGHTS); + export_constant(EFST_FULL_THROTTLE); + export_constant(EFST_REBOUND); + export_constant(EFST_UNLIMIT); + export_constant(EFST_KINGS_GRACE); + export_constant(EFST_ITEM_ATKMAX); + export_constant(EFST_ITEM_ATKMIN); + export_constant(EFST_ITEM_MATKMAX); + export_constant(EFST_ITEM_MATKMIN); + export_constant(EFST_SUPER_STAR); + export_constant(EFST_HIGH_RANKER); + export_constant(EFST_DARKCROW); + export_constant(EFST_2013_VALENTINE1); + export_constant(EFST_2013_VALENTINE2); + export_constant(EFST_2013_VALENTINE3); + export_constant(EFST_ILLUSIONDOPING); + export_constant(EFST_WIDEWEB); + export_constant(EFST_CHILL); + export_constant(EFST_BURNT); + export_constant(EFST_PCCAFE_PLAY_TIME); + export_constant(EFST_TWISTED_TIME); + export_constant(EFST_FLASHCOMBO); + export_constant(EFST_JITTER_BUFF1); + export_constant(EFST_JITTER_BUFF2); + export_constant(EFST_JITTER_BUFF3); + export_constant(EFST_JITTER_BUFF4); + export_constant(EFST_JITTER_BUFF5); + export_constant(EFST_JITTER_BUFF6); + export_constant(EFST_JITTER_BUFF7); + export_constant(EFST_JITTER_BUFF8); + export_constant(EFST_JITTER_BUFF9); + export_constant(EFST_JITTER_BUFF10); + export_constant(EFST_CUP_OF_BOZA); + export_constant(EFST_B_TRAP); + export_constant(EFST_E_CHAIN); + export_constant(EFST_E_QD_SHOT_READY); + export_constant(EFST_C_MARKER); + export_constant(EFST_H_MINE); + export_constant(EFST_H_MINE_SPLASH); + export_constant(EFST_P_ALTER); + export_constant(EFST_HEAT_BARREL); + export_constant(EFST_ANTI_M_BLAST); + export_constant(EFST_SLUGSHOT); + export_constant(EFST_SWORDCLAN); + export_constant(EFST_ARCWANDCLAN); + export_constant(EFST_GOLDENMACECLAN); + export_constant(EFST_CROSSBOWCLAN); + export_constant(EFST_PACKING_ENVELOPE1); + export_constant(EFST_PACKING_ENVELOPE2); + export_constant(EFST_PACKING_ENVELOPE3); + export_constant(EFST_PACKING_ENVELOPE4); + export_constant(EFST_PACKING_ENVELOPE5); + export_constant(EFST_PACKING_ENVELOPE6); + export_constant(EFST_PACKING_ENVELOPE7); + export_constant(EFST_PACKING_ENVELOPE8); + export_constant(EFST_PACKING_ENVELOPE9); + export_constant(EFST_PACKING_ENVELOPE10); + export_constant(EFST_GLASTHEIM_TRANS); + export_constant(EFST_ZONGZI_POUCH_TRANS); + export_constant(EFST_HEAT_BARREL_AFTER); + export_constant(EFST_DECORATION_OF_MUSIC); + export_constant(EFST_OVERSEAEXPUP); + export_constant(EFST_CLOWN_N_GYPSY_CARD); + export_constant(EFST_OPEN_NPC_MARKET); + export_constant(EFST_BEEF_RIB_STEW); + export_constant(EFST_PORK_RIB_STEW); + export_constant(EFST_CHUSEOK_MONDAY); + export_constant(EFST_CHUSEOK_TUESDAY); + export_constant(EFST_CHUSEOK_WEDNESDAY); + export_constant(EFST_CHUSEOK_THURSDAY); + export_constant(EFST_CHUSEOK_FRIDAY); + export_constant(EFST_CHUSEOK_WEEKEND); + export_constant(EFST_ALL_LIGHTGUARD); + export_constant(EFST_ALL_LIGHTGUARD_COOL_TIME); + export_constant(EFST_MTF_MHP); + export_constant(EFST_MTF_MSP); + export_constant(EFST_MTF_PUMPKIN); + export_constant(EFST_MTF_HITFLEE); + export_constant(EFST_MTF_CRIDAMAGE2); + export_constant(EFST_MTF_SPDRAIN); + export_constant(EFST_ACUO_MINT_GUM); + export_constant(EFST_S_HEALPOTION); + export_constant(EFST_REUSE_LIMIT_S_HEAL_POTION); + export_constant(EFST_PLAYTIME_STATISTICS); + export_constant(EFST_GN_CHANGEMATERIAL_OPERATOR); + export_constant(EFST_GN_MIX_COOKING_OPERATOR); + export_constant(EFST_GN_MAKEBOMB_OPERATOR); + export_constant(EFST_GN_S_PHARMACY_OPERATOR); + export_constant(EFST_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR); + export_constant(EFST_SO_EL_ANALYSIS_COMBINATION_OPERATOR); + export_constant(EFST_NC_MAGICDECOY_OPERATOR); + export_constant(EFST_GUILD_STORAGE); + export_constant(EFST_GC_POISONINGWEAPON_OPERATOR); + export_constant(EFST_WS_WEAPONREFINE_OPERATOR); + export_constant(EFST_BS_REPAIRWEAPON_OPERATOR); + export_constant(EFST_UNREADMAIL_CHECK); + export_constant(EFST_JUMPINGCLAN); + export_constant(EFST_JP_OTP); + export_constant(EFST_HANDICAPTOLERANCE_LEVELGAP); + export_constant(EFST_MTF_RANGEATK2); + export_constant(EFST_MTF_ASPD2); + export_constant(EFST_MTF_MATK2); + export_constant(EFST_SHOW_NPCHPBAR); + export_constant(EFST_FLOWERSMOKE); + export_constant(EFST_FSTONE); + export_constant(EFST_DAILYSENDMAILCNT); + export_constant(EFST_QSCARABA); + export_constant(EFST_LJOSALFAR); + export_constant(EFST_PAD_READER_KNIGHT); + export_constant(EFST_PAD_READER_CRUSADER); + export_constant(EFST_PAD_READER_BLACKSMITH); + export_constant(EFST_PAD_READER_ALCHEMIST); + export_constant(EFST_PAD_READER_ASSASSIN); + export_constant(EFST_PAD_READER_ROGUE); + export_constant(EFST_PAD_READER_WIZARD); + export_constant(EFST_PAD_READER_SAGE); + export_constant(EFST_PAD_READER_PRIEST); + export_constant(EFST_PAD_READER_MONK); + export_constant(EFST_PAD_READER_HUNTER); + export_constant(EFST_PAD_READER_BARD); + export_constant(EFST_PAD_READER_DANCER); + export_constant(EFST_PAD_READER_TAEKWON); + export_constant(EFST_PAD_READER_NINJA); + export_constant(EFST_PAD_READER_GUNSLINGER); + export_constant(EFST_PAD_READER_SUPERNOVICE); + export_constant(EFST_ESSENCE_OF_TIME); + export_constant(EFST_MINIGAME_ROULETTE); + export_constant(EFST_MINIGAME_GOLD_POINT); + export_constant(EFST_MINIGAME_SILVER_POINT); + export_constant(EFST_MINIGAME_BRONZE_POINT); + export_constant(EFST_HAPPINESS_STAR); + export_constant(EFST_SUMMEREVENT01); + export_constant(EFST_SUMMEREVENT02); + export_constant(EFST_SUMMEREVENT03); + export_constant(EFST_SUMMEREVENT04); + export_constant(EFST_SUMMEREVENT05); + export_constant(EFST_MINIGAME_ROULETTE_BONUS_ITEM); + export_constant(EFST_DRESS_UP); + export_constant(EFST_MAPLE_FALLS); + export_constant(EFST_ALL_NIFLHEIM_RECALL); + export_constant(EFST_MTF_MARIONETTE); + export_constant(EFST_MTF_LUDE); + export_constant(EFST_MTF_CRUISER); + export_constant(EFST_MERMAID_LONGING); + export_constant(EFST_MAGICAL_FEATHER); + export_constant(EFST_DRACULA_CARD); + export_constant(EFST_LIMIT_POWER_BOOSTER); + export_constant(EFST_GIFT_OF_SNOW); + export_constant(EFST_TIME_ACCESSORY); + export_constant(EFST_EP16_DEF); + export_constant(EFST_NORMAL_ATKED_SP); + export_constant(EFST_BODYSTATE_STONECURSE); + export_constant(EFST_BODYSTATE_FREEZING); + export_constant(EFST_BODYSTATE_STUN); + export_constant(EFST_BODYSTATE_SLEEP); + export_constant(EFST_BODYSTATE_UNDEAD); + export_constant(EFST_BODYSTATE_STONECURSE_ING); + export_constant(EFST_BODYSTATE_BURNNING); + export_constant(EFST_BODYSTATE_IMPRISON); + export_constant(EFST_HEALTHSTATE_POISON); + export_constant(EFST_HEALTHSTATE_CURSE); + export_constant(EFST_HEALTHSTATE_SILENCE); + export_constant(EFST_HEALTHSTATE_CONFUSION); + export_constant(EFST_HEALTHSTATE_BLIND); + export_constant(EFST_HEALTHSTATE_ANGELUS); + export_constant(EFST_HEALTHSTATE_BLOODING); + export_constant(EFST_HEALTHSTATE_HEAVYPOISON); + export_constant(EFST_HEALTHSTATE_FEAR); + export_constant(EFST_CHERRY_BLOSSOM_CAKE); + export_constant(EFST_SU_STOOP); + export_constant(EFST_CATNIPPOWDER); + export_constant(EFST_HEAD_EQUIPMENT_EFFECT); + export_constant(EFST_SV_ROOTTWIST); + export_constant(EFST_ATTACK_PROPERTY_NOTHING); + export_constant(EFST_ATTACK_PROPERTY_WATER); + export_constant(EFST_ATTACK_PROPERTY_GROUND); + export_constant(EFST_ATTACK_PROPERTY_FIRE); + export_constant(EFST_ATTACK_PROPERTY_WIND); + export_constant(EFST_ATTACK_PROPERTY_POISON); + export_constant(EFST_ATTACK_PROPERTY_SAINT); + export_constant(EFST_ATTACK_PROPERTY_DARKNESS); + export_constant(EFST_ATTACK_PROPERTY_TELEKINESIS); + export_constant(EFST_ATTACK_PROPERTY_UNDEAD); + export_constant(EFST_RESIST_PROPERTY_NOTHING); + export_constant(EFST_RESIST_PROPERTY_WATER); + export_constant(EFST_RESIST_PROPERTY_GROUND); + export_constant(EFST_RESIST_PROPERTY_FIRE); + export_constant(EFST_RESIST_PROPERTY_WIND); + export_constant(EFST_RESIST_PROPERTY_POISON); + export_constant(EFST_RESIST_PROPERTY_SAINT); + export_constant(EFST_RESIST_PROPERTY_DARKNESS); + export_constant(EFST_RESIST_PROPERTY_TELEKINESIS); + export_constant(EFST_RESIST_PROPERTY_UNDEAD); + export_constant(EFST_BITESCAR); + export_constant(EFST_ARCLOUSEDASH); + export_constant(EFST_TUNAPARTY); + export_constant(EFST_SHRIMP); + export_constant(EFST_FRESHSHRIMP); + export_constant(EFST_PERIOD_RECEIVEITEM); + export_constant(EFST_PERIOD_PLUSEXP); + export_constant(EFST_PERIOD_PLUSJOBEXP); + export_constant(EFST_RUNEHELM); + export_constant(EFST_HELM_VERKANA); + export_constant(EFST_HELM_RHYDO); + export_constant(EFST_HELM_TURISUS); + export_constant(EFST_HELM_HAGALAS); + export_constant(EFST_HELM_ISIA); + export_constant(EFST_HELM_ASIR); + export_constant(EFST_HELM_URJ); + export_constant(EFST_SUHIDE); + export_constant(EFST_DORAM_BUF_01); + export_constant(EFST_DORAM_BUF_02); + export_constant(EFST_SPRITEMABLE); + export_constant(EFST_AID_PERIOD_RECEIVEITEM); + export_constant(EFST_AID_PERIOD_PLUSEXP); + export_constant(EFST_AID_PERIOD_PLUSJOBEXP); + export_constant(EFST_AID_PERIOD_DEADPENALTY); + export_constant(EFST_AID_PERIOD_ADDSTOREITEMCOUNT); + export_constant(EFST_MAGICSTONE_OF_GRACE_SET); + export_constant(EFST_HISS); + export_constant(EFST_NYANGGRASS); + export_constant(EFST_CHATTERING); + export_constant(EFST_GROOMING); + export_constant(EFST_PROTECTIONOFSHRIMP); + export_constant(EFST_EP16_2_BUFF_SS); + export_constant(EFST_EP16_2_BUFF_SC); + export_constant(EFST_EP16_2_BUFF_AC); + export_constant(EFST_GS_MAGICAL_BULLET); + export_constant(EFST_FALLEN_ANGEL); + export_constant(EFST_BLAZE_BEAD); + export_constant(EFST_FROZEN_BEAD); + export_constant(EFST_BREEZE_BEAD); + export_constant(EFST_AID_PERIOD_RECEIVEITEM_2ND); + export_constant(EFST_AID_PERIOD_PLUSEXP_2ND); + export_constant(EFST_AID_PERIOD_PLUSJOBEXP_2ND); + export_constant(EFST_PRONTERA_JP); + export_constant(EFST_GLOOM_CARD); + export_constant(EFST_PHARAOH_CARD); + export_constant(EFST_KIEL_CARD); + export_constant(EFST_CHEERUP); + export_constant(EFST_S_MANAPOTION); + export_constant(EFST_M_DEFSCROLL); + export_constant(EFST_AS_RAGGED_GOLEM_CARD); + export_constant(EFST_LHZ_DUN_N1); + export_constant(EFST_LHZ_DUN_N2); + export_constant(EFST_LHZ_DUN_N3); + export_constant(EFST_LHZ_DUN_N4); + export_constant(EFST_REUSE_LIMIT_NP); + export_constant(EFST_SPECIALCOOKIE); + export_constant(EFST_GLORY_OF_RETURN); + export_constant(EFST_ATK_POPCORN); + export_constant(EFST_MATK_POPCORN); + export_constant(EFST_ASPD_POPCORN); + export_constant(EFST_ULTIMATECOOK); + export_constant(EFST_LIGHTOFMOON); + export_constant(EFST_LIGHTOFSUN); + export_constant(EFST_LIGHTOFSTAR); + export_constant(EFST_LUNARSTANCE); + export_constant(EFST_UNIVERSESTANCE); + export_constant(EFST_SUNSTANCE); + export_constant(EFST_FLASHKICK); + export_constant(EFST_NEWMOON); + export_constant(EFST_STARSTANCE); + export_constant(EFST_DIMENSION); + export_constant(EFST_DIMENSION1); + export_constant(EFST_DIMENSION2); + export_constant(EFST_CREATINGSTAR); + export_constant(EFST_FALLINGSTAR); + export_constant(EFST_NOVAEXPLOSING); + export_constant(EFST_GRAVITYCONTROL); + export_constant(EFST_SOULCOLLECT); + export_constant(EFST_SOULREAPER); + export_constant(EFST_SOULUNITY); + export_constant(EFST_SOULSHADOW); + export_constant(EFST_SOULFAIRY); + export_constant(EFST_SOULFALCON); + export_constant(EFST_SOULGOLEM); + export_constant(EFST_SOULDIVISION); + export_constant(EFST_SOULENERGY); + export_constant(EFST_USE_SKILL_SP_SPA); + export_constant(EFST_USE_SKILL_SP_SHA); + export_constant(EFST_SP_SHA); + export_constant(EFST_INFINITY_DRINK); + export_constant(EFST_ABYSS_001); + export_constant(EFST_ABYSS_002); + export_constant(EFST_ABYSS_003); + export_constant(EFST_ABYSS_004); + export_constant(EFST_ABYSS_005); + export_constant(EFST_ABYSS_006); + export_constant(EFST_ABYSS_007); + export_constant(EFST_ABYSS_008); + export_constant(EFST_YGGDRASIL_BLESS); + export_constant(EFST_HUNTING_EVENT); + export_constant(EFST_PERIOD_RECEIVEITEM_2ND); + export_constant(EFST_PERIOD_PLUSEXP_2ND); + export_constant(EFST_EXPDROPUP); + export_constant(EFST_TW_NEWYEAR_EVENT); + export_constant(EFST_ANCILLA); +/// @APIHOOK_END +/// Do not modify code above this, since it will be automatically generated by the API again + export_constant(EFST_MAX); /* elements */ export_constant(ELE_NEUTRAL); @@ -2576,6 +3612,8 @@ export_constant(RC2_MANUK); export_constant(RC2_SPLENDIDE); export_constant(RC2_SCARABA); + export_constant(RC2_OGH_ATK_DEF); + export_constant(RC2_OGH_HIDDEN); export_constant(RC2_MAX); /* classes */ @@ -2932,6 +3970,8 @@ export_constant(PETINFO_RENAMED); export_constant(PETINFO_LEVEL); export_constant(PETINFO_BLOCKID); + export_constant(PETINFO_EGGID); + export_constant(PETINFO_FOODID); // For backwards compatability - might be removed in the near future export_constant2("PET_ID",PETINFO_ID); @@ -3094,6 +4134,7 @@ export_constant(UMOB_AMOTION); export_constant(UMOB_ADELAY); export_constant(UMOB_DMOTION); + export_constant(UMOB_TARGETID); /* unit control - homunculus */ export_constant(UHOM_SIZE); @@ -3135,6 +4176,7 @@ export_constant(UHOM_AMOTION); export_constant(UHOM_ADELAY); export_constant(UHOM_DMOTION); + export_constant(UHOM_TARGETID); /* unit control - pet */ export_constant(UPET_SIZE); @@ -3212,6 +4254,7 @@ export_constant(UMER_AMOTION); export_constant(UMER_ADELAY); export_constant(UMER_DMOTION); + export_constant(UMER_TARGETID); /* unit control - elemental */ export_constant(UELE_SIZE); @@ -3252,6 +4295,7 @@ export_constant(UELE_AMOTION); export_constant(UELE_ADELAY); export_constant(UELE_DMOTION); + export_constant(UELE_TARGETID); /* unit control - NPC */ export_constant(UNPC_DISPLAY); @@ -3340,6 +4384,7 @@ export_constant(ROA_VALUE); export_constant(ROA_PARAM); + /* special card flags */ export_constant(CARD0_FORGE); export_constant(CARD0_CREATE); export_constant(CARD0_PET); @@ -3907,6 +4952,7 @@ export_constant(IG_CHRISTMAS_BOX); export_constant(IG_SPECIAL_CHRISTMAS_BOX); export_constant(IG_SANTA_GIFT); + export_constant(IG_PRIZEOFHERO); /* unit stop walking */ export_constant(USW_NONE); @@ -3965,6 +5011,8 @@ export_constant(REFINE_COST_HD); export_constant(REFINE_COST_ENRICHED); export_constant(REFINE_COST_OVER10_HD); + export_constant(REFINE_COST_HOLINK); + export_constant(REFINE_COST_WAGJAK); export_constant(REFINE_COST_MAX); /* refine information types */ @@ -4939,10 +5987,20 @@ export_constant_npc(JT_4_M_SNOWMAN_R); export_constant_npc(JT_4_M_SNOWMAN_G); export_constant_npc(JT_WARPEFFECTNPC); + export_constant_npc(JT_4_HEN); export_constant_npc(JT_4_F_DANGDANG); export_constant_npc(JT_4_M_DANGDANG); export_constant_npc(JT_4_F_DANGDANG1); export_constant_npc(JT_4_LEAFCAT); + export_constant_npc(JT_4_NASARIAN); + export_constant_npc(JT_4_NASARIAN_EM); + export_constant_npc(JT_4_TEDDY_BEAR_W); + export_constant_npc(JT_4_TEDDY_BEAR_B); + export_constant_npc(JT_4_TEDDY_BEAR_B_L); + export_constant_npc(JT_4_M_SOULREAPER); + export_constant_npc(JT_4_F_SE_SUN); + export_constant_npc(JT_4_M_SE_MOON); + export_constant_npc(JT_4_M_SE_STAR); #undef export_constant_npc /* special effects */ @@ -6103,14 +7161,74 @@ export_constant(HAT_EF_QSCARABA); export_constant(HAT_EF_FSTONE); export_constant(HAT_EF_MAGICCIRCLE); + export_constant(HAT_EF_GODCLASS); + export_constant(HAT_EF_GODCLASS2); + export_constant(HAT_EF_LEVEL99_RED); + export_constant(HAT_EF_LEVEL99_ULTRAMARINE); + export_constant(HAT_EF_LEVEL99_CYAN); + export_constant(HAT_EF_LEVEL99_LIME); + export_constant(HAT_EF_LEVEL99_VIOLET); + export_constant(HAT_EF_LEVEL99_LILAC); + export_constant(HAT_EF_LEVEL99_SUN_ORANGE); + export_constant(HAT_EF_LEVEL99_DEEP_PINK); + export_constant(HAT_EF_LEVEL99_BLACK); + export_constant(HAT_EF_LEVEL99_WHITE); + export_constant(HAT_EF_LEVEL160_RED); + export_constant(HAT_EF_LEVEL160_ULTRAMARINE); + export_constant(HAT_EF_LEVEL160_CYAN); + export_constant(HAT_EF_LEVEL160_LIME); + export_constant(HAT_EF_LEVEL160_VIOLET); + export_constant(HAT_EF_LEVEL160_LILAC); + export_constant(HAT_EF_LEVEL160_SUN_ORANGE); + export_constant(HAT_EF_LEVEL160_DEEP_PINK); + export_constant(HAT_EF_LEVEL160_BLACK); + export_constant(HAT_EF_LEVEL160_WHITE); + export_constant(HAT_EF_FULL_BLOOMCHERRY_TREE); + export_constant(HAT_EF_C_BLESSINGS_OF_SOUL); + export_constant(HAT_EF_MANYSTARS); + export_constant(HAT_EF_SUBJECT_AURA_GOLD); + export_constant(HAT_EF_SUBJECT_AURA_WHITE); + export_constant(HAT_EF_SUBJECT_AURA_RED); + export_constant(HAT_EF_C_SHINING_ANGEL_WING); /* pet catch */ export_constant(PET_CATCH_UNIVERSAL); export_constant(PET_CATCH_UNIVERSAL_ITEM); + /* monster modes */ + export_constant(MD_NONE); + export_constant(MD_CANMOVE); + export_constant(MD_LOOTER); + export_constant(MD_AGGRESSIVE); + export_constant(MD_ASSIST); + export_constant(MD_CASTSENSOR_IDLE); + export_constant(MD_NORANDOM_WALK); + export_constant(MD_NOCAST_SKILL); + export_constant(MD_CANATTACK); + export_constant(MD_CASTSENSOR_CHASE); + export_constant(MD_CHANGECHASE); + export_constant(MD_ANGRY); + export_constant(MD_CHANGETARGET_MELEE); + export_constant(MD_CHANGETARGET_CHASE); + export_constant(MD_TARGETWEAK); + export_constant(MD_RANDOMTARGET); + export_constant(MD_IGNOREMELEE); + export_constant(MD_IGNOREMAGIC); + export_constant(MD_IGNORERANGED); + export_constant(MD_MVP); + export_constant(MD_IGNOREMISC); + export_constant(MD_KNOCKBACK_IMMUNE); + export_constant(MD_TELEPORT_BLOCK); + export_constant(MD_FIXED_ITEMDROP); + export_constant(MD_DETECTOR); + export_constant(MD_STATUS_IMMUNE); + export_constant(MD_SKILL_IMMUNE); + #undef export_constant #undef export_constant2 #undef export_parameter #undef export_constant_offset + #undef export_deprecated_constant + #undef export_deprecated_constant2 #endif /* _SCRIPT_CONSTANTS_HPP_ */ diff --git a/src/map/searchstore.cpp b/src/map/searchstore.cpp index 0ba554af8a..412302b121 100644 --- a/src/map/searchstore.cpp +++ b/src/map/searchstore.cpp @@ -3,10 +3,10 @@ #include "searchstore.hpp" // struct s_search_store_info -#include "../common/cbasetypes.h" -#include "../common/malloc.h" // aMalloc, aRealloc, aFree -#include "../common/showmsg.h" // ShowError, ShowWarning -#include "../common/strlib.h" // safestrncpy +#include "../common/cbasetypes.hpp" +#include "../common/malloc.hpp" // aMalloc, aRealloc, aFree +#include "../common/showmsg.hpp" // ShowError, ShowWarning +#include "../common/strlib.hpp" // safestrncpy #include "battle.hpp" // battle_config.* #include "clif.hpp" // clif_open_search_store_info, clif_search_store_info_* diff --git a/src/map/searchstore.hpp b/src/map/searchstore.hpp index c52b8820d5..c072be4cfc 100644 --- a/src/map/searchstore.hpp +++ b/src/map/searchstore.hpp @@ -4,8 +4,8 @@ #ifndef _SEARCHSTORE_HPP_ #define _SEARCHSTORE_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" #include "map.hpp" diff --git a/src/map/skill.cpp b/src/map/skill.cpp index b7d3b40431..b8ee5b552a 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -9,15 +9,15 @@ #include <time.h> #include <math.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/strlib.h" -#include "../common/utils.h" -#include "../common/ers.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/strlib.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" #include "map.hpp" #include "path.hpp" @@ -324,7 +324,6 @@ static int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsig int skill_unit_onleft(uint16 skill_id, struct block_list *bl,unsigned int tick); static int skill_unit_effect(struct block_list *bl,va_list ap); static int skill_bind_trap(struct block_list *bl, va_list ap); -static int skill_mob_releasetarget(struct block_list *bl, va_list ap); int skill_get_casttype (uint16 skill_id) { int inf = skill_get_inf(skill_id); @@ -514,8 +513,12 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk if( tsd && (skill = pc_skillheal2_bonus(tsd, skill_id)) ) hp_bonus += skill; - if( sc && sc->data[SC_OFFERTORIUM] && (skill_id == AB_HIGHNESSHEAL || skill_id == AB_CHEAL || skill_id == PR_SANCTUARY || skill_id == AL_HEAL) ) - hp_bonus += sc->data[SC_OFFERTORIUM]->val2; + if (sc && sc->count) { + if (sc->data[SC_OFFERTORIUM] && (skill_id == AB_HIGHNESSHEAL || skill_id == AB_CHEAL || skill_id == PR_SANCTUARY || skill_id == AL_HEAL)) + hp_bonus += sc->data[SC_OFFERTORIUM]->val2; + if (sc->data[SC_GLASTHEIM_HEAL] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) + hp_bonus += sc->data[SC_GLASTHEIM_HEAL]->val1; + } if (tsc && tsc->count) { if (skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN) { @@ -523,6 +526,8 @@ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 sk hp_bonus += tsc->data[SC_INCHEALRATE]->val1; //Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish] if (tsc->data[SC_EXTRACT_WHITE_POTION_Z]) hp_bonus += tsc->data[SC_EXTRACT_WHITE_POTION_Z]->val1; + if (tsc->data[SC_GLASTHEIM_HEAL]) + hp_bonus += sc->data[SC_GLASTHEIM_HEAL]->val2; } } @@ -1421,8 +1426,15 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 skill_break_equip(src,bl, EQP_SHIELD, 150*skill_lv, BCT_ENEMY); break; - case CH_TIGERFIST: - sc_start(src,bl,SC_STOP,(10+skill_lv*10),0,skill_get_time2(skill_id,skill_lv)); + case CH_TIGERFIST: { + uint16 basetime = skill_get_time(skill_id, skill_lv); + uint16 mintime = 30 * (status_get_lv(src) + 100); + + if (status_get_class_(bl) == CLASS_BOSS) + basetime /= 5; + basetime = min((basetime * status_get_agi(bl)) / -200 + basetime, mintime) / 2; + sc_start(src, bl, SC_STOP, (1 + skill_lv) * 10, 0, basetime); + } break; case LK_SPIRALPIERCE: @@ -1513,9 +1525,8 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 sc_start(src,bl,SC_FLING,100, sd?sd->spiritball_old:5,skill_get_time(skill_id,skill_lv)); break; case GS_DISARM: - rate = 3*skill_lv; - if (sstatus->dex > tstatus->dex) - rate += (sstatus->dex - tstatus->dex)/5; //TODO: Made up formula + rate = sstatus->dex / (4 * (7 - skill_lv)) + sstatus->luk / (4 * (6 - skill_lv)); + rate = rate + status_get_lv(src) - (tstatus->agi * rate / 100) - tstatus->luk - status_get_lv(bl); skill_strip_equip(src,bl, EQP_WEAPON, rate, skill_lv, skill_get_time(skill_id,skill_lv)); clif_skill_nodamage(src,bl,skill_id,skill_lv,1); break; @@ -1544,6 +1555,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 sc_start(src,bl, SC_STUN, 40, skill_lv, skill_get_time(skill_id, skill_lv)); break; case WL_COMET: + case NPC_COMET: sc_start4(src,bl,SC_BURNING,100,skill_lv,1000,src->id,0,skill_get_time(skill_id,skill_lv)); break; case WL_EARTHSTRAIN: @@ -1558,6 +1570,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 } break; case WL_JACKFROST: + case NPC_JACKFROST: sc_start(src,bl,SC_FREEZE,200,skill_lv,skill_get_time(skill_id,skill_lv)); break; case RA_WUGBITE: { @@ -1909,6 +1922,8 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 case SC_CLAN_INFO: case SC_SWORDCLAN: case SC_ARCWANDCLAN: case SC_GOLDENMACECLAN: case SC_CROSSBOWCLAN: case SC_DAILYSENDMAILCNT: + case SC_WEDDING: case SC_XMAS: case SC_SUMMER: + case SC_DRESSUP: case SC_HANBOK: case SC_OKTOBERFEST: continue; case SC_WHISTLE: case SC_ASSNCROS: case SC_POEMBRAGI: case SC_APPLEIDUN: case SC_HUMMING: case SC_DONTFORGETME: @@ -2054,7 +2069,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){ ud->canact_tick = max(tick + rate, ud->canact_tick); if ( battle_config.display_status_timers ) - clif_status_change(src, SI_ACTIONDELAY, 1, rate, 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, rate, 0, 0, 0); } } } @@ -2148,7 +2163,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){ ud->canact_tick = max(tick + rate, ud->canact_tick); if ( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, rate, 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, rate, 0, 0, 0); } } } @@ -2489,7 +2504,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list * if (DIFF_TICK(ud->canact_tick, tick + autospl_rate) < 0){ ud->canact_tick = max(tick + autospl_rate, ud->canact_tick); if ( battle_config.display_status_timers && dstsd ) - clif_status_change(bl, SI_ACTIONDELAY, 1, autospl_rate, 0, 0, 0); + clif_status_change(bl, EFST_POSTDELAY, 1, autospl_rate, 0, 0, 0); } } } @@ -3374,6 +3389,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * break; case WL_SOULEXPANSION: case WL_COMET: + case NPC_COMET: case KO_MUCHANAGE: case NJ_HUUMA: dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,skill_lv,DMG_MULTI_HIT); @@ -4101,8 +4117,8 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) } break; case WL_CHAINLIGHTNING_ATK: { - skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,9 - skl->type); // Hit a Lightning on the current Target skill_toggle_magicpower(src, skl->skill_id); // Only the first hit will be amplified + skill_attack(BF_MAGIC,src,src,target,skl->skill_id,skl->skill_lv,tick,9 - skl->type); // Hit a Lightning on the current Target if( skl->type < (4 + skl->skill_lv - 1) && skl->x < 3 ) { // Remaining Chains Hit struct block_list *nbl = NULL; // Next Target of Chain @@ -4900,6 +4916,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case NPC_HELLJUDGEMENT: case NPC_VAMPIRE_GIFT: case NPC_MAXPAIN_ATK: + case NPC_JACKFROST: case RK_IGNITIONBREAK: case AB_JUDEX: case WL_SOULEXPANSION: @@ -4923,6 +4940,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case SO_VARETYR_SPEAR: case GN_CART_TORNADO: case GN_CARTCANNON: + case GN_DEMONIC_FIRE: + case GN_FIRE_EXPANSION_ACID: case KO_HAPPOKUNAI: case KO_HUUMARANKA: case KO_MUCHANAGE: @@ -5032,6 +5051,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; case WL_COMET: + case NPC_COMET: if(!map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR)) // Nothing should happen if the target is on Land Protector skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); break; @@ -5236,7 +5256,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint //Should attack undead and demons. [Skotlex] if (battle_check_undead(tstatus->race, tstatus->def_ele) || tstatus->race == RC_DEMON) skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); - break; + break; case SL_SMA: status_change_end(src, SC_SMA, INVALID_TIMER); @@ -5555,7 +5575,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint } sd->ud.canact_tick = max(tick + skill_delayfix(src, pres_skill_id, pres_skill_lv), sd->ud.canact_tick); - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, pres_skill_id, pres_skill_lv), 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, skill_delayfix(src, pres_skill_id, pres_skill_lv), 0, 0, 0); cooldown = pc_get_skillcooldown(sd,pres_skill_id, pres_skill_lv); if( cooldown ) @@ -5787,12 +5807,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint } break; - case GN_DEMONIC_FIRE: - case GN_FIRE_EXPANSION_ACID: - if (flag&1) - skill_attack(BF_MAGIC, src, src, bl, skill_id, skill_lv, tick, flag); - break; - case KO_JYUMONJIKIRI: { short x, y; short dir = map_calc_dir(src,bl->x,bl->y); @@ -6502,30 +6516,21 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SA_FROSTWEAPON: case SA_LIGHTNINGLOADER: case SA_SEISMICWEAPON: - if (dstsd) { - if(dstsd->status.weapon == W_FIST || - (dstsd->sc.count && !dstsd->sc.data[type] && - ( //Allow re-enchanting to lenghten time. [Skotlex] - dstsd->sc.data[SC_FIREWEAPON] || - dstsd->sc.data[SC_WATERWEAPON] || - dstsd->sc.data[SC_WINDWEAPON] || - dstsd->sc.data[SC_EARTHWEAPON] || - dstsd->sc.data[SC_SHADOWWEAPON] || - dstsd->sc.data[SC_GHOSTWEAPON] || - dstsd->sc.data[SC_ENCPOISON] - )) - ) { - if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - clif_skill_nodamage(src,bl,skill_id,skill_lv,0); - break; - } + if (dstsd && dstsd->status.weapon == W_FIST) { + if (sd) + clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); + clif_skill_nodamage(src,bl,skill_id,skill_lv,0); + break; } // 100% success rate at lv4 & 5, but lasts longer at lv5 if(!clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,(60+skill_lv*10),skill_lv, skill_get_time(skill_id,skill_lv)))) { + if (dstsd){ + short index = dstsd->equip_index[EQI_HAND_R]; + if (index != -1 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type == IT_WEAPON) + pc_unequipitem(dstsd, index, 3); //Must unequip the weapon instead of breaking it [Daegaladh] + } if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - if (skill_break_equip(src,bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd) - clif_displaymessage(sd->fd, msg_txt(sd,669)); } break; @@ -6595,6 +6600,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_skill_fail(sd,skill_id,USESKILL_FAIL,0); break; + case PR_BENEDICTIO: + if (!battle_check_undead(tstatus->race, tstatus->def_ele) && tstatus->race != RC_DEMON) + clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv))); + break; case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: @@ -6607,7 +6616,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case PR_IMPOSITIO: case PR_LEXAETERNA: case PR_SUFFRAGIUM: - case PR_BENEDICTIO: case LK_BERSERK: case MS_BERSERK: case KN_TWOHANDQUICKEN: @@ -6969,7 +6977,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case MO_ABSORBSPIRITS: i = 0; - if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m) || (sd && sd->duel_group && sd->duel_group == dstsd->duel_group)) && + if (dstsd && (sd == dstsd || map_flag_vs(src->m) || (sd && sd->duel_group && sd->duel_group == dstsd->duel_group)) && ((dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER || (dstsd->class_&MAPID_UPPERMASK) != MAPID_REBELLION)) { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen] if (dstsd->spiritball > 0) { i = dstsd->spiritball * 7; @@ -7951,6 +7959,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_CROSSBOWCLAN: case SC_JUMPINGCLAN: case SC_DAILYSENDMAILCNT: + case SC_WEDDING: case SC_XMAS: case SC_SUMMER: + case SC_DRESSUP: case SC_HANBOK: case SC_OKTOBERFEST: continue; case SC_WHISTLE: case SC_ASSNCROS: @@ -8194,6 +8204,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case NPC_SUMMONSLAVE: case NPC_SUMMONMONSTER: + case NPC_DEATHSUMMON: if(md && md->skill_idx >= 0) mob_summonslave(md,md->db->skill[md->skill_idx].val,skill_lv,skill_id); break; @@ -9098,7 +9109,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case RK_FIGHTINGSPIRIT: { - // val1: ATKBonus: Caster: 70 + 7 * PartyMember. Member: 70 + 7 * PartyMember / 2 + // val1: ATKBonus: Caster: 70 + 7 * PartyMember. Member: (70 + 7 * PartyMember) / 2 // val2: ASPD boost: [RK_RUNEMASTERYlevel * 4 / 10] * 10 ==> RK_RUNEMASTERYlevel * 4 if( flag&1 ) { if( skill_area_temp[1] == bl->id ) @@ -9109,7 +9120,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if( sd && sd->status.party_id ) { skill_area_temp[0] = party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,BCT_PARTY,skill_area_sub_count); skill_area_temp[1] = src->id; - skill_area_temp[3] = 70 + 7 * skill_area_temp[0] / 2; + skill_area_temp[3] = (70 + 7 * skill_area_temp[0]) / 2; skill_area_temp[4] = skill_get_time(skill_id,skill_lv); party_foreachsamemap(skill_area_sub,sd,skill_get_splash(skill_id,skill_lv),src,skill_id,skill_lv,tick,flag|BCT_PARTY|1,skill_castend_nodamage_id); } @@ -9419,6 +9430,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_CLAN_INFO: case SC_SWORDCLAN: case SC_ARCWANDCLAN: case SC_GOLDENMACECLAN: case SC_CROSSBOWCLAN: case SC_DAILYSENDMAILCNT: + case SC_WEDDING: case SC_XMAS: case SC_SUMMER: + case SC_DRESSUP: case SC_HANBOK: case SC_OKTOBERFEST: continue; case SC_ASSUMPTIO: if( bl->type == BL_MOB ) @@ -9483,6 +9496,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case WL_JACKFROST: + case NPC_JACKFROST: clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub,bl,skill_get_splash(skill_id,skill_lv),BL_CHAR|BL_SKILL,src,skill_id,skill_lv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id); break; @@ -9957,7 +9971,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SR_ASSIMILATEPOWER: if (flag&1) { i = 0; - if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { + if (dstsd && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER) { if (dstsd->spiritball > 0) { i = dstsd->spiritball; pc_delspiritball(dstsd,dstsd->spiritball,0); @@ -10571,7 +10585,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui delete_timer(md2->deletetimer, mob_timer_delete); md2->deletetimer = add_timer (gettick() + skill_get_time(skill_id, skill_lv), mob_timer_delete, md2->bl.id, 0); mob_spawn( md2 ); - pc_setinvincibletimer(sd,500);// unlock target lock + map_foreachinallrange(unit_changetarget, src, AREA_SIZE, BL_MOB, src, &md2->bl); clif_skill_nodamage(src,bl,skill_id,skill_lv,1); skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),BLOWN_NONE); } @@ -10616,6 +10630,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui if (bl->type == BL_PC && pc_issit((TBL_PC*)bl)) clif_sitting(bl); //Avoid sitting sync problem clif_blown(bl); + map_foreachinallrange(unit_changetarget, src, AREA_SIZE, BL_CHAR, src, bl); } } } @@ -10813,8 +10828,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui // Main target always receives damage clif_skill_nodamage(src, src, skill_id, skill_lv, 1); skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_LEVEL); - if (tsc && tsc->data[SC_C_MARKER]) - status_change_end(bl, SC_C_MARKER, INVALID_TIMER); } else { clif_skill_nodamage(src, src, skill_id, skill_lv, 1); @@ -11284,7 +11297,7 @@ int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data) if(cooldown) skill_blockpc_start(sd, ud->skill_id, cooldown); } if( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skill_id, ud->skill_lv), 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, skill_delayfix(src, ud->skill_id, ud->skill_lv), 0, 0, 0); if( sd ) { switch( ud->skill_id ) @@ -11443,7 +11456,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) skill_check_unit_range(src,ud->skillx,ud->skilly,ud->skill_id,ud->skill_lv) ) { - if (sd) clif_skill_fail(sd,ud->skill_id,USESKILL_FAIL_DUPLICATE_RANGEIN,0); + if (sd) clif_skill_fail(sd,ud->skill_id,USESKILL_FAIL_LEVEL,0); break; } if( skill_get_unit_flag(ud->skill_id)&UF_NOFOOTSET && @@ -11511,7 +11524,7 @@ int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data) if(cooldown) skill_blockpc_start(sd, ud->skill_id, cooldown); } if( battle_config.display_status_timers && sd ) - clif_status_change(src, SI_ACTIONDELAY, 1, skill_delayfix(src, ud->skill_id, ud->skill_lv), 0, 0, 0); + clif_status_change(src, EFST_POSTDELAY, 1, skill_delayfix(src, ud->skill_id, ud->skill_lv), 0, 0, 0); // if( sd ) // { // switch( ud->skill_id ) @@ -11745,7 +11758,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case SO_PSYCHIC_WAVE: case SO_VACUUM_EXTREME: case GN_THORNS_TRAP: - case GN_DEMONIC_FIRE: case GN_HELLS_PLANT: case SO_EARTHGRAVE: case SO_DIAMONDDUST: @@ -11766,6 +11778,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui flag|=1;//Set flag to 1 to prevent deleting ammo (it will be deleted on group-delete). case GS_GROUNDDRIFT: //Ammo should be deleted right away. case GN_WALLOFTHORN: + case GN_DEMONIC_FIRE: skill_unitsetting(src,skill_id,skill_lv,x,y,0); break; case WZ_ICEWALL: @@ -11981,16 +11994,38 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui if (rnd()%100 < 50) { clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } else { - TBL_MOB* md = mob_once_spawn_sub(src, src->m, x, y, "--ja--",(skill_lv < 2 ? MOBID_BLACK_MUSHROOM + rnd()%2 : MOBID_RED_PLANT + rnd()%6),"", SZ_SMALL, AI_NONE); - int t; - if (!md) break; + TBL_MOB* md = NULL; + int t, mob_id; + + if (skill_lv == 1) + mob_id = MOBID_BLACK_MUSHROOM + rnd() % 2; + else { + int rand_val = rnd() % 100; + + if (rand_val < 30) + mob_id = MOBID_GREEN_PLANT; + else if (rand_val < 55) + mob_id = MOBID_RED_PLANT; + else if (rand_val < 80) + mob_id = MOBID_YELLOW_PLANT; + else if (rand_val < 90) + mob_id = MOBID_WHITE_PLANT; + else if (rand_val < 98) + mob_id = MOBID_BLUE_PLANT; + else + mob_id = MOBID_SHINING_PLANT; + } + + md = mob_once_spawn_sub(src, src->m, x, y, "--ja--", mob_id, "", SZ_SMALL, AI_NONE); + if (!md) + break; if ((t = skill_get_time(skill_id, skill_lv)) > 0) { if( md->deletetimer != INVALID_TIMER ) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer (tick + t, mob_timer_delete, md->bl.id, 0); } - mob_spawn (md); + mob_spawn(md); } } break; @@ -12076,6 +12111,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui break; case WL_COMET: + case NPC_COMET: if( sc ) { sc->comet_x = x; sc->comet_y = y; @@ -12148,10 +12184,10 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 1; } - // Release all targets against the caster. - map_foreachinallrange(skill_mob_releasetarget, src, AREA_SIZE, BL_MOB, src, &group->unit->bl); + map_foreachinallrange(unit_changetarget, src, AREA_SIZE, BL_MOB, src, &group->unit->bl); // Release all targets against the caster + pc_setinvincibletimer(sd, skill_get_time(skill_id, skill_lv)); skill_blown(src, src, skill_get_blewcount(skill_id, skill_lv), unit_getdir(src), BLOWN_IGNORE_NO_KNOCKBACK); // Don't stop the caster from backsliding if special_state.no_knockback is active - clif_skill_nodamage(src,src,skill_id,skill_lv,sc_start(src,src,type,100,skill_lv,skill_get_time2(skill_id,skill_lv))); + clif_skill_nodamage(src,src,skill_id,skill_lv,sc_start(src,src,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); } break; @@ -12225,40 +12261,43 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui if( !ud ) break; - for( i_su = 0; i_su < MAX_SKILLUNITGROUP && ud->skillunit[i_su]; i_su ++ ) { - if( ud->skillunit[i_su]->skill_id == GN_DEMONIC_FIRE && - distance_xy(x, y, ud->skillunit[i_su]->unit->bl.x, ud->skillunit[i_su]->unit->bl.y) < 4 ) { - switch( skill_lv ) { - case 1: - ud->skillunit[i_su]->unit->val2 = skill_lv; - ud->skillunit[i_su]->unit->group->val2 = skill_lv; + for(i_su = 0; i_su < MAX_SKILLUNITGROUP && ud->skillunit[i_su]; i_su++) { + struct skill_unit *su = ud->skillunit[i_su]->unit; + struct skill_unit_group *sg = ud->skillunit[i_su]->unit->group; + + if (ud->skillunit[i_su]->skill_id == GN_DEMONIC_FIRE && distance_xy(x, y, su->bl.x, su->bl.y) < 4) { + switch (skill_lv) { + case 1: { + int duration = sg->limit - DIFF_TICK(tick, sg->tick); + + skill_delunit(su); + skill_unitsetting(src, GN_DEMONIC_FIRE, 1, x, y, duration); + flag |= 1; + } break; case 2: - map_foreachinallarea(skill_area_sub,src->m, - ud->skillunit[i_su]->unit->bl.x - 2,ud->skillunit[i_su]->unit->bl.y - 2, - ud->skillunit[i_su]->unit->bl.x + 2,ud->skillunit[i_su]->unit->bl.y + 2, BL_CHAR, - src, GN_DEMONIC_FIRE, skill_lv + 20, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id); - skill_delunit(ud->skillunit[i_su]->unit); + map_foreachinallarea(skill_area_sub, src->m, su->bl.x - 2, su->bl.y - 2, su->bl.x + 2, su->bl.y + 2, BL_CHAR, src, GN_DEMONIC_FIRE, skill_lv + 20, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id); + if (su != NULL) + skill_delunit(su); break; case 3: - skill_delunit(ud->skillunit[i_su]->unit); + skill_delunit(su); skill_unitsetting(src, GN_FIRE_EXPANSION_SMOKE_POWDER, 1, x, y, 0); flag |= 1; break; case 4: - skill_delunit(ud->skillunit[i_su]->unit); + skill_delunit(su); skill_unitsetting(src, GN_FIRE_EXPANSION_TEAR_GAS, 1, x, y, 0); flag |= 1; break; case 5: { - int acid_lv = 5; // Cast at Acid Demonstration at level 5 unless the user has a higher level learned. - if( sd && pc_checkskill(sd, CR_ACIDDEMONSTRATION) > 5 ) - acid_lv = pc_checkskill(sd, CR_ACIDDEMONSTRATION); - map_foreachinallarea(skill_area_sub, src->m, - ud->skillunit[i_su]->unit->bl.x - 2, ud->skillunit[i_su]->unit->bl.y - 2, - ud->skillunit[i_su]->unit->bl.x + 2, ud->skillunit[i_su]->unit->bl.y + 2, BL_CHAR, - src, GN_FIRE_EXPANSION_ACID, acid_lv, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id); - skill_delunit(ud->skillunit[i_su]->unit); + uint16 acid_lv = 5; // Cast at Acid Demonstration at level 5 unless the user has a higher level learned. + + if (sd && pc_checkskill(sd, CR_ACIDDEMONSTRATION) > 5) + acid_lv = pc_checkskill(sd, CR_ACIDDEMONSTRATION); + map_foreachinallarea(skill_area_sub, src->m, su->bl.x - 2, su->bl.y - 2, su->bl.x + 2, su->bl.y + 2, BL_CHAR, src, GN_FIRE_EXPANSION_ACID, acid_lv, tick, flag|BCT_ENEMY|SD_LEVEL|1, skill_castend_damage_id); + if (su != NULL) + skill_delunit(su); } break; } @@ -12968,6 +13007,12 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_ limit = 3000; val3 = (x<<16)|y; break; + case GN_DEMONIC_FIRE: + if (flag) { // Fire Expansion level 1 + limit = flag + 10000; + flag = 0; + } + break; case GN_FIRE_EXPANSION_SMOKE_POWDER: case GN_FIRE_EXPANSION_TEAR_GAS: limit = ((sd ? pc_checkskill(sd,GN_DEMONIC_FIRE) : 1) + 1) * limit; @@ -13457,7 +13502,7 @@ static int skill_unit_onplace(struct skill_unit *unit, struct block_list *bl, un break; case UNT_FIRE_EXPANSION_TEAR_GAS: - if (!sce && battle_check_target(&unit->bl, bl, sg->target_flag) > 0) + if (!sce && battle_check_target(&unit->bl, bl, sg->target_flag) > 0 && map_flag_vs(bl->m)) if( sc_start4(ss, bl, type, 100, sg->skill_lv, 0, ss->id,0, sg->limit) ) sc_start(ss, bl, SC_TEARGAS_SOB, 100, sg->skill_lv, sg->limit); break; @@ -14967,6 +15012,12 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i return false; } break; + case AL_HOLYWATER: + if(pc_search_inventory(sd,ITEMID_EMPTY_BOTTLE) < 0) { + clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); + return false; + } + break; case MO_CALLSPIRITS: if(sc && sc->data[SC_RAISINGDRAGON]) skill_lv += sc->data[SC_RAISINGDRAGON]->val1; @@ -16089,6 +16140,9 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16 if( i < ARRAYLENGTH(sd->skillusesp) ) req.sp -= sd->skillusesp[i].val; + if (skill_id == sd->status.skill[sd->reproduceskill_idx].id) + req.sp += req.sp * 30 / 100; + req.sp = cap_value(req.sp * sp_skill_rate_bonus / 100, 0, SHRT_MAX); if( sc ) { @@ -16648,8 +16702,18 @@ int skill_delayfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) } } - if (!(delaynodex&4) && sd && sd->delayrate != 100) - time = time * sd->delayrate / 100; + if (!(delaynodex&4) && sd) { + uint8 i, len = ARRAYLENGTH(sd->skilldelay); + + if (sd->delayrate != 100) + time = time * sd->delayrate / 100; + + if (len) { + ARR_FIND(0, len, i, sd->skilldelay[i].id == skill_id); + if (i < len) + time += sd->skilldelay[i].val; + } + } if (battle_config.delay_rate != 100) time = time * battle_config.delay_rate / 100; @@ -16941,9 +17005,9 @@ int skill_sit (struct map_session_data *sd, int type) } if (type) - clif_status_load(&sd->bl, SI_SIT, 1); + clif_status_load(&sd->bl, EFST_SIT, 1); else - clif_status_load(&sd->bl, SI_SIT, 0); + clif_status_load(&sd->bl, EFST_SIT, 0); if (!flag) return 0; @@ -17257,38 +17321,6 @@ static int skill_bind_trap(struct block_list *bl, va_list ap) { return 1; } -/** - * Release monsters that are targetting the caster and change target. - * @param bl: Monster data - * @param src: Player data - * @param skill: Skill unit group data - */ -static int skill_mob_releasetarget(struct block_list *bl, va_list ap) -{ - struct block_list *src = NULL, *skill = NULL; - struct mob_data *md = NULL; - - nullpo_ret(bl); - nullpo_ret(ap); - nullpo_ret(src = va_arg(ap, struct block_list *)); - nullpo_ret(skill = va_arg(ap, struct block_list *)); - - if (bl->type != BL_MOB) - return 0; - - md = map_id2md(bl->id); - - if (md && md->target_id == src->id) { - struct unit_data *ud = unit_bl2ud(bl); - - md->attacked_id = 0; - md->target_id = skill->id; - ud->target_to = skill->id; - } - - return 1; -} - /*========================================== * Check new skill unit cell when overlapping in other skill unit cell. * Catched skill in cell value pushed to *unit pointer. @@ -17319,7 +17351,11 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap) } //It deletes everything except traps and barriers if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) { - skill_delunit(unit); + if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) { + if (unit->val2&UF_RANGEDSINGLEUNIT) + skill_delunitgroup(unit->group); + } else + skill_delunit(unit); return 1; } break; @@ -17329,7 +17365,11 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap) case HW_GANBANTEIN: case LG_EARTHDRIVE: // Officially songs/dances are removed - skill_delunit(unit); + if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) { + if (unit->val2&UF_RANGEDSINGLEUNIT) + skill_delunitgroup(unit->group); + } else + skill_delunit(unit); return 1; case SA_VOLCANO: case SA_DELUGE: @@ -17387,7 +17427,11 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap) break; case RL_FIRE_RAIN: if (skill_get_unit_flag(unit->group->skill_id)&UF_REM_FIRERAIN) { - skill_delunit(unit); + if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) { + if (unit->val2&UF_RANGEDSINGLEUNIT) + skill_delunitgroup(unit->group); + } else + skill_delunit(unit); return 1; } break; @@ -18400,7 +18444,7 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) struct block_list *src = map_id2bl(group->src_id); if (src) - map_foreachinrange(skill_area_sub, &unit->bl, unit->range, BL_CHAR|BL_SKILL, src, SC_FEINTBOMB, group->skill_lv, tick, BCT_ENEMY|SD_ANIMATION|5, skill_castend_damage_id); + map_foreachinrange(skill_area_sub, &unit->bl, unit->range, BL_CHAR|BL_SKILL, src, group->skill_id, group->skill_lv, tick, BCT_ENEMY|SD_ANIMATION|5, skill_castend_damage_id); skill_delunit(unit); } break; @@ -18967,7 +19011,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh data = itemdb_search(nameid); if (runemastery_skill_lv >= 10) temp_qty = 1 + rnd()%3; - else if (runemastery_skill_lv > 5) temp_qty = 1 + rnd()%2; + else if (runemastery_skill_lv > 4) temp_qty = 1 + rnd()%2; else temp_qty = 1; if (data->stack.inventory) { @@ -19415,7 +19459,9 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh for (l = 0; l < total_qty; l += tmp_item.amount) { if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif_additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + if( battle_config.skill_drop_items_full ){ + map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + } } } k++; @@ -19433,7 +19479,9 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh } else if (tmp_item.amount) { //Success if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif_additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + if( battle_config.skill_drop_items_full ){ + map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + } } if (skill_id == GN_MIX_COOKING || skill_id == GN_MAKEBOMB || skill_id == GN_S_PHARMACY) { clif_produceeffect(sd,6,nameid); @@ -19490,7 +19538,9 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh tmp_item.identify = 1; if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) { clif_additem(sd,0,0,flag); - map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + if( battle_config.skill_drop_items_full ){ + map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); + } } clif_produceeffect(sd,7,nameid); clif_misceffect(&sd->bl,6); @@ -19762,7 +19812,7 @@ int skill_select_menu(struct map_session_data *sd,uint16 skill_id) { return 0; } - lv = (aslvl + 1) / 2; // The level the skill will be autocasted + lv = (aslvl + 5) / 2; // The level the skill will be autocasted lv = min(lv,sd->status.skill[sk_idx].lv); prob = (aslvl >= 10) ? 15 : (30 - 2 * aslvl); // Probability at level 10 was increased to 15. sc_start4(&sd->bl,&sd->bl,SC__AUTOSHADOWSPELL,100,id,lv,prob,0,skill_get_time(SC_AUTOSHADOWSPELL,aslvl)); @@ -20776,7 +20826,7 @@ static bool skill_parse_row_skilldb(char* split[], int columns, int current) if (!idx) { if (SKILL_MAX_DB() >= MAX_SKILL) { - ShowError("Cannot add new skill. Limit is reached '%d' (mmo.h::MAX_SKILL).\n", MAX_SKILL); + ShowError("Cannot add new skill. Limit is reached '%d' (mmo.hpp::MAX_SKILL).\n", MAX_SKILL); return false; } idx = skill_db_create(skill_id); @@ -21452,7 +21502,7 @@ static bool skill_parse_row_skilldamage(char* split[], int columns, int current) **/ static uint16 skill_db_create(uint16 skill_id) { if (skill_num >= MAX_SKILL) { - ShowError("Cannot add more skill. Limit is reached '%d'. Change 'MAX_SKILL' in mmo.h\n", MAX_SKILL); + ShowError("Cannot add more skill. Limit is reached '%d'. Change 'MAX_SKILL' in mmo.hpp\n", MAX_SKILL); return 0; } if (!skill_num) diff --git a/src/map/skill.hpp b/src/map/skill.hpp index 84450c4902..12153e50f8 100644 --- a/src/map/skill.hpp +++ b/src/map/skill.hpp @@ -4,9 +4,9 @@ #ifndef _SKILL_HPP_ #define _SKILL_HPP_ -#include "../common/cbasetypes.h" -#include "../common/mmo.h" // MAX_SKILL, struct square -#include "../common/db.h" +#include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" // MAX_SKILL, struct square +#include "../common/db.hpp" #include "map.hpp" // struct block_list @@ -1349,6 +1349,12 @@ enum e_skill { NPC_LEASH, NPC_WIDELEASH, NPC_WIDECRITICALWOUND, + NPC_EARTHQUAKE_K, + NPC_ALL_STAT_DOWN, + NPC_GRADUAL_GRAVITY, + NPC_DAMAGE_HEAL, + NPC_IMMUNE_PROPERTY, + NPC_MOVE_COORDINATE, KN_CHARGEATK = 1001, CR_SHRINK, @@ -1679,7 +1685,7 @@ enum e_skill { ALL_BUYING_STORE, ALL_GUARDIAN_RECALL, ALL_ODINS_POWER, - BEER_BOTTLE_CAP, + ALL_BEER_BOTTLE_CAP, NPC_ASSASSINCROSS, NPC_DISSONANCE, NPC_UGLYDANCE, @@ -1714,7 +1720,46 @@ enum e_skill { RL_HAMMER_OF_GOD, RL_R_TRIP_PLUSATK, RL_B_FLICKER_ATK, - RL_GLITTERING_GREED_ATK, +// RL_GLITTERING_GREED_ATK, + SJ_LIGHTOFMOON, + SJ_LUNARSTANCE, + SJ_FULLMOONKICK, + SJ_LIGHTOFSTAR, + SJ_STARSTANCE, + SJ_NEWMOONKICK, + SJ_FLASHKICK, + SJ_STAREMPEROR, + SJ_NOVAEXPLOSING, + SJ_UNIVERSESTANCE, + SJ_FALLINGSTAR, + SJ_GRAVITYCONTROL, + SJ_BOOKOFDIMENSION, + SJ_BOOKOFCREATINGSTAR, + SJ_DOCUMENT, + SJ_PURIFY, + SJ_LIGHTOFSUN, + SJ_SUNSTANCE, + SJ_SOLARBURST, + SJ_PROMINENCEKICK, + SJ_FALLINGSTAR_ATK, + SJ_FALLINGSTAR_ATK2, + SP_SOULGOLEM, + SP_SOULSHADOW, + SP_SOULFALCON, + SP_SOULFAIRY, + SP_CURSEEXPLOSION, + SP_SOULCURSE, + SP_SPA, + SP_SHA, + SP_SWHOO, + SP_SOULUNITY, + SP_SOULDIVISION, + SP_SOULREAPER, + SP_SOULREVOLVE, + SP_SOULCOLLECT, + SP_SOULEXPLOSION, + SP_SOULENERGY, + SP_KAUTE, KO_YAMIKUMO = 3001, KO_RIGHT, @@ -1811,6 +1856,9 @@ enum e_skill { WE_ONEFOREVER, WE_CHEERUP, + AB_VITUPERATUM = 5072, + AB_CONVENIO, + HLIF_HEAL = 8001, HLIF_AVOID, HLIF_BRAIN, diff --git a/src/map/status.cpp b/src/map/status.cpp index 9e40840c1c..83250489a7 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -9,15 +9,15 @@ #include <functional> #include <yaml-cpp/yaml.h> -#include "../common/cbasetypes.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/random.h" -#include "../common/showmsg.h" -#include "../common/malloc.h" -#include "../common/utils.h" -#include "../common/ers.h" -#include "../common/strlib.h" +#include "../common/cbasetypes.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/random.hpp" +#include "../common/showmsg.hpp" +#include "../common/malloc.hpp" +#include "../common/utils.hpp" +#include "../common/ers.hpp" +#include "../common/strlib.hpp" #include "battle.hpp" #include "itemdb.hpp" @@ -53,7 +53,7 @@ static struct { struct refine_cost cost[REFINE_COST_MAX]; } refine_info[REFINE_TYPE_MAX]; -static int atkmods[3][MAX_WEAPON_TYPE]; /// ATK weapon modification for size (size_fix.txt) +static int atkmods[SZ_ALL][MAX_WEAPON_TYPE]; /// ATK weapon modification for size (size_fix.txt) static struct eri *sc_data_ers; /// For sc_data entries static struct status_data dummy_status; @@ -71,7 +71,7 @@ sc_type SkillStatusChangeTable[MAX_SKILL]; int StatusIconChangeTable[SC_MAX]; unsigned int StatusChangeFlagTable[SC_MAX]; int StatusSkillChangeTable[SC_MAX]; -int StatusRelevantBLTypes[SI_MAX]; +int StatusRelevantBLTypes[EFST_MAX]; unsigned int StatusChangeStateTable[SC_MAX]; unsigned int StatusDisplayType[SC_MAX]; @@ -163,22 +163,22 @@ unsigned int status_sc2scb_flag(sc_type sc) /** * Returns the bl types which require a status change packet to be sent for a given client status identifier. - * @param type The client-side status identifier to look up (see enum si_type) + * @param type The client-side status identifier to look up (see enum efst_types) * @return The bl types relevant to the type (see enum bl_type) */ int status_type2relevant_bl_types(int type) { - if( type < 0 || type >= SI_MAX ) { + if( type < EFST_BLANK || type >= EFST_MAX ) { ShowError("status_type2relevant_bl_types: Unsupported type %d\n", type); - return SI_BLANK; + return EFST_BLANK; } return StatusRelevantBLTypes[type]; } -#define add_sc(skill,sc) set_sc(skill,sc,SI_BLANK,SCB_NONE) +#define add_sc(skill,sc) set_sc(skill,sc,EFST_BLANK,SCB_NONE) // Indicates that the status displays a visual effect for the affected unit, and should be sent to the client for all supported units -#define set_sc_with_vfx(skill, sc, icon, flag) set_sc((skill), (sc), (icon), (flag)); if((icon) < SI_MAX) StatusRelevantBLTypes[(icon)] |= BL_SCEFFECT +#define set_sc_with_vfx(skill, sc, icon, flag) set_sc((skill), (sc), (icon), (flag)); if((icon) < EFST_MAX) StatusRelevantBLTypes[(icon)] |= BL_SCEFFECT static void set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag) { @@ -187,14 +187,14 @@ static void set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag) ShowError("set_sc: Unsupported skill id %d (SC: %d. Icon: %d)\n", skill_id, sc, icon); return; } - if( sc < 0 || sc >= SC_MAX ) { + if( sc <= SC_NONE || sc >= SC_MAX ) { ShowError("set_sc: Unsupported status change id %d (Skill: %d. Icon: %d)\n", sc, skill_id, icon); return; } if( StatusSkillChangeTable[sc] == 0 ) StatusSkillChangeTable[sc] = skill_id; - if( StatusIconChangeTable[sc] == SI_BLANK ) + if( StatusIconChangeTable[sc] == EFST_BLANK ) StatusIconChangeTable[sc] = icon; StatusChangeFlagTable[sc] |= flag; @@ -204,11 +204,11 @@ static void set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag) static void set_sc_with_vfx_noskill(sc_type sc, int icon, unsigned flag) { if (sc > SC_NONE && sc < SC_MAX) { - if (StatusIconChangeTable[sc] == SI_BLANK) + if (StatusIconChangeTable[sc] == EFST_BLANK) StatusIconChangeTable[sc] = icon; StatusChangeFlagTable[sc] |= flag; } - if (icon > SI_BLANK && icon < SI_MAX) + if (icon > EFST_BLANK && icon < EFST_MAX) StatusRelevantBLTypes[icon] |= BL_SCEFFECT; } @@ -217,12 +217,12 @@ void initChangeTables(void) int i; for (i = 0; i < SC_MAX; i++) - StatusIconChangeTable[i] = SI_BLANK; + StatusIconChangeTable[i] = EFST_BLANK; for (i = 0; i < MAX_SKILL; i++) SkillStatusChangeTable[i] = SC_NONE; - for (i = 0; i < SI_MAX; i++) + for (i = 0; i < EFST_MAX; i++) StatusRelevantBLTypes[i] = BL_PC; memset(StatusSkillChangeTable, 0, sizeof(StatusSkillChangeTable)); @@ -232,86 +232,86 @@ void initChangeTables(void) memset(SCDisabled, 0, sizeof(SCDisabled)); /* First we define the skill for common ailments. These are used in skill_additional_effect through sc cards. [Skotlex] */ - set_sc( NPC_PETRIFYATTACK , SC_STONE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); - set_sc( NPC_WIDEFREEZE , SC_FREEZE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); + set_sc( NPC_PETRIFYATTACK , SC_STONE , EFST_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); + set_sc( NPC_WIDEFREEZE , SC_FREEZE , EFST_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); add_sc( NPC_STUNATTACK , SC_STUN ); add_sc( NPC_SLEEPATTACK , SC_SLEEP ); - set_sc( NPC_POISON , SC_POISON , SI_BLANK , SCB_DEF2|SCB_REGEN ); - set_sc( NPC_WIDECURSE , SC_CURSE , SI_BLANK , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED ); + set_sc( NPC_POISON , SC_POISON , EFST_BLANK , SCB_DEF2|SCB_REGEN ); + set_sc( NPC_WIDECURSE , SC_CURSE , EFST_BLANK , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED ); add_sc( NPC_SILENCEATTACK , SC_SILENCE ); add_sc( NPC_WIDECONFUSE , SC_CONFUSION ); - set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE ); - set_sc( NPC_BLEEDING , SC_BLEEDING , SI_BLEEDING , SCB_REGEN ); - set_sc( NPC_POISON , SC_DPOISON , SI_BLANK , SCB_DEF2|SCB_REGEN ); + set_sc( NPC_BLINDATTACK , SC_BLIND , EFST_BLANK , SCB_HIT|SCB_FLEE ); + set_sc( NPC_BLEEDING , SC_BLEEDING , EFST_BLOODING, SCB_REGEN ); + set_sc( NPC_POISON , SC_DPOISON , EFST_BLANK , SCB_DEF2|SCB_REGEN ); add_sc( ALL_REVERSEORCISH, SC_ORCISH ); /* The main status definitions */ add_sc( SM_BASH , SC_STUN ); - set_sc( SM_PROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); + set_sc( SM_PROVOKE , SC_PROVOKE , EFST_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); add_sc( SM_MAGNUM , SC_WATK_ELEMENT ); - set_sc( SM_ENDURE , SC_ENDURE , SI_ENDURE , SCB_MDEF|SCB_DSPD ); + set_sc( SM_ENDURE , SC_ENDURE , EFST_ENDURE , SCB_MDEF|SCB_DSPD ); add_sc( MG_SIGHT , SC_SIGHT ); add_sc( MG_SAFETYWALL , SC_SAFETYWALL ); add_sc( MG_FROSTDIVER , SC_FREEZE ); add_sc( MG_STONECURSE , SC_STONE ); add_sc( AL_RUWACH , SC_RUWACH ); add_sc( AL_PNEUMA , SC_PNEUMA ); - set_sc( AL_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED ); - set_sc( AL_DECAGI , SC_DECREASEAGI , SI_DECREASEAGI , SCB_AGI|SCB_SPEED ); - set_sc( AL_CRUCIS , SC_SIGNUMCRUCIS , SI_SIGNUMCRUCIS , SCB_DEF ); - set_sc( AL_ANGELUS , SC_ANGELUS , SI_ANGELUS , SCB_DEF2 ); - set_sc( AL_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); - set_sc( AC_CONCENTRATION , SC_CONCENTRATE , SI_CONCENTRATE , SCB_AGI|SCB_DEX ); - set_sc( TF_HIDING , SC_HIDING , SI_HIDING , SCB_SPEED ); + set_sc( AL_INCAGI , SC_INCREASEAGI , EFST_INC_AGI, SCB_AGI|SCB_SPEED ); + set_sc( AL_DECAGI , SC_DECREASEAGI , EFST_DEC_AGI, SCB_AGI|SCB_SPEED ); + set_sc( AL_CRUCIS , SC_SIGNUMCRUCIS , EFST_CRUCIS, SCB_DEF ); + set_sc( AL_ANGELUS , SC_ANGELUS , EFST_ANGELUS , SCB_DEF2 ); + set_sc( AL_BLESSING , SC_BLESSING , EFST_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); + set_sc( AC_CONCENTRATION , SC_CONCENTRATE , EFST_CONCENTRATION, SCB_AGI|SCB_DEX ); + set_sc( TF_HIDING , SC_HIDING , EFST_HIDING , SCB_SPEED ); add_sc( TF_POISON , SC_POISON ); - set_sc( KN_TWOHANDQUICKEN , SC_TWOHANDQUICKEN , SI_TWOHANDQUICKEN , SCB_ASPD ); - set_sc( KN_AUTOCOUNTER , SC_AUTOCOUNTER , SI_AUTOCOUNTER , SCB_NONE ); - set_sc( PR_IMPOSITIO , SC_IMPOSITIO , SI_IMPOSITIO , + set_sc( KN_TWOHANDQUICKEN , SC_TWOHANDQUICKEN , EFST_TWOHANDQUICKEN , SCB_ASPD ); + set_sc( KN_AUTOCOUNTER , SC_AUTOCOUNTER , EFST_AUTOCOUNTER , SCB_NONE ); + set_sc( PR_IMPOSITIO , SC_IMPOSITIO , EFST_IMPOSITIO , #ifndef RENEWAL SCB_WATK ); #else SCB_NONE ); #endif - set_sc( PR_SUFFRAGIUM , SC_SUFFRAGIUM , SI_SUFFRAGIUM , SCB_NONE ); - set_sc( PR_ASPERSIO , SC_ASPERSIO , SI_ASPERSIO , SCB_ATK_ELE ); - set_sc( PR_BENEDICTIO , SC_BENEDICTIO , SI_BENEDICTIO , SCB_DEF_ELE ); - set_sc( PR_SLOWPOISON , SC_SLOWPOISON , SI_SLOWPOISON , SCB_REGEN ); - set_sc( PR_KYRIE , SC_KYRIE , SI_KYRIE , SCB_NONE ); - set_sc( PR_MAGNIFICAT , SC_MAGNIFICAT , SI_MAGNIFICAT , SCB_REGEN ); - set_sc( PR_GLORIA , SC_GLORIA , SI_GLORIA , SCB_LUK ); + set_sc( PR_SUFFRAGIUM , SC_SUFFRAGIUM , EFST_SUFFRAGIUM , SCB_NONE ); + set_sc( PR_ASPERSIO , SC_ASPERSIO , EFST_ASPERSIO , SCB_ATK_ELE ); + set_sc( PR_BENEDICTIO , SC_BENEDICTIO , EFST_BENEDICTIO , SCB_DEF_ELE ); + set_sc( PR_SLOWPOISON , SC_SLOWPOISON , EFST_SLOWPOISON , SCB_REGEN ); + set_sc( PR_KYRIE , SC_KYRIE , EFST_KYRIE , SCB_NONE ); + set_sc( PR_MAGNIFICAT , SC_MAGNIFICAT , EFST_MAGNIFICAT , SCB_REGEN ); + set_sc( PR_GLORIA , SC_GLORIA , EFST_GLORIA , SCB_LUK ); add_sc( PR_STRECOVERY , SC_BLIND ); add_sc( PR_LEXDIVINA , SC_SILENCE ); - set_sc( PR_LEXAETERNA , SC_AETERNA , SI_AETERNA , SCB_NONE ); + set_sc( PR_LEXAETERNA , SC_AETERNA , EFST_LEXAETERNA, SCB_NONE ); add_sc( WZ_METEOR , SC_STUN ); add_sc( WZ_VERMILION , SC_BLIND ); add_sc( WZ_FROSTNOVA , SC_FREEZE ); add_sc( WZ_STORMGUST , SC_FREEZE ); - set_sc( WZ_QUAGMIRE , SC_QUAGMIRE , SI_QUAGMIRE , SCB_AGI|SCB_DEX|SCB_ASPD|SCB_SPEED ); + set_sc( WZ_QUAGMIRE , SC_QUAGMIRE , EFST_QUAGMIRE , SCB_AGI|SCB_DEX|SCB_ASPD|SCB_SPEED ); add_sc( BS_HAMMERFALL , SC_STUN ); - set_sc( BS_ADRENALINE , SC_ADRENALINE , SI_ADRENALINE , SCB_ASPD ); - set_sc( BS_WEAPONPERFECT , SC_WEAPONPERFECTION , SI_WEAPONPERFECTION , SCB_NONE ); - set_sc( BS_OVERTHRUST , SC_OVERTHRUST , SI_OVERTHRUST , SCB_NONE ); - set_sc( BS_MAXIMIZE , SC_MAXIMIZEPOWER , SI_MAXIMIZEPOWER , SCB_REGEN ); + set_sc( BS_ADRENALINE , SC_ADRENALINE , EFST_ADRENALINE , SCB_ASPD ); + set_sc( BS_WEAPONPERFECT , SC_WEAPONPERFECTION , EFST_WEAPONPERFECT, SCB_NONE ); + set_sc( BS_OVERTHRUST , SC_OVERTHRUST , EFST_OVERTHRUST , SCB_NONE ); + set_sc( BS_MAXIMIZE , SC_MAXIMIZEPOWER , EFST_MAXIMIZE, SCB_REGEN ); add_sc( HT_LANDMINE , SC_STUN ); - set_sc( HT_ANKLESNARE , SC_ANKLE , SI_ANKLESNARE , SCB_NONE ); + set_sc( HT_ANKLESNARE , SC_ANKLE , EFST_ANKLESNARE , SCB_NONE ); add_sc( HT_SANDMAN , SC_SLEEP ); add_sc( HT_FLASHER , SC_BLIND ); add_sc( HT_FREEZINGTRAP , SC_FREEZE ); - set_sc( AS_CLOAKING , SC_CLOAKING , SI_CLOAKING , SCB_CRI|SCB_SPEED ); + set_sc( AS_CLOAKING , SC_CLOAKING , EFST_CLOAKING , SCB_CRI|SCB_SPEED ); add_sc( AS_SONICBLOW , SC_STUN ); - set_sc( AS_ENCHANTPOISON , SC_ENCPOISON , SI_ENCPOISON , SCB_ATK_ELE ); - set_sc( AS_POISONREACT , SC_POISONREACT , SI_POISONREACT , SCB_NONE ); + set_sc( AS_ENCHANTPOISON , SC_ENCPOISON , EFST_ENCHANTPOISON, SCB_ATK_ELE ); + set_sc( AS_POISONREACT , SC_POISONREACT , EFST_POISONREACT , SCB_NONE ); add_sc( AS_VENOMDUST , SC_POISON ); - set_sc( AS_SPLASHER , SC_SPLASHER , SI_SPLASHER , SCB_NONE ); - set_sc( NV_TRICKDEAD , SC_TRICKDEAD , SI_TRICKDEAD , SCB_REGEN ); - set_sc( SM_AUTOBERSERK , SC_AUTOBERSERK , SI_AUTOBERSERK , SCB_NONE ); + set_sc( AS_SPLASHER , SC_SPLASHER , EFST_SPLASHER , SCB_NONE ); + set_sc( NV_TRICKDEAD , SC_TRICKDEAD , EFST_TRICKDEAD , SCB_REGEN ); + set_sc( SM_AUTOBERSERK , SC_AUTOBERSERK , EFST_AUTOBERSERK , SCB_NONE ); add_sc( TF_SPRINKLESAND , SC_BLIND ); add_sc( TF_THROWSTONE , SC_STUN ); - set_sc( MC_LOUD , SC_LOUD , SI_LOUD , SCB_STR ); - set_sc( MG_ENERGYCOAT , SC_ENERGYCOAT , SI_ENERGYCOAT , SCB_NONE ); - set_sc( NPC_EMOTION , SC_MODECHANGE , SI_BLANK , SCB_MODE ); + set_sc( MC_LOUD , SC_LOUD , EFST_SHOUT, SCB_STR ); + set_sc( MG_ENERGYCOAT , SC_ENERGYCOAT , EFST_ENERGYCOAT , SCB_NONE ); + set_sc( NPC_EMOTION , SC_MODECHANGE , EFST_BLANK , SCB_MODE ); add_sc( NPC_EMOTION_ON , SC_MODECHANGE ); - set_sc( NPC_ATTRICHANGE , SC_ELEMENTALCHANGE , SI_ARMOR_PROPERTY , SCB_DEF_ELE ); + set_sc( NPC_ATTRICHANGE , SC_ELEMENTALCHANGE , EFST_ARMOR_PROPERTY , SCB_DEF_ELE ); add_sc( NPC_CHANGEWATER , SC_ELEMENTALCHANGE ); add_sc( NPC_CHANGEGROUND , SC_ELEMENTALCHANGE ); add_sc( NPC_CHANGEFIRE , SC_ELEMENTALCHANGE ); @@ -328,203 +328,203 @@ void initChangeTables(void) add_sc( NPC_CURSEATTACK , SC_CURSE ); add_sc( NPC_SLEEPATTACK , SC_SLEEP ); add_sc( NPC_MAGICALATTACK , SC_MAGICALATTACK ); - set_sc( NPC_KEEPING , SC_KEEPING , SI_BLANK , SCB_DEF ); + set_sc( NPC_KEEPING , SC_KEEPING , EFST_BLANK , SCB_DEF ); add_sc( NPC_DARKBLESSING , SC_COMA ); - set_sc( NPC_BARRIER , SC_BARRIER , SI_BARRIER , SCB_MDEF|SCB_DEF ); + set_sc( NPC_BARRIER , SC_BARRIER , EFST_BARRIER , SCB_MDEF|SCB_DEF ); add_sc( NPC_DEFENDER , SC_ARMOR ); add_sc( NPC_LICK , SC_STUN ); - set_sc( NPC_HALLUCINATION , SC_HALLUCINATION , SI_HALLUCINATION , SCB_NONE ); + set_sc( NPC_HALLUCINATION , SC_HALLUCINATION , EFST_ILLUSION, SCB_NONE ); add_sc( NPC_REBIRTH , SC_REBIRTH ); add_sc( RG_RAID , SC_STUN ); #ifdef RENEWAL add_sc( RG_RAID , SC_RAID ); add_sc( RG_BACKSTAP , SC_STUN ); #endif - set_sc( RG_STRIPWEAPON , SC_STRIPWEAPON , SI_STRIPWEAPON , SCB_WATK ); - set_sc( RG_STRIPSHIELD , SC_STRIPSHIELD , SI_STRIPSHIELD , SCB_DEF ); - set_sc( RG_STRIPARMOR , SC_STRIPARMOR , SI_STRIPARMOR , SCB_VIT ); - set_sc( RG_STRIPHELM , SC_STRIPHELM , SI_STRIPHELM , SCB_INT ); + set_sc( RG_STRIPWEAPON , SC_STRIPWEAPON , EFST_NOEQUIPWEAPON, SCB_WATK ); + set_sc( RG_STRIPSHIELD , SC_STRIPSHIELD , EFST_NOEQUIPSHIELD, SCB_DEF ); + set_sc( RG_STRIPARMOR , SC_STRIPARMOR , EFST_NOEQUIPARMOR, SCB_VIT ); + set_sc( RG_STRIPHELM , SC_STRIPHELM , EFST_NOEQUIPHELM, SCB_INT ); add_sc( AM_ACIDTERROR , SC_BLEEDING ); - set_sc( AM_CP_WEAPON , SC_CP_WEAPON , SI_CP_WEAPON , SCB_NONE ); - set_sc( AM_CP_SHIELD , SC_CP_SHIELD , SI_CP_SHIELD , SCB_NONE ); - set_sc( AM_CP_ARMOR , SC_CP_ARMOR , SI_CP_ARMOR , SCB_NONE ); - set_sc( AM_CP_HELM , SC_CP_HELM , SI_CP_HELM , SCB_NONE ); - set_sc( CR_AUTOGUARD , SC_AUTOGUARD , SI_AUTOGUARD , SCB_NONE ); + set_sc( AM_CP_WEAPON , SC_CP_WEAPON , EFST_PROTECTWEAPON, SCB_NONE ); + set_sc( AM_CP_SHIELD , SC_CP_SHIELD , EFST_PROTECTSHIELD, SCB_NONE ); + set_sc( AM_CP_ARMOR , SC_CP_ARMOR , EFST_PROTECTARMOR, SCB_NONE ); + set_sc( AM_CP_HELM , SC_CP_HELM , EFST_PROTECTHELM, SCB_NONE ); + set_sc( CR_AUTOGUARD , SC_AUTOGUARD , EFST_AUTOGUARD , SCB_NONE ); add_sc( CR_SHIELDCHARGE , SC_STUN ); - set_sc( CR_REFLECTSHIELD , SC_REFLECTSHIELD , SI_REFLECTSHIELD , SCB_NONE ); + set_sc( CR_REFLECTSHIELD , SC_REFLECTSHIELD , EFST_REFLECTSHIELD , SCB_NONE ); add_sc( CR_HOLYCROSS , SC_BLIND ); add_sc( CR_GRANDCROSS , SC_BLIND ); - set_sc( CR_DEVOTION , SC_DEVOTION , SI_DEVOTION , SCB_NONE); - set_sc( CR_PROVIDENCE , SC_PROVIDENCE , SI_PROVIDENCE , SCB_ALL ); - set_sc( CR_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD ); - set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , SI_SPEARQUICKEN , SCB_ASPD|SCB_CRI|SCB_FLEE ); - set_sc( MO_STEELBODY , SC_STEELBODY , SI_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED ); + set_sc( CR_DEVOTION , SC_DEVOTION , EFST_DEVOTION , SCB_NONE); + set_sc( CR_PROVIDENCE , SC_PROVIDENCE , EFST_PROVIDENCE , SCB_ALL ); + set_sc( CR_DEFENDER , SC_DEFENDER , EFST_DEFENDER , SCB_SPEED|SCB_ASPD ); + set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , EFST_SPEARQUICKEN , SCB_ASPD|SCB_CRI|SCB_FLEE ); + set_sc( MO_STEELBODY , SC_STEELBODY , EFST_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED ); add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT ); - set_sc( MO_BLADESTOP , SC_BLADESTOP , SI_BLADESTOP , SCB_NONE ); - set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS , SI_EXPLOSIONSPIRITS , SCB_CRI|SCB_REGEN ); - set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_BLANK , SCB_REGEN ); + set_sc( MO_BLADESTOP , SC_BLADESTOP , EFST_BLADESTOP , SCB_NONE ); + set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS , EFST_EXPLOSIONSPIRITS , SCB_CRI|SCB_REGEN ); + set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , EFST_BLANK , SCB_REGEN ); #ifdef RENEWAL - set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , SI_EXTREMITYFIST , SCB_NONE ); + set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , EFST_EXTREMITYFIST , SCB_NONE ); #endif - set_sc( SA_MAGICROD , SC_MAGICROD , SI_MAGICROD , SCB_NONE ); - set_sc( SA_AUTOSPELL , SC_AUTOSPELL , SI_AUTOSPELL , SCB_NONE ); - set_sc( SA_FLAMELAUNCHER , SC_FIREWEAPON , SI_FIREWEAPON , SCB_ATK_ELE ); - set_sc( SA_FROSTWEAPON , SC_WATERWEAPON , SI_WATERWEAPON , SCB_ATK_ELE ); - set_sc( SA_LIGHTNINGLOADER , SC_WINDWEAPON , SI_WINDWEAPON , SCB_ATK_ELE ); - set_sc( SA_SEISMICWEAPON , SC_EARTHWEAPON , SI_EARTHWEAPON , SCB_ATK_ELE ); - set_sc( SA_VOLCANO , SC_VOLCANO , SI_LANDENDOW , SCB_WATK ); - set_sc( SA_DELUGE , SC_DELUGE , SI_LANDENDOW , SCB_MAXHP ); - set_sc( SA_VIOLENTGALE , SC_VIOLENTGALE , SI_LANDENDOW , SCB_FLEE ); + set_sc( SA_MAGICROD , SC_MAGICROD , EFST_MAGICROD , SCB_NONE ); + set_sc( SA_AUTOSPELL , SC_AUTOSPELL , EFST_AUTOSPELL , SCB_NONE ); + set_sc( SA_FLAMELAUNCHER , SC_FIREWEAPON , EFST_PROPERTYFIRE, SCB_ATK_ELE ); + set_sc( SA_FROSTWEAPON , SC_WATERWEAPON , EFST_PROPERTYWATER, SCB_ATK_ELE ); + set_sc( SA_LIGHTNINGLOADER , SC_WINDWEAPON , EFST_PROPERTYWIND, SCB_ATK_ELE ); + set_sc( SA_SEISMICWEAPON , SC_EARTHWEAPON , EFST_PROPERTYGROUND, SCB_ATK_ELE ); + set_sc( SA_VOLCANO , SC_VOLCANO , EFST_GROUNDMAGIC, SCB_WATK ); + set_sc( SA_DELUGE , SC_DELUGE , EFST_GROUNDMAGIC, SCB_MAXHP ); + set_sc( SA_VIOLENTGALE , SC_VIOLENTGALE , EFST_GROUNDMAGIC, SCB_FLEE ); add_sc( SA_REVERSEORCISH , SC_ORCISH ); add_sc( SA_COMA , SC_COMA ); - set_sc( BD_ENCORE , SC_DANCING , SI_BDPLAYING , SCB_SPEED|SCB_REGEN ); - set_sc( BD_RICHMANKIM , SC_RICHMANKIM , SI_RICHMANKIM , SCB_NONE ); - set_sc( BD_ETERNALCHAOS , SC_ETERNALCHAOS , SI_ETERNALCHAOS , SCB_DEF2 ); - set_sc( BD_DRUMBATTLEFIELD , SC_DRUMBATTLE , SI_DRUMBATTLEFIELD , + set_sc( BD_ENCORE , SC_DANCING , EFST_BDPLAYING , SCB_SPEED|SCB_REGEN ); + set_sc( BD_RICHMANKIM , SC_RICHMANKIM , EFST_RICHMANKIM , SCB_NONE ); + set_sc( BD_ETERNALCHAOS , SC_ETERNALCHAOS , EFST_ETERNALCHAOS , SCB_DEF2 ); + set_sc( BD_DRUMBATTLEFIELD , SC_DRUMBATTLE , EFST_DRUMBATTLEFIELD , #ifndef RENEWAL SCB_WATK|SCB_DEF ); #else SCB_DEF ); #endif - set_sc( BD_RINGNIBELUNGEN , SC_NIBELUNGEN , SI_RINGNIBELUNGEN , + set_sc( BD_RINGNIBELUNGEN , SC_NIBELUNGEN , EFST_RINGNIBELUNGEN , #ifndef RENEWAL SCB_WATK ); #else SCB_NONE ); #endif - set_sc( BD_ROKISWEIL , SC_ROKISWEIL , SI_ROKISWEIL , SCB_NONE ); - set_sc( BD_INTOABYSS , SC_INTOABYSS , SI_INTOABYSS , SCB_NONE ); - set_sc( BD_SIEGFRIED , SC_SIEGFRIED , SI_SIEGFRIED , SCB_ALL ); + set_sc( BD_ROKISWEIL , SC_ROKISWEIL , EFST_ROKISWEIL , SCB_NONE ); + set_sc( BD_INTOABYSS , SC_INTOABYSS , EFST_INTOABYSS , SCB_NONE ); + set_sc( BD_SIEGFRIED , SC_SIEGFRIED , EFST_SIEGFRIED , SCB_ALL ); add_sc( BA_FROSTJOKER , SC_FREEZE ); - set_sc( BA_WHISTLE , SC_WHISTLE , SI_WHISTLE , SCB_FLEE|SCB_FLEE2 ); - set_sc( BA_ASSASSINCROSS , SC_ASSNCROS , SI_ASSASSINCROSS , SCB_ASPD ); - set_sc( BA_POEMBRAGI , SC_POEMBRAGI , SI_POEMBRAGI , SCB_NONE ); - set_sc( BA_APPLEIDUN , SC_APPLEIDUN , SI_APPLEIDUN , SCB_MAXHP ); + set_sc( BA_WHISTLE , SC_WHISTLE , EFST_WHISTLE , SCB_FLEE|SCB_FLEE2 ); + set_sc( BA_ASSASSINCROSS , SC_ASSNCROS , EFST_ASSASSINCROSS , SCB_ASPD ); + set_sc( BA_POEMBRAGI , SC_POEMBRAGI , EFST_POEMBRAGI , SCB_NONE ); + set_sc( BA_APPLEIDUN , SC_APPLEIDUN , EFST_APPLEIDUN , SCB_MAXHP ); add_sc( DC_SCREAM , SC_STUN ); - set_sc( DC_HUMMING , SC_HUMMING , SI_HUMMING , SCB_HIT ); - set_sc( DC_DONTFORGETME , SC_DONTFORGETME , SI_DONTFORGETME , SCB_SPEED|SCB_ASPD ); - set_sc( DC_FORTUNEKISS , SC_FORTUNE , SI_FORTUNEKISS , SCB_CRI ); - set_sc( DC_SERVICEFORYOU , SC_SERVICE4U , SI_SERVICEFORYOU , SCB_ALL ); + set_sc( DC_HUMMING , SC_HUMMING , EFST_HUMMING , SCB_HIT ); + set_sc( DC_DONTFORGETME , SC_DONTFORGETME , EFST_DONTFORGETME , SCB_SPEED|SCB_ASPD ); + set_sc( DC_FORTUNEKISS , SC_FORTUNE , EFST_FORTUNEKISS , SCB_CRI ); + set_sc( DC_SERVICEFORYOU , SC_SERVICE4U , EFST_SERVICEFORYOU , SCB_ALL ); add_sc( NPC_DARKCROSS , SC_BLIND ); add_sc( NPC_GRANDDARKNESS , SC_BLIND ); - set_sc( NPC_STOP , SC_STOP , SI_STOP , SCB_NONE ); - set_sc( NPC_WEAPONBRAKER , SC_BROKENWEAPON , SI_BROKENWEAPON , SCB_NONE ); - set_sc( NPC_ARMORBRAKE , SC_BROKENARMOR , SI_BROKENARMOR , SCB_NONE ); - set_sc( NPC_CHANGEUNDEAD , SC_CHANGEUNDEAD , SI_UNDEAD , SCB_DEF_ELE ); - set_sc( NPC_POWERUP , SC_INCHITRATE , SI_BLANK , SCB_HIT ); - set_sc( NPC_AGIUP , SC_INCFLEERATE , SI_BLANK , SCB_FLEE ); + set_sc( NPC_STOP , SC_STOP , EFST_STOP , SCB_NONE ); + set_sc( NPC_WEAPONBRAKER , SC_BROKENWEAPON , EFST_BROKENWEAPON , SCB_NONE ); + set_sc( NPC_ARMORBRAKE , SC_BROKENARMOR , EFST_BROKENARMOR , SCB_NONE ); + set_sc( NPC_CHANGEUNDEAD , SC_CHANGEUNDEAD , EFST_PROPERTYUNDEAD, SCB_DEF_ELE ); + set_sc( NPC_POWERUP , SC_INCHITRATE , EFST_BLANK , SCB_HIT ); + set_sc( NPC_AGIUP , SC_INCFLEERATE , EFST_BLANK , SCB_FLEE ); add_sc( NPC_INVISIBLE , SC_CLOAKING ); - set_sc( LK_AURABLADE , SC_AURABLADE , SI_AURABLADE , SCB_NONE ); - set_sc( LK_PARRYING , SC_PARRYING , SI_PARRYING , SCB_NONE ); - set_sc( LK_CONCENTRATION , SC_CONCENTRATION , SI_CONCENTRATION , + set_sc( LK_AURABLADE , SC_AURABLADE , EFST_AURABLADE , SCB_NONE ); + set_sc( LK_PARRYING , SC_PARRYING , EFST_PARRYING , SCB_NONE ); + set_sc( LK_CONCENTRATION , SC_CONCENTRATION , EFST_CONCENTRATION , #ifndef RENEWAL SCB_BATK|SCB_WATK|SCB_HIT|SCB_DEF|SCB_DEF2 ); #else SCB_HIT|SCB_DEF ); #endif - set_sc( LK_TENSIONRELAX , SC_TENSIONRELAX , SI_TENSIONRELAX , SCB_REGEN ); - set_sc( LK_BERSERK , SC_BERSERK , SI_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN ); + set_sc( LK_TENSIONRELAX , SC_TENSIONRELAX , EFST_TENSIONRELAX , SCB_REGEN ); + set_sc( LK_BERSERK , SC_BERSERK , EFST_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN ); set_sc( HP_ASSUMPTIO , SC_ASSUMPTIO , #ifndef RENEWAL - SI_ASSUMPTIO , SCB_NONE ); + EFST_ASSUMPTIO , SCB_NONE ); #else - SI_ASSUMPTIO2 , SCB_NONE ); + EFST_ASSUMPTIO2 , SCB_NONE ); #endif add_sc( HP_BASILICA , SC_BASILICA ); - set_sc( HW_MAGICPOWER , SC_MAGICPOWER , SI_MAGICPOWER , SCB_MATK ); + set_sc( HW_MAGICPOWER , SC_MAGICPOWER , EFST_MAGICPOWER , SCB_MATK ); add_sc( PA_SACRIFICE , SC_SACRIFICE ); - set_sc( PA_GOSPEL , SC_GOSPEL , SI_GOSPEL , SCB_SPEED|SCB_ASPD ); + set_sc( PA_GOSPEL , SC_GOSPEL , EFST_GOSPEL , SCB_SPEED|SCB_ASPD ); add_sc( PA_GOSPEL , SC_SCRESIST ); add_sc( CH_TIGERFIST , SC_STOP ); - set_sc( ASC_EDP , SC_EDP , SI_EDP , SCB_NONE ); - set_sc( SN_SIGHT , SC_TRUESIGHT , SI_TRUESIGHT , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_CRI|SCB_HIT ); - set_sc( SN_WINDWALK , SC_WINDWALK , SI_WINDWALK , SCB_FLEE|SCB_SPEED ); - set_sc( WS_MELTDOWN , SC_MELTDOWN , SI_MELTDOWN , SCB_NONE ); - set_sc( WS_CARTBOOST , SC_CARTBOOST , SI_CARTBOOST , SCB_SPEED ); - set_sc( ST_CHASEWALK , SC_CHASEWALK , SI_CHASEWALK , SCB_SPEED ); - set_sc( ST_REJECTSWORD , SC_REJECTSWORD , SI_REJECTSWORD , SCB_NONE ); + set_sc( ASC_EDP , SC_EDP , EFST_EDP , SCB_NONE ); + set_sc( SN_SIGHT , SC_TRUESIGHT , EFST_TRUESIGHT , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_CRI|SCB_HIT ); + set_sc( SN_WINDWALK , SC_WINDWALK , EFST_WINDWALK , SCB_FLEE|SCB_SPEED ); + set_sc( WS_MELTDOWN , SC_MELTDOWN , EFST_MELTDOWN , SCB_NONE ); + set_sc( WS_CARTBOOST , SC_CARTBOOST , EFST_CARTBOOST , SCB_SPEED ); + set_sc( ST_CHASEWALK , SC_CHASEWALK , EFST_CHASEWALK , SCB_SPEED ); + set_sc( ST_REJECTSWORD , SC_REJECTSWORD , EFST_SWORDREJECT, SCB_NONE ); add_sc( ST_REJECTSWORD , SC_AUTOCOUNTER ); - set_sc( CG_MARIONETTE , SC_MARIONETTE , SI_MARIONETTE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); - set_sc( CG_MARIONETTE , SC_MARIONETTE2 , SI_MARIONETTE2 , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc( CG_MARIONETTE , SC_MARIONETTE , EFST_MARIONETTE_MASTER, SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc( CG_MARIONETTE , SC_MARIONETTE2 , EFST_MARIONETTE, SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); add_sc( LK_SPIRALPIERCE , SC_STOP ); add_sc( LK_HEADCRUSH , SC_BLEEDING ); - set_sc( LK_JOINTBEAT , SC_JOINTBEAT , SI_JOINTBEAT , SCB_BATK|SCB_DEF2|SCB_SPEED|SCB_ASPD ); + set_sc( LK_JOINTBEAT , SC_JOINTBEAT , EFST_JOINTBEAT , SCB_BATK|SCB_DEF2|SCB_SPEED|SCB_ASPD ); add_sc( HW_NAPALMVULCAN , SC_CURSE ); - set_sc( PF_MINDBREAKER , SC_MINDBREAKER , SI_MINDBREAKER , SCB_MATK|SCB_MDEF2 ); - set_sc( PF_MEMORIZE , SC_MEMORIZE , SI_MEMORIZE , SCB_NONE ); - set_sc( PF_FOGWALL , SC_FOGWALL , SI_FOGWALL , SCB_NONE ); - set_sc( PF_SPIDERWEB , SC_SPIDERWEB , SI_SPIDERWEB , SCB_FLEE ); - set_sc( WE_BABY , SC_BABY , SI_BABY , SCB_NONE ); - set_sc( TK_RUN , SC_RUN , SI_RUN , SCB_SPEED|SCB_DSPD ); - set_sc( TK_RUN , SC_SPURT , SI_SPURT , SCB_STR ); - set_sc( TK_READYSTORM , SC_READYSTORM , SI_READYSTORM , SCB_NONE ); - set_sc( TK_READYDOWN , SC_READYDOWN , SI_READYDOWN , SCB_NONE ); + set_sc( PF_MINDBREAKER , SC_MINDBREAKER , EFST_MINDBREAKER , SCB_MATK|SCB_MDEF2 ); + set_sc( PF_MEMORIZE , SC_MEMORIZE , EFST_MEMORIZE , SCB_NONE ); + set_sc( PF_FOGWALL , SC_FOGWALL , EFST_FOGWALL , SCB_NONE ); + set_sc( PF_SPIDERWEB , SC_SPIDERWEB , EFST_SPIDERWEB , SCB_FLEE ); + set_sc( WE_BABY , SC_BABY , EFST_PROTECTEXP, SCB_NONE ); + set_sc( TK_RUN , SC_RUN , EFST_RUN , SCB_SPEED|SCB_DSPD ); + set_sc( TK_RUN , SC_SPURT , EFST_STRUP, SCB_STR ); + set_sc( TK_READYSTORM , SC_READYSTORM , EFST_STORMKICK_ON, SCB_NONE ); + set_sc( TK_READYDOWN , SC_READYDOWN , EFST_DOWNKICK_ON, SCB_NONE ); add_sc( TK_DOWNKICK , SC_STUN ); - set_sc( TK_READYTURN , SC_READYTURN , SI_READYTURN , SCB_NONE ); - set_sc( TK_READYCOUNTER , SC_READYCOUNTER , SI_READYCOUNTER , SCB_NONE ); - set_sc( TK_DODGE , SC_DODGE , SI_DODGE , SCB_NONE ); - set_sc( TK_SPTIME , SC_EARTHSCROLL , SI_EARTHSCROLL , SCB_NONE ); + set_sc( TK_READYTURN , SC_READYTURN , EFST_TURNKICK_ON, SCB_NONE ); + set_sc( TK_READYCOUNTER , SC_READYCOUNTER , EFST_COUNTER_ON, SCB_NONE ); + set_sc( TK_DODGE , SC_DODGE , EFST_DODGE_ON, SCB_NONE ); + set_sc( TK_SPTIME , SC_EARTHSCROLL , EFST_EARTHSCROLL , SCB_NONE ); add_sc( TK_SEVENWIND , SC_SEVENWIND ); - set_sc( TK_SEVENWIND , SC_GHOSTWEAPON , SI_GHOSTWEAPON , SCB_ATK_ELE ); - set_sc( TK_SEVENWIND , SC_SHADOWWEAPON , SI_SHADOWWEAPON , SCB_ATK_ELE ); - set_sc( SG_SUN_WARM , SC_WARM , SI_WARM , SCB_NONE ); - add_sc( SG_MOON_WARM , SC_WARM ); - add_sc( SG_STAR_WARM , SC_WARM ); - set_sc( SG_SUN_COMFORT , SC_SUN_COMFORT , SI_SUN_COMFORT , SCB_DEF2 ); - set_sc( SG_MOON_COMFORT , SC_MOON_COMFORT , SI_MOON_COMFORT , SCB_FLEE ); - set_sc( SG_STAR_COMFORT , SC_STAR_COMFORT , SI_STAR_COMFORT , SCB_ASPD ); + set_sc( TK_SEVENWIND , SC_GHOSTWEAPON , EFST_PROPERTYTELEKINESIS, SCB_ATK_ELE ); + set_sc( TK_SEVENWIND , SC_SHADOWWEAPON , EFST_PROPERTYDARK, SCB_ATK_ELE ); + set_sc( SG_SUN_WARM , SC_WARM , EFST_SG_SUN_WARM, SCB_NONE ); + set_sc( SG_MOON_WARM , SC_WARM, EFST_SG_MOON_WARM, SCB_NONE); + set_sc( SG_STAR_WARM , SC_WARM, EFST_SG_STAR_WARM, SCB_NONE); + set_sc( SG_SUN_COMFORT , SC_SUN_COMFORT , EFST_SUN_COMFORT , SCB_DEF2 ); + set_sc( SG_MOON_COMFORT , SC_MOON_COMFORT , EFST_MOON_COMFORT , SCB_FLEE ); + set_sc( SG_STAR_COMFORT , SC_STAR_COMFORT , EFST_STAR_COMFORT , SCB_ASPD ); add_sc( SG_FRIEND , SC_SKILLRATE_UP ); - set_sc( SG_KNOWLEDGE , SC_KNOWLEDGE , SI_BLANK , SCB_ALL ); - set_sc( SG_FUSION , SC_FUSION , SI_BLANK , SCB_SPEED ); - set_sc( BS_ADRENALINE2 , SC_ADRENALINE2 , SI_ADRENALINE2 , SCB_ASPD ); - set_sc( SL_KAIZEL , SC_KAIZEL , SI_KAIZEL , SCB_NONE ); - set_sc( SL_KAAHI , SC_KAAHI , SI_KAAHI , SCB_NONE ); - set_sc( SL_KAUPE , SC_KAUPE , SI_KAUPE , SCB_NONE ); - set_sc( SL_KAITE , SC_KAITE , SI_KAITE , SCB_NONE ); + set_sc( SG_KNOWLEDGE , SC_KNOWLEDGE , EFST_BLANK , SCB_ALL ); + set_sc( SG_FUSION , SC_FUSION , EFST_BLANK , SCB_SPEED ); + set_sc( BS_ADRENALINE2 , SC_ADRENALINE2 , EFST_ADRENALINE2 , SCB_ASPD ); + set_sc( SL_KAIZEL , SC_KAIZEL , EFST_KAIZEL , SCB_NONE ); + set_sc( SL_KAAHI , SC_KAAHI , EFST_KAAHI , SCB_NONE ); + set_sc( SL_KAUPE , SC_KAUPE , EFST_KAUPE , SCB_NONE ); + set_sc( SL_KAITE , SC_KAITE , EFST_KAITE , SCB_NONE ); add_sc( SL_STUN , SC_STUN ); - set_sc( SL_SWOO , SC_SWOO , SI_SWOO , SCB_SPEED ); - set_sc( SL_SKE , SC_SKE , SI_BLANK , SCB_BATK|SCB_WATK|SCB_DEF|SCB_DEF2 ); - set_sc( SL_SKA , SC_SKA , SI_BLANK , SCB_DEF2|SCB_MDEF2|SCB_SPEED|SCB_ASPD ); - set_sc( SL_SMA , SC_SMA , SI_SMA , SCB_NONE ); - set_sc( SM_SELFPROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); - set_sc( ST_PRESERVE , SC_PRESERVE , SI_PRESERVE , SCB_NONE ); - set_sc( PF_DOUBLECASTING , SC_DOUBLECAST , SI_DOUBLECAST , SCB_NONE ); - set_sc( HW_GRAVITATION , SC_GRAVITATION , SI_GRAVITATION , SCB_ASPD ); + set_sc( SL_SWOO , SC_SWOO , EFST_SWOO , SCB_SPEED ); + set_sc( SL_SKE , SC_SKE , EFST_BLANK , SCB_BATK|SCB_WATK|SCB_DEF|SCB_DEF2 ); + set_sc( SL_SKA , SC_SKA , EFST_BLANK , SCB_DEF2|SCB_MDEF2|SCB_SPEED|SCB_ASPD ); + set_sc( SL_SMA , SC_SMA , EFST_SMA_READY, SCB_NONE ); + set_sc( SM_SELFPROVOKE , SC_PROVOKE , EFST_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); + set_sc( ST_PRESERVE , SC_PRESERVE , EFST_PRESERVE , SCB_NONE ); + set_sc( PF_DOUBLECASTING , SC_DOUBLECAST , EFST_DOUBLECASTING, SCB_NONE ); + set_sc( HW_GRAVITATION , SC_GRAVITATION , EFST_GRAVITATION , SCB_ASPD ); add_sc( WS_CARTTERMINATION , SC_STUN ); - set_sc( WS_OVERTHRUSTMAX , SC_MAXOVERTHRUST , SI_MAXOVERTHRUST , SCB_NONE ); - set_sc( CG_LONGINGFREEDOM , SC_LONGING , SI_LONGING , SCB_SPEED|SCB_ASPD ); - set_sc( CG_HERMODE , SC_HERMODE , SI_HERMODE , SCB_NONE ); - set_sc( CG_TAROTCARD , SC_TAROTCARD , SI_TAROT , SCB_NONE ); - set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , SI_BLANK , SCB_ATK_ELE ); - set_sc( SL_HIGH , SC_SPIRIT , SI_SPIRIT , SCB_ALL ); - set_sc( KN_ONEHAND , SC_ONEHAND , SI_ONEHAND , SCB_ASPD ); - set_sc( GS_FLING , SC_FLING , SI_BLANK , SCB_DEF|SCB_DEF2 ); + set_sc( WS_OVERTHRUSTMAX , SC_MAXOVERTHRUST , EFST_OVERTHRUSTMAX, SCB_NONE ); + set_sc( CG_LONGINGFREEDOM , SC_LONGING , EFST_LONGING , SCB_SPEED|SCB_ASPD ); + set_sc( CG_HERMODE , SC_HERMODE , EFST_HERMODE , SCB_NONE ); + set_sc( CG_TAROTCARD , SC_TAROTCARD , EFST_TAROTCARD, SCB_NONE ); + set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , EFST_BLANK , SCB_ATK_ELE ); + set_sc( SL_HIGH , SC_SPIRIT , EFST_SOULLINK, SCB_ALL ); + set_sc( KN_ONEHAND , SC_ONEHAND , EFST_ONEHANDQUICKEN, SCB_ASPD ); + set_sc( GS_FLING , SC_FLING , EFST_BLANK , SCB_DEF|SCB_DEF2 ); add_sc( GS_CRACKER , SC_STUN ); add_sc( GS_DISARM , SC_STRIPWEAPON ); add_sc( GS_PIERCINGSHOT , SC_BLEEDING ); - set_sc( GS_MADNESSCANCEL , SC_MADNESSCANCEL , SI_MADNESSCANCEL , + set_sc( GS_MADNESSCANCEL , SC_MADNESSCANCEL , EFST_GS_MADNESSCANCEL, #ifndef RENEWAL SCB_BATK|SCB_ASPD ); #else SCB_ASPD ); #endif - set_sc( GS_ADJUSTMENT , SC_ADJUSTMENT , SI_ADJUSTMENT , SCB_HIT|SCB_FLEE ); - set_sc( GS_INCREASING , SC_INCREASING , SI_ACCURACY , SCB_AGI|SCB_DEX|SCB_HIT ); + set_sc( GS_ADJUSTMENT , SC_ADJUSTMENT , EFST_GS_ADJUSTMENT, SCB_HIT|SCB_FLEE ); + set_sc( GS_INCREASING , SC_INCREASING , EFST_GS_ACCURACY , SCB_AGI|SCB_DEX|SCB_HIT ); #ifdef RENEWAL - set_sc( GS_MAGICALBULLET , SC_MAGICALBULLET , SI_GS_MAGICAL_BULLET , SCB_NONE ); + set_sc( GS_MAGICALBULLET , SC_MAGICALBULLET , EFST_GS_MAGICAL_BULLET , SCB_NONE ); #endif - set_sc( GS_GATLINGFEVER , SC_GATLINGFEVER , SI_GATLINGFEVER , + set_sc( GS_GATLINGFEVER , SC_GATLINGFEVER , EFST_GS_GATLINGFEVER, #ifndef RENEWAL SCB_BATK|SCB_FLEE|SCB_SPEED|SCB_ASPD ); #else SCB_FLEE|SCB_SPEED|SCB_ASPD ); #endif add_sc( NJ_TATAMIGAESHI , SC_TATAMIGAESHI ); - set_sc( NJ_SUITON , SC_SUITON , SI_BLANK , SCB_AGI|SCB_SPEED ); + set_sc( NJ_SUITON , SC_SUITON , EFST_BLANK , SCB_AGI|SCB_SPEED ); add_sc( NJ_HYOUSYOURAKU , SC_FREEZE ); - set_sc( NJ_NEN , SC_NEN , SI_NEN , SCB_STR|SCB_INT ); - set_sc( NJ_UTSUSEMI , SC_UTSUSEMI , SI_UTSUSEMI , SCB_NONE ); - set_sc( NJ_BUNSINJYUTSU , SC_BUNSINJYUTSU , SI_BUNSINJYUTSU , SCB_DYE ); + set_sc( NJ_NEN , SC_NEN , EFST_NJ_NEN, SCB_STR|SCB_INT ); + set_sc( NJ_UTSUSEMI , SC_UTSUSEMI , EFST_NJ_UTSUSEMI, SCB_NONE ); + set_sc( NJ_BUNSINJYUTSU , SC_BUNSINJYUTSU , EFST_NJ_BUNSINJYUTSU, SCB_DYE ); add_sc( NPC_ICEBREATH , SC_FREEZE ); add_sc( NPC_ACIDBREATH , SC_POISON ); @@ -538,201 +538,203 @@ void initChangeTables(void) add_sc( NPC_WIDESIGHT , SC_SIGHT ); add_sc( NPC_EVILLAND , SC_BLIND ); add_sc( NPC_MAGICMIRROR , SC_MAGICMIRROR ); - set_sc( NPC_SLOWCAST , SC_SLOWCAST , SI_SLOWCAST , SCB_NONE ); - set_sc( NPC_CRITICALWOUND , SC_CRITICALWOUND , SI_CRITICALWOUND , SCB_NONE ); - set_sc( NPC_STONESKIN , SC_ARMORCHANGE , SI_BLANK , SCB_NONE ); + set_sc( NPC_SLOWCAST , SC_SLOWCAST , EFST_SLOWCAST , SCB_NONE ); + set_sc( NPC_CRITICALWOUND , SC_CRITICALWOUND , EFST_CRITICALWOUND , SCB_NONE ); + set_sc( NPC_STONESKIN , SC_ARMORCHANGE , EFST_BLANK , SCB_NONE ); add_sc( NPC_ANTIMAGIC , SC_ARMORCHANGE ); add_sc( NPC_WIDECURSE , SC_CURSE ); add_sc( NPC_WIDESTUN , SC_STUN ); - set_sc( NPC_HELLPOWER , SC_HELLPOWER , SI_HELLPOWER , SCB_NONE ); - set_sc( NPC_WIDEHELLDIGNITY , SC_HELLPOWER , SI_HELLPOWER , SCB_NONE ); - set_sc( NPC_INVINCIBLE , SC_INVINCIBLE , SI_INVINCIBLE , SCB_SPEED ); - set_sc( NPC_INVINCIBLEOFF , SC_INVINCIBLEOFF , SI_BLANK , SCB_SPEED ); - set_sc_with_vfx( NPC_MAXPAIN , SC_MAXPAIN , SI_MAXPAIN , SCB_NONE ); + set_sc( NPC_HELLPOWER , SC_HELLPOWER , EFST_HELLPOWER , SCB_NONE ); + set_sc( NPC_WIDEHELLDIGNITY , SC_HELLPOWER , EFST_HELLPOWER , SCB_NONE ); + set_sc( NPC_INVINCIBLE , SC_INVINCIBLE , EFST_INVINCIBLE , SCB_SPEED ); + set_sc( NPC_INVINCIBLEOFF , SC_INVINCIBLEOFF , EFST_BLANK , SCB_SPEED ); + set_sc( NPC_COMET , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc_with_vfx( NPC_MAXPAIN , SC_MAXPAIN , EFST_MAXPAIN , SCB_NONE ); + add_sc( NPC_JACKFROST , SC_FREEZE ); - set_sc( CASH_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); - set_sc( CASH_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED ); - set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE ); + set_sc( CASH_BLESSING , SC_BLESSING , EFST_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); + set_sc( CASH_INCAGI , SC_INCREASEAGI , EFST_INC_AGI, SCB_AGI|SCB_SPEED ); + set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , EFST_ASSUMPTIO , SCB_NONE ); - set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , SI_PARTYFLEE , SCB_NONE ); - set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_WATK|SCB_MATK|SCB_MDEF|SCB_DEF ); + set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , EFST_PARTYFLEE , SCB_NONE ); + set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , EFST_ODINS_POWER , SCB_WATK|SCB_MATK|SCB_MDEF|SCB_DEF ); - set_sc( CR_SHRINK , SC_SHRINK , SI_SHRINK , SCB_NONE ); - set_sc( RG_CLOSECONFINE , SC_CLOSECONFINE2 , SI_CLOSECONFINE2 , SCB_NONE ); - set_sc( RG_CLOSECONFINE , SC_CLOSECONFINE , SI_CLOSECONFINE , SCB_FLEE ); - set_sc( WZ_SIGHTBLASTER , SC_SIGHTBLASTER , SI_SIGHTBLASTER , SCB_NONE ); - set_sc( DC_WINKCHARM , SC_WINKCHARM , SI_WINKCHARM , SCB_NONE ); + set_sc( CR_SHRINK , SC_SHRINK , EFST_CR_SHRINK, SCB_NONE ); + set_sc( RG_CLOSECONFINE , SC_CLOSECONFINE2 , EFST_RG_CCONFINE_S, SCB_NONE ); + set_sc( RG_CLOSECONFINE , SC_CLOSECONFINE , EFST_RG_CCONFINE_M, SCB_FLEE ); + set_sc( WZ_SIGHTBLASTER , SC_SIGHTBLASTER , EFST_WZ_SIGHTBLASTER, SCB_NONE ); + set_sc( DC_WINKCHARM , SC_WINKCHARM , EFST_DC_WINKCHARM, SCB_NONE ); add_sc( MO_BALKYOUNG , SC_STUN ); add_sc( SA_ELEMENTWATER , SC_ELEMENTALCHANGE ); add_sc( SA_ELEMENTFIRE , SC_ELEMENTALCHANGE ); add_sc( SA_ELEMENTGROUND , SC_ELEMENTALCHANGE ); add_sc( SA_ELEMENTWIND , SC_ELEMENTALCHANGE ); - set_sc( HLIF_AVOID , SC_AVOID , SI_BLANK , SCB_SPEED ); - set_sc( HLIF_CHANGE , SC_CHANGE , SI_BLANK , SCB_VIT|SCB_INT ); - set_sc( HFLI_FLEET , SC_FLEET , SI_BLANK , SCB_ASPD|SCB_BATK|SCB_WATK ); - set_sc( HFLI_SPEED , SC_SPEED , SI_BLANK , SCB_FLEE ); - set_sc( HAMI_DEFENCE , SC_DEFENCE , SI_BLANK , + set_sc( HLIF_AVOID , SC_AVOID , EFST_BLANK , SCB_SPEED ); + set_sc( HLIF_CHANGE , SC_CHANGE , EFST_BLANK , SCB_VIT|SCB_INT ); + set_sc( HFLI_FLEET , SC_FLEET , EFST_BLANK , SCB_ASPD|SCB_BATK|SCB_WATK ); + set_sc( HFLI_SPEED , SC_SPEED , EFST_BLANK , SCB_FLEE ); + set_sc( HAMI_DEFENCE , SC_DEFENCE , EFST_BLANK , #ifndef RENEWAL SCB_DEF ); #else SCB_VIT ); #endif - set_sc( HAMI_BLOODLUST , SC_BLOODLUST , SI_BLANK , SCB_BATK|SCB_WATK ); + set_sc( HAMI_BLOODLUST , SC_BLOODLUST , EFST_BLANK , SCB_BATK|SCB_WATK ); /* Homunculus S */ add_sc(MH_STAHL_HORN , SC_STUN ); - set_sc(MH_ANGRIFFS_MODUS , SC_ANGRIFFS_MODUS , SI_ANGRIFFS_MODUS , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_MAXHP ); - set_sc(MH_GOLDENE_FERSE , SC_GOLDENE_FERSE , SI_GOLDENE_FERSE , SCB_ASPD|SCB_FLEE ); + set_sc(MH_ANGRIFFS_MODUS , SC_ANGRIFFS_MODUS , EFST_ANGRIFFS_MODUS , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_MAXHP ); + set_sc(MH_GOLDENE_FERSE , SC_GOLDENE_FERSE , EFST_GOLDENE_FERSE , SCB_ASPD|SCB_FLEE ); add_sc(MH_STEINWAND , SC_SAFETYWALL ); - set_sc(MH_OVERED_BOOST , SC_OVERED_BOOST , SI_OVERED_BOOST , SCB_FLEE|SCB_ASPD|SCB_DEF ); - set_sc(MH_LIGHT_OF_REGENE , SC_LIGHT_OF_REGENE, SI_LIGHT_OF_REGENE, SCB_NONE); - set_sc(MH_VOLCANIC_ASH , SC_ASH , SI_VOLCANIC_ASH , SCB_DEF|SCB_DEF2|SCB_HIT|SCB_BATK|SCB_FLEE ); - set_sc(MH_GRANITIC_ARMOR , SC_GRANITIC_ARMOR , SI_GRANITIC_ARMOR , SCB_NONE ); - set_sc(MH_MAGMA_FLOW , SC_MAGMA_FLOW , SI_MAGMA_FLOW , SCB_NONE ); - set_sc(MH_PYROCLASTIC , SC_PYROCLASTIC , SI_PYROCLASTIC , SCB_BATK|SCB_ATK_ELE ); - set_sc(MH_LAVA_SLIDE , SC_BURNING , SI_BURNT , SCB_MDEF ); - set_sc(MH_NEEDLE_OF_PARALYZE , SC_PARALYSIS , SI_NEEDLE_OF_PARALYZE , SCB_DEF2 ); + set_sc(MH_OVERED_BOOST , SC_OVERED_BOOST , EFST_OVERED_BOOST , SCB_FLEE|SCB_ASPD|SCB_DEF ); + set_sc(MH_LIGHT_OF_REGENE , SC_LIGHT_OF_REGENE, EFST_LIGHT_OF_REGENE, SCB_NONE); + set_sc(MH_VOLCANIC_ASH , SC_ASH , EFST_VOLCANIC_ASH , SCB_DEF|SCB_DEF2|SCB_HIT|SCB_BATK|SCB_FLEE ); + set_sc(MH_GRANITIC_ARMOR , SC_GRANITIC_ARMOR , EFST_GRANITIC_ARMOR , SCB_NONE ); + set_sc(MH_MAGMA_FLOW , SC_MAGMA_FLOW , EFST_MAGMA_FLOW , SCB_NONE ); + set_sc(MH_PYROCLASTIC , SC_PYROCLASTIC , EFST_PYROCLASTIC , SCB_BATK|SCB_ATK_ELE ); + set_sc(MH_LAVA_SLIDE , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc(MH_NEEDLE_OF_PARALYZE , SC_PARALYSIS , EFST_NEEDLE_OF_PARALYZE , SCB_DEF2 ); add_sc(MH_POISON_MIST , SC_BLIND ); - set_sc(MH_PAIN_KILLER , SC_PAIN_KILLER , SI_PAIN_KILLER , SCB_ASPD ); + set_sc(MH_PAIN_KILLER , SC_PAIN_KILLER , EFST_PAIN_KILLER , SCB_ASPD ); add_sc(MH_STYLE_CHANGE , SC_STYLE_CHANGE ); - set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER2 , SI_TINDER_BREAKER , SCB_FLEE ); - set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER , SI_TINDER_BREAKER_POSTDELAY , SCB_FLEE ); - set_sc(MH_CBC , SC_CBC , SI_CBC , SCB_FLEE ); - set_sc(MH_EQC , SC_EQC , SI_EQC , SCB_DEF2|SCB_MAXHP ); + set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER2 , EFST_TINDER_BREAKER , SCB_FLEE ); + set_sc(MH_TINDER_BREAKER , SC_TINDER_BREAKER , EFST_TINDER_BREAKER_POSTDELAY , SCB_FLEE ); + set_sc(MH_CBC , SC_CBC , EFST_CBC , SCB_FLEE ); + set_sc(MH_EQC , SC_EQC , EFST_EQC , SCB_DEF2|SCB_MAXHP ); add_sc( MER_CRASH , SC_STUN ); - set_sc( MER_PROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); + set_sc( MER_PROVOKE , SC_PROVOKE , EFST_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK ); add_sc( MS_MAGNUM , SC_WATK_ELEMENT ); add_sc( MER_SIGHT , SC_SIGHT ); - set_sc( MER_DECAGI , SC_DECREASEAGI , SI_DECREASEAGI , SCB_AGI|SCB_SPEED ); - set_sc( MER_MAGNIFICAT , SC_MAGNIFICAT , SI_MAGNIFICAT , SCB_REGEN ); + set_sc( MER_DECAGI , SC_DECREASEAGI , EFST_DEC_AGI, SCB_AGI|SCB_SPEED ); + set_sc( MER_MAGNIFICAT , SC_MAGNIFICAT , EFST_MAGNIFICAT , SCB_REGEN ); add_sc( MER_LEXDIVINA , SC_SILENCE ); add_sc( MA_LANDMINE , SC_STUN ); add_sc( MA_SANDMAN , SC_SLEEP ); add_sc( MA_FREEZINGTRAP , SC_FREEZE ); - set_sc( MER_AUTOBERSERK , SC_AUTOBERSERK , SI_AUTOBERSERK , SCB_NONE ); - set_sc( ML_AUTOGUARD , SC_AUTOGUARD , SI_AUTOGUARD , SCB_NONE ); - set_sc( MS_REFLECTSHIELD , SC_REFLECTSHIELD , SI_REFLECTSHIELD , SCB_NONE ); - set_sc( ML_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD ); - set_sc( MS_PARRYING , SC_PARRYING , SI_PARRYING , SCB_NONE ); - set_sc( MS_BERSERK , SC_BERSERK , SI_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN ); + set_sc( MER_AUTOBERSERK , SC_AUTOBERSERK , EFST_AUTOBERSERK , SCB_NONE ); + set_sc( ML_AUTOGUARD , SC_AUTOGUARD , EFST_AUTOGUARD , SCB_NONE ); + set_sc( MS_REFLECTSHIELD , SC_REFLECTSHIELD , EFST_REFLECTSHIELD , SCB_NONE ); + set_sc( ML_DEFENDER , SC_DEFENDER , EFST_DEFENDER , SCB_SPEED|SCB_ASPD ); + set_sc( MS_PARRYING , SC_PARRYING , EFST_PARRYING , SCB_NONE ); + set_sc( MS_BERSERK , SC_BERSERK , EFST_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN ); add_sc( ML_SPIRALPIERCE , SC_STOP ); - set_sc( MER_QUICKEN , SC_MERC_QUICKEN , SI_BLANK , SCB_ASPD ); + set_sc( MER_QUICKEN , SC_MERC_QUICKEN , EFST_BLANK , SCB_ASPD ); add_sc( ML_DEVOTION , SC_DEVOTION ); - set_sc( MER_KYRIE , SC_KYRIE , SI_KYRIE , SCB_NONE ); - set_sc( MER_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); - set_sc( MER_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED ); + set_sc( MER_KYRIE , SC_KYRIE , EFST_KYRIE , SCB_NONE ); + set_sc( MER_BLESSING , SC_BLESSING , EFST_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); + set_sc( MER_INCAGI , SC_INCREASEAGI , EFST_INC_AGI, SCB_AGI|SCB_SPEED ); - set_sc( GD_LEADERSHIP , SC_LEADERSHIP , SI_BLANK , SCB_STR ); - set_sc( GD_GLORYWOUNDS , SC_GLORYWOUNDS , SI_BLANK , SCB_VIT ); - set_sc( GD_SOULCOLD , SC_SOULCOLD , SI_BLANK , SCB_AGI ); - set_sc( GD_HAWKEYES , SC_HAWKEYES , SI_BLANK , SCB_DEX ); + set_sc( GD_LEADERSHIP , SC_LEADERSHIP , EFST_BLANK , SCB_STR ); + set_sc( GD_GLORYWOUNDS , SC_GLORYWOUNDS , EFST_BLANK , SCB_VIT ); + set_sc( GD_SOULCOLD , SC_SOULCOLD , EFST_BLANK , SCB_AGI ); + set_sc( GD_HAWKEYES , SC_HAWKEYES , EFST_BLANK , SCB_DEX ); - set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_GDSKILL_BATTLEORDER , SCB_STR|SCB_INT|SCB_DEX ); - set_sc( GD_REGENERATION , SC_REGENERATION , SI_GDSKILL_REGENERATION , SCB_REGEN ); + set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , EFST_GDSKILL_BATTLEORDER , SCB_STR|SCB_INT|SCB_DEX ); + set_sc( GD_REGENERATION , SC_REGENERATION , EFST_GDSKILL_REGENERATION , SCB_REGEN ); /* Rune Knight */ - set_sc( RK_ENCHANTBLADE , SC_ENCHANTBLADE , SI_ENCHANTBLADE , SCB_NONE ); - set_sc( RK_DRAGONHOWLING , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT ); - set_sc( RK_DEATHBOUND , SC_DEATHBOUND , SI_DEATHBOUND , SCB_NONE ); - set_sc( RK_WINDCUTTER , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT ); - set_sc( RK_DRAGONBREATH , SC_BURNING , SI_BURNT , SCB_MDEF ); - set_sc( RK_MILLENNIUMSHIELD , SC_MILLENNIUMSHIELD , SI_REUSE_MILLENNIUMSHIELD , SCB_NONE ); - set_sc( RK_REFRESH , SC_REFRESH , SI_REFRESH , SCB_NONE ); - set_sc( RK_GIANTGROWTH , SC_GIANTGROWTH , SI_GIANTGROWTH , SCB_STR ); - set_sc( RK_STONEHARDSKIN , SC_STONEHARDSKIN , SI_STONEHARDSKIN , SCB_DEF|SCB_MDEF ); - set_sc( RK_VITALITYACTIVATION , SC_VITALITYACTIVATION , SI_VITALITYACTIVATION , SCB_REGEN ); - set_sc( RK_FIGHTINGSPIRIT , SC_FIGHTINGSPIRIT , SI_FIGHTINGSPIRIT , SCB_WATK|SCB_ASPD ); - set_sc( RK_ABUNDANCE , SC_ABUNDANCE , SI_ABUNDANCE , SCB_NONE ); - set_sc( RK_CRUSHSTRIKE , SC_CRUSHSTRIKE , SI_CRUSHSTRIKE , SCB_NONE ); - set_sc_with_vfx( RK_DRAGONBREATH_WATER , SC_FREEZING , SI_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 ); + set_sc( RK_ENCHANTBLADE , SC_ENCHANTBLADE , EFST_ENCHANTBLADE , SCB_NONE ); + set_sc( RK_DRAGONHOWLING , SC_FEAR , EFST_BLANK , SCB_FLEE|SCB_HIT ); + set_sc( RK_DEATHBOUND , SC_DEATHBOUND , EFST_DEATHBOUND , SCB_NONE ); + set_sc( RK_WINDCUTTER , SC_FEAR , EFST_BLANK , SCB_FLEE|SCB_HIT ); + set_sc( RK_DRAGONBREATH , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc( RK_MILLENNIUMSHIELD , SC_MILLENNIUMSHIELD , EFST_REUSE_MILLENNIUMSHIELD , SCB_NONE ); + set_sc( RK_REFRESH , SC_REFRESH , EFST_REFRESH , SCB_NONE ); + set_sc( RK_GIANTGROWTH , SC_GIANTGROWTH , EFST_GIANTGROWTH , SCB_STR ); + set_sc( RK_STONEHARDSKIN , SC_STONEHARDSKIN , EFST_STONEHARDSKIN , SCB_DEF|SCB_MDEF ); + set_sc( RK_VITALITYACTIVATION , SC_VITALITYACTIVATION , EFST_VITALITYACTIVATION , SCB_REGEN ); + set_sc( RK_FIGHTINGSPIRIT , SC_FIGHTINGSPIRIT , EFST_FIGHTINGSPIRIT , SCB_WATK|SCB_ASPD ); + set_sc( RK_ABUNDANCE , SC_ABUNDANCE , EFST_ABUNDANCE , SCB_NONE ); + set_sc( RK_CRUSHSTRIKE , SC_CRUSHSTRIKE , EFST_CRUSHSTRIKE , SCB_NONE ); + set_sc_with_vfx( RK_DRAGONBREATH_WATER , SC_FREEZING , EFST_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 ); /* GC Guillotine Cross */ - set_sc_with_vfx( GC_VENOMIMPRESS, SC_VENOMIMPRESS , SI_VENOMIMPRESS , SCB_NONE ); - set_sc( GC_POISONINGWEAPON , SC_POISONINGWEAPON , SI_POISONINGWEAPON , SCB_NONE ); - set_sc( GC_WEAPONBLOCKING , SC_WEAPONBLOCKING , SI_WEAPONBLOCKING , SCB_NONE ); - set_sc( GC_CLOAKINGEXCEED , SC_CLOAKINGEXCEED , SI_CLOAKINGEXCEED , SCB_SPEED ); - set_sc( GC_HALLUCINATIONWALK , SC_HALLUCINATIONWALK , SI_HALLUCINATIONWALK , SCB_FLEE ); - set_sc( GC_ROLLINGCUTTER , SC_ROLLINGCUTTER , SI_ROLLINGCUTTER , SCB_NONE ); - set_sc_with_vfx( GC_DARKCROW , SC_DARKCROW , SI_DARKCROW , SCB_NONE ); + set_sc_with_vfx( GC_VENOMIMPRESS, SC_VENOMIMPRESS , EFST_VENOMIMPRESS , SCB_NONE ); + set_sc( GC_POISONINGWEAPON , SC_POISONINGWEAPON , EFST_POISONINGWEAPON , SCB_NONE ); + set_sc( GC_WEAPONBLOCKING , SC_WEAPONBLOCKING , EFST_WEAPONBLOCKING , SCB_NONE ); + set_sc( GC_CLOAKINGEXCEED , SC_CLOAKINGEXCEED , EFST_CLOAKINGEXCEED , SCB_SPEED ); + set_sc( GC_HALLUCINATIONWALK , SC_HALLUCINATIONWALK , EFST_HALLUCINATIONWALK , SCB_FLEE ); + set_sc( GC_ROLLINGCUTTER , SC_ROLLINGCUTTER , EFST_ROLLINGCUTTER , SCB_NONE ); + set_sc_with_vfx( GC_DARKCROW , SC_DARKCROW , EFST_DARKCROW , SCB_NONE ); /* Arch Bishop */ - set_sc( AB_ADORAMUS , SC_ADORAMUS , SI_ADORAMUS , SCB_AGI|SCB_SPEED ); + set_sc( AB_ADORAMUS , SC_ADORAMUS , EFST_ADORAMUS , SCB_AGI|SCB_SPEED ); add_sc( AB_CLEMENTIA , SC_BLESSING ); add_sc( AB_CANTO , SC_INCREASEAGI ); - set_sc( AB_EPICLESIS , SC_EPICLESIS , SI_EPICLESIS , SCB_MAXHP ); + set_sc( AB_EPICLESIS , SC_EPICLESIS , EFST_EPICLESIS , SCB_MAXHP ); add_sc( AB_PRAEFATIO , SC_KYRIE ); - set_sc_with_vfx( AB_ORATIO , SC_ORATIO , SI_ORATIO , SCB_NONE ); - set_sc( AB_LAUDAAGNUS , SC_LAUDAAGNUS , SI_LAUDAAGNUS , SCB_VIT ); - set_sc( AB_LAUDARAMUS , SC_LAUDARAMUS , SI_LAUDARAMUS , SCB_LUK ); - set_sc( AB_RENOVATIO , SC_RENOVATIO , SI_RENOVATIO , SCB_REGEN ); - set_sc( AB_EXPIATIO , SC_EXPIATIO , SI_EXPIATIO , SCB_NONE ); - set_sc( AB_DUPLELIGHT , SC_DUPLELIGHT , SI_DUPLELIGHT , SCB_NONE ); - set_sc( AB_SECRAMENT , SC_SECRAMENT , SI_SECRAMENT , SCB_NONE ); - set_sc( AB_OFFERTORIUM , SC_OFFERTORIUM , SI_OFFERTORIUM , SCB_NONE ); + set_sc_with_vfx( AB_ORATIO , SC_ORATIO , EFST_ORATIO , SCB_NONE ); + set_sc( AB_LAUDAAGNUS , SC_LAUDAAGNUS , EFST_LAUDAAGNUS , SCB_VIT ); + set_sc( AB_LAUDARAMUS , SC_LAUDARAMUS , EFST_LAUDARAMUS , SCB_LUK ); + set_sc( AB_RENOVATIO , SC_RENOVATIO , EFST_RENOVATIO , SCB_REGEN ); + set_sc( AB_EXPIATIO , SC_EXPIATIO , EFST_EXPIATIO , SCB_NONE ); + set_sc( AB_DUPLELIGHT , SC_DUPLELIGHT , EFST_DUPLELIGHT , SCB_NONE ); + set_sc( AB_SECRAMENT , SC_SECRAMENT , EFST_AB_SECRAMENT, SCB_NONE ); + set_sc( AB_OFFERTORIUM , SC_OFFERTORIUM , EFST_OFFERTORIUM , SCB_NONE ); /* Warlock */ add_sc( WL_WHITEIMPRISON , SC_WHITEIMPRISON ); - set_sc_with_vfx( WL_FROSTMISTY , SC_FREEZING , SI_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 ); + set_sc_with_vfx( WL_FROSTMISTY , SC_FREEZING , EFST_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF|SCB_DEF2 ); add_sc( WL_JACKFROST , SC_FREEZE ); - set_sc( WL_MARSHOFABYSS , SC_MARSHOFABYSS , SI_MARSHOFABYSS , SCB_AGI|SCB_DEX|SCB_SPEED ); - set_sc( WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SI_RECOGNIZEDSPELL , SCB_MATK); + set_sc( WL_MARSHOFABYSS , SC_MARSHOFABYSS , EFST_MARSHOFABYSS , SCB_AGI|SCB_DEX|SCB_SPEED ); + set_sc( WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , EFST_RECOGNIZEDSPELL , SCB_MATK); add_sc( WL_SIENNAEXECRATE , SC_STONE ); - set_sc( WL_STASIS , SC_STASIS , SI_STASIS , SCB_NONE ); + set_sc( WL_STASIS , SC_STASIS , EFST_STASIS , SCB_NONE ); add_sc( WL_CRIMSONROCK , SC_STUN ); - set_sc( WL_HELLINFERNO , SC_BURNING , SI_BURNT , SCB_MDEF ); - set_sc( WL_COMET , SC_BURNING , SI_BURNT , SCB_MDEF ); - set_sc( WL_TELEKINESIS_INTENSE , SC_TELEKINESIS_INTENSE, SI_TELEKINESIS_INTENSE, SCB_MATK ); + set_sc( WL_HELLINFERNO , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc( WL_COMET , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc( WL_TELEKINESIS_INTENSE , SC_TELEKINESIS_INTENSE, EFST_TELEKINESIS_INTENSE, SCB_MATK ); /* Ranger */ - set_sc( RA_FEARBREEZE , SC_FEARBREEZE , SI_FEARBREEZE , SCB_NONE ); - set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , SI_ELECTRICSHOCKER , SCB_NONE ); - set_sc( RA_WUGDASH , SC_WUGDASH , SI_WUGDASH , SCB_SPEED|SCB_DSPD ); - set_sc( RA_WUGBITE , SC_BITE , SI_WUGBITE , SCB_NONE ); - set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SI_CAMOUFLAGE , SCB_SPEED|SCB_DEF|SCB_DEF2 ); - set_sc( RA_FIRINGTRAP , SC_BURNING , SI_BURNT , SCB_MDEF ); - set_sc_with_vfx( RA_ICEBOUNDTRAP, SC_FREEZING , SI_FROSTMISTY , SCB_SPEED|SCB_ASPD|SCB_DEF|SCB_DEF2 ); - set_sc( RA_UNLIMIT , SC_UNLIMIT , SI_UNLIMIT , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); + set_sc( RA_FEARBREEZE , SC_FEARBREEZE , EFST_FEARBREEZE , SCB_NONE ); + set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , EFST_ELECTRICSHOCKER , SCB_NONE ); + set_sc( RA_WUGDASH , SC_WUGDASH , EFST_WUGDASH , SCB_SPEED|SCB_DSPD ); + set_sc( RA_WUGBITE , SC_BITE , EFST_WUGBITE , SCB_NONE ); + set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , EFST_CAMOUFLAGE , SCB_SPEED|SCB_DEF|SCB_DEF2 ); + set_sc( RA_FIRINGTRAP , SC_BURNING , EFST_BURNT , SCB_MDEF ); + set_sc_with_vfx( RA_ICEBOUNDTRAP, SC_FREEZING , EFST_FROSTMISTY , SCB_SPEED|SCB_ASPD|SCB_DEF|SCB_DEF2 ); + set_sc( RA_UNLIMIT , SC_UNLIMIT , EFST_UNLIMIT , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); /* Mechanic */ - set_sc( NC_ACCELERATION , SC_ACCELERATION , SI_ACCELERATION , SCB_SPEED ); - set_sc( NC_HOVERING , SC_HOVERING , SI_HOVERING , SCB_SPEED ); - set_sc( NC_SHAPESHIFT , SC_SHAPESHIFT , SI_SHAPESHIFT , SCB_DEF_ELE ); - set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SI_INFRAREDSCAN , SCB_FLEE ); - set_sc( NC_ANALYZE , SC_ANALYZE , SI_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); - set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SI_MAGNETICFIELD , SCB_NONE ); - set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SI_NEUTRALBARRIER , SCB_DEF|SCB_MDEF ); - set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SI_STEALTHFIELD , SCB_SPEED ); + set_sc( NC_ACCELERATION , SC_ACCELERATION , EFST_ACCELERATION , SCB_SPEED ); + set_sc( NC_HOVERING , SC_HOVERING , EFST_HOVERING , SCB_SPEED ); + set_sc( NC_SHAPESHIFT , SC_SHAPESHIFT , EFST_SHAPESHIFT , SCB_DEF_ELE ); + set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , EFST_INFRAREDSCAN , SCB_FLEE ); + set_sc( NC_ANALYZE , SC_ANALYZE , EFST_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); + set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , EFST_MAGNETICFIELD , SCB_NONE ); + set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , EFST_NEUTRALBARRIER , SCB_DEF|SCB_MDEF ); + set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , EFST_STEALTHFIELD , SCB_SPEED ); /* Royal Guard */ - set_sc( LG_REFLECTDAMAGE , SC_REFLECTDAMAGE , SI_LG_REFLECTDAMAGE , SCB_NONE ); - set_sc( LG_FORCEOFVANGUARD , SC_FORCEOFVANGUARD , SI_FORCEOFVANGUARD , SCB_MAXHP ); - set_sc( LG_EXEEDBREAK , SC_EXEEDBREAK , SI_EXEEDBREAK , SCB_NONE ); - set_sc( LG_PRESTIGE , SC_PRESTIGE , SI_PRESTIGE , SCB_DEF ); - set_sc( LG_BANDING , SC_BANDING , SI_BANDING , SCB_DEF2|SCB_WATK ); - set_sc( LG_PIETY , SC_BENEDICTIO , SI_BENEDICTIO , SCB_DEF_ELE ); - set_sc( LG_EARTHDRIVE , SC_EARTHDRIVE , SI_EARTHDRIVE , SCB_DEF|SCB_ASPD ); - set_sc( LG_INSPIRATION , SC_INSPIRATION , SI_INSPIRATION , SCB_WATK|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_HIT|SCB_MAXHP); - set_sc( LG_KINGS_GRACE , SC_KINGS_GRACE , SI_KINGS_GRACE , SCB_NONE ); + set_sc( LG_REFLECTDAMAGE , SC_REFLECTDAMAGE , EFST_LG_REFLECTDAMAGE , SCB_NONE ); + set_sc( LG_FORCEOFVANGUARD , SC_FORCEOFVANGUARD , EFST_FORCEOFVANGUARD , SCB_MAXHP ); + set_sc( LG_EXEEDBREAK , SC_EXEEDBREAK , EFST_EXEEDBREAK , SCB_NONE ); + set_sc( LG_PRESTIGE , SC_PRESTIGE , EFST_PRESTIGE , SCB_DEF ); + set_sc( LG_BANDING , SC_BANDING , EFST_BANDING , SCB_DEF2|SCB_WATK ); + set_sc( LG_PIETY , SC_BENEDICTIO , EFST_BENEDICTIO , SCB_DEF_ELE ); + set_sc( LG_EARTHDRIVE , SC_EARTHDRIVE , EFST_EARTHDRIVE , SCB_DEF|SCB_ASPD ); + set_sc( LG_INSPIRATION , SC_INSPIRATION , EFST_INSPIRATION , SCB_WATK|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_HIT|SCB_MAXHP); + set_sc( LG_KINGS_GRACE , SC_KINGS_GRACE , EFST_KINGS_GRACE , SCB_NONE ); /* Shadow Chaser */ - set_sc( SC_REPRODUCE , SC__REPRODUCE , SI_REPRODUCE , SCB_NONE ); - set_sc( SC_AUTOSHADOWSPELL , SC__AUTOSHADOWSPELL , SI_AUTOSHADOWSPELL , SCB_NONE ); - set_sc( SC_SHADOWFORM , SC__SHADOWFORM , SI_SHADOWFORM , SCB_NONE ); - set_sc( SC_BODYPAINT , SC__BODYPAINT , SI_BODYPAINT , SCB_ASPD ); - set_sc( SC_INVISIBILITY , SC__INVISIBILITY , SI_INVISIBILITY , SCB_ASPD|SCB_CRI|SCB_ATK_ELE ); - set_sc( SC_DEADLYINFECT , SC__DEADLYINFECT , SI_DEADLYINFECT , SCB_NONE ); - set_sc( SC_ENERVATION , SC__ENERVATION , SI_ENERVATION , SCB_BATK|SCB_WATK ); - set_sc( SC_GROOMY , SC__GROOMY , SI_GROOMY , SCB_ASPD|SCB_HIT ); - set_sc( SC_IGNORANCE , SC__IGNORANCE , SI_IGNORANCE , SCB_NONE ); - set_sc( SC_LAZINESS , SC__LAZINESS , SI_LAZINESS , SCB_FLEE|SCB_SPEED ); - set_sc( SC_UNLUCKY , SC__UNLUCKY , SI_UNLUCKY , SCB_CRI|SCB_FLEE2 ); - set_sc( SC_WEAKNESS , SC__WEAKNESS , SI_WEAKNESS , SCB_MAXHP ); - set_sc( SC_STRIPACCESSARY , SC__STRIPACCESSORY , SI_STRIPACCESSARY , SCB_DEX|SCB_INT|SCB_LUK ); - set_sc_with_vfx( SC_MANHOLE , SC__MANHOLE , SI_MANHOLE , SCB_NONE ); + set_sc( SC_REPRODUCE , SC__REPRODUCE , EFST_REPRODUCE , SCB_NONE ); + set_sc( SC_AUTOSHADOWSPELL , SC__AUTOSHADOWSPELL , EFST_AUTOSHADOWSPELL , SCB_NONE ); + set_sc( SC_SHADOWFORM , SC__SHADOWFORM , EFST_SHADOWFORM , SCB_NONE ); + set_sc( SC_BODYPAINT , SC__BODYPAINT , EFST_BODYPAINT , SCB_ASPD ); + set_sc( SC_INVISIBILITY , SC__INVISIBILITY , EFST_INVISIBILITY , SCB_ASPD|SCB_CRI|SCB_ATK_ELE ); + set_sc( SC_DEADLYINFECT , SC__DEADLYINFECT , EFST_DEADLYINFECT , SCB_NONE ); + set_sc( SC_ENERVATION , SC__ENERVATION , EFST_ENERVATION , SCB_BATK|SCB_WATK ); + set_sc( SC_GROOMY , SC__GROOMY , EFST_GROOMY , SCB_ASPD|SCB_HIT ); + set_sc( SC_IGNORANCE , SC__IGNORANCE , EFST_IGNORANCE , SCB_NONE ); + set_sc( SC_LAZINESS , SC__LAZINESS , EFST_LAZINESS , SCB_FLEE|SCB_SPEED ); + set_sc( SC_UNLUCKY , SC__UNLUCKY , EFST_UNLUCKY , SCB_CRI|SCB_FLEE2 ); + set_sc( SC_WEAKNESS , SC__WEAKNESS , EFST_WEAKNESS , SCB_MAXHP ); + set_sc( SC_STRIPACCESSARY , SC__STRIPACCESSORY , EFST_STRIPACCESSARY , SCB_DEX|SCB_INT|SCB_LUK ); + set_sc_with_vfx( SC_MANHOLE , SC__MANHOLE , EFST_MANHOLE , SCB_NONE ); add_sc( SC_CHAOSPANIC , SC_CONFUSION ); add_sc( SC_BLOODYLUST , SC_BERSERK ); add_sc( SC_FEINTBOMB , SC__FEINTBOMB ); @@ -741,159 +743,159 @@ void initChangeTables(void) /* Sura */ add_sc( SR_DRAGONCOMBO , SC_STUN ); add_sc( SR_EARTHSHAKER , SC_STUN ); - set_sc( SR_CRESCENTELBOW , SC_CRESCENTELBOW , SI_CRESCENTELBOW , SCB_NONE ); - set_sc_with_vfx( SR_CURSEDCIRCLE , SC_CURSEDCIRCLE_TARGET, SI_CURSEDCIRCLE_TARGET , SCB_NONE ); - set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , SI_LIGHTNINGWALK , SCB_NONE ); - set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , SI_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP ); - set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN , SCB_NONE ); - set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD ); - set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN ); - set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_WATK ); + set_sc( SR_CRESCENTELBOW , SC_CRESCENTELBOW , EFST_CRESCENTELBOW , SCB_NONE ); + set_sc_with_vfx( SR_CURSEDCIRCLE , SC_CURSEDCIRCLE_TARGET, EFST_CURSEDCIRCLE_TARGET , SCB_NONE ); + set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , EFST_LIGHTNINGWALK , SCB_NONE ); + set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , EFST_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP ); + set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , EFST_GENTLETOUCH_ENERGYGAIN , SCB_NONE ); + set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , EFST_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD ); + set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , EFST_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN ); + set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , EFST_FLASHCOMBO , SCB_WATK ); /* Wanderer / Minstrel */ - set_sc( WA_SWING_DANCE , SC_SWINGDANCE , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD ); - set_sc( WA_SYMPHONY_OF_LOVER , SC_SYMPHONYOFLOVER , SI_SYMPHONYOFLOVERS , SCB_MDEF ); - set_sc( WA_MOONLIT_SERENADE , SC_MOONLITSERENADE , SI_MOONLITSERENADE , SCB_MATK ); - set_sc( MI_RUSH_WINDMILL , SC_RUSHWINDMILL , SI_RUSHWINDMILL , SCB_WATK ); - set_sc( MI_ECHOSONG , SC_ECHOSONG , SI_ECHOSONG , SCB_DEF ); - set_sc( MI_HARMONIZE , SC_HARMONIZE , SI_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); - set_sc_with_vfx( WM_POEMOFNETHERWORLD , SC_NETHERWORLD , SI_NETHERWORLD , SCB_NONE ); - set_sc_with_vfx( WM_VOICEOFSIREN , SC_VOICEOFSIREN , SI_VOICEOFSIREN , SCB_NONE ); - set_sc_with_vfx( WM_LULLABY_DEEPSLEEP , SC_DEEPSLEEP , SI_DEEPSLEEP , SCB_NONE ); - set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , SI_SIRCLEOFNATURE , SCB_NONE ); - set_sc( WM_GLOOMYDAY , SC_GLOOMYDAY , SI_GLOOMYDAY , SCB_FLEE|SCB_SPEED|SCB_ASPD ); - set_sc( WM_SONG_OF_MANA , SC_SONGOFMANA , SI_SONGOFMANA , SCB_NONE ); - set_sc( WM_DANCE_WITH_WUG , SC_DANCEWITHWUG , SI_DANCEWITHWUG , SCB_ASPD ); - set_sc( WM_SATURDAY_NIGHT_FEVER , SC_SATURDAYNIGHTFEVER , SI_SATURDAYNIGHTFEVER , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN ); - set_sc( WM_LERADS_DEW , SC_LERADSDEW , SI_LERADSDEW , SCB_MAXHP ); - set_sc( WM_MELODYOFSINK , SC_MELODYOFSINK , SI_MELODYOFSINK , SCB_INT ); - set_sc( WM_BEYOND_OF_WARCRY , SC_BEYONDOFWARCRY , SI_WARCRYOFBEYOND , SCB_STR|SCB_CRI|SCB_MAXHP ); - set_sc( WM_UNLIMITED_HUMMING_VOICE , SC_UNLIMITEDHUMMINGVOICE , SI_UNLIMITEDHUMMINGVOICE , SCB_NONE ); - set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , SI_FRIGG_SONG , SCB_MAXHP ); + set_sc( WA_SWING_DANCE , SC_SWINGDANCE , EFST_SWING, SCB_SPEED|SCB_ASPD ); + set_sc( WA_SYMPHONY_OF_LOVER , SC_SYMPHONYOFLOVER , EFST_SYMPHONY_LOVE, SCB_MDEF ); + set_sc( WA_MOONLIT_SERENADE , SC_MOONLITSERENADE , EFST_MOONLIT_SERENADE, SCB_MATK ); + set_sc( MI_RUSH_WINDMILL , SC_RUSHWINDMILL , EFST_RUSH_WINDMILL, SCB_WATK ); + set_sc( MI_ECHOSONG , SC_ECHOSONG , EFST_ECHOSONG , SCB_DEF ); + set_sc( MI_HARMONIZE , SC_HARMONIZE , EFST_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc_with_vfx( WM_POEMOFNETHERWORLD , SC_NETHERWORLD , EFST_NETHERWORLD , SCB_NONE ); + set_sc_with_vfx( WM_VOICEOFSIREN , SC_VOICEOFSIREN , EFST_SIREN, SCB_NONE ); + set_sc_with_vfx( WM_LULLABY_DEEPSLEEP , SC_DEEPSLEEP , EFST_HANDICAPSTATE_DEEP_SLEEP, SCB_NONE ); + set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , EFST_SIRCLEOFNATURE , SCB_NONE ); + set_sc( WM_GLOOMYDAY , SC_GLOOMYDAY , EFST_GLOOMYDAY , SCB_FLEE|SCB_SPEED|SCB_ASPD ); + set_sc( WM_SONG_OF_MANA , SC_SONGOFMANA , EFST_SONG_OF_MANA, SCB_NONE ); + set_sc( WM_DANCE_WITH_WUG , SC_DANCEWITHWUG , EFST_DANCE_WITH_WUG, SCB_ASPD ); + set_sc( WM_SATURDAY_NIGHT_FEVER , SC_SATURDAYNIGHTFEVER , EFST_SATURDAY_NIGHT_FEVER, SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN ); + set_sc( WM_LERADS_DEW , SC_LERADSDEW , EFST_LERADS_DEW, SCB_MAXHP ); + set_sc( WM_MELODYOFSINK , SC_MELODYOFSINK , EFST_MELODYOFSINK , SCB_INT ); + set_sc( WM_BEYOND_OF_WARCRY , SC_BEYONDOFWARCRY , EFST_BEYOND_OF_WARCRY, SCB_STR|SCB_CRI|SCB_MAXHP ); + set_sc( WM_UNLIMITED_HUMMING_VOICE , SC_UNLIMITEDHUMMINGVOICE , EFST_UNLIMITED_HUMMING_VOICE, SCB_NONE ); + set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , EFST_FRIGG_SONG , SCB_MAXHP ); /* Sorcerer */ - set_sc( SO_FIREWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE ); - set_sc( SO_ELECTRICWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE ); - set_sc( SO_SPELLFIST , SC_SPELLFIST , SI_SPELLFIST , SCB_NONE ); - set_sc_with_vfx( SO_DIAMONDDUST , SC_CRYSTALIZE , SI_COLD , SCB_NONE ); - set_sc( SO_CLOUD_KILL , SC_CLOUD_KILL , SI_CLOUDKILL , SCB_NONE ); - set_sc( SO_STRIKING , SC_STRIKING , SI_STRIKING , SCB_WATK|SCB_CRI ); - set_sc( SO_WARMER , SC_WARMER , SI_WARMER , SCB_NONE ); - set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , SI_VACUUM_EXTREME , SCB_NONE ); - set_sc( SO_ARRULLO , SC_DEEPSLEEP , SI_DEEPSLEEP , SCB_NONE ); - set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , SI_FIRE_INSIGNIA , SCB_MATK|SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); - set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , SI_WATER_INSIGNIA , SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); - set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , SI_WIND_INSIGNIA , SCB_WATK|SCB_ASPD|SCB_ATK_ELE|SCB_REGEN ); - set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , SI_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); + set_sc( SO_FIREWALK , SC_PROPERTYWALK , EFST_PROPERTYWALK , SCB_NONE ); + set_sc( SO_ELECTRICWALK , SC_PROPERTYWALK , EFST_PROPERTYWALK , SCB_NONE ); + set_sc( SO_SPELLFIST , SC_SPELLFIST , EFST_SPELLFIST , SCB_NONE ); + set_sc_with_vfx( SO_DIAMONDDUST , SC_CRYSTALIZE , EFST_COLD , SCB_NONE ); + set_sc( SO_CLOUD_KILL , SC_CLOUD_KILL , EFST_CLOUD_KILL, SCB_NONE ); + set_sc( SO_STRIKING , SC_STRIKING , EFST_STRIKING , SCB_WATK|SCB_CRI ); + set_sc( SO_WARMER , SC_WARMER , EFST_WARMER , SCB_NONE ); + set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , EFST_VACUUM_EXTREME , SCB_NONE ); + set_sc( SO_ARRULLO , SC_DEEPSLEEP , EFST_HANDICAPSTATE_DEEP_SLEEP, SCB_NONE ); + set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , EFST_FIRE_INSIGNIA , SCB_MATK|SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); + set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , EFST_WATER_INSIGNIA , SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); + set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , EFST_WIND_INSIGNIA , SCB_WATK|SCB_ASPD|SCB_ATK_ELE|SCB_REGEN ); + set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , EFST_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK|SCB_ATK_ELE|SCB_REGEN ); /* Genetic */ - set_sc( GN_CARTBOOST , SC_GN_CARTBOOST , SI_GN_CARTBOOST , SCB_SPEED ); - set_sc( GN_THORNS_TRAP , SC_THORNSTRAP , SI_THORNTRAP , SCB_NONE ); - set_sc_with_vfx( GN_BLOOD_SUCKER , SC_BLOODSUCKER , SI_BLOODSUCKER , SCB_NONE ); - set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER , SC_SMOKEPOWDER , SI_FIRE_EXPANSION_SMOKE_POWDER, SCB_FLEE ); - set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_TEARGAS , SI_FIRE_EXPANSION_TEAR_GAS , SCB_HIT|SCB_FLEE ); - set_sc( GN_MANDRAGORA , SC_MANDRAGORA , SI_MANDRAGORA , SCB_INT ); - set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , SI_ILLUSIONDOPING , SCB_HIT ); + set_sc( GN_CARTBOOST , SC_GN_CARTBOOST , EFST_GN_CARTBOOST , SCB_SPEED ); + set_sc( GN_THORNS_TRAP , SC_THORNSTRAP , EFST_THORNS_TRAP, SCB_NONE ); + set_sc_with_vfx( GN_BLOOD_SUCKER , SC_BLOODSUCKER , EFST_BLOOD_SUCKER, SCB_NONE ); + set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER , SC_SMOKEPOWDER , EFST_FIRE_EXPANSION_SMOKE_POWDER, SCB_FLEE ); + set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_TEARGAS , EFST_FIRE_EXPANSION_TEAR_GAS , SCB_HIT|SCB_FLEE ); + set_sc( GN_MANDRAGORA , SC_MANDRAGORA , EFST_MANDRAGORA , SCB_INT ); + set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , EFST_ILLUSIONDOPING , SCB_HIT ); /* Elemental spirits' status changes */ - set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION , SI_CIRCLE_OF_FIRE_OPTION , SCB_NONE ); - set_sc( EL_FIRE_CLOAK , SC_FIRE_CLOAK_OPTION , SI_FIRE_CLOAK_OPTION , SCB_ALL ); - set_sc( EL_WATER_SCREEN , SC_WATER_SCREEN_OPTION , SI_WATER_SCREEN_OPTION , SCB_NONE ); - set_sc( EL_WATER_DROP , SC_WATER_DROP_OPTION , SI_WATER_DROP_OPTION , SCB_ALL ); - set_sc( EL_WATER_BARRIER , SC_WATER_BARRIER , SI_WATER_BARRIER , SCB_WATK|SCB_FLEE ); - set_sc( EL_WIND_STEP , SC_WIND_STEP_OPTION , SI_WIND_STEP_OPTION , SCB_SPEED|SCB_FLEE ); - set_sc( EL_WIND_CURTAIN , SC_WIND_CURTAIN_OPTION , SI_WIND_CURTAIN_OPTION , SCB_ALL ); - set_sc( EL_ZEPHYR , SC_ZEPHYR , SI_ZEPHYR , SCB_FLEE ); - set_sc( EL_SOLID_SKIN , SC_SOLID_SKIN_OPTION , SI_SOLID_SKIN_OPTION , SCB_DEF|SCB_MAXHP ); - set_sc( EL_STONE_SHIELD , SC_STONE_SHIELD_OPTION , SI_STONE_SHIELD_OPTION , SCB_ALL ); - set_sc( EL_POWER_OF_GAIA , SC_POWER_OF_GAIA , SI_POWER_OF_GAIA , SCB_MAXHP|SCB_DEF|SCB_SPEED ); - set_sc( EL_PYROTECHNIC , SC_PYROTECHNIC_OPTION , SI_PYROTECHNIC_OPTION , SCB_WATK ); - set_sc( EL_HEATER , SC_HEATER_OPTION , SI_HEATER_OPTION , SCB_WATK ); - set_sc( EL_TROPIC , SC_TROPIC_OPTION , SI_TROPIC_OPTION , SCB_WATK ); - set_sc( EL_AQUAPLAY , SC_AQUAPLAY_OPTION , SI_AQUAPLAY_OPTION , SCB_MATK ); - set_sc( EL_COOLER , SC_COOLER_OPTION , SI_COOLER_OPTION , SCB_MATK ); - set_sc( EL_CHILLY_AIR , SC_CHILLY_AIR_OPTION , SI_CHILLY_AIR_OPTION , SCB_MATK ); - set_sc( EL_GUST , SC_GUST_OPTION , SI_GUST_OPTION , SCB_ASPD ); - set_sc( EL_BLAST , SC_BLAST_OPTION , SI_BLAST_OPTION , SCB_ASPD ); - set_sc( EL_WILD_STORM , SC_WILD_STORM_OPTION , SI_WILD_STORM_OPTION , SCB_ASPD ); - set_sc( EL_PETROLOGY , SC_PETROLOGY_OPTION , SI_PETROLOGY_OPTION , SCB_MAXHP ); - set_sc( EL_CURSED_SOIL , SC_CURSED_SOIL_OPTION , SI_CURSED_SOIL_OPTION , SCB_MAXHP ); - set_sc( EL_UPHEAVAL , SC_UPHEAVAL_OPTION , SI_UPHEAVAL_OPTION , SCB_MAXHP ); - set_sc( EL_TIDAL_WEAPON , SC_TIDAL_WEAPON_OPTION , SI_TIDAL_WEAPON_OPTION , SCB_ALL ); - set_sc( EL_ROCK_CRUSHER , SC_ROCK_CRUSHER , SI_ROCK_CRUSHER , SCB_DEF ); - set_sc( EL_ROCK_CRUSHER_ATK , SC_ROCK_CRUSHER_ATK , SI_ROCK_CRUSHER_ATK , SCB_SPEED ); + set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION , EFST_CIRCLE_OF_FIRE_OPTION , SCB_NONE ); + set_sc( EL_FIRE_CLOAK , SC_FIRE_CLOAK_OPTION , EFST_FIRE_CLOAK_OPTION , SCB_ALL ); + set_sc( EL_WATER_SCREEN , SC_WATER_SCREEN_OPTION , EFST_WATER_SCREEN_OPTION , SCB_NONE ); + set_sc( EL_WATER_DROP , SC_WATER_DROP_OPTION , EFST_WATER_DROP_OPTION , SCB_ALL ); + set_sc( EL_WATER_BARRIER , SC_WATER_BARRIER , EFST_WATER_BARRIER , SCB_WATK|SCB_FLEE ); + set_sc( EL_WIND_STEP , SC_WIND_STEP_OPTION , EFST_WIND_STEP_OPTION , SCB_SPEED|SCB_FLEE ); + set_sc( EL_WIND_CURTAIN , SC_WIND_CURTAIN_OPTION , EFST_WIND_CURTAIN_OPTION , SCB_ALL ); + set_sc( EL_ZEPHYR , SC_ZEPHYR , EFST_ZEPHYR , SCB_FLEE ); + set_sc( EL_SOLID_SKIN , SC_SOLID_SKIN_OPTION , EFST_SOLID_SKIN_OPTION , SCB_DEF|SCB_MAXHP ); + set_sc( EL_STONE_SHIELD , SC_STONE_SHIELD_OPTION , EFST_STONE_SHIELD_OPTION , SCB_ALL ); + set_sc( EL_POWER_OF_GAIA , SC_POWER_OF_GAIA , EFST_POWER_OF_GAIA , SCB_MAXHP|SCB_DEF|SCB_SPEED ); + set_sc( EL_PYROTECHNIC , SC_PYROTECHNIC_OPTION , EFST_PYROTECHNIC_OPTION , SCB_WATK ); + set_sc( EL_HEATER , SC_HEATER_OPTION , EFST_HEATER_OPTION , SCB_WATK ); + set_sc( EL_TROPIC , SC_TROPIC_OPTION , EFST_TROPIC_OPTION , SCB_WATK ); + set_sc( EL_AQUAPLAY , SC_AQUAPLAY_OPTION , EFST_AQUAPLAY_OPTION , SCB_MATK ); + set_sc( EL_COOLER , SC_COOLER_OPTION , EFST_COOLER_OPTION , SCB_MATK ); + set_sc( EL_CHILLY_AIR , SC_CHILLY_AIR_OPTION , EFST_CHILLY_AIR_OPTION , SCB_MATK ); + set_sc( EL_GUST , SC_GUST_OPTION , EFST_GUST_OPTION , SCB_ASPD ); + set_sc( EL_BLAST , SC_BLAST_OPTION , EFST_BLAST_OPTION , SCB_ASPD ); + set_sc( EL_WILD_STORM , SC_WILD_STORM_OPTION , EFST_WILD_STORM_OPTION , SCB_ASPD ); + set_sc( EL_PETROLOGY , SC_PETROLOGY_OPTION , EFST_PETROLOGY_OPTION , SCB_MAXHP ); + set_sc( EL_CURSED_SOIL , SC_CURSED_SOIL_OPTION , EFST_CURSED_SOIL_OPTION , SCB_MAXHP ); + set_sc( EL_UPHEAVAL , SC_UPHEAVAL_OPTION , EFST_UPHEAVAL_OPTION , SCB_MAXHP ); + set_sc( EL_TIDAL_WEAPON , SC_TIDAL_WEAPON_OPTION , EFST_TIDAL_WEAPON_OPTION , SCB_ALL ); + set_sc( EL_ROCK_CRUSHER , SC_ROCK_CRUSHER , EFST_ROCK_CRUSHER , SCB_DEF ); + set_sc( EL_ROCK_CRUSHER_ATK , SC_ROCK_CRUSHER_ATK , EFST_ROCK_CRUSHER_ATK , SCB_SPEED ); add_sc( KO_YAMIKUMO , SC_HIDING ); - set_sc_with_vfx( KO_JYUMONJIKIRI , SC_JYUMONJIKIRI , SI_KO_JYUMONJIKIRI , SCB_NONE ); + set_sc_with_vfx( KO_JYUMONJIKIRI , SC_JYUMONJIKIRI , EFST_KO_JYUMONJIKIRI , SCB_NONE ); add_sc( KO_MAKIBISHI , SC_STUN ); - set_sc( KO_MEIKYOUSISUI , SC_MEIKYOUSISUI , SI_MEIKYOUSISUI , SCB_NONE ); - set_sc( KO_KYOUGAKU , SC_KYOUGAKU , SI_KYOUGAKU , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc( KO_MEIKYOUSISUI , SC_MEIKYOUSISUI , EFST_MEIKYOUSISUI , SCB_NONE ); + set_sc( KO_KYOUGAKU , SC_KYOUGAKU , EFST_KYOUGAKU , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); add_sc( KO_JYUSATSU , SC_CURSE ); - set_sc( KO_ZENKAI , SC_ZENKAI , SI_ZENKAI , SCB_NONE ); - set_sc( KO_IZAYOI , SC_IZAYOI , SI_IZAYOI , SCB_MATK ); - set_sc( KG_KYOMU , SC_KYOMU , SI_KYOMU , SCB_NONE ); - set_sc( KG_KAGEMUSYA , SC_KAGEMUSYA , SI_KAGEMUSYA , SCB_NONE ); - set_sc( KG_KAGEHUMI , SC_KAGEHUMI , SI_KG_KAGEHUMI , SCB_NONE ); - set_sc( OB_ZANGETSU , SC_ZANGETSU , SI_ZANGETSU , SCB_MATK|SCB_BATK ); - set_sc_with_vfx( OB_AKAITSUKI , SC_AKAITSUKI , SI_AKAITSUKI , SCB_NONE ); - set_sc( OB_OBOROGENSOU , SC_GENSOU , SI_GENSOU , SCB_NONE ); + set_sc( KO_ZENKAI , SC_ZENKAI , EFST_ZENKAI , SCB_NONE ); + set_sc( KO_IZAYOI , SC_IZAYOI , EFST_IZAYOI , SCB_MATK ); + set_sc( KG_KYOMU , SC_KYOMU , EFST_KYOMU , SCB_NONE ); + set_sc( KG_KAGEMUSYA , SC_KAGEMUSYA , EFST_KAGEMUSYA , SCB_NONE ); + set_sc( KG_KAGEHUMI , SC_KAGEHUMI , EFST_KG_KAGEHUMI , SCB_NONE ); + set_sc( OB_ZANGETSU , SC_ZANGETSU , EFST_ZANGETSU , SCB_MATK|SCB_BATK ); + set_sc_with_vfx( OB_AKAITSUKI , SC_AKAITSUKI , EFST_AKAITSUKI , SCB_NONE ); + set_sc( OB_OBOROGENSOU , SC_GENSOU , EFST_GENSOU , SCB_NONE ); - set_sc( ALL_FULL_THROTTLE , SC_FULL_THROTTLE , SI_FULL_THROTTLE , SCB_SPEED|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc( ALL_FULL_THROTTLE , SC_FULL_THROTTLE , EFST_FULL_THROTTLE , SCB_SPEED|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); /* Rebellion */ add_sc( RL_MASS_SPIRAL , SC_BLEEDING ); add_sc( RL_HAMMER_OF_GOD , SC_STUN ); - set_sc( RL_H_MINE , SC_H_MINE , SI_H_MINE , SCB_NONE); - set_sc( RL_B_TRAP , SC_B_TRAP , SI_B_TRAP , SCB_SPEED ); - set_sc( RL_E_CHAIN , SC_E_CHAIN , SI_E_CHAIN , SCB_NONE ); - set_sc( RL_P_ALTER , SC_P_ALTER , SI_P_ALTER , SCB_NONE ); - set_sc( RL_FALLEN_ANGEL , SC_FALLEN_ANGEL, SI_BLANK, SCB_NONE ); - set_sc( RL_SLUGSHOT , SC_STUN , SI_SLUGSHOT , SCB_NONE ); - set_sc( RL_HEAT_BARREL , SC_HEAT_BARREL , SI_HEAT_BARREL , SCB_HIT|SCB_ASPD ); - set_sc_with_vfx( RL_C_MARKER , SC_C_MARKER , SI_C_MARKER , SCB_FLEE ); - set_sc_with_vfx( RL_AM_BLAST , SC_ANTI_M_BLAST , SI_ANTI_M_BLAST , SCB_NONE ); + set_sc( RL_H_MINE , SC_H_MINE , EFST_H_MINE , SCB_NONE); + set_sc( RL_B_TRAP , SC_B_TRAP , EFST_B_TRAP , SCB_SPEED ); + set_sc( RL_E_CHAIN , SC_E_CHAIN , EFST_E_CHAIN , SCB_NONE ); + set_sc( RL_P_ALTER , SC_P_ALTER , EFST_P_ALTER , SCB_NONE ); + set_sc( RL_FALLEN_ANGEL , SC_FALLEN_ANGEL, EFST_BLANK, SCB_NONE ); + set_sc( RL_SLUGSHOT , SC_STUN , EFST_SLUGSHOT , SCB_NONE ); + set_sc( RL_HEAT_BARREL , SC_HEAT_BARREL , EFST_HEAT_BARREL , SCB_HIT|SCB_ASPD ); + set_sc_with_vfx( RL_C_MARKER , SC_C_MARKER , EFST_C_MARKER , SCB_FLEE ); + set_sc_with_vfx( RL_AM_BLAST , SC_ANTI_M_BLAST , EFST_ANTI_M_BLAST , SCB_NONE ); // New Mounts - set_sc_with_vfx_noskill( SC_ALL_RIDING , SI_ALL_RIDING , SCB_SPEED ); + set_sc_with_vfx_noskill( SC_ALL_RIDING , EFST_ALL_RIDING , SCB_SPEED ); // Costumes - set_sc_with_vfx_noskill( SC_MOONSTAR , SI_MOONSTAR , SCB_NONE ); - set_sc_with_vfx_noskill( SC_SUPER_STAR , SI_SUPER_STAR , SCB_NONE ); - set_sc_with_vfx_noskill( SC_STRANGELIGHTS , SI_STRANGELIGHTS , SCB_NONE ); - set_sc_with_vfx_noskill( SC_DECORATION_OF_MUSIC , SI_DECORATION_OF_MUSIC , SCB_NONE ); - set_sc_with_vfx_noskill( SC_LJOSALFAR , SI_LJOSALFAR , SCB_NONE); - set_sc_with_vfx_noskill( SC_MERMAID_LONGING , SI_MERMAID_LONGING , SCB_NONE); - set_sc_with_vfx_noskill( SC_HAT_EFFECT , SI_HAT_EFFECT , SCB_NONE); - set_sc_with_vfx_noskill( SC_FLOWERSMOKE , SI_FLOWERSMOKE , SCB_NONE); - set_sc_with_vfx_noskill( SC_FSTONE , SI_FSTONE , SCB_NONE); - set_sc_with_vfx_noskill( SC_HAPPINESS_STAR , SI_HAPPINESS_STAR , SCB_NONE); - set_sc_with_vfx_noskill( SC_MAPLE_FALLS , SI_MAPLE_FALLS , SCB_NONE); - set_sc_with_vfx_noskill( SC_TIME_ACCESSORY , SI_TIME_ACCESSORY , SCB_NONE); - set_sc_with_vfx_noskill( SC_MAGICAL_FEATHER , SI_MAGICAL_FEATHER , SCB_NONE); + set_sc_with_vfx_noskill( SC_MOONSTAR , EFST_MOONSTAR , SCB_NONE ); + set_sc_with_vfx_noskill( SC_SUPER_STAR , EFST_SUPER_STAR , SCB_NONE ); + set_sc_with_vfx_noskill( SC_STRANGELIGHTS , EFST_STRANGELIGHTS , SCB_NONE ); + set_sc_with_vfx_noskill( SC_DECORATION_OF_MUSIC , EFST_DECORATION_OF_MUSIC , SCB_NONE ); + set_sc_with_vfx_noskill( SC_LJOSALFAR , EFST_LJOSALFAR , SCB_NONE); + set_sc_with_vfx_noskill( SC_MERMAID_LONGING , EFST_MERMAID_LONGING , SCB_NONE); + set_sc_with_vfx_noskill( SC_HAT_EFFECT , EFST_HAT_EFFECT , SCB_NONE); + set_sc_with_vfx_noskill( SC_FLOWERSMOKE , EFST_FLOWERSMOKE , SCB_NONE); + set_sc_with_vfx_noskill( SC_FSTONE , EFST_FSTONE , SCB_NONE); + set_sc_with_vfx_noskill( SC_HAPPINESS_STAR , EFST_HAPPINESS_STAR , SCB_NONE); + set_sc_with_vfx_noskill( SC_MAPLE_FALLS , EFST_MAPLE_FALLS , SCB_NONE); + set_sc_with_vfx_noskill( SC_TIME_ACCESSORY , EFST_TIME_ACCESSORY , SCB_NONE); + set_sc_with_vfx_noskill( SC_MAGICAL_FEATHER , EFST_MAGICAL_FEATHER , SCB_NONE); /* Summoner */ - set_sc( SU_HIDE , SC_SUHIDE , SI_SUHIDE , SCB_NONE ); + set_sc( SU_HIDE , SC_SUHIDE , EFST_SUHIDE , SCB_NONE ); add_sc( SU_SCRATCH , SC_BLEEDING ); - set_sc( SU_STOOP , SC_SU_STOOP , SI_SU_STOOP , SCB_NONE ); + set_sc( SU_STOOP , SC_SU_STOOP , EFST_SU_STOOP , SCB_NONE ); add_sc( SU_SV_STEMSPEAR , SC_BLEEDING ); - set_sc( SU_CN_POWDERING , SC_CATNIPPOWDER , SI_CATNIPPOWDER , SCB_WATK|SCB_MATK|SCB_SPEED|SCB_REGEN ); + set_sc( SU_CN_POWDERING , SC_CATNIPPOWDER , EFST_CATNIPPOWDER , SCB_WATK|SCB_MATK|SCB_SPEED|SCB_REGEN ); add_sc( SU_CN_METEOR , SC_CURSE ); - set_sc_with_vfx( SU_SV_ROOTTWIST, SC_SV_ROOTTWIST , SI_SV_ROOTTWIST , SCB_NONE ); - set_sc( SU_SCAROFTAROU , SC_BITESCAR , SI_BITESCAR , SCB_NONE ); - set_sc( SU_ARCLOUSEDASH , SC_ARCLOUSEDASH , SI_ARCLOUSEDASH , SCB_AGI|SCB_SPEED ); + set_sc_with_vfx( SU_SV_ROOTTWIST, SC_SV_ROOTTWIST , EFST_SV_ROOTTWIST , SCB_NONE ); + set_sc( SU_SCAROFTAROU , SC_BITESCAR , EFST_BITESCAR , SCB_NONE ); + set_sc( SU_ARCLOUSEDASH , SC_ARCLOUSEDASH , EFST_ARCLOUSEDASH , SCB_AGI|SCB_SPEED ); add_sc( SU_LUNATICCARROTBEAT , SC_STUN ); - set_sc( SU_TUNAPARTY , SC_TUNAPARTY , SI_TUNAPARTY , SCB_NONE ); - set_sc( SU_BUNCHOFSHRIMP , SC_SHRIMP , SI_SHRIMP , SCB_BATK|SCB_MATK ); - set_sc( SU_FRESHSHRIMP , SC_FRESHSHRIMP , SI_FRESHSHRIMP , SCB_NONE ); - set_sc( SU_HISS , SC_HISS , SI_HISS , SCB_FLEE2 ); - set_sc( SU_NYANGGRASS , SC_NYANGGRASS , SI_NYANGGRASS , SCB_DEF|SCB_MDEF ); - set_sc( SU_GROOMING , SC_GROOMING , SI_GROOMING , SCB_FLEE ); + set_sc( SU_TUNAPARTY , SC_TUNAPARTY , EFST_TUNAPARTY , SCB_NONE ); + set_sc( SU_BUNCHOFSHRIMP , SC_SHRIMP , EFST_SHRIMP , SCB_BATK|SCB_MATK ); + set_sc( SU_FRESHSHRIMP , SC_FRESHSHRIMP , EFST_FRESHSHRIMP , SCB_NONE ); + set_sc( SU_HISS , SC_HISS , EFST_HISS , SCB_FLEE2 ); + set_sc( SU_NYANGGRASS , SC_NYANGGRASS , EFST_NYANGGRASS , SCB_DEF|SCB_MDEF ); + set_sc( SU_GROOMING , SC_GROOMING , EFST_GROOMING , SCB_FLEE ); add_sc( SU_PURRING , SC_GROOMING ); add_sc( SU_SHRIMPARTY , SC_FRESHSHRIMP ); add_sc( SU_MEOWMEOW , SC_CHATTERING ); - set_sc( SU_CHATTERING , SC_CHATTERING , SI_CHATTERING , SCB_WATK|SCB_MATK ); + set_sc( SU_CHATTERING , SC_CHATTERING , EFST_CHATTERING , SCB_WATK|SCB_MATK ); - set_sc( WE_CHEERUP , SC_CHEERUP , SI_CHEERUP , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); + set_sc( WE_CHEERUP , SC_CHEERUP , EFST_CHEERUP , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK ); /* Storing the target job rather than simply SC_SPIRIT simplifies code later on */ SkillStatusChangeTable[skill_get_index(SL_ALCHEMIST)] = (sc_type)MAPID_ALCHEMIST, @@ -913,245 +915,256 @@ void initChangeTables(void) SkillStatusChangeTable[skill_get_index(SL_SOULLINKER)] = (sc_type)MAPID_SOUL_LINKER, /* Status that don't have a skill associated */ - StatusIconChangeTable[SC_WEIGHT50] = SI_WEIGHT50; - StatusIconChangeTable[SC_WEIGHT90] = SI_WEIGHT90; - StatusIconChangeTable[SC_ASPDPOTION0] = SI_ASPDPOTION0; - StatusIconChangeTable[SC_ASPDPOTION1] = SI_ASPDPOTION1; - StatusIconChangeTable[SC_ASPDPOTION2] = SI_ASPDPOTION2; - StatusIconChangeTable[SC_ASPDPOTION3] = SI_ASPDPOTIONINFINITY; - StatusIconChangeTable[SC_SPEEDUP0] = SI_MOVHASTE_HORSE; - StatusIconChangeTable[SC_SPEEDUP1] = SI_SPEEDPOTION1; - StatusIconChangeTable[SC_CHASEWALK2] = SI_CHASEWALK2; - StatusIconChangeTable[SC_MIRACLE] = SI_SPIRIT; - StatusIconChangeTable[SC_INTRAVISION] = SI_INTRAVISION; - StatusIconChangeTable[SC_STRFOOD] = SI_FOODSTR; - StatusIconChangeTable[SC_AGIFOOD] = SI_FOODAGI; - StatusIconChangeTable[SC_VITFOOD] = SI_FOODVIT; - StatusIconChangeTable[SC_INTFOOD] = SI_FOODINT; - StatusIconChangeTable[SC_DEXFOOD] = SI_FOODDEX; - StatusIconChangeTable[SC_LUKFOOD] = SI_FOODLUK; - StatusIconChangeTable[SC_FLEEFOOD] = SI_FOODFLEE; - StatusIconChangeTable[SC_HITFOOD] = SI_FOODHIT; - StatusIconChangeTable[SC_CRIFOOD] = SI_FOODCRI; - StatusIconChangeTable[SC_MANU_ATK] = SI_MANU_ATK; - StatusIconChangeTable[SC_MANU_DEF] = SI_MANU_DEF; - StatusIconChangeTable[SC_SPL_ATK] = SI_SPL_ATK; - StatusIconChangeTable[SC_SPL_DEF] = SI_SPL_DEF; - StatusIconChangeTable[SC_MANU_MATK] = SI_MANU_MATK; - StatusIconChangeTable[SC_SPL_MATK] = SI_SPL_MATK; - StatusIconChangeTable[SC_ATKPOTION] = SI_PLUSATTACKPOWER; - StatusIconChangeTable[SC_MATKPOTION] = SI_PLUSMAGICPOWER; + StatusIconChangeTable[SC_WEIGHT50] = EFST_WEIGHTOVER50; + StatusIconChangeTable[SC_WEIGHT90] = EFST_WEIGHTOVER90; + StatusIconChangeTable[SC_ASPDPOTION0] = EFST_ATTHASTE_POTION1; + StatusIconChangeTable[SC_ASPDPOTION1] = EFST_ATTHASTE_POTION2; + StatusIconChangeTable[SC_ASPDPOTION2] = EFST_ATTHASTE_POTION3; + StatusIconChangeTable[SC_ASPDPOTION3] = EFST_ATTHASTE_INFINITY; + StatusIconChangeTable[SC_SPEEDUP0] = EFST_MOVHASTE_HORSE; + StatusIconChangeTable[SC_SPEEDUP1] = EFST_MOVHASTE_POTION; + StatusIconChangeTable[SC_CHASEWALK2] = EFST_CHASEWALK2; + StatusIconChangeTable[SC_MIRACLE] = EFST_SOULLINK; + StatusIconChangeTable[SC_INTRAVISION] = EFST_CLAIRVOYANCE; + StatusIconChangeTable[SC_STRFOOD] = EFST_FOOD_STR; + StatusIconChangeTable[SC_AGIFOOD] = EFST_FOOD_AGI; + StatusIconChangeTable[SC_VITFOOD] = EFST_FOOD_VIT; + StatusIconChangeTable[SC_INTFOOD] = EFST_FOOD_INT; + StatusIconChangeTable[SC_DEXFOOD] = EFST_FOOD_DEX; + StatusIconChangeTable[SC_LUKFOOD] = EFST_FOOD_LUK; + StatusIconChangeTable[SC_FLEEFOOD] = EFST_FOOD_BASICAVOIDANCE; + StatusIconChangeTable[SC_HITFOOD] = EFST_FOOD_BASICHIT; + StatusIconChangeTable[SC_CRIFOOD] = EFST_FOOD_CRITICALSUCCESSVALUE; + StatusIconChangeTable[SC_MANU_ATK] = EFST_MANU_ATK; + StatusIconChangeTable[SC_MANU_DEF] = EFST_MANU_DEF; + StatusIconChangeTable[SC_SPL_ATK] = EFST_SPL_ATK; + StatusIconChangeTable[SC_SPL_DEF] = EFST_SPL_DEF; + StatusIconChangeTable[SC_MANU_MATK] = EFST_MANU_MATK; + StatusIconChangeTable[SC_SPL_MATK] = EFST_SPL_MATK; + StatusIconChangeTable[SC_ATKPOTION] = EFST_PLUSATTACKPOWER; + StatusIconChangeTable[SC_MATKPOTION] = EFST_PLUSMAGICPOWER; /* Cash Items */ - StatusIconChangeTable[SC_FOOD_STR_CASH] = SI_FOOD_STR_CASH; - StatusIconChangeTable[SC_FOOD_AGI_CASH] = SI_FOOD_AGI_CASH; - StatusIconChangeTable[SC_FOOD_VIT_CASH] = SI_FOOD_VIT_CASH; - StatusIconChangeTable[SC_FOOD_DEX_CASH] = SI_FOOD_DEX_CASH; - StatusIconChangeTable[SC_FOOD_INT_CASH] = SI_FOOD_INT_CASH; - StatusIconChangeTable[SC_FOOD_LUK_CASH] = SI_FOOD_LUK_CASH; - StatusIconChangeTable[SC_EXPBOOST] = SI_EXPBOOST; - StatusIconChangeTable[SC_ITEMBOOST] = SI_ITEMBOOST; - StatusIconChangeTable[SC_JEXPBOOST] = SI_CASH_PLUSONLYJOBEXP; - StatusIconChangeTable[SC_LIFEINSURANCE] = SI_LIFEINSURANCE; - StatusIconChangeTable[SC_BOSSMAPINFO] = SI_BOSSMAPINFO; - StatusIconChangeTable[SC_DEF_RATE] = SI_DEF_RATE; - StatusIconChangeTable[SC_MDEF_RATE] = SI_MDEF_RATE; - StatusIconChangeTable[SC_INCCRI] = SI_INCCRI; - StatusIconChangeTable[SC_INCFLEE2] = SI_PLUSAVOIDVALUE; - StatusIconChangeTable[SC_INCHEALRATE] = SI_INCHEALRATE; - StatusIconChangeTable[SC_S_LIFEPOTION] = SI_S_LIFEPOTION; - StatusIconChangeTable[SC_L_LIFEPOTION] = SI_L_LIFEPOTION; - StatusIconChangeTable[SC_SPCOST_RATE] = SI_ATKER_BLOOD; - StatusIconChangeTable[SC_COMMONSC_RESIST] = SI_TARGET_BLOOD; - StatusIconChangeTable[SC_ATTHASTE_CASH] = SI_ATTHASTE_CASH; + StatusIconChangeTable[SC_FOOD_STR_CASH] = EFST_FOOD_STR_CASH; + StatusIconChangeTable[SC_FOOD_AGI_CASH] = EFST_FOOD_AGI_CASH; + StatusIconChangeTable[SC_FOOD_VIT_CASH] = EFST_FOOD_VIT_CASH; + StatusIconChangeTable[SC_FOOD_DEX_CASH] = EFST_FOOD_DEX_CASH; + StatusIconChangeTable[SC_FOOD_INT_CASH] = EFST_FOOD_INT_CASH; + StatusIconChangeTable[SC_FOOD_LUK_CASH] = EFST_FOOD_LUK_CASH; + StatusIconChangeTable[SC_EXPBOOST] = EFST_CASH_PLUSEXP; + StatusIconChangeTable[SC_ITEMBOOST] = EFST_CASH_RECEIVEITEM; + StatusIconChangeTable[SC_JEXPBOOST] = EFST_CASH_PLUSONLYJOBEXP; + StatusIconChangeTable[SC_LIFEINSURANCE] = EFST_CASH_DEATHPENALTY; + StatusIconChangeTable[SC_BOSSMAPINFO] = EFST_CASH_BOSS_ALARM; + StatusIconChangeTable[SC_DEF_RATE] = EFST_PROTECT_DEF; + StatusIconChangeTable[SC_MDEF_RATE] = EFST_PROTECT_MDEF; + StatusIconChangeTable[SC_INCCRI] = EFST_CRITICALPERCENT; + StatusIconChangeTable[SC_INCFLEE2] = EFST_PLUSAVOIDVALUE; + StatusIconChangeTable[SC_INCHEALRATE] = EFST_HEALPLUS; + StatusIconChangeTable[SC_S_LIFEPOTION] = EFST_S_LIFEPOTION; + StatusIconChangeTable[SC_L_LIFEPOTION] = EFST_L_LIFEPOTION; + StatusIconChangeTable[SC_SPCOST_RATE] = EFST_ATKER_BLOOD; + StatusIconChangeTable[SC_COMMONSC_RESIST] = EFST_TARGET_BLOOD; + StatusIconChangeTable[SC_ATTHASTE_CASH] = EFST_ATTHASTE_CASH; /* Mercenary Bonus Effects */ - StatusIconChangeTable[SC_MERC_FLEEUP] = SI_MERC_FLEEUP; - StatusIconChangeTable[SC_MERC_ATKUP] = SI_MERC_ATKUP; - StatusIconChangeTable[SC_MERC_HPUP] = SI_MERC_HPUP; - StatusIconChangeTable[SC_MERC_SPUP] = SI_MERC_SPUP; - StatusIconChangeTable[SC_MERC_HITUP] = SI_MERC_HITUP; + StatusIconChangeTable[SC_MERC_FLEEUP] = EFST_MER_FLEE; + StatusIconChangeTable[SC_MERC_ATKUP] = EFST_MER_ATK; + StatusIconChangeTable[SC_MERC_HPUP] = EFST_MER_HP; + StatusIconChangeTable[SC_MERC_SPUP] = EFST_MER_SP; + StatusIconChangeTable[SC_MERC_HITUP] = EFST_MER_HIT; /* Warlock Spheres */ - StatusIconChangeTable[SC_SPHERE_1] = SI_SPHERE_1; - StatusIconChangeTable[SC_SPHERE_2] = SI_SPHERE_2; - StatusIconChangeTable[SC_SPHERE_3] = SI_SPHERE_3; - StatusIconChangeTable[SC_SPHERE_4] = SI_SPHERE_4; - StatusIconChangeTable[SC_SPHERE_5] = SI_SPHERE_5; + StatusIconChangeTable[SC_SPHERE_1] = EFST_SUMMON1; + StatusIconChangeTable[SC_SPHERE_2] = EFST_SUMMON2; + StatusIconChangeTable[SC_SPHERE_3] = EFST_SUMMON3; + StatusIconChangeTable[SC_SPHERE_4] = EFST_SUMMON4; + StatusIconChangeTable[SC_SPHERE_5] = EFST_SUMMON5; /* Warlock Preserved spells */ - StatusIconChangeTable[SC_SPELLBOOK1] = SI_SPELLBOOK1; - StatusIconChangeTable[SC_SPELLBOOK2] = SI_SPELLBOOK2; - StatusIconChangeTable[SC_SPELLBOOK3] = SI_SPELLBOOK3; - StatusIconChangeTable[SC_SPELLBOOK4] = SI_SPELLBOOK4; - StatusIconChangeTable[SC_SPELLBOOK5] = SI_SPELLBOOK5; - StatusIconChangeTable[SC_SPELLBOOK6] = SI_SPELLBOOK6; - StatusIconChangeTable[SC_MAXSPELLBOOK] = SI_SPELLBOOK7; - StatusIconChangeTable[SC_FREEZE_SP] = SI_FREEZE_SP; + StatusIconChangeTable[SC_SPELLBOOK1] = EFST_SPELLBOOK1; + StatusIconChangeTable[SC_SPELLBOOK2] = EFST_SPELLBOOK2; + StatusIconChangeTable[SC_SPELLBOOK3] = EFST_SPELLBOOK3; + StatusIconChangeTable[SC_SPELLBOOK4] = EFST_SPELLBOOK4; + StatusIconChangeTable[SC_SPELLBOOK5] = EFST_SPELLBOOK5; + StatusIconChangeTable[SC_SPELLBOOK6] = EFST_SPELLBOOK6; + StatusIconChangeTable[SC_MAXSPELLBOOK] = EFST_SPELLBOOK7; + StatusIconChangeTable[SC_FREEZE_SP] = EFST_FREEZE_SP; - StatusIconChangeTable[SC_NEUTRALBARRIER_MASTER] = SI_NEUTRALBARRIER_MASTER; - StatusIconChangeTable[SC_STEALTHFIELD_MASTER] = SI_STEALTHFIELD_MASTER; - StatusIconChangeTable[SC_OVERHEAT] = SI_OVERHEAT; - StatusIconChangeTable[SC_OVERHEAT_LIMITPOINT] = SI_OVERHEAT_LIMITPOINT; + StatusIconChangeTable[SC_NEUTRALBARRIER_MASTER] = EFST_NEUTRALBARRIER_MASTER; + StatusIconChangeTable[SC_STEALTHFIELD_MASTER] = EFST_STEALTHFIELD_MASTER; + StatusIconChangeTable[SC_OVERHEAT] = EFST_OVERHEAT; + StatusIconChangeTable[SC_OVERHEAT_LIMITPOINT] = EFST_OVERHEAT_LIMITPOINT; - StatusIconChangeTable[SC_HALLUCINATIONWALK_POSTDELAY] = SI_HALLUCINATIONWALK_POSTDELAY; - StatusIconChangeTable[SC_TOXIN] = SI_TOXIN; - StatusIconChangeTable[SC_PARALYSE] = SI_PARALYSE; - StatusIconChangeTable[SC_VENOMBLEED] = SI_VENOMBLEED; - StatusIconChangeTable[SC_MAGICMUSHROOM] = SI_MAGICMUSHROOM; - StatusIconChangeTable[SC_DEATHHURT] = SI_DEATHHURT; - StatusIconChangeTable[SC_PYREXIA] = SI_PYREXIA; - StatusIconChangeTable[SC_OBLIVIONCURSE] = SI_OBLIVIONCURSE; - StatusIconChangeTable[SC_LEECHESEND] = SI_LEECHESEND; - StatusIconChangeTable[SC_BANDING_DEFENCE] = SI_BANDING_DEFENCE; - StatusIconChangeTable[SC_SHIELDSPELL_DEF] = SI_SHIELDSPELL_DEF; - StatusIconChangeTable[SC_SHIELDSPELL_MDEF] = SI_SHIELDSPELL_MDEF; - StatusIconChangeTable[SC_SHIELDSPELL_REF] = SI_SHIELDSPELL_REF; - StatusIconChangeTable[SC_GLOOMYDAY_SK] = SI_GLOOMYDAY; + StatusIconChangeTable[SC_HALLUCINATIONWALK_POSTDELAY] = EFST_HALLUCINATIONWALK_POSTDELAY; + StatusIconChangeTable[SC_TOXIN] = EFST_TOXIN; + StatusIconChangeTable[SC_PARALYSE] = EFST_PARALYSE; + StatusIconChangeTable[SC_VENOMBLEED] = EFST_VENOMBLEED; + StatusIconChangeTable[SC_MAGICMUSHROOM] = EFST_MAGICMUSHROOM; + StatusIconChangeTable[SC_DEATHHURT] = EFST_DEATHHURT; + StatusIconChangeTable[SC_PYREXIA] = EFST_PYREXIA; + StatusIconChangeTable[SC_OBLIVIONCURSE] = EFST_OBLIVIONCURSE; + StatusIconChangeTable[SC_LEECHESEND] = EFST_LEECHESEND; + StatusIconChangeTable[SC_BANDING_DEFENCE] = EFST_BANDING_DEFENCE; + StatusIconChangeTable[SC_SHIELDSPELL_DEF] = EFST_SHIELDSPELL_DEF; + StatusIconChangeTable[SC_SHIELDSPELL_MDEF] = EFST_SHIELDSPELL_MDEF; + StatusIconChangeTable[SC_SHIELDSPELL_REF] = EFST_SHIELDSPELL_REF; + StatusIconChangeTable[SC_GLOOMYDAY_SK] = EFST_GLOOMYDAY; - StatusIconChangeTable[SC_CURSEDCIRCLE_ATKER] = SI_CURSEDCIRCLE_ATKER; - StatusIconChangeTable[SC__BLOODYLUST] = SI_BLOODYLUST; - StatusIconChangeTable[SC_MYSTERIOUS_POWDER] = SI_MYSTERIOUS_POWDER; - StatusIconChangeTable[SC_MELON_BOMB] = SI_MELON_BOMB; - StatusIconChangeTable[SC_BANANA_BOMB] = SI_BANANA_BOMB; - StatusIconChangeTable[SC_BANANA_BOMB_SITDOWN] = SI_BANANA_BOMB_SITDOWN_POSTDELAY; - StatusIconChangeTable[SC_PROMOTE_HEALTH_RESERCH] = SI_PROMOTE_HEALTH_RESERCH; - StatusIconChangeTable[SC_ENERGY_DRINK_RESERCH] = SI_ENERGY_DRINK_RESERCH; + StatusIconChangeTable[SC_CURSEDCIRCLE_ATKER] = EFST_CURSEDCIRCLE_ATKER; + StatusIconChangeTable[SC__BLOODYLUST] = EFST_BLOODYLUST; + StatusIconChangeTable[SC_MYSTERIOUS_POWDER] = EFST_MYSTERIOUS_POWDER; + StatusIconChangeTable[SC_MELON_BOMB] = EFST_MELON_BOMB; + StatusIconChangeTable[SC_BANANA_BOMB] = EFST_BANANA_BOMB; + StatusIconChangeTable[SC_BANANA_BOMB_SITDOWN] = EFST_BANANA_BOMB_SITDOWN_POSTDELAY; + StatusIconChangeTable[SC_PROMOTE_HEALTH_RESERCH] = EFST_PROMOTE_HEALTH_RESERCH; + StatusIconChangeTable[SC_ENERGY_DRINK_RESERCH] = EFST_ENERGY_DRINK_RESERCH; /* Genetics New Food Items Status Icons */ - StatusIconChangeTable[SC_SAVAGE_STEAK] = SI_SAVAGE_STEAK; - StatusIconChangeTable[SC_COCKTAIL_WARG_BLOOD] = SI_COCKTAIL_WARG_BLOOD; - StatusIconChangeTable[SC_MINOR_BBQ] = SI_MINOR_BBQ; - StatusIconChangeTable[SC_SIROMA_ICE_TEA] = SI_SIROMA_ICE_TEA; - StatusIconChangeTable[SC_DROCERA_HERB_STEAMED] = SI_DROCERA_HERB_STEAMED; - StatusIconChangeTable[SC_PUTTI_TAILS_NOODLES] = SI_PUTTI_TAILS_NOODLES; - StatusIconChangeTable[SC_STOMACHACHE] = SI_STOMACHACHE; - StatusIconChangeTable[SC_EXTRACT_WHITE_POTION_Z] = SI_EXTRACT_WHITE_POTION_Z; - StatusIconChangeTable[SC_VITATA_500] = SI_VITATA_500; - StatusIconChangeTable[SC_EXTRACT_SALAMINE_JUICE] = SI_EXTRACT_SALAMINE_JUICE; - StatusIconChangeTable[SC_BOOST500] = SI_BOOST500; - StatusIconChangeTable[SC_FULL_SWING_K] = SI_FULL_SWING_K; - StatusIconChangeTable[SC_MANA_PLUS] = SI_MANA_PLUS; - StatusIconChangeTable[SC_MUSTLE_M] = SI_MUSTLE_M; - StatusIconChangeTable[SC_LIFE_FORCE_F] = SI_LIFE_FORCE_F; + StatusIconChangeTable[SC_SAVAGE_STEAK] = EFST_SAVAGE_STEAK; + StatusIconChangeTable[SC_COCKTAIL_WARG_BLOOD] = EFST_COCKTAIL_WARG_BLOOD; + StatusIconChangeTable[SC_MINOR_BBQ] = EFST_MINOR_BBQ; + StatusIconChangeTable[SC_SIROMA_ICE_TEA] = EFST_SIROMA_ICE_TEA; + StatusIconChangeTable[SC_DROCERA_HERB_STEAMED] = EFST_DROCERA_HERB_STEAMED; + StatusIconChangeTable[SC_PUTTI_TAILS_NOODLES] = EFST_PUTTI_TAILS_NOODLES; + StatusIconChangeTable[SC_STOMACHACHE] = EFST_STOMACHACHE; + StatusIconChangeTable[SC_EXTRACT_WHITE_POTION_Z] = EFST_EXTRACT_WHITE_POTION_Z; + StatusIconChangeTable[SC_VITATA_500] = EFST_VITATA_500; + StatusIconChangeTable[SC_EXTRACT_SALAMINE_JUICE] = EFST_EXTRACT_SALAMINE_JUICE; + StatusIconChangeTable[SC_BOOST500] = EFST_BOOST500; + StatusIconChangeTable[SC_FULL_SWING_K] = EFST_FULL_SWING_K; + StatusIconChangeTable[SC_MANA_PLUS] = EFST_MANA_PLUS; + StatusIconChangeTable[SC_MUSTLE_M] = EFST_MUSTLE_M; + StatusIconChangeTable[SC_LIFE_FORCE_F] = EFST_LIFE_FORCE_F; /* Elemental Spirit's 'side' status change icons */ - StatusIconChangeTable[SC_CIRCLE_OF_FIRE] = SI_CIRCLE_OF_FIRE; - StatusIconChangeTable[SC_FIRE_CLOAK] = SI_FIRE_CLOAK; - StatusIconChangeTable[SC_WATER_SCREEN] = SI_WATER_SCREEN; - StatusIconChangeTable[SC_WATER_DROP] = SI_WATER_DROP; - StatusIconChangeTable[SC_WIND_STEP] = SI_WIND_STEP; - StatusIconChangeTable[SC_WIND_CURTAIN] = SI_WIND_CURTAIN; - StatusIconChangeTable[SC_SOLID_SKIN] = SI_SOLID_SKIN; - StatusIconChangeTable[SC_STONE_SHIELD] = SI_STONE_SHIELD; - StatusIconChangeTable[SC_PYROTECHNIC] = SI_PYROTECHNIC; - StatusIconChangeTable[SC_HEATER] = SI_HEATER; - StatusIconChangeTable[SC_TROPIC] = SI_TROPIC; - StatusIconChangeTable[SC_AQUAPLAY] = SI_AQUAPLAY; - StatusIconChangeTable[SC_COOLER] = SI_COOLER; - StatusIconChangeTable[SC_CHILLY_AIR] = SI_CHILLY_AIR; - StatusIconChangeTable[SC_GUST] = SI_GUST; - StatusIconChangeTable[SC_BLAST] = SI_BLAST; - StatusIconChangeTable[SC_WILD_STORM] = SI_WILD_STORM; - StatusIconChangeTable[SC_PETROLOGY] = SI_PETROLOGY; - StatusIconChangeTable[SC_CURSED_SOIL] = SI_CURSED_SOIL; - StatusIconChangeTable[SC_UPHEAVAL] = SI_UPHEAVAL; + StatusIconChangeTable[SC_CIRCLE_OF_FIRE] = EFST_CIRCLE_OF_FIRE; + StatusIconChangeTable[SC_FIRE_CLOAK] = EFST_FIRE_CLOAK; + StatusIconChangeTable[SC_WATER_SCREEN] = EFST_WATER_SCREEN; + StatusIconChangeTable[SC_WATER_DROP] = EFST_WATER_DROP; + StatusIconChangeTable[SC_WIND_STEP] = EFST_WIND_STEP; + StatusIconChangeTable[SC_WIND_CURTAIN] = EFST_WIND_CURTAIN; + StatusIconChangeTable[SC_SOLID_SKIN] = EFST_SOLID_SKIN; + StatusIconChangeTable[SC_STONE_SHIELD] = EFST_STONE_SHIELD; + StatusIconChangeTable[SC_PYROTECHNIC] = EFST_PYROTECHNIC; + StatusIconChangeTable[SC_HEATER] = EFST_HEATER; + StatusIconChangeTable[SC_TROPIC] = EFST_TROPIC; + StatusIconChangeTable[SC_AQUAPLAY] = EFST_AQUAPLAY; + StatusIconChangeTable[SC_COOLER] = EFST_COOLER; + StatusIconChangeTable[SC_CHILLY_AIR] = EFST_CHILLY_AIR; + StatusIconChangeTable[SC_GUST] = EFST_GUST; + StatusIconChangeTable[SC_BLAST] = EFST_BLAST; + StatusIconChangeTable[SC_WILD_STORM] = EFST_WILD_STORM; + StatusIconChangeTable[SC_PETROLOGY] = EFST_PETROLOGY; + StatusIconChangeTable[SC_CURSED_SOIL] = EFST_CURSED_SOIL; + StatusIconChangeTable[SC_UPHEAVAL] = EFST_UPHEAVAL; - StatusIconChangeTable[SC_REBOUND] = SI_REBOUND; - StatusIconChangeTable[SC_DEFSET] = SI_SET_NUM_DEF; - StatusIconChangeTable[SC_MDEFSET] = SI_SET_NUM_MDEF; - StatusIconChangeTable[SC_MONSTER_TRANSFORM] = SI_MONSTER_TRANSFORM; - StatusIconChangeTable[SC_ACTIVE_MONSTER_TRANSFORM] = SI_ACTIVE_MONSTER_TRANSFORM; - StatusIconChangeTable[SC_ALL_RIDING] = SI_ALL_RIDING; - StatusIconChangeTable[SC_PUSH_CART] = SI_ON_PUSH_CART; - StatusIconChangeTable[SC_MTF_ASPD] = SI_MTF_ASPD; - StatusIconChangeTable[SC_MTF_RANGEATK] = SI_MTF_RANGEATK; - StatusIconChangeTable[SC_MTF_MATK] = SI_MTF_MATK; - StatusIconChangeTable[SC_MTF_MLEATKED] = SI_MTF_MLEATKED; - StatusIconChangeTable[SC_MTF_CRIDAMAGE] = SI_MTF_CRIDAMAGE; - StatusIconChangeTable[SC_QD_SHOT_READY] = SI_E_QD_SHOT_READY; - StatusIconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1; - StatusIconChangeTable[SC_QUEST_BUFF2] = SI_QUEST_BUFF2; - StatusIconChangeTable[SC_QUEST_BUFF3] = SI_QUEST_BUFF3; - StatusIconChangeTable[SC_MTF_ASPD2] = SI_MTF_ASPD2; - StatusIconChangeTable[SC_MTF_RANGEATK2] = SI_MTF_RANGEATK2; - StatusIconChangeTable[SC_MTF_MATK2] = SI_MTF_MATK2; - StatusIconChangeTable[SC_2011RWC_SCROLL] = SI_2011RWC_SCROLL; - StatusIconChangeTable[SC_JP_EVENT04] = SI_JP_EVENT04; - StatusIconChangeTable[SC_MTF_HITFLEE] = SI_MTF_HITFLEE; - StatusIconChangeTable[SC_MTF_MHP] = SI_MTF_MHP; - StatusIconChangeTable[SC_MTF_MSP] = SI_MTF_MSP; - StatusIconChangeTable[SC_MTF_PUMPKIN] = SI_MTF_PUMPKIN; - StatusIconChangeTable[SC_NORECOVER_STATE] = SI_HANDICAPSTATE_NORECOVER; - StatusIconChangeTable[SC_GVG_GIANT] = SI_GVG_GIANT; - StatusIconChangeTable[SC_GVG_GOLEM] = SI_GVG_GOLEM; - StatusIconChangeTable[SC_GVG_STUN] = SI_GVG_STUN; - StatusIconChangeTable[SC_GVG_STONE] = SI_GVG_STONE; - StatusIconChangeTable[SC_GVG_FREEZ] = SI_GVG_FREEZ; - StatusIconChangeTable[SC_GVG_SLEEP] = SI_GVG_SLEEP; - StatusIconChangeTable[SC_GVG_CURSE] = SI_GVG_CURSE; - StatusIconChangeTable[SC_GVG_SILENCE] = SI_GVG_SILENCE; - StatusIconChangeTable[SC_GVG_BLIND] = SI_GVG_BLIND; - StatusIconChangeTable[SC_ARMOR_ELEMENT_WATER] = SI_RESIST_PROPERTY_WATER; - StatusIconChangeTable[SC_ARMOR_ELEMENT_EARTH] = SI_RESIST_PROPERTY_GROUND; - StatusIconChangeTable[SC_ARMOR_ELEMENT_FIRE] = SI_RESIST_PROPERTY_FIRE; - StatusIconChangeTable[SC_ARMOR_ELEMENT_WIND] = SI_RESIST_PROPERTY_WIND; + StatusIconChangeTable[SC_REBOUND] = EFST_REBOUND; + StatusIconChangeTable[SC_DEFSET] = EFST_SET_NUM_DEF; + StatusIconChangeTable[SC_MDEFSET] = EFST_SET_NUM_MDEF; + StatusIconChangeTable[SC_MONSTER_TRANSFORM] = EFST_MONSTER_TRANSFORM; + StatusIconChangeTable[SC_ACTIVE_MONSTER_TRANSFORM] = EFST_ACTIVE_MONSTER_TRANSFORM; + StatusIconChangeTable[SC_ALL_RIDING] = EFST_ALL_RIDING; + StatusIconChangeTable[SC_PUSH_CART] = EFST_ON_PUSH_CART; + StatusIconChangeTable[SC_MTF_ASPD] = EFST_MTF_ASPD; + StatusIconChangeTable[SC_MTF_RANGEATK] = EFST_MTF_RANGEATK; + StatusIconChangeTable[SC_MTF_MATK] = EFST_MTF_MATK; + StatusIconChangeTable[SC_MTF_MLEATKED] = EFST_MTF_MLEATKED; + StatusIconChangeTable[SC_MTF_CRIDAMAGE] = EFST_MTF_CRIDAMAGE; + StatusIconChangeTable[SC_QD_SHOT_READY] = EFST_E_QD_SHOT_READY; + StatusIconChangeTable[SC_QUEST_BUFF1] = EFST_QUEST_BUFF1; + StatusIconChangeTable[SC_QUEST_BUFF2] = EFST_QUEST_BUFF2; + StatusIconChangeTable[SC_QUEST_BUFF3] = EFST_QUEST_BUFF3; + StatusIconChangeTable[SC_MTF_ASPD2] = EFST_MTF_ASPD2; + StatusIconChangeTable[SC_MTF_RANGEATK2] = EFST_MTF_RANGEATK2; + StatusIconChangeTable[SC_MTF_MATK2] = EFST_MTF_MATK2; + StatusIconChangeTable[SC_2011RWC_SCROLL] = EFST_2011RWC_SCROLL; + StatusIconChangeTable[SC_JP_EVENT04] = EFST_JP_EVENT04; + StatusIconChangeTable[SC_MTF_HITFLEE] = EFST_MTF_HITFLEE; + StatusIconChangeTable[SC_MTF_MHP] = EFST_MTF_MHP; + StatusIconChangeTable[SC_MTF_MSP] = EFST_MTF_MSP; + StatusIconChangeTable[SC_MTF_PUMPKIN] = EFST_MTF_PUMPKIN; + StatusIconChangeTable[SC_NORECOVER_STATE] = EFST_HANDICAPSTATE_NORECOVER; + StatusIconChangeTable[SC_GVG_GIANT] = EFST_GVG_GIANT; + StatusIconChangeTable[SC_GVG_GOLEM] = EFST_GVG_GOLEM; + StatusIconChangeTable[SC_GVG_STUN] = EFST_GVG_STUN; + StatusIconChangeTable[SC_GVG_STONE] = EFST_GVG_STONE; + StatusIconChangeTable[SC_GVG_FREEZ] = EFST_GVG_FREEZ; + StatusIconChangeTable[SC_GVG_SLEEP] = EFST_GVG_SLEEP; + StatusIconChangeTable[SC_GVG_CURSE] = EFST_GVG_CURSE; + StatusIconChangeTable[SC_GVG_SILENCE] = EFST_GVG_SILENCE; + StatusIconChangeTable[SC_GVG_BLIND] = EFST_GVG_BLIND; + StatusIconChangeTable[SC_ARMOR_ELEMENT_WATER] = EFST_RESIST_PROPERTY_WATER; + StatusIconChangeTable[SC_ARMOR_ELEMENT_EARTH] = EFST_RESIST_PROPERTY_GROUND; + StatusIconChangeTable[SC_ARMOR_ELEMENT_FIRE] = EFST_RESIST_PROPERTY_FIRE; + StatusIconChangeTable[SC_ARMOR_ELEMENT_WIND] = EFST_RESIST_PROPERTY_WIND; // Costumes - StatusIconChangeTable[SC_MOONSTAR] = SI_MOONSTAR; - StatusIconChangeTable[SC_SUPER_STAR] = SI_SUPER_STAR; - StatusIconChangeTable[SC_STRANGELIGHTS] = SI_STRANGELIGHTS; - StatusIconChangeTable[SC_DECORATION_OF_MUSIC] = SI_DECORATION_OF_MUSIC; - StatusIconChangeTable[SC_LJOSALFAR] = SI_LJOSALFAR; - StatusIconChangeTable[SC_MERMAID_LONGING] = SI_MERMAID_LONGING; - StatusIconChangeTable[SC_HAT_EFFECT] = SI_HAT_EFFECT; - StatusIconChangeTable[SC_FLOWERSMOKE] = SI_FLOWERSMOKE; - StatusIconChangeTable[SC_FSTONE] = SI_FSTONE; - StatusIconChangeTable[SC_HAPPINESS_STAR] = SI_HAPPINESS_STAR; - StatusIconChangeTable[SC_MAPLE_FALLS] = SI_MAPLE_FALLS; - StatusIconChangeTable[SC_TIME_ACCESSORY] = SI_TIME_ACCESSORY; - StatusIconChangeTable[SC_MAGICAL_FEATHER] = SI_MAGICAL_FEATHER; + StatusIconChangeTable[SC_MOONSTAR] = EFST_MOONSTAR; + StatusIconChangeTable[SC_SUPER_STAR] = EFST_SUPER_STAR; + StatusIconChangeTable[SC_STRANGELIGHTS] = EFST_STRANGELIGHTS; + StatusIconChangeTable[SC_DECORATION_OF_MUSIC] = EFST_DECORATION_OF_MUSIC; + StatusIconChangeTable[SC_LJOSALFAR] = EFST_LJOSALFAR; + StatusIconChangeTable[SC_MERMAID_LONGING] = EFST_MERMAID_LONGING; + StatusIconChangeTable[SC_HAT_EFFECT] = EFST_HAT_EFFECT; + StatusIconChangeTable[SC_FLOWERSMOKE] = EFST_FLOWERSMOKE; + StatusIconChangeTable[SC_FSTONE] = EFST_FSTONE; + StatusIconChangeTable[SC_HAPPINESS_STAR] = EFST_HAPPINESS_STAR; + StatusIconChangeTable[SC_MAPLE_FALLS] = EFST_MAPLE_FALLS; + StatusIconChangeTable[SC_TIME_ACCESSORY] = EFST_TIME_ACCESSORY; + StatusIconChangeTable[SC_MAGICAL_FEATHER] = EFST_MAGICAL_FEATHER; /* Summoners status icons */ - StatusIconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE; - StatusIconChangeTable[SC_SHRIMPBLESSING] = SI_PROTECTIONOFSHRIMP; - StatusIconChangeTable[SC_DORAM_BUF_01] = SI_DORAM_BUF_01; - StatusIconChangeTable[SC_DORAM_BUF_02] = SI_DORAM_BUF_02; + StatusIconChangeTable[SC_SPRITEMABLE] = EFST_SPRITEMABLE; + StatusIconChangeTable[SC_SHRIMPBLESSING] = EFST_PROTECTIONOFSHRIMP; + StatusIconChangeTable[SC_DORAM_BUF_01] = EFST_DORAM_BUF_01; + StatusIconChangeTable[SC_DORAM_BUF_02] = EFST_DORAM_BUF_02; // Item Reuse Limits - StatusIconChangeTable[SC_REUSE_REFRESH] = SI_REUSE_REFRESH; - StatusIconChangeTable[SC_REUSE_LIMIT_A] = SI_REUSE_LIMIT_A; - StatusIconChangeTable[SC_REUSE_LIMIT_B] = SI_REUSE_LIMIT_B; - StatusIconChangeTable[SC_REUSE_LIMIT_C] = SI_REUSE_LIMIT_C; - StatusIconChangeTable[SC_REUSE_LIMIT_D] = SI_REUSE_LIMIT_D; - StatusIconChangeTable[SC_REUSE_LIMIT_E] = SI_REUSE_LIMIT_E; - StatusIconChangeTable[SC_REUSE_LIMIT_F] = SI_REUSE_LIMIT_F; - StatusIconChangeTable[SC_REUSE_LIMIT_G] = SI_REUSE_LIMIT_G; - StatusIconChangeTable[SC_REUSE_LIMIT_H] = SI_REUSE_LIMIT_H; - StatusIconChangeTable[SC_REUSE_LIMIT_MTF] = SI_REUSE_LIMIT_MTF; - StatusIconChangeTable[SC_REUSE_LIMIT_ECL] = SI_REUSE_LIMIT_ECL; - StatusIconChangeTable[SC_REUSE_LIMIT_RECALL] = SI_REUSE_LIMIT_RECALL; - StatusIconChangeTable[SC_REUSE_LIMIT_ASPD_POTION] = SI_REUSE_LIMIT_ASPD_POTION; - StatusIconChangeTable[SC_REUSE_MILLENNIUMSHIELD] = SI_REUSE_MILLENNIUMSHIELD; - StatusIconChangeTable[SC_REUSE_CRUSHSTRIKE] = SI_REUSE_CRUSHSTRIKE; - StatusIconChangeTable[SC_REUSE_STORMBLAST] = SI_REUSE_STORMBLAST; - StatusIconChangeTable[SC_ALL_RIDING_REUSE_LIMIT] = SI_ALL_RIDING_REUSE_LIMIT; + StatusIconChangeTable[SC_REUSE_REFRESH] = EFST_REUSE_REFRESH; + StatusIconChangeTable[SC_REUSE_LIMIT_A] = EFST_REUSE_LIMIT_A; + StatusIconChangeTable[SC_REUSE_LIMIT_B] = EFST_REUSE_LIMIT_B; + StatusIconChangeTable[SC_REUSE_LIMIT_C] = EFST_REUSE_LIMIT_C; + StatusIconChangeTable[SC_REUSE_LIMIT_D] = EFST_REUSE_LIMIT_D; + StatusIconChangeTable[SC_REUSE_LIMIT_E] = EFST_REUSE_LIMIT_E; + StatusIconChangeTable[SC_REUSE_LIMIT_F] = EFST_REUSE_LIMIT_F; + StatusIconChangeTable[SC_REUSE_LIMIT_G] = EFST_REUSE_LIMIT_G; + StatusIconChangeTable[SC_REUSE_LIMIT_H] = EFST_REUSE_LIMIT_H; + StatusIconChangeTable[SC_REUSE_LIMIT_MTF] = EFST_REUSE_LIMIT_MTF; + StatusIconChangeTable[SC_REUSE_LIMIT_ECL] = EFST_REUSE_LIMIT_ECL; + StatusIconChangeTable[SC_REUSE_LIMIT_RECALL] = EFST_REUSE_LIMIT_RECALL; + StatusIconChangeTable[SC_REUSE_LIMIT_ASPD_POTION] = EFST_REUSE_LIMIT_ASPD_POTION; + StatusIconChangeTable[SC_REUSE_MILLENNIUMSHIELD] = EFST_REUSE_MILLENNIUMSHIELD; + StatusIconChangeTable[SC_REUSE_CRUSHSTRIKE] = EFST_REUSE_CRUSHSTRIKE; + StatusIconChangeTable[SC_REUSE_STORMBLAST] = EFST_REUSE_STORMBLAST; + StatusIconChangeTable[SC_ALL_RIDING_REUSE_LIMIT] = EFST_ALL_RIDING_REUSE_LIMIT; // Clan System - StatusIconChangeTable[SC_CLAN_INFO] = SI_CLAN_INFO; - StatusIconChangeTable[SC_SWORDCLAN] = SI_SWORDCLAN; - StatusIconChangeTable[SC_ARCWANDCLAN] = SI_ARCWANDCLAN; - StatusIconChangeTable[SC_GOLDENMACECLAN] = SI_GOLDENMACECLAN; - StatusIconChangeTable[SC_CROSSBOWCLAN] = SI_CROSSBOWCLAN; - StatusIconChangeTable[SC_JUMPINGCLAN] = SI_JUMPINGCLAN; + StatusIconChangeTable[SC_CLAN_INFO] = EFST_CLAN_INFO; + StatusIconChangeTable[SC_SWORDCLAN] = EFST_SWORDCLAN; + StatusIconChangeTable[SC_ARCWANDCLAN] = EFST_ARCWANDCLAN; + StatusIconChangeTable[SC_GOLDENMACECLAN] = EFST_GOLDENMACECLAN; + StatusIconChangeTable[SC_CROSSBOWCLAN] = EFST_CROSSBOWCLAN; + StatusIconChangeTable[SC_JUMPINGCLAN] = EFST_JUMPINGCLAN; // Geffen Magic Tournament Buffs - StatusIconChangeTable[SC_GEFFEN_MAGIC1] = SI_GEFFEN_MAGIC1; - StatusIconChangeTable[SC_GEFFEN_MAGIC2] = SI_GEFFEN_MAGIC2; - StatusIconChangeTable[SC_GEFFEN_MAGIC3] = SI_GEFFEN_MAGIC3; + StatusIconChangeTable[SC_GEFFEN_MAGIC1] = EFST_GEFFEN_MAGIC1; + StatusIconChangeTable[SC_GEFFEN_MAGIC2] = EFST_GEFFEN_MAGIC2; + StatusIconChangeTable[SC_GEFFEN_MAGIC3] = EFST_GEFFEN_MAGIC3; // RODEX - StatusIconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT; + StatusIconChangeTable[SC_DAILYSENDMAILCNT] = EFST_DAILYSENDMAILCNT; + + StatusIconChangeTable[SC_DRESSUP] = EFST_DRESS_UP; + + // Old Glast Heim + StatusIconChangeTable[SC_GLASTHEIM_ATK] = EFST_GLASTHEIM_ATK; + StatusIconChangeTable[SC_GLASTHEIM_DEF] = EFST_GLASTHEIM_DEF; + StatusIconChangeTable[SC_GLASTHEIM_HEAL] = EFST_GLASTHEIM_HEAL; + StatusIconChangeTable[SC_GLASTHEIM_HIDDEN] = EFST_GLASTHEIM_HIDDEN; + StatusIconChangeTable[SC_GLASTHEIM_STATE] = EFST_GLASTHEIM_STATE; + StatusIconChangeTable[SC_GLASTHEIM_ITEMDEF] = EFST_GLASTHEIM_ITEMDEF; + StatusIconChangeTable[SC_GLASTHEIM_HPSP] = EFST_GLASTHEIM_HPSP; /* Other SC which are not necessarily associated to skills */ StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD; @@ -1300,6 +1313,12 @@ void initChangeTables(void) // RODEX StatusChangeFlagTable[SC_DAILYSENDMAILCNT] |= SCB_NONE; + // Old Glast Heim + StatusChangeFlagTable[SC_GLASTHEIM_ATK] |= SCB_ALL; + StatusChangeFlagTable[SC_GLASTHEIM_STATE] |= SCB_STR|SCB_AGI|SCB_VIT|SCB_DEX|SCB_INT|SCB_LUK; + StatusChangeFlagTable[SC_GLASTHEIM_ITEMDEF] |= SCB_DEF|SCB_MDEF; + StatusChangeFlagTable[SC_GLASTHEIM_HPSP] |= SCB_MAXHP|SCB_MAXSP; + // Summoner StatusChangeFlagTable[SC_SHRIMPBLESSING] |= SCB_REGEN; StatusChangeFlagTable[SC_DORAM_WALKSPEED] |= SCB_SPEED; @@ -1370,6 +1389,7 @@ void initChangeTables(void) // Clans StatusDisplayType[SC_CLAN_INFO] = BL_PC|BL_NPC; + StatusDisplayType[SC_DRESSUP] = BL_PC; /* StatusChangeState (SCS_) NOMOVE */ StatusChangeStateTable[SC_ANKLE] |= SCS_NOMOVE; @@ -1434,7 +1454,6 @@ void initChangeTables(void) StatusChangeStateTable[SC_CRYSTALIZE] |= SCS_NOCAST; StatusChangeStateTable[SC__IGNORANCE] |= SCS_NOCAST; StatusChangeStateTable[SC__MANHOLE] |= SCS_NOCAST; - StatusChangeStateTable[SC__FEINTBOMB] |= SCS_NOCAST; StatusChangeStateTable[SC_DEEPSLEEP] |= SCS_NOCAST; StatusChangeStateTable[SC_SATURDAYNIGHTFEVER] |= SCS_NOCAST; StatusChangeStateTable[SC_CURSEDCIRCLE_TARGET] |= SCS_NOCAST; @@ -2352,10 +2371,10 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat float temp_aspd = 0; amotion = job_info[classidx].aspd_base[sd->weapontype1]; // Single weapon - if (sd->status.weapon > MAX_WEAPON_TYPE) - amotion += job_info[classidx].aspd_base[sd->weapontype2] / 4; // Dual-wield if (sd->status.shield) amotion += job_info[classidx].aspd_base[MAX_WEAPON_TYPE]; + else if (sd->weapontype2 && sd->equip_index[EQI_HAND_R] != sd->equip_index[EQI_HAND_L]) + amotion += job_info[classidx].aspd_base[sd->weapontype2] / 4; // Dual-wield switch(sd->status.weapon) { case W_BOW: @@ -2787,22 +2806,21 @@ int status_calc_mob_(struct mob_data* md, enum e_status_calc_opt opt) ShowError("status_calc_mob: No castle set at map %s\n", map[md->bl.m].name); else if(gc->castle_id < 24 || md->mob_id == MOBID_EMPERIUM) { #ifdef RENEWAL - status->max_hp += 50 * gc->defense; - status->max_sp += 70 * gc->defense; + status->max_hp += 50 * (gc->defense / 5); #else status->max_hp += 1000 * gc->defense; - status->max_sp += 200 * gc->defense; #endif status->hp = status->max_hp; - status->sp = status->max_sp; status->def += (gc->defense+2)/3; status->mdef += (gc->defense+2)/3; } if(md->mob_id != MOBID_EMPERIUM) { - status->batk += status->batk * 10*md->guardian_data->guardup_lv/100; - status->rhw.atk += status->rhw.atk * 10*md->guardian_data->guardup_lv/100; - status->rhw.atk2 += status->rhw.atk2 * 10*md->guardian_data->guardup_lv/100; - status->aspd_rate -= 100*md->guardian_data->guardup_lv; + status->max_hp += 1000 * gc->defense; + status->hp = status->max_hp; + status->batk += 2 * md->guardian_data->guardup_lv + 8; + status->rhw.atk += 2 * md->guardian_data->guardup_lv + 8; + status->rhw.atk2 += 2 * md->guardian_data->guardup_lv + 8; + status->aspd_rate -= 2 * md->guardian_data->guardup_lv + 3; } } @@ -2882,7 +2900,7 @@ void status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt) memcpy(&pd->status, &pd->db->status, sizeof(struct status_data)); pd->status.mode = MD_CANMOVE; // Pets discard all modes, except walking pd->status.class_ = CLASS_NORMAL; - pd->status.speed = pd->petDB->speed; + pd->status.speed = pd->get_pet_db()->speed; if(battle_config.pet_attack_support || battle_config.pet_damage_support) { // Attack support requires the pet to be able to attack @@ -3000,6 +3018,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) { bonus += 30; if(sc->data[SC_CROSSBOWCLAN]) bonus += 30; + if(sc->data[SC_GLASTHEIM_HPSP]) + bonus += sc->data[SC_GLASTHEIM_HPSP]->val1; } } else if (type == STATUS_BONUS_RATE) { struct status_change *sc = status_get_sc(bl); @@ -3121,6 +3141,8 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) { bonus += 10; if(sc->data[SC_CROSSBOWCLAN]) bonus += 10; + if(sc->data[SC_GLASTHEIM_HPSP]) + bonus += sc->data[SC_GLASTHEIM_HPSP]->val2; } } else if (type == STATUS_BONUS_RATE) { struct status_change *sc = status_get_sc(bl); @@ -3392,7 +3414,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) memset (&sd->left_weapon.overrefine, 0, sizeof(sd->left_weapon) - sizeof(sd->left_weapon.atkmods)); if (sd->special_state.intravision && !sd->sc.data[SC_INTRAVISION]) // Clear intravision as long as nothing else is using it - clif_status_load(&sd->bl, SI_INTRAVISION, 0); + clif_status_load(&sd->bl, EFST_CLAIRVOYANCE, 0); memset(&sd->special_state,0,sizeof(sd->special_state)); @@ -3413,7 +3435,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) // Give them all modes except these (useful for clones) base_status->mode = static_cast<e_mode>(MD_MASK&~(MD_STATUS_IMMUNE|MD_IGNOREMELEE|MD_IGNOREMAGIC|MD_IGNORERANGED|MD_IGNOREMISC|MD_DETECTOR|MD_ANGRY|MD_TARGETWEAK)); - base_status->size = (sd->class_&JOBL_BABY || (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) ? SZ_SMALL : SZ_MEDIUM; + base_status->size = (sd->class_&JOBL_BABY || ((battle_config.summoner_trait&2) && (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER)) ? SZ_SMALL : SZ_MEDIUM; if (battle_config.character_size && pc_isriding(sd)) { // [Lupus] if (sd->class_&JOBL_BABY) { if (battle_config.character_size&SZ_BIG) @@ -3424,7 +3446,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) } base_status->aspd_rate = 1000; base_status->ele_lv = 1; - base_status->race = ((sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) ? RC_BRUTE : RC_PLAYER; + base_status->race = ((battle_config.summoner_trait&1) && (sd->class_&MAPID_BASEMASK) == MAPID_SUMMONER) ? RC_BRUTE : RC_PLAYER; base_status->class_ = CLASS_NORMAL; // Zero up structures... @@ -3463,6 +3485,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) + sizeof(sd->norecover_state_race) + sizeof(sd->hp_vanish_race) + sizeof(sd->sp_vanish_race) + + sizeof(sd->skilldelay) ); memset (&sd->bonus, 0, sizeof(sd->bonus)); @@ -3724,9 +3747,11 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) if( sd->pd ) { // Pet Bonus struct pet_data *pd = sd->pd; - if( pd && pd->petDB && pd->petDB->pet_loyal_script && pd->pet.intimate >= battle_config.pet_equip_min_friendly ) - run_script(pd->petDB->pet_loyal_script,0,sd->bl.id,0); - if( pd && pd->pet.intimate > 0 && (!battle_config.pet_equip_required || pd->pet.equip > 0) && pd->state.skillbonus == 1 && pd->bonus ) + s_pet_db *pet_db_ptr = pd->get_pet_db(); + + if( pet_db_ptr != nullptr && pet_db_ptr->pet_loyal_script && pd->pet.intimate >= battle_config.pet_equip_min_friendly ) + run_script(pd->get_pet_db()->pet_loyal_script,0,sd->bl.id,0); + if( pd->pet.intimate > 0 && (!battle_config.pet_equip_required || pd->pet.equip > 0) && pd->state.skillbonus == 1 && pd->bonus ) pc_bonus(sd,pd->bonus->type, pd->bonus->val); } @@ -3741,19 +3766,19 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) sd->bonus.splash_range += sd->bonus.splash_add_range; // Damage modifiers from weapon type - sd->right_weapon.atkmods[0] = atkmods[0][sd->weapontype1]; - sd->right_weapon.atkmods[1] = atkmods[1][sd->weapontype1]; - sd->right_weapon.atkmods[2] = atkmods[2][sd->weapontype1]; - sd->left_weapon.atkmods[0] = atkmods[0][sd->weapontype2]; - sd->left_weapon.atkmods[1] = atkmods[1][sd->weapontype2]; - sd->left_weapon.atkmods[2] = atkmods[2][sd->weapontype2]; + sd->right_weapon.atkmods[SZ_SMALL] = atkmods[SZ_SMALL][sd->weapontype1]; + sd->right_weapon.atkmods[SZ_MEDIUM] = atkmods[SZ_MEDIUM][sd->weapontype1]; + sd->right_weapon.atkmods[SZ_BIG] = atkmods[SZ_BIG][sd->weapontype1]; + sd->left_weapon.atkmods[SZ_SMALL] = atkmods[SZ_SMALL][sd->weapontype2]; + sd->left_weapon.atkmods[SZ_MEDIUM] = atkmods[SZ_MEDIUM][sd->weapontype2]; + sd->left_weapon.atkmods[SZ_BIG] = atkmods[SZ_BIG][sd->weapontype2]; if((pc_isriding(sd) || pc_isridingdragon(sd)) && (sd->status.weapon==W_1HSPEAR || sd->status.weapon==W_2HSPEAR)) { // When Riding with spear, damage modifier to mid-class becomes // same as versus large size. - sd->right_weapon.atkmods[1] = sd->right_weapon.atkmods[2]; - sd->left_weapon.atkmods[1] = sd->left_weapon.atkmods[2]; + sd->right_weapon.atkmods[SZ_MEDIUM] = sd->right_weapon.atkmods[SZ_BIG]; + sd->left_weapon.atkmods[SZ_MEDIUM] = sd->left_weapon.atkmods[SZ_BIG]; } // ----- STATS CALCULATION ----- @@ -3831,7 +3856,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) if(battle_config.hp_rate != 100) base_status->max_hp = (unsigned int)(battle_config.hp_rate * (base_status->max_hp/100.)); - base_status->max_hp = cap_value(base_status->max_hp,1,(unsigned int)battle_config.max_hp); + if (sd->status.base_level < 100) + base_status->max_hp = cap_value(base_status->max_hp,1,(unsigned int)battle_config.max_hp_lv99); + else if (sd->status.base_level < 151) + base_status->max_hp = cap_value(base_status->max_hp,1,(unsigned int)battle_config.max_hp_lv150); + else + base_status->max_hp = cap_value(base_status->max_hp,1,(unsigned int)battle_config.max_hp); // ----- SP MAX CALCULATION ----- base_status->max_sp = sd->status.max_sp = status_calc_maxhpsp_pc(sd,base_status->int_,false); @@ -4062,7 +4092,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) sd->subele[ELE_HOLY] += skill*5; if((skill=pc_checkskill(sd,BS_SKINTEMPER))>0) { sd->subele[ELE_NEUTRAL] += skill; - sd->subele[ELE_FIRE] += skill*4; + sd->subele[ELE_FIRE] += skill*5; } if((skill=pc_checkskill(sd,SA_DRAGONOLOGY))>0) { #ifdef RENEWAL @@ -4175,6 +4205,10 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val3; if (sc->data[SC_MTF_CRIDAMAGE]) sd->bonus.crit_atk_rate += sc->data[SC_MTF_CRIDAMAGE]->val1; + if (sc->data[SC_GLASTHEIM_ATK]) { + sd->ignore_mdef_by_race[RC_UNDEAD] += sc->data[SC_GLASTHEIM_ATK]->val1; + sd->ignore_mdef_by_race[RC_DEMON] += sc->data[SC_GLASTHEIM_ATK]->val1; + } } status_cpy(&sd->battle_status, base_status); @@ -4989,7 +5023,12 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) if(battle_config.hp_rate != 100) status->max_hp = (unsigned int)(battle_config.hp_rate * (status->max_hp/100.)); - status->max_hp = umin(status->max_hp,(unsigned int)battle_config.max_hp); + if (sd->status.base_level < 100) + status->max_hp = umin(status->max_hp,(unsigned int)battle_config.max_hp_lv99); + else if (sd->status.base_level < 151) + status->max_hp = umin(status->max_hp,(unsigned int)battle_config.max_hp_lv150); + else + status->max_hp = umin(status->max_hp,(unsigned int)battle_config.max_hp); } else status->max_hp = status_calc_maxhp(bl, b_status->max_hp); @@ -5451,6 +5490,8 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang str += str * sc->data[SC_FULL_THROTTLE]->val3 / 100; if(sc->data[SC_CHEERUP]) str += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + str += sc->data[SC_GLASTHEIM_STATE]->val1; return (unsigned short)cap_value(str,0,USHRT_MAX); } @@ -5525,6 +5566,8 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang agi += sc->data[SC_ARCLOUSEDASH]->val2; if(sc->data[SC_CHEERUP]) agi += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + agi += sc->data[SC_GLASTHEIM_STATE]->val1; return (unsigned short)cap_value(agi,0,USHRT_MAX); } @@ -5591,6 +5634,8 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang #endif if(sc->data[SC_CHEERUP]) vit += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + vit += sc->data[SC_GLASTHEIM_STATE]->val1; return (unsigned short)cap_value(vit,0,USHRT_MAX); } @@ -5663,6 +5708,8 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang int_ += int_ * sc->data[SC_FULL_THROTTLE]->val3 / 100; if(sc->data[SC_CHEERUP]) int_ += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + int_ += sc->data[SC_GLASTHEIM_STATE]->val1; if(bl->type != BL_PC) { if(sc->data[SC_STRIPHELM]) @@ -5746,6 +5793,8 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang dex += dex * sc->data[SC_FULL_THROTTLE]->val3 / 100; if(sc->data[SC_CHEERUP]) dex += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + dex += sc->data[SC_GLASTHEIM_STATE]->val1; return (unsigned short)cap_value(dex,0,USHRT_MAX); } @@ -5810,6 +5859,8 @@ static unsigned short status_calc_luk(struct block_list *bl, struct status_chang luk += luk * sc->data[SC_FULL_THROTTLE]->val3 / 100; if(sc->data[SC_CHEERUP]) luk += 3; + if(sc->data[SC_GLASTHEIM_STATE]) + luk += sc->data[SC_GLASTHEIM_STATE]->val1; return (unsigned short)cap_value(luk,0,USHRT_MAX); } @@ -6134,7 +6185,7 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch critical += 3*sc->data[SC_SPEARQUICKEN]->val1*10; #endif if (sc->data[SC__INVISIBILITY]) - critical += critical * sc->data[SC__INVISIBILITY]->val3 / 100; + critical += sc->data[SC__INVISIBILITY]->val3 * 10; if (sc->data[SC__UNLUCKY]) critical -= sc->data[SC__UNLUCKY]->val2; if(sc->data[SC_BEYONDOFWARCRY]) @@ -6420,8 +6471,10 @@ static defType status_calc_def(struct block_list *bl, struct status_change *sc, def -= def * sc->data[SC_ASH]->val3/100; if( sc->data[SC_OVERED_BOOST] && bl->type == BL_HOM ) def -= def * sc->data[SC_OVERED_BOOST]->val4 / 100; + if(sc->data[SC_GLASTHEIM_ITEMDEF]) + def += sc->data[SC_GLASTHEIM_ITEMDEF]->val1; - return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX);; + return (defType)cap_value(def,DEFTYPE_MIN,DEFTYPE_MAX); } /** @@ -6551,6 +6604,8 @@ static defType status_calc_mdef(struct block_list *bl, struct status_change *sc, } if (sc->data[SC_ODINS_POWER]) mdef -= 20 * sc->data[SC_ODINS_POWER]->val1; + if(sc->data[SC_GLASTHEIM_ITEMDEF]) + mdef += sc->data[SC_GLASTHEIM_ITEMDEF]->val2; return (defType)cap_value(mdef,DEFTYPE_MIN,DEFTYPE_MAX); } @@ -7657,7 +7712,7 @@ void status_set_viewdata(struct block_list *bl, int class_) vd = npc_get_viewdata(class_); else if (homdb_checkid(class_)) vd = hom_get_viewdata(class_); - else if (mercenary_class(class_)) + else if (mercenary_db(class_)) vd = mercenary_get_viewdata(class_); else if (elemental_class(class_)) vd = elemental_get_viewdata(class_); @@ -8807,6 +8862,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: + case SC_DRESSUP: if (!vd) return 0; break; @@ -9579,7 +9635,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty // val3 : Brings the skill_lv (merged into val1 here) // val4 : Partner if (val1 == CG_MOONLIT) - clif_status_change(bl,SI_MOONLIT,1,tick,0, 0, 0); + clif_status_change(bl,EFST_MOON,1,tick,0, 0, 0); val1|= (val3<<16); val3 = tick/1000; // Tick duration tick_time = 1000; // [GodLesZ] tick time @@ -10738,7 +10794,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty break; case SC_KYOUGAKU: val2 = 2*val1 + rnd()%val1; - clif_status_change(bl,SI_ACTIVE_MONSTER_TRANSFORM,1,0,1002,0,0); + clif_status_change(bl,EFST_ACTIVE_MONSTER_TRANSFORM,1,0,1002,0,0); break; case SC_KAGEMUSYA: val2 = tick/1000; @@ -10948,10 +11004,16 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty val2 = src->id; break; case SC_HEAT_BARREL: - //kRO Update 2016-05-25 - val2 = val1 * 5; // -fixed casttime - val3 = 6 + val1 * 2; // ATK - val4 = 25 + val1 * 5; // -hit + { + uint8 n = 10; + if (sd) + n = (uint8)sd->spiritball_old; + + //kRO Update 2016-05-25 + val2 = n * 5; // -fixed casttime + val3 = (6 + val1 * 2) * n; // ATK + val4 = 25 + val1 * 5; // -hit + } break; case SC_P_ALTER: { @@ -11062,8 +11124,30 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty val4 = 1; break; + case SC_GLASTHEIM_ATK: + val1 = 100; // Undead/Demon MDEF ignore rate + break; + case SC_GLASTHEIM_HEAL: + val1 = 100; // Heal Power rate bonus + val2 = 50; // Received heal rate bonus + break; + case SC_GLASTHEIM_HIDDEN: + val1 = 90; // Damage rate reduction bonus + break; + case SC_GLASTHEIM_STATE: + val1 = 20; // All-stat bonus + break; + case SC_GLASTHEIM_ITEMDEF: + val1 = 200; // DEF bonus + val2 = 50; // MDEF bonus + break; + case SC_GLASTHEIM_HPSP: + val1 = 10000; // HP bonus + val2 = 1000; // SP bonus + break; + default: - if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == -1 && StatusIconChangeTable[type] == SI_BLANK ) { + if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == -1 && StatusIconChangeTable[type] == EFST_BLANK ) { // Status change with no calc, no icon, and no skill associated...? ShowError("UnknownStatusChange [%d]\n", type); return 0; @@ -11075,6 +11159,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: + case SC_DRESSUP: if( !vd ) break; clif_changelook(bl,LOOK_BASE,vd->class_); @@ -11134,6 +11219,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_GOLDENMACECLAN: case SC_CROSSBOWCLAN: case SC_JUMPINGCLAN: + case SC_DRESSUP: val_flag |= 1; break; // Start |1|2 val_flag setting @@ -11279,6 +11365,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: + case SC_DRESSUP: case SC_SUHIDE: unit_stop_attack(bl); break; @@ -11287,8 +11374,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty unit_skillcastcancel(bl, 0); break; case SC_ITEMSCRIPT: // Shows Buff Icons - if (sd && val2 != SI_BLANK) - clif_status_change(bl, (enum si_type)val2, 1, tick, 0, 0, 0); + if (sd && val2 != EFST_BLANK) + clif_status_change(bl, (enum efst_types)val2, 1, tick, 0, 0, 0); break; } @@ -11442,6 +11529,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty opt_flag |= 0x4; break; case SC_SUMMER: + case SC_DRESSUP: sc->option |= OPTION_SUMMER; opt_flag |= 0x4; break; @@ -11677,6 +11765,7 @@ int status_change_clear(struct block_list* bl, int type) case SC_SUMMER: case SC_HANBOK: case SC_OKTOBERFEST: + case SC_DRESSUP: case SC_NOCHAT: case SC_FUSION: case SC_EARTHSCROLL: @@ -11750,9 +11839,9 @@ int status_change_clear(struct block_list* bl, int type) case SC_SPRITEMABLE: case SC_DORAM_BUF_01: case SC_DORAM_BUF_02: - case SC_GEFFEN_MAGIC1: - case SC_GEFFEN_MAGIC2: - case SC_GEFFEN_MAGIC3: + case SC_GEFFEN_MAGIC1: + case SC_GEFFEN_MAGIC2: + case SC_GEFFEN_MAGIC3: // Costumes case SC_MOONSTAR: case SC_SUPER_STAR: @@ -12069,7 +12158,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const } if((sce->val1&0xFFFF) == CG_MOONLIT) - clif_status_change(bl,SI_MOONLIT,0,0,0,0,0); + clif_status_change(bl,EFST_MOON,0,0,0,0,0); status_change_end(bl, SC_LONGING, INVALID_TIMER); } @@ -12314,8 +12403,8 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const skill_sit(sd,0); break; case SC_KYOUGAKU: - clif_status_load(bl, SI_KYOUGAKU, 0); // Avoid client crash - clif_status_load(bl, SI_ACTIVE_MONSTER_TRANSFORM, 0); + clif_status_load(bl, EFST_KYOUGAKU, 0); // Avoid client crash + clif_status_load(bl, EFST_ACTIVE_MONSTER_TRANSFORM, 0); break; case SC_INTRAVISION: calc_flag = SCB_ALL; // Required for overlapping @@ -12337,16 +12426,16 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const case SC_FULL_THROTTLE: { int sec = skill_get_time2(status_sc2skill(type), sce->val1); - clif_status_change(bl, SI_DECREASEAGI, 1, sec, 0, 0, 0); + clif_status_change(bl, EFST_DEC_AGI, 1, sec, 0, 0, 0); sc_start(bl, bl, SC_REBOUND, 100, sce->val1, sec); } break; case SC_REBOUND: - clif_status_load(bl, SI_DECREASEAGI, 0); + clif_status_load(bl, EFST_DEC_AGI, 0); break; case SC_ITEMSCRIPT: // Removes Buff Icons - if (sd && sce->val2 != SI_BLANK) - clif_status_load(bl, (enum si_type)sce->val2, 0); + if (sd && sce->val2 != EFST_BLANK) + clif_status_load(bl, (enum efst_types)sce->val2, 0); break; case SC_C_MARKER: { @@ -12450,6 +12539,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const opt_flag |= 0x4; break; case SC_SUMMER: + case SC_DRESSUP: sc->option &= ~OPTION_SUMMER; opt_flag |= 0x4; break; @@ -13789,9 +13879,20 @@ void status_change_clear_buffs(struct block_list* bl, uint8 type) case SC_ALL_RIDING_REUSE_LIMIT: case SC_SPRITEMABLE: case SC_BITESCAR: - case SC_GEFFEN_MAGIC1: - case SC_GEFFEN_MAGIC2: - case SC_GEFFEN_MAGIC3: + case SC_DORAM_BUF_01: + case SC_DORAM_BUF_02: + case SC_GEFFEN_MAGIC1: + case SC_GEFFEN_MAGIC2: + case SC_GEFFEN_MAGIC3: + // Clans + case SC_CLAN_INFO: + case SC_SWORDCLAN: + case SC_ARCWANDCLAN: + case SC_GOLDENMACECLAN: + case SC_CROSSBOWCLAN: + case SC_JUMPINGCLAN: + // RODEX + case SC_DAILYSENDMAILCNT: // Costumes case SC_MOONSTAR: case SC_SUPER_STAR: @@ -14328,6 +14429,12 @@ static bool status_yaml_readdb_refine_sub(const YAML::Node &node, int refine_inf int bonus_per_level = node["StatsPerLevel"].as<int>(); int random_bonus_start_level = node["RandomBonusStartLevel"].as<int>(); int random_bonus = node["RandomBonusValue"].as<int>(); + + if (file_name.find("import") != std::string::npos) { // Import file, reset refine bonus before calculation + for (int refine_level = 0; refine_level < MAX_REFINE; ++refine_level) + refine_info[refine_info_index].bonus[refine_level] = 0; + } + const YAML::Node &costs = node["Costs"]; for (const auto costit : costs) { @@ -14404,7 +14511,7 @@ static void status_yaml_readdb_refine(const std::string &directory, const std::s for (int i = 0; i < ARRAYLENGTH(labels); i++) { const YAML::Node &node = config[labels[i]]; - if (node.IsDefined() && status_yaml_readdb_refine_sub(node, i, file)) + if (node.IsDefined() && status_yaml_readdb_refine_sub(node, i, current_file)) count++; } ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' entries in '" CL_WHITE "%s" CL_RESET "'.\n", count, current_file.c_str()); @@ -14513,7 +14620,7 @@ int status_readdb(void) } } // attr_fix.txt - for(i=0;i<4;i++) + for(i=0;i<MAX_ELE_LEVEL;i++) for(j=0;j<ELE_ALL;j++) for(k=0;k<ELE_ALL;k++) attr_fix_table[i][j][k]=100; diff --git a/src/map/status.hpp b/src/map/status.hpp index 8cb3dfda5b..402bfae417 100644 --- a/src/map/status.hpp +++ b/src/map/status.hpp @@ -4,7 +4,7 @@ #ifndef _STATUS_HPP_ #define _STATUS_HPP_ -#include "../common/mmo.h" +#include "../common/mmo.hpp" enum e_race2 : uint8; struct block_list; @@ -44,6 +44,8 @@ enum refine_cost_type { REFINE_COST_HD, REFINE_COST_ENRICHED, REFINE_COST_OVER10_HD, + REFINE_COST_HOLINK, + REFINE_COST_WAGJAK, REFINE_COST_MAX }; @@ -839,6 +841,16 @@ enum sc_type : int16 { SC_FALLEN_ANGEL, SC_CHEERUP, + SC_DRESSUP, + + // Old Glast Heim Buffs + SC_GLASTHEIM_ATK, + SC_GLASTHEIM_DEF, + SC_GLASTHEIM_HEAL, + SC_GLASTHEIM_HIDDEN, + SC_GLASTHEIM_STATE, + SC_GLASTHEIM_ITEMDEF, + SC_GLASTHEIM_HPSP, #ifdef RENEWAL SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled @@ -1812,6 +1824,1045 @@ enum si_type : short { SI_MAX, }; +/// Official status change ids, used to display status icons on the client. +enum efst_types : short{ +/// Do not modify code below this, until the end of the API hook, since it will be automatically generated again +/// @APIHOOK_START(EFST_ENUM) + EFST_BLANK = -1, + EFST_PROVOKE, + EFST_ENDURE, + EFST_TWOHANDQUICKEN, + EFST_CONCENTRATION, + EFST_HIDING, + EFST_CLOAKING, + EFST_ENCHANTPOISON, + EFST_POISONREACT, + EFST_QUAGMIRE, + EFST_ANGELUS, + EFST_BLESSING, + EFST_CRUCIS, + EFST_INC_AGI, + EFST_DEC_AGI, + EFST_SLOWPOISON, + EFST_IMPOSITIO, + EFST_SUFFRAGIUM, + EFST_ASPERSIO, + EFST_BENEDICTIO, + EFST_KYRIE, + EFST_MAGNIFICAT, + EFST_GLORIA, + EFST_LEXAETERNA, + EFST_ADRENALINE, + EFST_WEAPONPERFECT, + EFST_OVERTHRUST, + EFST_MAXIMIZE, + EFST_RIDING, + EFST_FALCON, + EFST_TRICKDEAD, + EFST_SHOUT, + EFST_ENERGYCOAT, + EFST_BROKENARMOR, + EFST_BROKENWEAPON, + EFST_ILLUSION, + EFST_WEIGHTOVER50, + EFST_WEIGHTOVER90, + EFST_ATTHASTE_POTION1, + EFST_ATTHASTE_POTION2, + EFST_ATTHASTE_POTION3, + EFST_ATTHASTE_INFINITY, + EFST_MOVHASTE_POTION, + EFST_MOVHASTE_INFINITY, + EFST_AUTOCOUNTER, + EFST_SPLASHER, + EFST_ANKLESNARE, + EFST_POSTDELAY, + EFST_NOACTION, + EFST_IMPOSSIBLEPICKUP, + EFST_BARRIER, + EFST_NOEQUIPWEAPON, + EFST_NOEQUIPSHIELD, + EFST_NOEQUIPARMOR, + EFST_NOEQUIPHELM, + EFST_PROTECTWEAPON, + EFST_PROTECTSHIELD, + EFST_PROTECTARMOR, + EFST_PROTECTHELM, + EFST_AUTOGUARD, + EFST_REFLECTSHIELD, + EFST_DEVOTION, + EFST_PROVIDENCE, + EFST_DEFENDER, + EFST_MAGICROD, + EFST_WEAPONPROPERTY, + EFST_AUTOSPELL, + EFST_SPECIALZONE, + EFST_MASK, + EFST_SPEARQUICKEN, + EFST_BDPLAYING, + EFST_WHISTLE, + EFST_ASSASSINCROSS, + EFST_POEMBRAGI, + EFST_APPLEIDUN, + EFST_HUMMING, + EFST_DONTFORGETME, + EFST_FORTUNEKISS, + EFST_SERVICEFORYOU, + EFST_RICHMANKIM, + EFST_ETERNALCHAOS, + EFST_DRUMBATTLEFIELD, + EFST_RINGNIBELUNGEN, + EFST_ROKISWEIL, + EFST_INTOABYSS, + EFST_SIEGFRIED, + EFST_BLADESTOP, + EFST_EXPLOSIONSPIRITS, + EFST_STEELBODY, + EFST_EXTREMITYFIST, + EFST_COMBOATTACK, + EFST_PROPERTYFIRE, + EFST_PROPERTYWATER, + EFST_PROPERTYWIND, + EFST_PROPERTYGROUND, + EFST_MAGICATTACK, + EFST_STOP, + EFST_WEAPONBRAKER, + EFST_PROPERTYUNDEAD, + EFST_POWERUP, + EFST_AGIUP, + EFST_SIEGEMODE, + EFST_INVISIBLE, + EFST_STATUSONE, + EFST_AURABLADE, + EFST_PARRYING, + EFST_LKCONCENTRATION, + EFST_TENSIONRELAX, + EFST_BERSERK, + EFST_SACRIFICE, + EFST_GOSPEL, + EFST_ASSUMPTIO, + EFST_BASILICA, + EFST_GROUNDMAGIC, + EFST_MAGICPOWER, + EFST_EDP, + EFST_TRUESIGHT, + EFST_WINDWALK, + EFST_MELTDOWN, + EFST_CARTBOOST, + EFST_CHASEWALK, + EFST_SWORDREJECT, + EFST_MARIONETTE_MASTER, + EFST_MARIONETTE, + EFST_MOON, + EFST_BLOODING, + EFST_JOINTBEAT, + EFST_MINDBREAKER, + EFST_MEMORIZE, + EFST_FOGWALL, + EFST_SPIDERWEB, + EFST_PROTECTEXP, + EFST_SUB_WEAPONPROPERTY, + EFST_AUTOBERSERK, + EFST_RUN, + EFST_TING, + EFST_STORMKICK_ON, + EFST_STORMKICK_READY, + EFST_DOWNKICK_ON, + EFST_DOWNKICK_READY, + EFST_TURNKICK_ON, + EFST_TURNKICK_READY, + EFST_COUNTER_ON, + EFST_COUNTER_READY, + EFST_DODGE_ON, + EFST_DODGE_READY, + EFST_STRUP, + EFST_PROPERTYDARK, + EFST_ADRENALINE2, + EFST_PROPERTYTELEKINESIS, + EFST_SOULLINK, + EFST_PLUSATTACKPOWER, + EFST_PLUSMAGICPOWER, + EFST_DEVIL1, + EFST_KAITE, + EFST_SWOO, + EFST_STAR2, + EFST_KAIZEL, + EFST_KAAHI, + EFST_KAUPE, + EFST_SMA_READY, + EFST_SKE, + EFST_ONEHANDQUICKEN, + EFST_FRIEND, + EFST_FRIENDUP, + EFST_SG_WARM, + EFST_SG_SUN_WARM, + EFST_SG_MOON_WARM, + EFST_SG_STAR_WARM, + EFST_EMOTION, + EFST_SUN_COMFORT, + EFST_MOON_COMFORT, + EFST_STAR_COMFORT, + EFST_EXPUP, + EFST_GDSKILL_BATTLEORDER, + EFST_GDSKILL_REGENERATION, + EFST_GDSKILL_POSTDELAY, + EFST_RESISTHANDICAP, + EFST_MAXHPPERCENT, + EFST_MAXSPPERCENT, + EFST_DEFENCE, + EFST_SLOWDOWN, + EFST_PRESERVE, + EFST_CHASEWALK2, + EFST_NOT_EXTREMITYFIST, + EFST_CLAIRVOYANCE, + EFST_MOVESLOW_POTION, + EFST_DOUBLECASTING, + EFST_GRAVITATION, + EFST_OVERTHRUSTMAX, + EFST_LONGING, + EFST_HERMODE, + EFST_TAROTCARD, + EFST_HLIF_AVOID, + EFST_HFLI_FLEET, + EFST_HFLI_SPEED, + EFST_HLIF_CHANGE, + EFST_HAMI_BLOODLUST, + EFST_CR_SHRINK, + EFST_WZ_SIGHTBLASTER, + EFST_DC_WINKCHARM, + EFST_RG_CCONFINE_M, + EFST_RG_CCONFINE_S, + EFST_DISABLEMOVE, + EFST_GS_MADNESSCANCEL, + EFST_GS_GATLINGFEVER, + EFST_EARTHSCROLL, + EFST_NJ_UTSUSEMI, + EFST_NJ_BUNSINJYUTSU, + EFST_NJ_NEN, + EFST_GS_ADJUSTMENT, + EFST_GS_ACCURACY, + EFST_NJ_SUITON, + EFST_PET, + EFST_MENTAL, + EFST_EXPMEMORY, + EFST_PERFORMANCE, + EFST_GAIN, + EFST_GRIFFON, + EFST_DRIFT, + EFST_WALLSHIFT, + EFST_REINCARNATION, + EFST_PATTACK, + EFST_PSPEED, + EFST_PDEFENSE, + EFST_PCRITICAL, + EFST_RANKING, + EFST_PTRIPLE, + EFST_DENERGY, + EFST_WAVE1, + EFST_WAVE2, + EFST_WAVE3, + EFST_WAVE4, + EFST_DAURA, + EFST_DFREEZER, + EFST_DPUNISH, + EFST_DBARRIER, + EFST_DWARNING, + EFST_MOUSEWHEEL, + EFST_DGAUGE, + EFST_DACCEL, + EFST_DBLOCK, + EFST_FOOD_STR, + EFST_FOOD_AGI, + EFST_FOOD_VIT, + EFST_FOOD_DEX, + EFST_FOOD_INT, + EFST_FOOD_LUK, + EFST_FOOD_BASICAVOIDANCE, + EFST_FOOD_BASICHIT, + EFST_FOOD_CRITICALSUCCESSVALUE, + EFST_CASH_PLUSEXP, + EFST_CASH_DEATHPENALTY, + EFST_CASH_RECEIVEITEM, + EFST_CASH_BOSS_ALARM, + EFST_DA_ENERGY, + EFST_DA_FIRSTSLOT, + EFST_DA_HEADDEF, + EFST_DA_SPACE, + EFST_DA_TRANSFORM, + EFST_DA_ITEMREBUILD, + EFST_DA_ILLUSION, + EFST_DA_DARKPOWER, + EFST_DA_EARPLUG, + EFST_DA_CONTRACT, + EFST_DA_BLACK, + EFST_DA_MAGICCART, + EFST_CRYSTAL, + EFST_DA_REBUILD, + EFST_DA_EDARKNESS, + EFST_DA_EGUARDIAN, + EFST_DA_TIMEOUT, + EFST_FOOD_STR_CASH, + EFST_FOOD_AGI_CASH, + EFST_FOOD_VIT_CASH, + EFST_FOOD_DEX_CASH, + EFST_FOOD_INT_CASH, + EFST_FOOD_LUK_CASH, + EFST_MER_FLEE, + EFST_MER_ATK, + EFST_MER_HP, + EFST_MER_SP, + EFST_MER_HIT, + EFST_SLOWCAST, + EFST_MAGICMIRROR, + EFST_STONESKIN, + EFST_ANTIMAGIC, + EFST_CRITICALWOUND, + EFST_NPC_DEFENDER, + EFST_NOACTION_WAIT, + EFST_MOVHASTE_HORSE, + EFST_PROTECT_DEF, + EFST_PROTECT_MDEF, + EFST_HEALPLUS, + EFST_S_LIFEPOTION, + EFST_L_LIFEPOTION, + EFST_CRITICALPERCENT, + EFST_PLUSAVOIDVALUE, + EFST_ATKER_ASPD, + EFST_TARGET_ASPD, + EFST_ATKER_MOVESPEED, + EFST_ATKER_BLOOD, + EFST_TARGET_BLOOD, + EFST_ARMOR_PROPERTY, + EFST_REUSE_LIMIT_A, + EFST_HELLPOWER, + EFST_STEAMPACK, + EFST_REUSE_LIMIT_B, + EFST_REUSE_LIMIT_C, + EFST_REUSE_LIMIT_D, + EFST_REUSE_LIMIT_E, + EFST_REUSE_LIMIT_F, + EFST_INVINCIBLE, + EFST_CASH_PLUSONLYJOBEXP, + EFST_PARTYFLEE, + EFST_ANGEL_PROTECT, + EFST_ENDURE_MDEF, + EFST_ENCHANTBLADE, + EFST_DEATHBOUND, + EFST_REFRESH, + EFST_GIANTGROWTH, + EFST_STONEHARDSKIN, + EFST_VITALITYACTIVATION, + EFST_FIGHTINGSPIRIT, + EFST_ABUNDANCE, + EFST_REUSE_MILLENNIUMSHIELD, + EFST_REUSE_CRUSHSTRIKE, + EFST_REUSE_REFRESH, + EFST_REUSE_STORMBLAST, + EFST_VENOMIMPRESS, + EFST_EPICLESIS, + EFST_ORATIO, + EFST_LAUDAAGNUS, + EFST_LAUDARAMUS, + EFST_CLOAKINGEXCEED, + EFST_HALLUCINATIONWALK, + EFST_HALLUCINATIONWALK_POSTDELAY, + EFST_RENOVATIO, + EFST_WEAPONBLOCKING, + EFST_WEAPONBLOCKING_POSTDELAY, + EFST_ROLLINGCUTTER, + EFST_EXPIATIO, + EFST_POISONINGWEAPON, + EFST_TOXIN, + EFST_PARALYSE, + EFST_VENOMBLEED, + EFST_MAGICMUSHROOM, + EFST_DEATHHURT, + EFST_PYREXIA, + EFST_OBLIVIONCURSE, + EFST_LEECHESEND, + EFST_DUPLELIGHT, + EFST_FROSTMISTY, + EFST_FEARBREEZE, + EFST_ELECTRICSHOCKER, + EFST_MARSHOFABYSS, + EFST_RECOGNIZEDSPELL, + EFST_STASIS, + EFST_WUGRIDER, + EFST_WUGDASH, + EFST_WUGBITE, + EFST_CAMOUFLAGE, + EFST_ACCELERATION, + EFST_HOVERING, + EFST_SUMMON1, + EFST_SUMMON2, + EFST_SUMMON3, + EFST_SUMMON4, + EFST_SUMMON5, + EFST_MVPCARD_TAOGUNKA, + EFST_MVPCARD_MISTRESS, + EFST_MVPCARD_ORCHERO, + EFST_MVPCARD_ORCLORD, + EFST_OVERHEAT_LIMITPOINT, + EFST_OVERHEAT, + EFST_SHAPESHIFT, + EFST_INFRAREDSCAN, + EFST_MAGNETICFIELD, + EFST_NEUTRALBARRIER, + EFST_NEUTRALBARRIER_MASTER, + EFST_STEALTHFIELD, + EFST_STEALTHFIELD_MASTER, + EFST_MANU_ATK, + EFST_MANU_DEF, + EFST_SPL_ATK, + EFST_SPL_DEF, + EFST_REPRODUCE, + EFST_MANU_MATK, + EFST_SPL_MATK, + EFST_STR_SCROLL, + EFST_INT_SCROLL, + EFST_LG_REFLECTDAMAGE, + EFST_FORCEOFVANGUARD, + EFST_BUCHEDENOEL, + EFST_AUTOSHADOWSPELL, + EFST_SHADOWFORM, + EFST_RAID, + EFST_SHIELDSPELL_DEF, + EFST_SHIELDSPELL_MDEF, + EFST_SHIELDSPELL_REF, + EFST_BODYPAINT, + EFST_EXEEDBREAK, + EFST_ADORAMUS, + EFST_PRESTIGE, + EFST_INVISIBILITY, + EFST_DEADLYINFECT, + EFST_BANDING, + EFST_EARTHDRIVE, + EFST_INSPIRATION, + EFST_ENERVATION, + EFST_GROOMY, + EFST_RAISINGDRAGON, + EFST_IGNORANCE, + EFST_LAZINESS, + EFST_LIGHTNINGWALK, + EFST_ACARAJE, + EFST_UNLUCKY, + EFST_CURSEDCIRCLE_ATKER, + EFST_CURSEDCIRCLE_TARGET, + EFST_WEAKNESS, + EFST_CRESCENTELBOW, + EFST_NOEQUIPACCESSARY, + EFST_STRIPACCESSARY, + EFST_MANHOLE, + EFST_POPECOOKIE, + EFST_FALLENEMPIRE, + EFST_GENTLETOUCH_ENERGYGAIN, + EFST_GENTLETOUCH_CHANGE, + EFST_GENTLETOUCH_REVITALIZE, + EFST_BLOODYLUST, + EFST_SWING, + EFST_SYMPHONY_LOVE, + EFST_PROPERTYWALK, + EFST_SPELLFIST, + EFST_NETHERWORLD, + EFST_SIREN, + EFST_HANDICAPSTATE_DEEP_SLEEP, + EFST_SIRCLEOFNATURE, + EFST_COLD, + EFST_GLOOMYDAY, + EFST_SONG_OF_MANA, + EFST_CLOUD_KILL, + EFST_DANCE_WITH_WUG, + EFST_RUSH_WINDMILL, + EFST_ECHOSONG, + EFST_HARMONIZE, + EFST_STRIKING, + EFST_WARMER, + EFST_MOONLIT_SERENADE, + EFST_SATURDAY_NIGHT_FEVER, + EFST_SITDOWN_FORCE, + EFST_ANALYZE, + EFST_LERADS_DEW, + EFST_MELODYOFSINK, + EFST_BEYOND_OF_WARCRY, + EFST_UNLIMITED_HUMMING_VOICE, + EFST_SPELLBOOK1, + EFST_SPELLBOOK2, + EFST_SPELLBOOK3, + EFST_FREEZE_SP, + EFST_GN_TRAINING_SWORD, + EFST_GN_REMODELING_CART, + EFST_GN_CARTBOOST, + EFST_FIXEDCASTINGTM_REDUCE, + EFST_THORNS_TRAP, + EFST_BLOOD_SUCKER, + EFST_SPORE_EXPLOSION, + EFST_DEMONIC_FIRE, + EFST_FIRE_EXPANSION_SMOKE_POWDER, + EFST_FIRE_EXPANSION_TEAR_GAS, + EFST_BLOCKING_PLAY, + EFST_MANDRAGORA, + EFST_ACTIVATE, + EFST_AB_SECRAMENT, + EFST_ASSUMPTIO2, + EFST_TK_SEVENWIND, + EFST_LIMIT_ODINS_RECALL, + EFST_STOMACHACHE, + EFST_MYSTERIOUS_POWDER, + EFST_MELON_BOMB, + EFST_BANANA_BOMB_SITDOWN_POSTDELAY, + EFST_PROMOTE_HEALTH_RESERCH, + EFST_ENERGY_DRINK_RESERCH, + EFST_EXTRACT_WHITE_POTION_Z, + EFST_VITATA_500, + EFST_EXTRACT_SALAMINE_JUICE, + EFST_BOOST500, + EFST_FULL_SWING_K, + EFST_MANA_PLUS, + EFST_MUSTLE_M, + EFST_LIFE_FORCE_F, + EFST_VACUUM_EXTREME, + EFST_SAVAGE_STEAK, + EFST_COCKTAIL_WARG_BLOOD, + EFST_MINOR_BBQ, + EFST_SIROMA_ICE_TEA, + EFST_DROCERA_HERB_STEAMED, + EFST_PUTTI_TAILS_NOODLES, + EFST_BANANA_BOMB, + XXX_EFST_SM_ELEMENTAL, + EFST_SPELLBOOK4, + EFST_SPELLBOOK5, + EFST_SPELLBOOK6, + EFST_SPELLBOOK7, + EFST_ELEMENTAL_AGGRESSIVE, + EFST_RETURN_TO_ELDICASTES, + EFST_BANDING_DEFENCE, + EFST_SKELSCROLL, + EFST_DISTRUCTIONSCROLL, + EFST_ROYALSCROLL, + EFST_IMMUNITYSCROLL, + EFST_MYSTICSCROLL, + EFST_BATTLESCROLL, + EFST_ARMORSCROLL, + EFST_FREYJASCROLL, + EFST_SOULSCROLL, + EFST_CIRCLE_OF_FIRE, + EFST_CIRCLE_OF_FIRE_OPTION, + EFST_FIRE_CLOAK, + EFST_FIRE_CLOAK_OPTION, + EFST_WATER_SCREEN, + EFST_WATER_SCREEN_OPTION, + EFST_WATER_DROP, + EFST_WATER_DROP_OPTION, + EFST_WIND_STEP, + EFST_WIND_STEP_OPTION, + EFST_WIND_CURTAIN, + EFST_WIND_CURTAIN_OPTION, + EFST_WATER_BARRIER, + EFST_ZEPHYR, + EFST_SOLID_SKIN, + EFST_SOLID_SKIN_OPTION, + EFST_STONE_SHIELD, + EFST_STONE_SHIELD_OPTION, + EFST_POWER_OF_GAIA, + EFST_EL_WAIT, + EFST_EL_PASSIVE, + EFST_EL_DEFENSIVE, + EFST_EL_OFFENSIVE, + EFST_EL_COST, + EFST_PYROTECHNIC, + EFST_PYROTECHNIC_OPTION, + EFST_HEATER, + EFST_HEATER_OPTION, + EFST_TROPIC, + EFST_TROPIC_OPTION, + EFST_AQUAPLAY, + EFST_AQUAPLAY_OPTION, + EFST_COOLER, + EFST_COOLER_OPTION, + EFST_CHILLY_AIR, + EFST_CHILLY_AIR_OPTION, + EFST_GUST, + EFST_GUST_OPTION, + EFST_BLAST, + EFST_BLAST_OPTION, + EFST_WILD_STORM, + EFST_WILD_STORM_OPTION, + EFST_PETROLOGY, + EFST_PETROLOGY_OPTION, + EFST_CURSED_SOIL, + EFST_CURSED_SOIL_OPTION, + EFST_UPHEAVAL, + EFST_UPHEAVAL_OPTION, + EFST_TIDAL_WEAPON, + EFST_TIDAL_WEAPON_OPTION, + EFST_ROCK_CRUSHER, + EFST_ROCK_CRUSHER_ATK, + EFST_FIRE_INSIGNIA, + EFST_WATER_INSIGNIA, + EFST_WIND_INSIGNIA, + EFST_EARTH_INSIGNIA, + EFST_EQUIPED_FLOOR, + EFST_GUARDIAN_RECALL, + EFST_MORA_BUFF, + EFST_REUSE_LIMIT_G, + EFST_REUSE_LIMIT_H, + EFST_NEEDLE_OF_PARALYZE, + EFST_PAIN_KILLER, + EFST_G_LIFEPOTION, + EFST_VITALIZE_POTION, + EFST_LIGHT_OF_REGENE, + EFST_OVERED_BOOST, + EFST_SILENT_BREEZE, + EFST_ODINS_POWER, + EFST_STYLE_CHANGE, + EFST_SONIC_CLAW_POSTDELAY, + + EFST_SILVERVEIN_RUSH_POSTDELAY = 596, + EFST_MIDNIGHT_FRENZY_POSTDELAY, + EFST_GOLDENE_FERSE, + EFST_ANGRIFFS_MODUS, + EFST_TINDER_BREAKER, + EFST_TINDER_BREAKER_POSTDELAY, + EFST_CBC, + EFST_CBC_POSTDELAY, + EFST_EQC, + EFST_MAGMA_FLOW, + EFST_GRANITIC_ARMOR, + EFST_PYROCLASTIC, + EFST_VOLCANIC_ASH, + EFST_SPIRITS_SAVEINFO1, + EFST_SPIRITS_SAVEINFO2, + EFST_MAGIC_CANDY, + EFST_SEARCH_STORE_INFO, + EFST_ALL_RIDING, + EFST_ALL_RIDING_REUSE_LIMIT, + EFST_MACRO, + EFST_MACRO_POSTDELAY, + EFST_BEER_BOTTLE_CAP, + EFST_OVERLAPEXPUP, + EFST_PC_IZ_DUN05, + EFST_CRUSHSTRIKE, + EFST_MONSTER_TRANSFORM, + EFST_SIT, + EFST_ONAIR, + EFST_MTF_ASPD, + EFST_MTF_RANGEATK, + EFST_MTF_MATK, + EFST_MTF_MLEATKED, + EFST_MTF_CRIDAMAGE, + EFST_REUSE_LIMIT_MTF, + EFST_MACRO_PERMIT, + EFST_MACRO_PLAY, + EFST_SKF_CAST, + EFST_SKF_ASPD, + EFST_SKF_ATK, + EFST_SKF_MATK, + EFST_REWARD_PLUSONLYJOBEXP, + EFST_HANDICAPSTATE_NORECOVER, + EFST_SET_NUM_DEF, + EFST_SET_NUM_MDEF, + EFST_SET_PER_DEF, + EFST_SET_PER_MDEF, + EFST_PARTYBOOKING_SEARCH_DELAY, + EFST_PARTYBOOKING_REGISTER_DELAY, + EFST_PERIOD_TIME_CHECK_DETECT_SKILL, + EFST_KO_JYUMONJIKIRI, + EFST_MEIKYOUSISUI, + EFST_ATTHASTE_CASH, + EFST_EQUIPPED_DIVINE_ARMOR, + EFST_EQUIPPED_HOLY_ARMOR, + EFST_2011RWC, + EFST_KYOUGAKU, + EFST_IZAYOI, + EFST_ZENKAI, + EFST_KG_KAGEHUMI, + EFST_KYOMU, + EFST_KAGEMUSYA, + EFST_ZANGETSU, + EFST_PHI_DEMON, + EFST_GENSOU, + EFST_AKAITSUKI, + EFST_TETANY, + EFST_GM_BATTLE, + EFST_GM_BATTLE2, + EFST_2011RWC_SCROLL, + EFST_ACTIVE_MONSTER_TRANSFORM, + EFST_MYSTICPOWDER, + EFST_ECLAGE_RECALL, + EFST_ENTRY_QUEUE_APPLY_DELAY, + EFST_REUSE_LIMIT_ECL, + EFST_M_LIFEPOTION, + EFST_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, + EFST_UNKNOWN_NAME, + EFST_ON_PUSH_CART, + EFST_HAT_EFFECT, + EFST_FLOWER_LEAF, + EFST_RAY_OF_PROTECTION, + EFST_GLASTHEIM_ATK, + EFST_GLASTHEIM_DEF, + EFST_GLASTHEIM_HEAL, + EFST_GLASTHEIM_HIDDEN, + EFST_GLASTHEIM_STATE, + EFST_GLASTHEIM_ITEMDEF, + EFST_GLASTHEIM_HPSP, + EFST_FOLLOWER_NPC_SKILL_POSTDELAY, + EFST_ALMIGHTY, + EFST_GVG_GIANT, + EFST_GVG_GOLEM, + EFST_GVG_STUN, + EFST_GVG_STONE, + EFST_GVG_FREEZ, + EFST_GVG_SLEEP, + EFST_GVG_CURSE, + EFST_GVG_SILENCE, + EFST_GVG_BLIND, + EFST_CLIENT_ONLY_EQUIP_ARROW, + EFST_CLAN_INFO, + EFST_JP_EVENT01, + EFST_JP_EVENT02, + EFST_JP_EVENT03, + EFST_JP_EVENT04, + EFST_TELEPORT_FIXEDCASTINGDELAY, + EFST_GEFFEN_MAGIC1, + EFST_GEFFEN_MAGIC2, + EFST_GEFFEN_MAGIC3, + EFST_QUEST_BUFF1, + EFST_QUEST_BUFF2, + EFST_QUEST_BUFF3, + EFST_REUSE_LIMIT_RECALL, + EFST_SAVEPOSITION, + EFST_NPC_ICEEXPLO, + EFST_FENRIR_CARD, + EFST_REUSE_LIMIT_ASPD_POTION, + EFST_MAXPAIN, + EFST_PC_STOP, + EFST_FRIGG_SONG, + EFST_OFFERTORIUM, + EFST_TELEKINESIS_INTENSE, + EFST_MOONSTAR, + EFST_STRANGELIGHTS, + EFST_FULL_THROTTLE, + EFST_REBOUND, + EFST_UNLIMIT, + EFST_KINGS_GRACE, + EFST_ITEM_ATKMAX, + EFST_ITEM_ATKMIN, + EFST_ITEM_MATKMAX, + EFST_ITEM_MATKMIN, + EFST_SUPER_STAR, + EFST_HIGH_RANKER, + EFST_DARKCROW, + EFST_2013_VALENTINE1, + EFST_2013_VALENTINE2, + EFST_2013_VALENTINE3, + EFST_ILLUSIONDOPING, + EFST_WIDEWEB, + EFST_CHILL, + EFST_BURNT, + EFST_PCCAFE_PLAY_TIME, + EFST_TWISTED_TIME, + EFST_FLASHCOMBO, + EFST_JITTER_BUFF1, + EFST_JITTER_BUFF2, + EFST_JITTER_BUFF3, + EFST_JITTER_BUFF4, + EFST_JITTER_BUFF5, + EFST_JITTER_BUFF6, + EFST_JITTER_BUFF7, + EFST_JITTER_BUFF8, + EFST_JITTER_BUFF9, + EFST_JITTER_BUFF10, + EFST_CUP_OF_BOZA, + EFST_B_TRAP, + EFST_E_CHAIN, + EFST_E_QD_SHOT_READY, + EFST_C_MARKER, + EFST_H_MINE, + EFST_H_MINE_SPLASH, + EFST_P_ALTER, + EFST_HEAT_BARREL, + EFST_ANTI_M_BLAST, + EFST_SLUGSHOT, + EFST_SWORDCLAN, + EFST_ARCWANDCLAN, + EFST_GOLDENMACECLAN, + EFST_CROSSBOWCLAN, + EFST_PACKING_ENVELOPE1, + EFST_PACKING_ENVELOPE2, + EFST_PACKING_ENVELOPE3, + EFST_PACKING_ENVELOPE4, + EFST_PACKING_ENVELOPE5, + EFST_PACKING_ENVELOPE6, + EFST_PACKING_ENVELOPE7, + EFST_PACKING_ENVELOPE8, + EFST_PACKING_ENVELOPE9, + EFST_PACKING_ENVELOPE10, + EFST_GLASTHEIM_TRANS, + EFST_ZONGZI_POUCH_TRANS, + EFST_HEAT_BARREL_AFTER, + EFST_DECORATION_OF_MUSIC, + EFST_OVERSEAEXPUP, + EFST_CLOWN_N_GYPSY_CARD, + EFST_OPEN_NPC_MARKET, + EFST_BEEF_RIB_STEW, + EFST_PORK_RIB_STEW, + EFST_CHUSEOK_MONDAY, + EFST_CHUSEOK_TUESDAY, + EFST_CHUSEOK_WEDNESDAY, + EFST_CHUSEOK_THURSDAY, + EFST_CHUSEOK_FRIDAY, + EFST_CHUSEOK_WEEKEND, + EFST_ALL_LIGHTGUARD, + EFST_ALL_LIGHTGUARD_COOL_TIME, + EFST_MTF_MHP, + EFST_MTF_MSP, + EFST_MTF_PUMPKIN, + EFST_MTF_HITFLEE, + EFST_MTF_CRIDAMAGE2, + EFST_MTF_SPDRAIN, + EFST_ACUO_MINT_GUM, + EFST_S_HEALPOTION, + EFST_REUSE_LIMIT_S_HEAL_POTION, + EFST_PLAYTIME_STATISTICS, + EFST_GN_CHANGEMATERIAL_OPERATOR, + EFST_GN_MIX_COOKING_OPERATOR, + EFST_GN_MAKEBOMB_OPERATOR, + EFST_GN_S_PHARMACY_OPERATOR, + EFST_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR, + EFST_SO_EL_ANALYSIS_COMBINATION_OPERATOR, + EFST_NC_MAGICDECOY_OPERATOR, + EFST_GUILD_STORAGE, + EFST_GC_POISONINGWEAPON_OPERATOR, + EFST_WS_WEAPONREFINE_OPERATOR, + EFST_BS_REPAIRWEAPON_OPERATOR, + EFST_UNREADMAIL_CHECK, + EFST_JUMPINGCLAN, + EFST_JP_OTP, + EFST_HANDICAPTOLERANCE_LEVELGAP, + EFST_MTF_RANGEATK2, + EFST_MTF_ASPD2, + EFST_MTF_MATK2, + EFST_SHOW_NPCHPBAR, + EFST_FLOWERSMOKE, + EFST_FSTONE, + EFST_DAILYSENDMAILCNT, + EFST_QSCARABA, + EFST_LJOSALFAR, + EFST_PAD_READER_KNIGHT, + EFST_PAD_READER_CRUSADER, + EFST_PAD_READER_BLACKSMITH, + EFST_PAD_READER_ALCHEMIST, + EFST_PAD_READER_ASSASSIN, + EFST_PAD_READER_ROGUE, + EFST_PAD_READER_WIZARD, + EFST_PAD_READER_SAGE, + EFST_PAD_READER_PRIEST, + EFST_PAD_READER_MONK, + EFST_PAD_READER_HUNTER, + EFST_PAD_READER_BARD, + EFST_PAD_READER_DANCER, + EFST_PAD_READER_TAEKWON, + EFST_PAD_READER_NINJA, + EFST_PAD_READER_GUNSLINGER, + EFST_PAD_READER_SUPERNOVICE, + EFST_ESSENCE_OF_TIME, + EFST_MINIGAME_ROULETTE, + EFST_MINIGAME_GOLD_POINT, + EFST_MINIGAME_SILVER_POINT, + EFST_MINIGAME_BRONZE_POINT, + EFST_HAPPINESS_STAR, + EFST_SUMMEREVENT01, + EFST_SUMMEREVENT02, + EFST_SUMMEREVENT03, + EFST_SUMMEREVENT04, + EFST_SUMMEREVENT05, + EFST_MINIGAME_ROULETTE_BONUS_ITEM, + EFST_DRESS_UP, + EFST_MAPLE_FALLS, + EFST_ALL_NIFLHEIM_RECALL, + + EFST_MTF_MARIONETTE = 860, + EFST_MTF_LUDE, + EFST_MTF_CRUISER, + EFST_MERMAID_LONGING, + EFST_MAGICAL_FEATHER, + EFST_DRACULA_CARD, + + EFST_LIMIT_POWER_BOOSTER = 867, + EFST_GIFT_OF_SNOW, + + EFST_TIME_ACCESSORY = 872, + EFST_EP16_DEF, + EFST_NORMAL_ATKED_SP, + EFST_BODYSTATE_STONECURSE, + EFST_BODYSTATE_FREEZING, + EFST_BODYSTATE_STUN, + EFST_BODYSTATE_SLEEP, + EFST_BODYSTATE_UNDEAD, + EFST_BODYSTATE_STONECURSE_ING, + EFST_BODYSTATE_BURNNING, + EFST_BODYSTATE_IMPRISON, + EFST_HEALTHSTATE_POISON, + EFST_HEALTHSTATE_CURSE, + EFST_HEALTHSTATE_SILENCE, + EFST_HEALTHSTATE_CONFUSION, + EFST_HEALTHSTATE_BLIND, + EFST_HEALTHSTATE_ANGELUS, + EFST_HEALTHSTATE_BLOODING, + EFST_HEALTHSTATE_HEAVYPOISON, + EFST_HEALTHSTATE_FEAR, + EFST_CHERRY_BLOSSOM_CAKE, + EFST_SU_STOOP, + EFST_CATNIPPOWDER, + EFST_HEAD_EQUIPMENT_EFFECT, + EFST_SV_ROOTTWIST, + EFST_ATTACK_PROPERTY_NOTHING, + EFST_ATTACK_PROPERTY_WATER, + EFST_ATTACK_PROPERTY_GROUND, + EFST_ATTACK_PROPERTY_FIRE, + EFST_ATTACK_PROPERTY_WIND, + EFST_ATTACK_PROPERTY_POISON, + EFST_ATTACK_PROPERTY_SAINT, + EFST_ATTACK_PROPERTY_DARKNESS, + EFST_ATTACK_PROPERTY_TELEKINESIS, + EFST_ATTACK_PROPERTY_UNDEAD, + EFST_RESIST_PROPERTY_NOTHING, + EFST_RESIST_PROPERTY_WATER, + EFST_RESIST_PROPERTY_GROUND, + EFST_RESIST_PROPERTY_FIRE, + EFST_RESIST_PROPERTY_WIND, + EFST_RESIST_PROPERTY_POISON, + EFST_RESIST_PROPERTY_SAINT, + EFST_RESIST_PROPERTY_DARKNESS, + EFST_RESIST_PROPERTY_TELEKINESIS, + EFST_RESIST_PROPERTY_UNDEAD, + EFST_BITESCAR, + EFST_ARCLOUSEDASH, + EFST_TUNAPARTY, + EFST_SHRIMP, + EFST_FRESHSHRIMP, + EFST_PERIOD_RECEIVEITEM, + EFST_PERIOD_PLUSEXP, + EFST_PERIOD_PLUSJOBEXP, + EFST_RUNEHELM, + EFST_HELM_VERKANA, + EFST_HELM_RHYDO, + EFST_HELM_TURISUS, + EFST_HELM_HAGALAS, + EFST_HELM_ISIA, + EFST_HELM_ASIR, + EFST_HELM_URJ, + EFST_SUHIDE, + + EFST_DORAM_BUF_01 = 935, + EFST_DORAM_BUF_02, + EFST_SPRITEMABLE, + EFST_AID_PERIOD_RECEIVEITEM, + EFST_AID_PERIOD_PLUSEXP, + EFST_AID_PERIOD_PLUSJOBEXP, + EFST_AID_PERIOD_DEADPENALTY, + EFST_AID_PERIOD_ADDSTOREITEMCOUNT, + + EFST_MAGICSTONE_OF_GRACE_SET = 948, + + EFST_HISS = 950, + + EFST_NYANGGRASS = 952, + EFST_CHATTERING, + + EFST_GROOMING = 961, + EFST_PROTECTIONOFSHRIMP, + EFST_EP16_2_BUFF_SS, + EFST_EP16_2_BUFF_SC, + EFST_EP16_2_BUFF_AC, + EFST_GS_MAGICAL_BULLET, + + EFST_FALLEN_ANGEL = 976, + + EFST_BLAZE_BEAD = 979, + EFST_FROZEN_BEAD, + EFST_BREEZE_BEAD, + + EFST_AID_PERIOD_RECEIVEITEM_2ND = 983, + EFST_AID_PERIOD_PLUSEXP_2ND, + EFST_AID_PERIOD_PLUSJOBEXP_2ND, + EFST_PRONTERA_JP, + + EFST_GLOOM_CARD = 988, + EFST_PHARAOH_CARD, + EFST_KIEL_CARD, + + EFST_CHEERUP = 992, + + EFST_S_MANAPOTION = 995, + EFST_M_DEFSCROLL, + + EFST_AS_RAGGED_GOLEM_CARD = 1000, + EFST_LHZ_DUN_N1, + EFST_LHZ_DUN_N2, + EFST_LHZ_DUN_N3, + EFST_LHZ_DUN_N4, + + EFST_REUSE_LIMIT_NP = 1026, + EFST_SPECIALCOOKIE, + + EFST_GLORY_OF_RETURN = 1030, + EFST_ATK_POPCORN, + EFST_MATK_POPCORN, + EFST_ASPD_POPCORN, + EFST_ULTIMATECOOK, + EFST_LIGHTOFMOON, + EFST_LIGHTOFSUN, + EFST_LIGHTOFSTAR, + EFST_LUNARSTANCE, + EFST_UNIVERSESTANCE, + EFST_SUNSTANCE, + EFST_FLASHKICK, + EFST_NEWMOON, + EFST_STARSTANCE, + EFST_DIMENSION, + EFST_DIMENSION1, + EFST_DIMENSION2, + EFST_CREATINGSTAR, + EFST_FALLINGSTAR, + EFST_NOVAEXPLOSING, + EFST_GRAVITYCONTROL, + + EFST_SOULCOLLECT = 1053, + EFST_SOULREAPER, + EFST_SOULUNITY, + EFST_SOULSHADOW, + EFST_SOULFAIRY, + EFST_SOULFALCON, + EFST_SOULGOLEM, + EFST_SOULDIVISION, + EFST_SOULENERGY, + EFST_USE_SKILL_SP_SPA, + EFST_USE_SKILL_SP_SHA, + EFST_SP_SHA, + EFST_INFINITY_DRINK, + EFST_ABYSS_001, + EFST_ABYSS_002, + EFST_ABYSS_003, + EFST_ABYSS_004, + EFST_ABYSS_005, + EFST_ABYSS_006, + EFST_ABYSS_007, + EFST_ABYSS_008, + + EFST_YGGDRASIL_BLESS = 1081, + + EFST_HUNTING_EVENT = 1083, + EFST_PERIOD_RECEIVEITEM_2ND, + EFST_PERIOD_PLUSEXP_2ND, + EFST_EXPDROPUP, + EFST_TW_NEWYEAR_EVENT, + + EFST_ANCILLA = 1095, +/// @APIHOOK_END +/// Do not modify code above this, since it will be automatically generated by the API again + EFST_MAX, +}; + /// JOINTBEAT stackable ailments enum e_joint_break { @@ -2081,7 +3132,7 @@ extern sc_type SkillStatusChangeTable[MAX_SKILL]; /// skill -> status extern int StatusIconChangeTable[SC_MAX]; /// status -> "icon" (icon is a bit of a misnomer, since there exist values with no icon associated) extern unsigned int StatusChangeFlagTable[SC_MAX]; /// status -> flags extern int StatusSkillChangeTable[SC_MAX]; /// status -> skill -extern int StatusRelevantBLTypes[SI_MAX]; /// "icon" -> enum bl_type (for clif->status_change to identify for which bl types to send packets) +extern int StatusRelevantBLTypes[EFST_MAX]; /// "icon" -> enum bl_type (for clif->status_change to identify for which bl types to send packets) extern unsigned int StatusChangeStateTable[SC_MAX]; /// status -> flags extern unsigned int StatusDisplayType[SC_MAX]; @@ -2111,7 +3162,7 @@ struct status_data { #endif aspd_rate; /** - * defType is RENEWAL dependent and defined in src/map/config/data/const.h + * defType is RENEWAL dependent and defined in src/config/const.hpp **/ defType def,mdef; diff --git a/src/map/storage.cpp b/src/map/storage.cpp index c9ec7e654b..f514320681 100644 --- a/src/map/storage.cpp +++ b/src/map/storage.cpp @@ -3,14 +3,17 @@ #include "storage.hpp" +#include <map> + #include <stdlib.h> #include <string.h> -#include "../common/cbasetypes.h" -#include "../common/db.h" -#include "../common/nullpo.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" +#include "../common/utilities.hpp" + +#include "../common/cbasetypes.hpp" +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" #include "map.hpp" // struct map_session_data #include "chrif.hpp" @@ -23,7 +26,11 @@ #include "log.hpp" #include "battle.hpp" -static DBMap* guild_storage_db; ///Databases of guild_storage : int guild_id -> struct guild_storage* +using namespace rathena; + +///Databases of guild_storage : int guild_id -> struct guild_storage +std::map<int, struct s_storage> guild_storage_db; + struct s_storage_table *storage_db; int storage_count; @@ -102,7 +109,6 @@ void storage_sortitem(struct item* items, unsigned int size) */ void do_init_storage(void) { - guild_storage_db = idb_alloc(DB_OPT_RELEASE_DATA); storage_db = NULL; storage_count = 0; } @@ -114,36 +120,26 @@ void do_init_storage(void) */ void do_final_storage(void) { - guild_storage_db->destroy(guild_storage_db,NULL); + guild_storage_db.clear(); if (storage_db) aFree(storage_db); storage_db = NULL; storage_count = 0; } -/** - * Parses storage and saves 'dirty' ones upon reconnect. - * @author [Skotlex] - * @see DBApply - * @return 0 - */ -static int storage_reconnect_sub(DBKey key, DBData *data, va_list ap) -{ - struct s_storage *stor = static_cast<s_storage *>(db_data2ptr(data)); - - if (stor->dirty && stor->status == 0) //Save closed storages. - storage_guild_storagesave(0, stor->id, 0); - - return 0; -} - /** * Function to be invoked upon server reconnection to char. To save all 'dirty' storages * @author [Skotlex] */ -void do_reconnect_storage(void) -{ - guild_storage_db->foreach(guild_storage_db, storage_reconnect_sub); +void do_reconnect_storage(void){ + for( auto entry : guild_storage_db ){ + struct s_storage stor = entry.second; + + // Save closed storages. + if( stor.dirty && stor.status == 0 ){ + storage_guild_storagesave(0, stor.id, 0); + } + } } /** @@ -486,6 +482,7 @@ void storage_storagesaved(struct map_session_data *sd) if (&sd->storage) sd->storage.dirty = false; + if (sd->state.storage_flag == 1) { sd->state.storage_flag = 0; clif_storageclose(sd); @@ -505,7 +502,10 @@ void storage_storageclose(struct map_session_data *sd) return; if (sd->storage.dirty) { - storage_storagesave(sd); + if (save_settings&CHARSAVE_STORAGE) + chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); + else + storage_storagesave(sd); if (sd->state.storage_flag == 1) { sd->state.storage_flag = 0; clif_storageclose(sd); @@ -529,25 +529,10 @@ void storage_storage_quit(struct map_session_data* sd, int flag) if (!&sd->storage) return; - storage_storagesave(sd); -} - -/** - * Create a guild_storage stucture and add it into the db - * @see DBCreateData - * @param key - * @param args - * @return - */ -static DBData create_guildstorage(DBKey key, va_list args) -{ - struct s_storage *gs = NULL; - - gs = (struct s_storage *) aCalloc(sizeof(struct s_storage), 1); - gs->type = TABLE_GUILD_STORAGE; - gs->id = key.i; - - return db_ptr2data(gs); + if (save_settings&CHARSAVE_STORAGE) + chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); + else + storage_storagesave(sd); } /** @@ -558,10 +543,18 @@ static DBData create_guildstorage(DBKey key, va_list args) */ struct s_storage *guild2storage(int guild_id) { - struct s_storage *gs = NULL; + struct s_storage *gs; - if (guild_search(guild_id) != NULL) - gs = (struct s_storage *)idb_ensure(guild_storage_db,guild_id,create_guildstorage); + if (guild_search(guild_id) == nullptr) + return nullptr; + + gs = guild2storage2(guild_id); + + if( gs == nullptr ){ + gs = &guild_storage_db[guild_id]; + gs->id = guild_id; + gs->type = TABLE_GUILD_STORAGE; + } return gs; } @@ -570,21 +563,19 @@ struct s_storage *guild2storage(int guild_id) * See if the guild_storage exist in db and fetch it if it's the case * @author : [Skotlex] * @param guild_id : guild_id to search the storage - * @return s_storage or NULL + * @return s_storage or nullptr */ -struct s_storage *guild2storage2(int guild_id) -{ - return (struct s_storage*)idb_get(guild_storage_db,guild_id); +struct s_storage *guild2storage2(int guild_id){ + return util::map_find( guild_storage_db, guild_id ); } /** * Delete a guild_storage and remove it from db * @param guild_id : guild to remove the storage from - * @return 0 */ void storage_guild_delete(int guild_id) { - idb_remove(guild_storage_db,guild_id); + guild_storage_db.erase(guild_id); } /** @@ -924,7 +915,7 @@ bool storage_guild_storagesave(uint32 account_id, int guild_id, int flag) struct s_storage *stor = guild2storage2(guild_id); if (stor) { - if (flag) //Char quitting, close it. + if (flag&CSAVE_QUIT) //Char quitting, close it. stor->status = false; if (stor->dirty) @@ -1102,7 +1093,10 @@ void storage_premiumStorage_close(struct map_session_data *sd) { return; if (sd->premiumStorage.dirty) { - storage_premiumStorage_save(sd); + if (save_settings&CHARSAVE_STORAGE) + chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); + else + storage_premiumStorage_save(sd); if (sd->state.storage_flag == 3) { sd->state.storage_flag = 0; clif_storageclose(sd); @@ -1123,5 +1117,8 @@ void storage_premiumStorage_quit(struct map_session_data *sd) { if (!&sd->premiumStorage) return; - storage_premiumStorage_save(sd); + if (save_settings&CHARSAVE_STORAGE) + chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); + else + storage_premiumStorage_save(sd); } diff --git a/src/map/storage.hpp b/src/map/storage.hpp index 15c913352f..4dfd46c323 100644 --- a/src/map/storage.hpp +++ b/src/map/storage.hpp @@ -4,7 +4,7 @@ #ifndef _STORAGE_HPP_ #define _STORAGE_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" struct s_storage; struct item; diff --git a/src/map/trade.cpp b/src/map/trade.cpp index ed932cfb0d..ff797cbd76 100644 --- a/src/map/trade.cpp +++ b/src/map/trade.cpp @@ -6,8 +6,8 @@ #include <stdio.h> #include <string.h> -#include "../common/nullpo.h" -#include "../common/socket.h" +#include "../common/nullpo.hpp" +#include "../common/socket.hpp" #include "clif.hpp" #include "itemdb.hpp" diff --git a/src/map/unit.cpp b/src/map/unit.cpp index 57335bff35..d4a51ee839 100644 --- a/src/map/unit.cpp +++ b/src/map/unit.cpp @@ -6,14 +6,14 @@ #include <stdlib.h> #include <string.h> -#include "../common/showmsg.h" -#include "../common/timer.h" -#include "../common/nullpo.h" -#include "../common/db.h" -#include "../common/malloc.h" -#include "../common/random.h" -#include "../common/socket.h" -#include "../common/ers.h" // ers_destroy +#include "../common/showmsg.hpp" +#include "../common/timer.hpp" +#include "../common/nullpo.hpp" +#include "../common/db.hpp" +#include "../common/malloc.hpp" +#include "../common/random.hpp" +#include "../common/socket.hpp" +#include "../common/ers.hpp" // ers_destroy #include "achievement.hpp" #include "map.hpp" @@ -416,11 +416,35 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data if (bl->x == ud->to_x && bl->y == ud->to_y) { if (ud->walk_done_event[0]){ - npc_event_do_id(ud->walk_done_event,bl->id); - ud->walk_done_event[0] = 0; + char walk_done_event[EVENT_NAME_LENGTH]; + + // Copying is required in case someone uses unitwalkto inside the event code + safestrncpy(walk_done_event, ud->walk_done_event, EVENT_NAME_LENGTH); + + ud->state.walk_script = true; + + // Execute the event + npc_event_do_id(walk_done_event,bl->id); + + ud->state.walk_script = false; + + // Check if the unit was killed + if( status_isdead(bl) ){ + struct mob_data* md = BL_CAST(BL_MOB, bl); + + if( md && !md->spawn ){ + unit_free(bl, CLR_OUTSIGHT); + } + + return 0; + } + + // Check if another event was set + if( !strcmp(ud->walk_done_event,walk_done_event) ){ + // If not remove it + ud->walk_done_event[0] = 0; + } } - if (ud->state.walk_script) - ud->state.walk_script = 0; } switch(bl->type) { @@ -804,7 +828,7 @@ void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_se // If you can't run forward, you must be next to a wall, so bounce back. [Skotlex] if (type == SC_RUN) - clif_status_change(bl, SI_BUMP, 1, 0, 0, 0, 0); + clif_status_change(bl, EFST_TING, 1, 0, 0, 0, 0); // Set running to 0 beforehand so status_change_end knows not to enable spurt [Kevin] unit_bl2ud(bl)->state.running = 0; @@ -812,7 +836,7 @@ void unit_run_hit(struct block_list *bl, struct status_change *sc, struct map_se if (type == SC_RUN) { skill_blown(bl, bl, skill_get_blewcount(TK_RUN, lv), unit_getdir(bl), BLOWN_NONE); - clif_status_change(bl, SI_BUMP, 0, 0, 0, 0, 0); + clif_status_change(bl, EFST_TING, 0, 0, 0, 0, 0); } else if (sd) { clif_fixpos(bl); skill_castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, gettick(), SD_LEVEL); @@ -1695,6 +1719,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui switch( skill_id ) { case NPC_SUMMONSLAVE: case NPC_SUMMONMONSTER: + case NPC_DEATHSUMMON: case AL_TELEPORT: if( ((TBL_MOB*)src)->master_id && ((TBL_MOB*)src)->special_state.ai ) return 0; diff --git a/src/map/unit.hpp b/src/map/unit.hpp index 137eb1eeee..9b000fac10 100644 --- a/src/map/unit.hpp +++ b/src/map/unit.hpp @@ -4,7 +4,7 @@ #ifndef _UNIT_HPP_ #define _UNIT_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" #include "path.hpp" // struct walkpath_data #include "skill.hpp" // struct skill_timerskill, struct skill_unit_group, struct skill_unit_group_tickset diff --git a/src/map/vending.cpp b/src/map/vending.cpp index 6de6acea29..eaada323fb 100755 --- a/src/map/vending.cpp +++ b/src/map/vending.cpp @@ -2,11 +2,11 @@ // For more information, see LICENCE in the main folder #include "vending.hpp" -#include "../common/nullpo.h" -#include "../common/malloc.h" // aMalloc, aFree -#include "../common/showmsg.h" // ShowInfo -#include "../common/strlib.h" -#include "../common/timer.h" // DIFF_TICK +#include "../common/nullpo.hpp" +#include "../common/malloc.hpp" // aMalloc, aFree +#include "../common/showmsg.hpp" // ShowInfo +#include "../common/strlib.hpp" +#include "../common/timer.hpp" // DIFF_TICK #include "buyingstore.hpp" #include "clif.hpp" diff --git a/src/map/vending.hpp b/src/map/vending.hpp index 0781dc0cbf..63bfa32cb6 100644 --- a/src/map/vending.hpp +++ b/src/map/vending.hpp @@ -4,9 +4,9 @@ #ifndef _VENDING_HPP_ #define _VENDING_HPP_ -#include "../common/cbasetypes.h" +#include "../common/cbasetypes.hpp" -#include "../common/db.h" +#include "../common/db.hpp" struct map_session_data; struct s_search_store_search; diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt deleted file mode 100644 index 9fb5d31174..0000000000 --- a/src/test/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ - -# -# basic_test -# - -option( BUILD_TESTS "build basic_test executable" ON ) - -if( BUILD_TESTS ) - - set( TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "" ) - message( STATUS "Creating target basic_test" ) - file(GLOB TESTS_HEADERS ${TESTS_SOURCE_DIR}/*.hpp) - file(GLOB TESTS_SOURCES ${TESTS_SOURCE_DIR}/*.cpp) - - - set( DEPENDENCIES common) - set( LIBRARIES ${GLOBAL_LIBRARIES}) - set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} ) - set( DEFINITIONS "${GLOBAL_DEFINITIONS} ${COMMON_BASE_DEFINITIONS} -DCMAKE" ) - set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ${TESTS_HEADERS} ${TESTS_SOURCES} ) - source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ) - source_group( test FILES ${TESTS_HEADERS} ${TESTS_SOURCES} ) - include_directories( ${INCLUDE_DIRS} ) - - #message( STATUS "basic_test SOURCE_FILES=${SOURCE_FILES}") - add_executable( basic_test ${SOURCE_FILES} ) - #message( STATUS "basic_test LIBRARIES=${LIBRARIES}, DEPENDENCIES=${DEPENDENCIES} DEFINITIONS=${DEFINITIONS}") - add_dependencies( basic_test ${DEPENDENCIES} ) - target_link_libraries( basic_test ${LIBRARIES} ${DEPENDENCIES} ) - set_target_properties( basic_test PROPERTIES COMPILE_FLAGS "${DEFINITIONS}" ) - - if( INSTALL_COMPONENT_RUNTIME ) - cpack_add_component( Runtime_tests DESCRIPTION "basic integration test" DISPLAY_NAME "basic_test" GROUP Runtime ) - install( TARGETS basic_test - DESTINATION "." - COMPONENT Runtime_tests ) - endif( INSTALL_COMPONENT_RUNTIME ) - set( TARGET_LIST ${TARGET_LIST} basic_test CACHE INTERNAL "" ) - message( STATUS "Creating target basic_test - done" ) - -endif( BUILD_TESTS ) diff --git a/src/test/basic_test.vcxproj b/src/test/basic_test.vcxproj deleted file mode 100644 index 1c32f3b872..0000000000 --- a/src/test/basic_test.vcxproj +++ /dev/null @@ -1,171 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Debug|x64"> - <Configuration>Debug</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|x64"> - <Configuration>Release</Configuration> - <Platform>x64</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{99B4DF6A-6180-4E7F-9227-F812FF30414A}</ProjectGuid> - <Keyword>Win32Proj</Keyword> - <RootNamespace>basic_test</RootNamespace> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset> - <WholeProgramOptimization>true</WholeProgramOptimization> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>true</UseDebugLibraries> - <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> - <ConfigurationType>Application</ConfigurationType> - <UseDebugLibraries>false</UseDebugLibraries> - <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset> - <WholeProgramOptimization>true</WholeProgramOptimization> - <CharacterSet>MultiByte</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Label="Shared"> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <LinkIncremental>true</LinkIncremental> - <OutDir>$(SolutionDir)</OutDir> - <IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <LinkIncremental>true</LinkIncremental> - <OutDir>$(SolutionDir)</OutDir> - <IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <LinkIncremental>false</LinkIncremental> - <OutDir>$(SolutionDir)</OutDir> - <IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <LinkIncremental>false</LinkIncremental> - <OutDir>$(SolutionDir)</OutDir> - <IntDir>$(SolutionDir).vs\build\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> - <ClCompile> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>Disabled</Optimization> - <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>Disabled</Optimization> - <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>MaxSpeed</Optimization> - <FunctionLevelLinking>true</FunctionLevelLinking> - <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <OptimizeReferences>true</OptimizeReferences> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> - <ClCompile> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - <WarningLevel>Level3</WarningLevel> - <Optimization>MaxSpeed</Optimization> - <FunctionLevelLinking>true</FunctionLevelLinking> - <IntrinsicFunctions>true</IntrinsicFunctions> - <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <SDLCheck>true</SDLCheck> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - </ClCompile> - <Link> - <SubSystem>Console</SubSystem> - <EnableCOMDATFolding>true</EnableCOMDATFolding> - <OptimizeReferences>true</OptimizeReferences> - <GenerateDebugInformation>true</GenerateDebugInformation> - <AdditionalDependencies>ws2_32.lib;$(SolutionDir).vs\build\common.lib;$(SolutionDir).vs\build\libconfig.lib;$(SolutionDir).vs\build\mt19937ar.lib;$(SolutionDir)3rdparty\zlib\lib\$(Platform)\zlib.lib;$(SolutionDir)3rdparty\pcre\lib\$(Platform)\pcre8.lib;$(SolutionDir)3rdparty\mysql\lib\$(Platform)\libmysql.lib;$(SolutionDir).vs\build\yaml-cpp.lib;%(AdditionalDependencies)</AdditionalDependencies> - </Link> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="basictest.cpp" /> - <ClCompile Include="test_spinlock.cpp" /> - <ClCompile Include="test_thread.cpp" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="test_spinlock.hpp" /> - <ClInclude Include="test_thread.hpp" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file diff --git a/src/test/basic_test.vcxproj.filters b/src/test/basic_test.vcxproj.filters deleted file mode 100644 index 9a601b6035..0000000000 --- a/src/test/basic_test.vcxproj.filters +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Source Files"> - <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> - <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> - </Filter> - <Filter Include="Header Files"> - <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> - <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="basictest.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="test_thread.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="test_spinlock.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - </ItemGroup> - <ItemGroup> - <ClInclude Include="test_spinlock.hpp"> - <Filter>Header Files</Filter> - </ClInclude> - <ClInclude Include="test_thread.hpp"> - <Filter>Header Files</Filter> - </ClInclude> - </ItemGroup> -</Project> \ No newline at end of file diff --git a/src/test/basictest.cpp b/src/test/basictest.cpp deleted file mode 100644 index b44485252d..0000000000 --- a/src/test/basictest.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// basictest.cpp : Sets the entry point for the console application. -// - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#ifndef _WIN32 -#include <unistd.h> -#endif - -#include "../common/core.h" -#include "test_thread.hpp" -#include "test_spinlock.hpp" - -using namespace ra::unit_tests; - -int do_init( int, char** ) -{ - test_thread_creation_and_wait(); - test_thread_spinlock(); - return 0; -} - -//just some empty function to comply link -void do_abort(void) {} -void do_final(void) {} -void set_server_type(void) {} - -//tmp tp avoid link issue in cmake -#if defined(CMAKE) -#ifdef __cplusplus -extern "C" { -#endif - void Sql_Init(void) {} -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/test/test_spinlock.cpp b/src/test/test_spinlock.cpp deleted file mode 100644 index 3068485f89..0000000000 --- a/src/test/test_spinlock.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "test_spinlock.hpp" -#include <chrono> -#include <thread> - -#include "../common/thread.h" -#include "../common/spinlock.h" -#include "../common/showmsg.h" -#include "test_thread.hpp" - -namespace ra -{ - namespace unit_tests - { - static SPIN_LOCK lSpinLock; - - void* thread_test_critical( void *x ) - { - size_t count = 0; - while ( count++ < 10 ) - { - EnterSpinLock( &lSpinLock ); - ShowStatus( "TH Entering critical_section recursion_count=%d iteration_count=%d\n", lSpinLock.nest,count ); - std::this_thread::sleep_for(std::chrono::milliseconds( 100 )); //a simple test with critical section - ShowStatus( "TH Leaving critical_section recursion_count=%d\n iteration_count=%d", lSpinLock.nest,count ); - LeaveSpinLock( &lSpinLock ); - rathread_yield(); - std::this_thread::sleep_for(std::chrono::milliseconds( 200 )); //let try to lose the lock here - } - return nullptr; - } - - void test_thread_spinlock() - { - ShowStatus( "Testing test_thread_spinlock\n" ); - InitializeSpinLock( &lSpinLock ); - - EnterSpinLock( &lSpinLock ); //fake critical section (we take it before creation to ensure we have the lock) - ShowStatus( "Main Entering critical_section recursion_count=%d\n", lSpinLock.nest ); - - prAthread lnd2th = rathread_create( &thread_test_critical, nullptr ); - int lMainID = rathread_get_tid(); - ShowStatus( "Continuing main th id=%d\n", lMainID ); - rathread_yield(); - std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) ); //fake doing stuff - ShowStatus( "Main Leaving critical_section recursion_count=%d\n", lSpinLock.nest ); - LeaveSpinLock( &lSpinLock ); - - std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) ); //fake doing stuff - EnterSpinLock( &lSpinLock ); //now we should be waiting - ShowStatus( "Main Entering critical_section recursion_count=%d\n", lSpinLock.nest ); - - EnterSpinLock( &lSpinLock ); //testing with a recursion - ShowStatus( "Main Entering critical_section recursion_count=%d\n", lSpinLock.nest ); - std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) ); //fake doing stuff - ShowStatus( "Main Leaving critical_section recursion_count=%d\n", lSpinLock.nest ); - LeaveSpinLock( &lSpinLock ); - - ShowStatus( "Main Leaving critical_section recursion_count=%d\n", lSpinLock.nest ); - LeaveSpinLock( &lSpinLock ); - - while ( !rathread_wait( lnd2th, nullptr ) ) - { - ShowStatus( "Waiting 2nd thread\n" ); - std::this_thread::sleep_for( std::chrono::seconds( 1 ) ); - } - rathread_destroy( lnd2th ); - FinalizeSpinLock( &lSpinLock ); - } - - } -} - -/* Expected result -[Status]: Testing test_thread_spinlock -[Status]: Main Entering critical_section recursion_count=1 -[Status]: Continuing main th id=0 -[Status]: Main Leaving critical_section recursion_count=1 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=1 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=1 -[Status]: Main Entering critical_section recursion_count=1 -[Status]: Main Entering critical_section recursion_count=2 -[Status]: Main Leaving critical_section recursion_count=2 -[Status]: Main Leaving critical_section recursion_count=1 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=2 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=2 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=3 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=3 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=4 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=4 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=5 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=5 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=6 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=6 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=7 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=7 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=8 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=8 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=9 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=9 -[Status]: TH Entering critical_section recursion_count=1 iteration_count=10 -[Status]: TH Leaving critical_section recursion_count=1 iteration_count=10 -*/ \ No newline at end of file diff --git a/src/test/test_spinlock.hpp b/src/test/test_spinlock.hpp deleted file mode 100644 index 9e044865fc..0000000000 --- a/src/test/test_spinlock.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -namespace ra -{ - namespace unit_tests - { - //main - void test_thread_spinlock(); - //subs - void* thread_test_critical( void *x ); //must match rAthreadProc signature - } -} diff --git a/src/test/test_thread.cpp b/src/test/test_thread.cpp deleted file mode 100644 index 715ee39193..0000000000 --- a/src/test/test_thread.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "test_thread.hpp" -#include <chrono> -#include <thread> - -#include "../common/thread.h" -#include "../common/showmsg.h" - - -namespace ra -{ - namespace unit_tests - { - void* thread_test(void *x) - { - ShowStatus( "Entering thread_test\n" ); - int lTHID = rathread_get_tid(); - ShowStatus( "test th id=%d\n",lTHID); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - ShowStatus( "Leaving thread_test\n" ); - return nullptr; - } - - void test_thread_creation_and_wait() - { - ShowStatus( "Testing thread_creation_and_wait\n" ); - prAthread lnd2th = rathread_create(&thread_test,nullptr); - //rathread_yield(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); //fake doing stuff - int lMainID = rathread_get_tid(); - ShowStatus( "Continuing main th id=%d\n",lMainID); - while ( !rathread_wait( lnd2th, nullptr ) ) - { - ShowStatus( "Waiting 2nd thread\n" ); - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - rathread_destroy(lnd2th); //will be destroy anyway by manager if not - } - - } -} - -/* Expected result -[Status]: Testing thread_creation_and_wait -[Status]: Entering thread_test -[Status]: test th id=1 -[Status]: Continuing main th id=0 -[Status]: Leaving thread_test -*/ \ No newline at end of file diff --git a/src/test/test_thread.hpp b/src/test/test_thread.hpp deleted file mode 100644 index 2ca9880dc6..0000000000 --- a/src/test/test_thread.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -namespace ra -{ - namespace unit_tests - { - //main - void test_thread_creation_and_wait(); - //sub - void* thread_test( void *x ); //must match rAthreadProc signature - } -} diff --git a/src/tool/CMakeLists.txt b/src/tool/CMakeLists.txt index a54ffa0e22..f14c464d66 100644 --- a/src/tool/CMakeLists.txt +++ b/src/tool/CMakeLists.txt @@ -11,18 +11,18 @@ if( BUILD_MAPCACHE ) message( STATUS "Creating target mapcache" ) set( COMMON_HEADERS ${COMMON_MINI_HEADERS} - "${COMMON_SOURCE_DIR}/des.h" - "${COMMON_SOURCE_DIR}/grfio.h" - "${COMMON_SOURCE_DIR}/utils.h" + "${COMMON_SOURCE_DIR}/des.hpp" + "${COMMON_SOURCE_DIR}/grfio.hpp" + "${COMMON_SOURCE_DIR}/utils.hpp" ) set( COMMON_SOURCES ${COMMON_MINI_SOURCES} - "${COMMON_SOURCE_DIR}/des.c" - "${COMMON_SOURCE_DIR}/grfio.c" - "${COMMON_SOURCE_DIR}/utils.c" + "${COMMON_SOURCE_DIR}/des.cpp" + "${COMMON_SOURCE_DIR}/grfio.cpp" + "${COMMON_SOURCE_DIR}/utils.cpp" ) set( MAPCACHE_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/mapcache.c" + "${CMAKE_CURRENT_SOURCE_DIR}/mapcache.cpp" ) set( LIBRARIES ${GLOBAL_LIBRARIES} ${ZLIB_LIBRARIES} ) set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${COMMON_MINI_INCLUDE_DIRS} ) diff --git a/src/tool/Makefile.in b/src/tool/Makefile.in index 8e37c1113e..fdf5e6bccc 100644 --- a/src/tool/Makefile.in +++ b/src/tool/Makefile.in @@ -1,14 +1,14 @@ COMMON_OBJ = minicore.o malloc.o showmsg.o strlib.o utils.o des.o grfio.o COMMON_DIR_OBJ = $(COMMON_OBJ:%=../common/obj/%) -COMMON_H = $(shell ls ../common/*.h) +COMMON_H = $(shell ls ../common/*.hpp) COMMON_INCLUDE = -I../common/ LIBCONFIG_H = $(shell ls ../../3rdparty/libconfig/*.h) LIBCONFIG_AR = ../../3rdparty/libconfig/obj/libconfig.a LIBCONFIG_INCLUDE = -I../../3rdparty/libconfig -OTHER_H = ../config/renewal.h +OTHER_H = ../config/renewal.hpp MAPCACHE_OBJ = obj_all/mapcache.o @@ -21,7 +21,7 @@ all: mapcache mapcache: obj_all $(MAPCACHE_OBJ) $(COMMON_DIR_OBJ) $(LIBCONFIG_OBJ) @echo " LD $@" - @@CC@ @LDFLAGS@ -o ../../mapcache@EXEEXT@ $(MAPCACHE_OBJ) $(COMMON_DIR_OBJ) $(LIBCONFIG_AR) @LIBS@ + @@CXX@ @LDFLAGS@ -o ../../mapcache@EXEEXT@ $(MAPCACHE_OBJ) $(COMMON_DIR_OBJ) $(LIBCONFIG_AR) @LIBS@ clean: @echo " CLEAN tool" @@ -39,9 +39,9 @@ help: obj_all: -mkdir obj_all -obj_all/%.o: %.c $(COMMON_H) $(OTHER_H) $(LIBCONFIG_H) - @echo " CC $<" - @@CC@ @CFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $< +obj_all/%.o: %.cpp $(COMMON_H) $(OTHER_H) $(LIBCONFIG_H) + @echo " CXX $<" + @@CXX@ @CXXFLAGS@ $(COMMON_INCLUDE) $(LIBCONFIG_INCLUDE) @CPPFLAGS@ -c $(OUTPUT_OPTION) $< # missing common object files $(COMMON_DIR_OBJ): diff --git a/src/tool/mapcache.c b/src/tool/mapcache.cpp similarity index 95% rename from src/tool/mapcache.c rename to src/tool/mapcache.cpp index 228595ae5c..af8a2765b5 100644 --- a/src/tool/mapcache.c +++ b/src/tool/mapcache.cpp @@ -9,11 +9,11 @@ #include <unistd.h> #endif -#include "../common/mmo.h" -#include "../common/grfio.h" -#include "../common/malloc.h" -#include "../common/showmsg.h" -#include "../common/utils.h" +#include "../common/mmo.hpp" +#include "../common/grfio.hpp" +#include "../common/malloc.hpp" +#include "../common/showmsg.hpp" +#include "../common/utils.hpp" #define NO_WATER 1000000 @@ -266,12 +266,12 @@ int do_init(int argc, char** argv) name[MAP_NAME_LENGTH_EXT-1] = '\0'; remove_extension(name); if(find_map(name)) - ShowInfo("Map '"CL_WHITE"%s"CL_RESET"' already in cache.\n", name); + ShowInfo("Map '" CL_WHITE "%s" CL_RESET "' already in cache.\n", name); else if(read_map(name, &map)) { cache_map(name, &map); - ShowInfo("Map '"CL_WHITE"%s"CL_RESET"' successfully cached.\n", name); + ShowInfo("Map '" CL_WHITE "%s" CL_RESET "' successfully cached.\n", name); } else - ShowError("Map '"CL_WHITE"%s"CL_RESET"' not found!\n", name); + ShowError("Map '" CL_WHITE "%s" CL_RESET "' not found!\n", name); } diff --git a/src/tool/mapcache.vcxproj b/src/tool/mapcache.vcxproj index 13ee343a3d..e23635dda0 100644 --- a/src/tool/mapcache.vcxproj +++ b/src/tool/mapcache.vcxproj @@ -155,7 +155,7 @@ </Link> </ItemDefinitionGroup> <ItemGroup> - <ClCompile Include="mapcache.c" /> + <ClCompile Include="mapcache.cpp" /> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> diff --git a/src/tool/mapcache.vcxproj.filters b/src/tool/mapcache.vcxproj.filters index 9513bbba12..0980d8139d 100644 --- a/src/tool/mapcache.vcxproj.filters +++ b/src/tool/mapcache.vcxproj.filters @@ -11,7 +11,7 @@ </Filter> </ItemGroup> <ItemGroup> - <ClCompile Include="mapcache.c"> + <ClCompile Include="mapcache.cpp"> <Filter>Source Files</Filter> </ClCompile> </ItemGroup>