Sfoglia il codice sorgente

Merge branch 'master' into cleanup/storages_optimization

Conflicts:
	doc/script_commands.txt
	src/map/pc.c
	src/map/script.c
aleos89 9 anni fa
parent
commit
eeccb70050
100 ha cambiato i file con 1889 aggiunte e 1527 eliminazioni
  1. 1 0
      .gitignore
  2. 19 14
      3rdparty/zlib/include/zconf.h
  3. 36 12
      3rdparty/zlib/include/zlib.h
  4. BIN
      3rdparty/zlib/lib/zdll.lib
  5. 0 0
      3rdparty/zlib/zlib-1.2.8
  6. 3 1
      AUTHORS
  7. 5 0
      conf/battle/drops.conf
  8. 2 1
      conf/battle/monster.conf
  9. 2 0
      conf/battle/player.conf
  10. 4 1
      conf/msg_conf/char_msg.conf
  11. 6 3
      conf/msg_conf/map_msg.conf
  12. 1 4
      conf/msg_conf/map_msg_chn.conf
  13. 1 4
      conf/msg_conf/map_msg_frn.conf
  14. 1 1
      conf/msg_conf/map_msg_idn.conf
  15. 1 4
      conf/msg_conf/map_msg_por.conf
  16. 1 4
      conf/msg_conf/map_msg_rus.conf
  17. 1 4
      conf/msg_conf/map_msg_spn.conf
  18. 1 4
      conf/msg_conf/map_msg_tha.conf
  19. 0 33
      db/const.txt
  20. 3 2
      db/import-tmpl/instance_db.txt
  21. 4 0
      db/import-tmpl/item_bluebox.txt
  22. 4 0
      db/import-tmpl/item_cardalbum.txt
  23. 4 0
      db/import-tmpl/item_findingore.txt
  24. 4 0
      db/import-tmpl/item_giftbox.txt
  25. 4 0
      db/import-tmpl/item_misc.txt
  26. 3 0
      db/import-tmpl/item_noequip.txt
  27. 4 0
      db/import-tmpl/item_package.txt
  28. 4 0
      db/import-tmpl/item_violetbox.txt
  29. 1 2
      db/import-tmpl/mob_boss.txt
  30. 1 2
      db/import-tmpl/mob_branch.txt
  31. 1 2
      db/import-tmpl/mob_classchange.txt
  32. 1 2
      db/import-tmpl/mob_poring.txt
  33. 1 2
      db/import-tmpl/mob_pouch.txt
  34. 34 1
      db/packet_db.txt
  35. 7 5
      db/pre-re/instance_db.txt
  36. 9 9
      db/pre-re/item_db.txt
  37. 0 6
      db/pre-re/item_group_db.txt
  38. 3 0
      db/pre-re/item_noequip.txt
  39. 0 0
      db/pre-re/job_basehpsp_db.txt
  40. 362 362
      db/pre-re/mob_db.txt
  41. 8 2
      db/pre-re/mob_race2_db.txt
  42. 0 5
      db/pre-re/mob_random_db.txt
  43. 59 59
      db/pre-re/mob_skill_db.txt
  44. 1 1
      db/pre-re/skill_cast_db.txt
  45. 6 6
      db/pre-re/skill_db.txt
  46. 1 1
      db/pre-re/skill_require_db.txt
  47. 1 0
      db/pre-re/skill_unit_db.txt
  48. 16 14
      db/re/instance_db.txt
  49. 39 9
      db/re/item_combo_db.txt
  50. 267 103
      db/re/item_db.txt
  51. 0 7
      db/re/item_group_db.txt
  52. 3 0
      db/re/item_noequip.txt
  53. 1 1
      db/re/job_basehpsp_db.txt
  54. 1 1
      db/re/job_db1.txt
  55. 37 37
      db/re/level_penalty.txt
  56. 341 341
      db/re/mob_db.txt
  57. 11 2
      db/re/mob_race2_db.txt
  58. 0 5
      db/re/mob_random_db.txt
  59. 118 118
      db/re/mob_skill_db.txt
  60. 5 5
      db/re/produce_db.txt
  61. 17 17
      db/re/quest_db.txt
  62. 5 5
      db/re/skill_cast_db.txt
  63. 8 8
      db/re/skill_db.txt
  64. 1 1
      db/re/skill_require_db.txt
  65. 2 1
      db/re/skill_unit_db.txt
  66. 1 0
      db/skill_copyable_db.txt
  67. 4 0
      doc/atcommands.txt
  68. 4 4
      doc/ea_job_system.txt
  69. 5 1
      doc/item_bonus.txt
  70. 56 55
      doc/mob_db_mode_list.txt
  71. 140 61
      doc/script_commands.txt
  72. 15 23
      npc/cities/lighthalzen.txt
  73. 5 8
      npc/custom/card_remover.txt
  74. 21 21
      npc/custom/etc/marriage.txt
  75. 1 1
      npc/custom/etc/quest_warper.txt
  76. 8 8
      npc/custom/events/cluckers.txt
  77. 2 2
      npc/custom/events/disguise.txt
  78. 5 6
      npc/custom/item_signer.txt
  79. 31 45
      npc/custom/resetnpc.txt
  80. 1 1
      npc/guild/agit_main.txt
  81. 1 1
      npc/guild2/agit_main_se.txt
  82. 1 1
      npc/jobs/1-1e/gunslinger.txt
  83. 1 1
      npc/jobs/1-1e/taekwon.txt
  84. 8 6
      npc/jobs/2-1/assassin.txt
  85. 1 1
      npc/jobs/novice/supernovice.txt
  86. 1 1
      npc/kafras/cool_event_corp.txt
  87. 2 2
      npc/kafras/functions_kafras.txt
  88. 4 5
      npc/merchants/advanced_refiner.txt
  89. 5 6
      npc/merchants/refine.txt
  90. 49 1
      npc/other/Global_Functions.txt
  91. 2 2
      npc/pre-re/jobs/1-1/acolyte.txt
  92. 2 2
      npc/pre-re/jobs/1-1/archer.txt
  93. 2 2
      npc/pre-re/jobs/1-1/mage.txt
  94. 2 2
      npc/pre-re/jobs/1-1/merchant.txt
  95. 3 3
      npc/pre-re/jobs/1-1/swordman.txt
  96. 2 2
      npc/pre-re/jobs/1-1/thief.txt
  97. 3 3
      npc/quests/quests_13_1.txt
  98. 3 3
      npc/quests/quests_13_2.txt
  99. 9 11
      npc/quests/seals/mjolnir_seal.txt
  100. 2 2
      npc/quests/thana_quest.txt

+ 1 - 0
.gitignore

@@ -100,6 +100,7 @@ Thumbs.db
 
 # /vcproj-14/
 .vs
+*.VC.db
 /vcproj-14/char-server
 /vcproj-14/login-server
 /vcproj-14/mapcache

+ 19 - 14
3rdparty/zlib/include/zconf.h

@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2012 Jean-loup Gailly.
+ * Copyright (C) 1995-2013 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -21,6 +21,7 @@
 #  define _dist_code            z__dist_code
 #  define _length_code          z__length_code
 #  define _tr_align             z__tr_align
+#  define _tr_flush_bits        z__tr_flush_bits
 #  define _tr_flush_block       z__tr_flush_block
 #  define _tr_init              z__tr_init
 #  define _tr_stored_block      z__tr_stored_block
@@ -77,6 +78,7 @@
 #      define gzopen_w              z_gzopen_w
 #    endif
 #    define gzprintf              z_gzprintf
+#    define gzvprintf             z_gzvprintf
 #    define gzputc                z_gzputc
 #    define gzputs                z_gzputs
 #    define gzread                z_gzread
@@ -103,6 +105,7 @@
 #  define inflateReset          z_inflateReset
 #  define inflateReset2         z_inflateReset2
 #  define inflateSetDictionary  z_inflateSetDictionary
+#  define inflateGetDictionary  z_inflateGetDictionary
 #  define inflateSync           z_inflateSync
 #  define inflateSyncPoint      z_inflateSyncPoint
 #  define inflateUndermine      z_inflateUndermine
@@ -388,20 +391,14 @@ typedef uLong FAR uLongf;
    typedef Byte       *voidp;
 #endif
 
-/* ./configure may #define Z_U4 here */
-
 #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 #  include <limits.h>
 #  if (UINT_MAX == 0xffffffffUL)
 #    define Z_U4 unsigned
-#  else
-#    if (ULONG_MAX == 0xffffffffUL)
-#      define Z_U4 unsigned long
-#    else
-#      if (USHRT_MAX == 0xffffffffUL)
-#        define Z_U4 unsigned short
-#      endif
-#    endif
+#  elif (ULONG_MAX == 0xffffffffUL)
+#    define Z_U4 unsigned long
+#  elif (USHRT_MAX == 0xffffffffUL)
+#    define Z_U4 unsigned short
 #  endif
 #endif
 
@@ -425,8 +422,16 @@ typedef uLong FAR uLongf;
 #  endif
 #endif
 
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#  ifndef Z_SOLO
+#    include <stdarg.h>         /* for va_list */
+#  endif
+#endif
+
 #ifdef _WIN32
-#  include <stddef.h>           /* for wchar_t */
+#  ifndef Z_SOLO
+#    include <stddef.h>         /* for wchar_t */
+#  endif
 #endif
 
 /* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
@@ -435,7 +440,7 @@ typedef uLong FAR uLongf;
  * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
  * equivalently requesting no 64-bit operations
  */
-#if defined(LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
+#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
 #  undef _LARGEFILE64_SOURCE
 #endif
 
@@ -443,7 +448,7 @@ typedef uLong FAR uLongf;
 #  define Z_HAVE_UNISTD_H
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(LARGEFILE64_SOURCE)
+#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */

+ 36 - 12
3rdparty/zlib/include/zlib.h

@@ -1,7 +1,7 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.7, May 2nd, 2012
+  version 1.2.8, April 28th, 2013
 
-  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
+  Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.7"
-#define ZLIB_VERNUM 0x1270
+#define ZLIB_VERSION "1.2.8"
+#define ZLIB_VERNUM 0x1280
 #define ZLIB_VER_MAJOR 1
 #define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 7
+#define ZLIB_VER_REVISION 8
 #define ZLIB_VER_SUBREVISION 0
 
 /*
@@ -839,6 +839,21 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
    inflate().
 */
 
+ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
+                                             Bytef *dictionary,
+                                             uInt  *dictLength));
+/*
+     Returns the sliding dictionary being maintained by inflate.  dictLength is
+   set to the number of bytes in the dictionary, and that many bytes are copied
+   to dictionary.  dictionary must have enough space, where 32768 bytes is
+   always enough.  If inflateGetDictionary() is called with dictionary equal to
+   Z_NULL, then only the dictionary length is returned, and nothing is copied.
+   Similary, if dictLength is Z_NULL, then it is not set.
+
+     inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
+   stream state is inconsistent.
+*/
+
 ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
 /*
      Skips invalid compressed data until a possible full flush point (see above
@@ -846,7 +861,7 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
    available input is skipped.  No output is provided.
 
      inflateSync searches for a 00 00 FF FF pattern in the compressed data.
-   All full flush points have this pattern, but not all occurences of this
+   All full flush points have this pattern, but not all occurrences of this
    pattern are full flush points.
 
      inflateSync returns Z_OK if a possible full flush point has been found,
@@ -1007,7 +1022,8 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
    the version of the header file.
 */
 
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
+typedef unsigned (*in_func) OF((void FAR *,
+                                z_const unsigned char FAR * FAR *));
 typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
 
 ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
@@ -1015,11 +1031,12 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
                                     out_func out, void FAR *out_desc));
 /*
      inflateBack() does a raw inflate with a single call using a call-back
-   interface for input and output.  This is more efficient than inflate() for
-   file i/o applications in that it avoids copying between the output and the
-   sliding window by simply making the window itself the output buffer.  This
-   function trusts the application to not change the output buffer passed by
-   the output function, at least until inflateBack() returns.
+   interface for input and output.  This is potentially more efficient than
+   inflate() for file i/o applications, in that it avoids copying between the
+   output and the sliding window by simply making the window itself the output
+   buffer.  inflate() can be faster on modern CPUs when used with large
+   buffers.  inflateBack() trusts the application to not change the output
+   buffer passed by the output function, at least until inflateBack() returns.
 
      inflateBackInit() must be called first to allocate the internal state
    and to initialize the state with the user-provided window buffer.
@@ -1736,6 +1753,13 @@ ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
 ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
                                             const char *mode));
 #endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+#  ifndef Z_SOLO
+ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file,
+                                                  const char *format,
+                                                  va_list va));
+#  endif
+#endif
 
 #ifdef __cplusplus
 }

BIN
3rdparty/zlib/lib/zdll.lib


+ 0 - 0
3rdparty/zlib/zlib-1.2.7 → 3rdparty/zlib/zlib-1.2.8


+ 3 - 1
AUTHORS

@@ -180,6 +180,7 @@ Nexon
 Ni+S
 Nikita
 nini
+Ninja
 NOCTURNE
 nokia
 non
@@ -207,6 +208,7 @@ samuray22
 Sanasol
 Sapientia
 Sara
+secretdataz
 Sel
 Seventh
 shadow
@@ -288,4 +290,4 @@ ZoDIaC
 胡蝶蘭
 過去の人i1
-釈尊
+釈尊

+ 5 - 0
conf/battle/drops.conf

@@ -40,30 +40,35 @@ mvp_item_third_get_time: 2000
 // The rate the common items are dropped (Items that are in the ETC tab, besides card)
 item_rate_common: 100
 item_rate_common_boss: 100
+item_rate_common_mvp: 100
 item_drop_common_min: 1
 item_drop_common_max: 10000
 
 // The rate healing items are dropped (items that restore HP or SP)
 item_rate_heal: 100
 item_rate_heal_boss: 100
+item_rate_heal_mvp: 100
 item_drop_heal_min: 1
 item_drop_heal_max: 10000
 
 // The rate at which usable items (in the item tab) other then healing items are dropped.
 item_rate_use: 100
 item_rate_use_boss: 100
+item_rate_use_mvp: 100
 item_drop_use_min: 1
 item_drop_use_max: 10000
 
 // The rate at which equipment is dropped.
 item_rate_equip: 100
 item_rate_equip_boss: 100
+item_rate_equip_mvp: 100
 item_drop_equip_min: 1
 item_drop_equip_max: 10000
 
 // The rate at which cards are dropped
 item_rate_card: 100
 item_rate_card_boss: 100
+item_rate_card_mvp: 100
 item_drop_card_min: 1
 item_drop_card_max: 10000
 

+ 2 - 1
conf/battle/monster.conf

@@ -154,7 +154,8 @@ force_random_spawn: no
 // 1: Slaves are always aggressive.
 // 2: Slaves are always passive.
 // 3: Same as master's aggressive/passive state.
-slaves_inherit_mode: 2
+// 4: Mode is overwritten with slave mode (official)
+slaves_inherit_mode: 4
 
 // Do summon slaves have the same walking speed as their master?
 // NOTE: The default is 3 for official servers.

+ 2 - 0
conf/battle/player.conf

@@ -135,6 +135,8 @@ friend_auto_add: yes
 invite_request_check: yes
 
 // Players' will drop a 'Skull' when killed?
+// Note: The 'Skull' item (ID 7420) is trade restricted by default. Please check
+// the item_trade database to adjust accordingly.
 // 0 = Disabled
 // 1 = Dropped only in PvP maps
 // 2 = Dropped in all situations

+ 4 - 1
conf/msg_conf/char_msg.conf

@@ -113,7 +113,10 @@
 103: Kagerou
 104: Oboro
 105: Hanbok
-106: Unknown Job
+106: Rebellion
+107: Oktoberfest
+108: Summoner
+109: Unknown Job
 
 //Auction
 200: Auction Manager

+ 6 - 3
conf/msg_conf/map_msg.conf

@@ -946,8 +946,11 @@
 1022: Please enter ban time and a player name (usage: %s <time> <char name>).
 1023: You are not allowed to alter the time of a ban.
 
-//1024: free
-//1025: free
+// @rates
+1024: MVP Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
+
+// @recall
+1025: The player is currently autotrading and cannot be recalled.
 
 // @kick
 1026: Please enter a player name (usage: @kick <char name/ID>).
@@ -1458,7 +1461,7 @@
 1373: %s value is now: %d
 1374: %s value is now: %s
 1375: %s is blank.
-1376: %s data type is not supported: %u
+//1376: free
 
 // @reloadquestdb
 1377: Quest database has been reloaded.

+ 1 - 4
conf/msg_conf/map_msg_chn.conf

@@ -827,9 +827,6 @@
 // @charunblock
 1024: 請輸入角色名稱 (用法: @charunblock <char name>).
 
-// @charunban
-1025: 請輸入角色名稱 (用法: @charunban <char name>).
-
 // @kick
 1026: 請輸入角色名稱 (用法: @kick <char name/ID>).
 
@@ -1337,7 +1334,7 @@
 1373: %s value is now :%d
 1374: %s value is now :%s
 1375: %s is empty
-1376: %s data type is not supported :%u
+//1376: free
 
 // @reloadquestdb
 1377: 完成重載任睥數據庫.

+ 1 - 4
conf/msg_conf/map_msg_frn.conf

@@ -839,9 +839,6 @@
 // @charunblock
 1024: Entrez un nom de Joueur (usage: @charunblock <nom du joueur>).
 
-// @charunban
-1025: Entrez un nom de Joueur (usage: @charunban <nom du joueur>).
-
 // @kick
 1026: Entrez un nom de Joueur (usage: @kick <nom du joueur/ID>).
 
@@ -1350,7 +1347,7 @@
 1373: %s valeur est maintenant :%d
 1374: %s valeur est maintenant :%s
 1375: %s est vide
-1376: Le type de donnée %s n'est pas supportée :%u
+//1376: free
 
 // @reloadquestdb
 1377: Base de données des Quêtes rechargée.

+ 1 - 1
conf/msg_conf/map_msg_idn.conf

@@ -1438,7 +1438,7 @@
 1373: Nilai %s saat ini: %d
 1374: Nilai %s saat ini: %s
 1375: %s kosong
-1376: Jenis data %s tidak didukung: %u
+//1376: free
 
 // @reloadquestdb
 1377: Database Quest sudah dimuat ulang.

+ 1 - 4
conf/msg_conf/map_msg_por.conf

@@ -819,9 +819,6 @@
 // @charunblock
 1024: Digite o nome de um jogador (uso: @charunblock <nome do personagem>).
 
-// @charunban
-1025: Digite o nome de um jogador (uso: @charunban <nome do personagem>).
-
 // @kick
 1026: Digite o nome de um jogador (uso: @kick <nome do personagem/ID>).
 
@@ -1331,7 +1328,7 @@
 1373: %s valor agora é :%d
 1374: %s valor agora é :%s
 1375: %s é vazia
-1376: %s tipo de dado não é suportado :%u
+//1376: free
 
 // @reloadquestdb
 1377: Banco de dados de quest recarregado.

+ 1 - 4
conf/msg_conf/map_msg_rus.conf

@@ -840,9 +840,6 @@
 // @charunblock
 1024: Введите ник персонажа (Использование: @charunblock <ник персонажа>).
 
-// @charunban
-1025: Введите ник персонажа (Использование: @charunban <ник персонажа>).
-
 // @kick
 1026: Введите ник персонажа (Использование: @kick <ID/ник персонажа>).
 
@@ -1350,7 +1347,7 @@
 1373: %s значение :%d
 1374: %s значение :%s
 1375: %s пусто
-1376: %s данные не поддерживаются :%u
+//1376: free
 
 // @reloadquestdb
 1377: База данных квестов перезагружена.

+ 1 - 4
conf/msg_conf/map_msg_spn.conf

@@ -826,9 +826,6 @@
 // @charunblock
 1024: Introduce el nombre de un jugador bloqueado (Instrucciones: @charunblock <nombre del personaje>).
 
-// @charunban
-1025: Introduce el nombre de un jugador bloqueado temporalmente (Instrucciones: @charunban <nombre del personaje>).
-
 // @kick
 1026: Introduce el nombre de un personaje (Instrucciones: @kick <nombre del personaje/ID>).
 
@@ -1336,7 +1333,7 @@
 1373: El valor %s ahora es:%d
 1374: El valor %s ahora es :%s
 1375: %s está vacío
-1376: %s data type is not supported :%u
+//1376: free
 
 // @reloadquestdb
 1377: Se ha actualizado la base de datos de las quest con éxito.

+ 1 - 4
conf/msg_conf/map_msg_tha.conf

@@ -833,9 +833,6 @@
 // @charunblock
 1024: â»Ã´Ãкت×è͵ÑÇÅФà (ÇÔ¸Õãªé: @charunblock <ª×è͵ÑÇÅФÃ>).
 
-// @charunban
-1025: â»Ã´Ãкت×è͵ÑÇÅФà (ÇÔ¸Õãªé: @charunban <ª×è͵ÑÇÅФÃ>).
-
 // @kick
 1026: â»Ã´Ãкت×è͵ÑÇÅФà (ÇÔ¸Õãªé: @kick <ª×èÍ/ID µÑÇÅФÃ>).
 
@@ -1343,7 +1340,7 @@
 1373: %s ÁÕ¤èÒ: %d
 1374: %s ÁÕ¤èÒ: %s
 1375: %s äÁèÁÕ¤èÒã´æ.
-1376: %s »ÃÐàÀ·¢éÍÁÙÅäÁèä´éÃѺ¡ÒÃʹѺʹع: %u
+//1376: free
 
 // @reloadquestdb
 1377: °Ò¹¢éÍÁÙÅ Quest ä´é·Ó¡ÒÃâËÅ´ãËÁèàÃÕºÃéÍÂ.

+ 0 - 33
db/const.txt

@@ -14,30 +14,6 @@
 //                  in field Value. Depending on the implementation values assigned by scripts to parameters will affect
 //                  runtime values, such as Zeny, as well (see pc_readparam/pc_setparam).
 
-// These EQI_ constants do not match with the source EQI_ constants
-// Do not migrate into script_constants.h right now [Lemongrass]
-EQI_HEAD_TOP	1
-EQI_ARMOR	2
-EQI_HAND_L	3
-EQI_HAND_R	4
-EQI_GARMENT	5
-EQI_SHOES	6
-EQI_ACC_L	7
-EQI_ACC_R	8
-EQI_HEAD_MID	9
-EQI_HEAD_LOW	10
-EQI_COSTUME_HEAD_LOW	11
-EQI_COSTUME_HEAD_MID	12
-EQI_COSTUME_HEAD_TOP	13
-EQI_COSTUME_GARMENT	14
-EQI_AMMO	15
-EQI_SHADOW_ARMOR  16
-EQI_SHADOW_WEAPON  17
-EQI_SHADOW_SHIELD  18
-EQI_SHADOW_SHOES  19
-EQI_SHADOW_ACC_R  20
-EQI_SHADOW_ACC_L  21
-
 //Item Group ID
 IG_BlueBox	1
 IG_VioletBox	2
@@ -2480,15 +2456,6 @@ THANATOS_KEEP	10009
 4_F_REBELLION3	10202
 4_M_ILYA	10203
 
-DIR_NORTH	0
-DIR_NORTHWEST	1
-DIR_WEST	2
-DIR_SOUTHWEST	3
-DIR_SOUTH	4
-DIR_SOUTHEAST	5
-DIR_EAST	6
-DIR_NORTHEAST	7
-
 MOBG_Branch_Of_Dead_Tree	0
 MOBG_Poring_Box	1
 MOBG_Bloody_Dead_Branch	2

+ 3 - 2
db/import-tmpl/instance_db.txt

@@ -1,5 +1,6 @@
 // Instance Database
 //
 // Structure of Database:
-// ID,Name,LimitTime,EnterMap,EnterX,EnterY,Map1,Map2,Map3,Map4,Map5,Map6,Map7,Map8
-
+// ID,Name,LimitTime,IdleTimeOut,EnterMap,EnterX,EnterY,Map2,Map3,...,Map255
+//
+// EnterMap is considered as Map1

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

@@ -0,0 +1,4 @@
+// Old Blue Box Obtainable Items Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate

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

@@ -0,0 +1,4 @@
+// Old Card Album Obtainable Items Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate

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

@@ -0,0 +1,4 @@
+// Ore Discovery Obtainable Items Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate

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

@@ -0,0 +1,4 @@
+// Gift Box Obtainable Items Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate

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

@@ -0,0 +1,4 @@
+//
+// Structure of Database:
+// GroupID,ItemID,Rate
+//

+ 3 - 0
db/import-tmpl/item_noequip.txt

@@ -18,10 +18,13 @@
 // 1024 - restricted in zone 6
 // 2048 - restricted in zone 7
 //
+// Passing negative value as flag will unset the flag instead.
+//
 // Examples:
 // 1201,1   // Knife can't be worn on normal maps
 // 608,4    // Yggdrasil Seed can't be consumed in both GvG and WoE Castles
 // 4174,6   // Deviling Card has no effect in every PVP or GVG map, and during WoE
 // 501,32   // Red Potion can't be consumed on maps marked as 'restricted zone 1'
 // 519,322  // Milk can't be consumed in PVP and maps marked as 'restricted zone 2' or 'restricted zone 4' (256+64+2)
+// 519,-2   // Unset `restricted in PVP` flag from Milk. Making it usable in PVP again.
 

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

@@ -0,0 +1,4 @@
+// Item Package Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate{,Amount,Random,isAnnounced,Duration,GUID,isBound,isNamed}

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

@@ -0,0 +1,4 @@
+// Old Violet Box Obtainable Items Database
+//
+// Structure of Database:
+// GroupID,ItemID,Rate

+ 1 - 2
db/import-tmpl/mob_boss.txt

@@ -1,5 +1,4 @@
 // Bloody Branch Summonable Monsters Database
 //
 // Structure of Database:
-// MobID,DummyName,Rate
-
+// MobRandomGroupID,MobID,DummyName,Rate

+ 1 - 2
db/import-tmpl/mob_branch.txt

@@ -1,5 +1,4 @@
 // Dead Branch Summonable Monsters Database
 //
 // Structure of Database:
-// MobID,DummyName,Rate
-
+// MobRandomGroupID,MobID,DummyName,Rate

+ 1 - 2
db/import-tmpl/mob_classchange.txt

@@ -2,5 +2,4 @@
 // List of monsters generated through Abracadabra's SA_CLASSCHANGE ability.
 //
 // Structure of Database:
-// MobID,DummyName,Rate
-
+// MobRandomGroupID,MobID,DummyName,Rate

+ 1 - 2
db/import-tmpl/mob_poring.txt

@@ -1,5 +1,4 @@
 // Poring Box Summonable Monsters Database
 //
 // Structure of Database:
-// MobID,DummyName,Rate
-
+// MobRandomGroupID,MobID,DummyName,Rate

+ 1 - 2
db/import-tmpl/mob_pouch.txt

@@ -1,5 +1,4 @@
 // Red Pouch of Surprise Summonable Monsters Database
 //
 // Structure of Database:
-// MobID,DummyName,Rate
-
+// MobRandomGroupID,MobID,DummyName,Rate

+ 34 - 1
db/packet_db.txt

@@ -2594,5 +2594,38 @@ packet_keys: 0x45B945B9,0x45B945B9,0x45B945B9	// [Dastgir]
 0x0361,5,hommenu,2:4
 0x0860,36,storagepassword,2:4:20
 
+//2015-11-04aRagexe
+packet_ver: 55
+packet_keys: 0x4C17382A,0x7ED174C9,0x29961E4F // [Winnie]
+0x0369,7,actionrequest,2:6
+0x083C,10,useskilltoid,2:4:6
+0x0363,5,walktoxy,2
+0x0886,6,ticksend,2
+0x0928,5,changedir,2:4
+0x0964,6,takeitem,2
+0x0437,6,dropitem,2:4
+0x088B,8,movetokafra,2:4
+0x0364,8,movefromkafra,2:4
+0x0438,10,useskilltopos,2:4:6:8
+0x0366,90,useskilltoposinfo,2:4:6:8:10
+0x0887,6,getcharnamerequest,2
+0x0368,6,solvecharname,2
+0x0838,12,searchstoreinfolistitemclick,2:6:10
+0x0835,2,searchstoreinfonextpage,0
+0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15
+0x0815,-1,reqtradebuyingstore,2:4:8:12
+0x0436,6,reqclickbuyingstore,2
+0x0817,2,reqclosebuyingstore,0
+0x023B,-1,reqopenbuyingstore,2:4:8:9:89
+0x0811,18,bookingregreq,2:4:6
+//0x0939,8 CZ_JOIN_BATTLE_FIELD
+0x093A,-1,itemlistwindowselected,2:4:8:12
+0x0360,19,wanttoconnection,2:6:10:14:18
+0x08A5,26,partyinvite2,2
+//0x08A3,4 CZ_GANGSI_RANK
+0x07EC,26,friendslistadd,2
+0x088D,5,hommenu,2:4
+0x0940,36,storagepassword,2:4:20
+
 //Add new packets here
-//packet_ver: 55
+//packet_ver: 56

+ 7 - 5
db/pre-re/instance_db.txt

@@ -1,9 +1,11 @@
 // Instance Database
 //
 // Structure of Database:
-// ID,Name,LimitTime,EnterMap,EnterX,EnterY,Map1,Map2,Map3,Map4,Map5,Map6,Map7,Map8
+// ID,Name,LimitTime,IdleTimeOut,EnterMap,EnterX,EnterY,Map2,Map3,...,Map255
+//
+// EnterMap is considered as Map1
 
-1,Endless Tower,14400,1@tower,50,355,1@tower,2@tower,3@tower,4@tower,5@tower,6@tower
-2,Sealed Catacomb,7200,1@cata,100,224,1@cata,2@cata
-3,Orc's Memory,3600,1@orcs,179,15,1@orcs,2@orcs
-4,Nidhoggur's Nest,14400,1@nyd,32,36,1@nyd,2@nyd
+1,Endless Tower,14400,300,1@tower,50,355,2@tower,3@tower,4@tower,5@tower,6@tower
+2,Sealed Catacomb,7200,300,1@cata,100,224,2@cata
+3,Orc's Memory,3600,300,1@orcs,179,15,2@orcs
+4,Nidhoggur's Nest,14400,300,1@nyd,32,36,2@nyd

+ 9 - 9
db/pre-re/item_db.txt

@@ -537,7 +537,7 @@
 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; },{},{}
 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",getskilllv("LK_CONCENTRATION")>1?getskilllv("LK_CONCENTRATION"):1,30; bonus3 bAutoSpell,"LK_AURABLADE",getskilllv("LK_AURABLADE")>1?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,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; } },{},{}
 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; },{},{}
@@ -892,7 +892,7 @@
 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(); },{},{}
 1645,Lich_Bone_Wand_M,Lich's Bone Wand,5,20,,800,60,,1,2,0x00018314,2,2,2,3,70,1,10,{ bonus bInt,1; bonus bDex,1; bonus bAtkEle,Ele_Undead; bonus bMatkRate,20; bonus3 bAutoSpellWhenHit,"NPC_WIDECURSE",5,10+getrefine(); if(getrefine()>=9){ bonus bMatkRate,3; bonus bMaxSP,300; } },{},{}
 1646,La'cryma_Stick,La'cryma Stick,5,20,,500,30,,1,2,0x00010204,2,2,2,3,50,1,10,{ bonus bInt,4; bonus bMatkRate,15; bonus bMdef,getrefine(); bonus2 bSkillAtk,"WZ_STORMGUST",getrefine(); if(getrefine()>9) bonus2 bCastrate,"WZ_STORMGUST",-8; },{},{}
-1647,Croce_Staff,Croce Staff,5,20,,500,30,,1,1,0x00008110,2,2,2,3,50,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bInt,4; bonus4 bAutoSpellOnSkill,"AL_HEAL","AL_BLESSING",getskilllv("AL_BLESSING")>1?getskilllv("AL_BLESSING"):1,20; },{},{}
+1647,Croce_Staff,Croce Staff,5,20,,500,30,,1,1,0x00008110,2,2,2,3,50,1,10,{ bonus bAtkEle,Ele_Holy; bonus bMatkRate,15; bonus bInt,4; bonus4 bAutoSpellOnSkill,"AL_HEAL","AL_BLESSING",max(getskilllv("AL_BLESSING"),1),20; },{},{}
 1648,Staff_Of_Bordeaux,Staff Of Bordeaux,5,20,,500,30,,1,0,0x00010204,2,2,2,4,50,1,10,{ bonus bMatkRate,15; bonus bInt,2; bonus bDex,1; if(getskilllv("SA_DRAGONOLOGY")==5) { bonus bUseSPrate,-15; bonus bInt,3; } },{},{}
 // Bows
 1701,Bow,Bow,5,1000,,500,15,,5,3,0x000A0848,7,2,34,1,4,1,11,{},{},{}
@@ -1409,7 +1409,7 @@
 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; },{},{}
-2545,Musika,Musika,4,20,,500,,2,,1,0x00008100,2,2,4,,70,1,0,{ bonus bMdef,3; bonus3 bAutoSpellwhenhit,"AL_HEAL",getskilllv("AL_HEAL")?getskilllv("AL_HEAL"):1,20; },{},{}
+2545,Musika,Musika,4,20,,500,,2,,1,0x00008100,2,2,4,,70,1,0,{ bonus bMdef,3; bonus3 bAutoSpellwhenhit,"AL_HEAL",max(1,getskilllv("AL_HEAL")),20; },{},{}
 2546,Beach_Manteau,Beach Manteau,4,20,,600,,0,,1,0xFFFFFFFF,7,2,4,,0,1,0,{ bonus bStr,1; bonus bInt,1; bonus2 bSubEle,Ele_Fire,10; },{},{}
 2547,Cheap_Running_Shirts,Cheap Undershirt,4,0,,0,,8,,0,0xFFFFFFFF,7,2,4,,0,1,0,{ bonus bDex,2; bonus bFlee,10; bonus2 bSubEle,Ele_Neutral,10; bonus bMdef,1; },{},{}
 2548,Muffler_C,Neo Muffler,4,0,,0,,5,,0,0xFFFFFFFE,2,2,4,,95,0,0,{ bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; bonus bMaxHPrate,10; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Dark,5; },{},{}
@@ -2061,8 +2061,8 @@
 4424,Stapo_Card,Stapo Card,6,20,,10,,,,,,,,136,,,,,{ skill "TF_PICKSTONE",1; skill "TF_THROWSTONE",1; },{},{}
 4425,Atroce_Card,Atroce Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,25; autobonus "{ bonus bAspdRate,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
 4426,Byorgue_Card,Byorgue Card,6,20,,10,,,,,,,,16,,,,,{ if(BaseJob==Job_Rogue) { bonus bMatkRate,10; bonus2 bAddClass,Class_All,10; } },{},{}
-4427,Sword_Guardian_Card,Sword Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==2||getiteminfo(getequipid(EQI_HAND_R),11)==3) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,62,25; } },{},{}
-4428,Bow_Guardian_Card,Bow Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==11) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,47,50; } },{},{}
+4427,Sword_Guardian_Card,Sword Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==W_1HSWORD||getiteminfo(getequipid(EQI_HAND_R),11)==W_2HSWORD) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,62,25; } },{},{}
+4428,Bow_Guardian_Card,Bow Guardian Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==W_BOW) { bonus bHit,5; bonus bCritical,5; bonus2 bSkillAtk,47,50; } },{},{}
 4429,Salamander_Card,Salamander Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSkillAtk,"WZ_FIREPILLAR",40; bonus2 bSkillAtk,"WZ_METEOR",40; },{},{}
 4430,Ifrit_Card,Ifrit Card,6,20,,10,,,,,,,,136,,,,,{ bonus bBaseAtk,(JobLevel/10); bonus bCritical,(JobLevel/10); bonus bHit,(JobLevel/10); bonus3 bAutoSpellWhenHit,"NPC_EARTHQUAKE",2,10; },{},{}
 4431,Kasa_Card,Kasa Card,6,20,,10,,,,,,,,4,,,,,{ bonus3 bAutoSpell,"MG_FIREBALL",5,20; bonus3 bAutoSpell,"MG_FIREBOLT",5,20; },{},{}
@@ -2074,7 +2074,7 @@
 4437,Hell_Poodle_Card,Hell Poodle Card,6,20,,10,,,,,,,,136,,,,,{ bonus bHit,1; bonus2 bAddItemHealRate,517,100; bonus3 bAddEff,Eff_Bleeding,50,ATF_SHORT; },{},{}
 4438,Banshee_Card,Banshee Card,6,20,,10,,,,,,,,769,,,,,{ if(BaseClass==Job_Mage){ bonus bMaxSP,100; bonus bMaxHP,-100; bonus2 bSkillAtk,"MG_NAPALMBEAT",20; bonus2 bSkillAtk,"MG_SOULSTRIKE",20; bonus2 bSkillAtk,"HW_NAPALMVULCAN",20; } },{},{}
 4439,Flame_Skull_Card,Flame Skull Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bResEff,Eff_Blind,3000; bonus2 bResEff,Eff_Stun,3000; bonus2 bResEff,Eff_Curse,3000; bonus2 bResEff,Eff_Stone,3000; bonus2 bAddEffWhenHit,Eff_Blind,500; bonus2 bAddEffWhenHit,Eff_Stun,500; bonus2 bAddEffWhenHit,Eff_Curse,500; bonus2 bAddEffWhenHit,Eff_Stone,500; },{},{}
-4440,Necromancer_Card,Necromancer Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==10) { bonus bInt,1; bonus2 bIgnoreMdefClassRate,Class_Normal,2; bonus2 bIgnoreMdefClassRate,Class_Boss,2; } },{},{}
+4440,Necromancer_Card,Necromancer Card,6,20,,10,,,,,,,,2,,,,,{ if(getiteminfo(getequipid(EQI_HAND_R),11)==W_STAFF) { bonus bInt,1; bonus2 bIgnoreMdefClassRate,Class_Normal,2; bonus2 bIgnoreMdefClassRate,Class_Boss,2; } },{},{}
 4441,Fallen_Bishop_Card,Fallen Bishop Hibram Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,10; bonus bMaxSPrate,-50; bonus2 bMagicAddRace,RC_Angel,50; bonus2 bMagicAddRace,RC_DemiHuman,50; bonus2 bMagicAddRace,RC_Player,50; },{},{}
 4442,Tatacho_Card,Tatacho Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Neutral,20; bonus2 bAddEle,Ele_Neutral,5; },{},{}
 4443,Aqua_Elemental_Card,Aqua Elemental Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Water,20; bonus2 bAddEle,Ele_Water,5; },{},{}
@@ -2990,8 +2990,8 @@
 5812,Hat_Of_Expert,Hat Of Expert,4,0,,0,,2,,0,0xFFFFFFFF,7,2,256,,0,1,16,{},{},{}
 //5813,Red_Ph.D_Hat,Red Ph.D Hat,4,1000,,500,,0,,0,0xFFFFFFFF,7,2,256,,0,1,481,{ bonus bInt,1; },{},{}
 //5814,Ati_Atihan_Hat3
-5815,Cowboy_Hat_J,Purple Cowboy Hat,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,475,{ bonus bStr,1; bonus2 bSubSize, 0, 5; bonus2 bSubSize, 1, 5; bonus2 bSubSize, 2, 5; },{},{}
-5816,Classic_Hat_J,Classic Hat,4,20,,500,,0,,0,0xFFFFFFFF,7,2,256,,0,1,411,{},{},{}
+5815,Classic_Hat_J,Classic Hat,4,20,,500,,2,,0,0xFFFFFFFF,7,2,256,,0,1,475,{ bonus bStr,1; bonus2 bSubSize, 0, 5; bonus2 bSubSize, 1, 5; bonus2 bSubSize, 2, 5; },{},{}
+5816,Cowboy_Hat_J,Purple Cowboy Hat,4,20,,500,,0,,0,0xFFFFFFFF,7,2,256,,0,1,411,{ bonus bBaseAtk,15; bonus bFlee,-5; },{},{}
 5817,Valentine_Pledge,Valentine Pledge,4,20,,0,,3,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAllStats,2; bonus bMdef,3; },{},{}
 5818,Carnival_Hat,Carnival Hat,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,505,{ bonus bAllStats, 3; },{},{}
 5819,Carnival_Circlet,Carnival Circlet,4,0,,0,,6,,0,0xFFFFFFFF,7,2,256,,0,1,506,{ bonus bAllStats, 3; },{},{}
@@ -4784,7 +4784,7 @@
 12217,Aspersio_5_Scroll,LV5 Aspersio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(countitem(523)>0) { skilleffect "PR_ASPERSIO",0; sc_start SC_ASPERSIO,180000,5; delitem 523,1; } },{},{}
 12218,Assumptio_5_Scroll,LV5 Assumptio Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_ASSUMPTIO,100000,5; skilleffect "HP_ASSUMPTIO",0; },{},{}
 12219,Wind_Walk_10_Scroll,LV10 Wind Walker Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ skilleffect "SN_WINDWALK",0; sc_start SC_WINDWALK,250000,5; },{},{}
-12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==6||.@type==7||.@type==8) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{}
+12220,Adrenaline_Scroll,LV5 Adrenaline Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ set .@type,getiteminfo(getequipid(EQI_HAND_R),11); if (.@type==W_1HAXE||.@type==W_2HAXE||.@type==W_MACE) { skilleffect "BS_ADRENALINE",0; sc_start SC_ADRENALINE,150000,5; } },{},{}
 12221,Megaphone_,Megaphone,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ input @megaphone$; announce strcharinfo(0) + ": " + @megaphone$,bc_all,0xFF0000; end; },{},{}
 12225,Sweet_Candy_Striper,Sweet Candy Cane,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1245; },{},{}
 12226,Examination1,Examination 1,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SPEEDUP0,5400000,25; percentheal 100,100; sc_start SC_STRFOOD,5400000,10; sc_start SC_DEXFOOD,5400000,5; sc_start SC_ATKPOTION,5400000,22; sc_start SC_MATKFOOD,5400000,15; },{},{}

+ 0 - 6
db/pre-re/item_group_db.txt

@@ -1,6 +0,0 @@
-import: db/pre-re/item_bluebox.txt
-import: db/pre-re/item_violetbox.txt
-import: db/pre-re/item_cardalbum.txt
-import: db/item_findingore.txt
-import: db/pre-re/item_giftbox.txt
-import: db/pre-re/item_misc.txt

+ 3 - 0
db/pre-re/item_noequip.txt

@@ -18,12 +18,15 @@
 // 1024 - restricted in zone 6
 // 2048 - restricted in zone 7
 //
+// Passing negative value as flag will unset the flag instead.
+//
 // Examples:
 // 1201,1   // Knife can't be worn on normal maps
 // 608,4    // Yggdrasil Seed can't be consumed in both GvG and WoE Castles
 // 4174,6   // Deviling Card has no effect in every PVP or GVG map, and during WoE
 // 501,32   // Red Potion can't be consumed on maps marked as 'restricted zone 1'
 // 519,322  // Milk can't be consumed in PVP and maps marked as 'restricted zone 2' or 'restricted zone 4' (256+64+2)
+// 519,-2   // Unset `restricted in PVP` flag from Milk. Making it usable in PVP again.
 
 //----------------------------------------------------------------------------
 // Normal maps

File diff suppressed because it is too large
+ 0 - 0
db/pre-re/job_basehpsp_db.txt


File diff suppressed because it is too large
+ 362 - 362
db/pre-re/mob_db.txt


+ 8 - 2
db/pre-re/mob_race2_db.txt

@@ -1,7 +1,7 @@
 // Monster Racial Groups Database
 //
 // Structure of Database:
-// Race2ID,MobID1,MobID2,MobID3,...,MobID9
+// Race2ID,MobID1,MobID2,MobID3,...,MobID50
 
 // Goblins
 1,1122,1123,1124,1125,1126,1258,1299
@@ -12,6 +12,12 @@
 // Golems
 4,1040,1278,1366,1497,2024
 // Guardians
-5,1285,1286,1287
+5,1285,1286,1287,2081
 // Ninja Classes (Pirate's_Pride)
 6,1315,1364,1401,1560
+// GvG
+7,1143,1905,1906,1907
+// Battlefield
+8,1906,1909,1914,1915
+// Treasure Chests
+9,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946

+ 0 - 5
db/pre-re/mob_random_db.txt

@@ -1,5 +0,0 @@
-import: db/pre-re/mob_branch.txt
-import: db/pre-re/mob_poring.txt
-import: db/pre-re/mob_boss.txt
-import: db/mob_pouch.txt
-import: db/mob_classchange.txt

+ 59 - 59
db/pre-re/mob_skill_db.txt

@@ -1,4 +1,4 @@
-// Mob Skill Database 
+// Mob Skill Database
 // Based on Aegis Episode 11.3
 //
 // Structure of Database:
@@ -124,8 +124,8 @@
 1028,Skeleton Soldier@NPC_UNDEADATTACK,angry,347,1,2000,0,5000,yes,target,always,0,,,,,,,
 1029,Isis@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1029,Isis@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
-1029,Isis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1029,Isis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3195,,,,,
+1029,Isis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1029,Isis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3095,,,,,
 1030,Anacondaq@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
 1030,Anacondaq@NPC_POISONATTACK,attack,188,1,2000,0,5000,yes,target,always,0,,,,,,,
 1031,Poporing@NPC_EMOTION,loot,197,1,2000,0,5000,yes,self,always,0,2,,,,,,
@@ -143,12 +143,12 @@
 1035,Hunter Fly@AL_TELEPORT,idle,26,1,500,0,5000,yes,self,always,0,,,,,,,
 1035,Hunter Fly@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1035,Hunter Fly@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,6,
-1035,Hunter Fly@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1035,Hunter Fly@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3985,,,,,
+1035,Hunter Fly@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1035,Hunter Fly@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3885,,,,,
 1035,Hunter Fly@NPC_WINDATTACK,attack,187,1,2000,0,5000,yes,target,always,0,,,,,,,
 1035,Hunter Fly@NPC_BLOODDRAIN,angry,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1035,Hunter Fly@NPC_COMBOATTACK,angry,171,1,500,700,5000,no,target,always,0,,,,,,6,
-1035,Hunter Fly@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
+1035,Hunter Fly@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
 1035,Hunter Fly@NPC_WINDATTACK,angry,187,1,2000,0,5000,yes,target,always,0,,,,,,,
 1036,Ghoul@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
 1036,Ghoul@NPC_POISON,angry,176,3,500,800,5000,no,target,always,0,,,,,,,
@@ -489,8 +489,8 @@
 1099,Argiope@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,0,,,,,,,
 1099,Argiope@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
 1099,Argiope@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,0,,,,,,,
-1099,Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1099,Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+1099,Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1099,Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1100,Argos@NPC_POISON,attack,176,2,500,800,5000,no,target,always,0,,,,,,,
 1100,Argos@PF_SPIDERWEB,idle,405,1,3000,0,10000,yes,target,always,0,,,,,,,
 1100,Argos@PF_SPIDERWEB,attack,405,1,2000,0,10000,yes,target,always,0,,,,,,,
@@ -502,8 +502,8 @@
 1101,Baphomet Jr.@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,2,,,,,,
 1101,Baphomet Jr.@NPC_HALLUCINATION,attack,207,1,500,500,5000,yes,target,always,0,,,,,,29,
 1101,Baphomet Jr.@NPC_HALLUCINATION,chase,207,1,500,500,5000,yes,target,always,0,,,,,,29,
-1101,Baphomet Jr.@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1101,Baphomet Jr.@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1101,Baphomet Jr.@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1101,Baphomet Jr.@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1102,Bathory@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,0,,,,,,,
 1102,Bathory@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,0,30,,,,,,
 1102,Bathory@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,30,
@@ -702,8 +702,8 @@
 1138,Magnolia@NPC_UNDEADATTACK,attack,347,1,2000,0,5000,yes,target,always,0,,,,,,,
 1139,Mantis@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,6,
 1139,Mantis@NPC_GROUNDATTACK,attack,185,2,500,500,5000,no,target,always,0,,,,,,6,
-1139,Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1139,Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3195,,,,,
+1139,Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1139,Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3095,,,,,
 1140,Marduk@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1140,Marduk@MG_FIREBOLT,attack,19,3,500,1500,5000,yes,target,always,0,,,,,,9,
 1140,Marduk@MG_FIREBOLT,chase,19,3,500,1500,5000,yes,target,always,0,,,,,,9,
@@ -759,8 +759,8 @@
 1148,Medusa@MG_STONECURSE,attack,16,10,500,1500,5000,no,target,always,0,,,,,,3,
 1148,Medusa@NPC_PETRIFYATTACK,attack,180,5,500,500,5000,no,target,always,0,,,,,,3,
 1148,Medusa@NPC_PETRIFYATTACK,chase,180,5,500,500,5000,no,target,always,0,,,,,,3,
-1148,Medusa@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1148,Medusa@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1148,Medusa@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1148,Medusa@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1149,Minorous@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1149,Minorous@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,0,,,,,,,
 1149,Minorous@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,0,,,,,,6,
@@ -919,8 +919,8 @@
 1179,Whisper@AS_CLOAKING,idle,135,1,2000,200,5000,yes,self,always,0,,,,,,,
 1179,Whisper@AS_CLOAKING,chase,135,1,2000,200,5000,yes,self,always,0,,,,,,,
 1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,,,,,,
-1179,Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,28,0x3195,,,,,
+1179,Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,28,0x3095,,,,,
 1179,Whisper@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,0,,,,,,28,
 1180,Nine-Tail@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1180,Nine-Tail@NPC_ATTRICHANGE,attack,161,1,500,2000,5000,no,self,myhpltmaxrate,30,,,,,,,
@@ -970,8 +970,8 @@
 1193,Alarm@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,6,
 1194,Arclouse@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1194,Arclouse@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
-1194,Arclouse@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1194,Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+1194,Arclouse@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1194,Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1195,Rideword@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
 1195,Rideword@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1195,Rideword@NPC_PIERCINGATT,attack,158,3,500,0,5000,yes,target,always,0,,,,,,2,
@@ -1334,8 +1334,8 @@
 1287,Guardian Soldier@SM_BASH,attack,5,10,2000,0,5000,yes,target,always,0,,,,,,,
 1289,Maya Purple@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1289,Maya Purple@KN_BRANDISHSPEAR,attack,57,10,500,1000,5000,no,target,always,0,,,,,,,
-1289,Maya Purple@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x1A1,,,,,
-1289,Maya Purple@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x37B5,,,,,
+1289,Maya Purple@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1289,Maya Purple@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3695,,,,,
 1289,Maya Purple@NPC_SUMMONSLAVE,idle,196,3,10000,2000,60000,no,self,slavele,0,1194,,,,,,
 1289,Maya Purple@WZ_HEAVENDRIVE,attack,91,5,500,1200,5000,yes,target,always,0,,,,,,,
 1289,Maya Purple@WZ_HEAVENDRIVE,chase,91,5,500,1200,5000,yes,target,always,0,,,,,,,
@@ -1353,8 +1353,8 @@
 1292,Mini Demon@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1292,Mini Demon@NPC_DARKBREATH,attack,202,2,500,800,5000,no,target,always,0,,,,,,29,
 1292,Mini Demon@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
-1292,Mini Demon@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1292,Mini Demon@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,18,0x3795,,,,,
+1292,Mini Demon@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1292,Mini Demon@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,18,0x3695,,,,,
 1292,Mini Demon@NPC_SUMMONSLAVE,attack,196,2,10000,2000,60000,no,self,slavele,0,1109,,,,,11,
 1292,Mini Demon@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1109,,,,,11,
 1292,Mini Demon@NPC_DARKTHUNDER,attack,341,5,500,1500,5000,yes,target,always,0,,,,,,29,
@@ -1372,16 +1372,16 @@
 1294,Killer Mantis@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,,
 1294,Killer Mantis@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1294,Killer Mantis@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,0,,,,,,6,
-1294,Killer Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1294,Killer Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1294,Killer Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1294,Killer Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1294,Killer Mantis@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1139,,,,,,
 1295,Owl Baron@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1295,Owl Baron@MG_LIGHTNINGBOLT,attack,20,5,2000,0,5000,yes,target,always,0,,,,,,,
 1295,Owl Baron@MG_LIGHTNINGBOLT,chase,20,5,2000,0,5000,yes,target,always,0,,,,,,,
 1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
 1295,Owl Baron@SA_DISPELL,attack,289,5,0,0,30000,yes,target,always,0,,,,,,5,
-1295,Owl Baron@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x1A1,,,,,
-1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
+1295,Owl Baron@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1295,Owl Baron@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1320,,,,,,
 1296,Kobold Leader@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1296,Kobold Leader@BS_ADRENALINE,attack,111,10,500,1500,300000,no,self,always,0,,,,,,6,
@@ -1417,8 +1417,8 @@
 1302,Dark Illusion@WZ_METEOR,chase,83,5,500,1500,5000,yes,target,always,0,,,,,,,
 1303,Giant Hornet@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1303,Giant Hornet@NPC_PIERCINGATT,attack,158,3,500,0,5000,yes,target,always,0,,,,,,6,
-1303,Giant Hornet@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1303,Giant Hornet@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3795,,,,,
+1303,Giant Hornet@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1303,Giant Hornet@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3695,,,,,
 1303,Giant Hornet@NPC_SILENCEATTACK,chase,178,3,500,700,5000,no,target,always,0,,,,,,,
 1303,Giant Hornet@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6,
 1303,Giant Hornet@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,6,
@@ -1426,8 +1426,8 @@
 1304,Giant Spider@AS_GRIMTOOTH,chase,137,5,2000,0,5000,yes,target,always,0,,,,,,,
 1304,Giant Spider@NPC_POISON,attack,176,5,500,800,5000,no,target,always,0,,,,,,,
 1304,Giant Spider@NPC_STOP,attack,342,1,500,0,30000,yes,target,always,0,,,,,,,
-1304,Giant Spider@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1304,Giant Spider@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3795,,,,,
+1304,Giant Spider@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1304,Giant Spider@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3695,,,,,
 1304,Giant Spider@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1100,,,,,,
 1305,Ancient Worm@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1305,Ancient Worm@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,0,,,,,,,
@@ -1546,8 +1546,8 @@
 1320,Owl Duke@MG_LIGHTNINGBOLT,attack,20,3,2000,0,5000,yes,target,always,0,,,,,,,
 1320,Owl Duke@MG_LIGHTNINGBOLT,chase,20,3,2000,0,5000,yes,target,always,0,,,,,,,
 1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
-1320,Owl Duke@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x1A1,,,,,
-1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
+1320,Owl Duke@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1321,Dragon Tail@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,,
 1321,Dragon Tail@NPC_SLEEPATTACK,attack,182,3,500,0,5000,yes,target,always,0,,,,,,,
 1321,Dragon Tail@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,,
@@ -3544,7 +3544,7 @@
 1689,Bacsojin@NPC_SUMMONSLAVE,chase,196,4,10000,0,5000,yes,self,slavele,2,1690,,,,,,
 1690,Spring Rabbit@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,2,,,,,,
 1690,Spring Rabbit@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
-1690,Spring Rabbit@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xC3,,,,,
+1690,Spring Rabbit@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x83,,,,,
 1690,Spring Rabbit@SM_BASH,attack,5,10,500,0,5000,yes,target,always,0,,,,,,6,
 1690,Spring Rabbit@TF_THROWSTONE,chase,152,1,2000,0,5000,yes,target,always,0,,,,,,,
 1691,Kraben@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,19,
@@ -4237,7 +4237,7 @@
 1783,Galion@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6,
 1783,Galion@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,0,,,,,,0,
 1783,Galion@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
-1783,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x31B5,,,,,
+1783,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1783,Galion@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1783,Galion@NPC_SUMMONSLAVE,attack,196,3,10000,1000,30000,no,self,slavele,3,1794,,,,,,
 1783,Galion@NPC_SUMMONSLAVE,idle,196,3,10000,1000,30000,no,self,slavele,3,1794,,,,,,
@@ -4298,7 +4298,7 @@
 1791,Galion@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6,
 1791,Galion@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,0,,,,,,0,
 1791,Galion@NPC_DARKNESSATTACK,attack,190,3,2000,0,5000,yes,target,always,0,,,,,,,
-1791,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x31B5,,,,,
+1791,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1791,Galion@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1794,Roween@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,,
 1794,Roween@NPC_COMBOATTACK,attack,171,4,500,500,5000,no,target,always,0,,,,,,6,
@@ -4624,8 +4624,8 @@
 1867,Banshee@NPC_VAMPIRE_GIFT,attack,679,1,500,0,5000,yes,self,always,0,,,,,,,
 1867,Banshee@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,0,,,,,,21,
 1867,Banshee@NPC_EVILLAND,attack,670,1,500,0,5000,yes,target,always,0,,,,,,,
-1867,Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x181,,,,,
-1867,Banshee@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3795,,,,,
+1867,Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x81,,,,,
+1867,Banshee@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3695,,,,,
 1868,Banshee@NPC_CURSEATTACK,chase,181,1,1000,800,5000,yes,target,always,0,,,,,,6,
 1868,Banshee@NPC_WIDECURSE,attack,677,1,500,800,5000,no,self,always,0,,,,,,,
 1868,Banshee@NPC_CRITICALWOUND,attack,673,2,500,0,5000,yes,target,always,0,,,,,,,
@@ -4633,8 +4633,8 @@
 1868,Banshee@NPC_DARKSTRIKE,attack,340,9,2000,0,5000,yes,target,always,0,,,,,,,
 1868,Banshee@NPC_VAMPIRE_GIFT,attack,679,1,500,0,5000,yes,self,always,0,,,,,,,
 1868,Banshee@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,0,,,,,,21,
-1868,Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x181,,,,,
-1868,Banshee@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3795,,,,,
+1868,Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x81,,,,,
+1868,Banshee@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3695,,,,,
 1869,Flame Skull@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1869,Flame Skull@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,29,,,,,,
 1869,Flame Skull@MG_FIREBALL,chase,17,5,1500,500,5000,no,target,attackpcge,2,,,,,,,
@@ -5012,9 +5012,9 @@
 1921,Incarnation of Morroc@HP_ASSUMPTIO,idle,361,5,5000,1000,5000,no,friend,friendhpltmaxrate,90,,,,,,,
 1921,Incarnation of Morroc@HP_ASSUMPTIO,chase,361,5,5000,1000,10000,no,friend,friendhpltmaxrate,90,,,,,,,
 1921,Incarnation of Morroc@HP_ASSUMPTIO,attack,361,5,5000,1000,10000,no,friend,friendhpltmaxrate,90,,,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1922,Incarnation of Morroc@NPC_SLOWCAST,attack,672,5,10000,0,30000,yes,self,always,0,,,,,,,
 1922,Incarnation of Morroc@NPC_PULSESTRIKE,chase,661,5,2000,0,30000,yes,self,always,0,,,,,,,
 1922,Incarnation of Morroc@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,,
@@ -5029,9 +5029,9 @@
 1922,Incarnation of Morroc@WZ_VERMILION,attack,85,5,2000,700,25000,no,target,always,0,,,,,,,
 1922,Incarnation of Morroc@WZ_JUPITEL,chase,84,5,5000,1000,20000,no,target,always,0,,,,,,,
 1922,Incarnation of Morroc@WZ_JUPITEL,attack,84,5,3000,1000,20000,no,target,always,0,,,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1923,Incarnation of Morroc@NPC_SUMMONSLAVE,chase,196,7,10000,1000,10000,no,self,slavele,0,1937,,,,,,
 1923,Incarnation of Morroc@NPC_SUMMONSLAVE,attack,196,7,10000,1000,10000,no,self,slavele,0,1937,,,,,,
 1923,Incarnation of Morroc@NPC_BLOODDRAIN,attack,199,1,3000,0,0,yes,target,always,0,,,,,,,
@@ -5039,18 +5039,18 @@
 1923,Incarnation of Morroc@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,always,0,,,,,,,
 1923,Incarnation of Morroc@NPC_EARTHQUAKE,attack,653,1,2000,700,100000,no,self,myhpltmaxrate,10,,,,,,,
 1923,Incarnation of Morroc@SM_MAGNUM,attack,7,25,2000,500,5000,no,self,always,0,,,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,attack,673,4,10000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,idle,673,4,5000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,chase,673,4,5000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_ENERGYDRAIN,chase,200,1,3000,0,0,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_WIDESILENCE,chase,663,2,10000,1000,20000,no,self,always,0,,,,,,36,
 1924,Incarnation of Morroc@NPC_WIDESILENCE,attack,663,2,10000,1000,20000,no,self,always,0,,,,,,36,
-1925,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1925,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
-1925,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x39A5,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,idle,361,5,5000,1000,5000,yes,friend,friendhpltmaxrate,90,,,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,chase,361,5,5000,1000,10000,yes,friend,friendhpltmaxrate,90,,,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,attack,361,5,5000,1000,10000,yes,friend,friendhpltmaxrate,90,,,,,,,
@@ -5279,8 +5279,8 @@
 1974,Banshee Master@NPC_VAMPIRE_GIFT,attack,679,1,500,0,5000,yes,self,always,0,,,,,,,
 1974,Banshee Master@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,0,,,,,,21,
 1974,Banshee Master@NPC_EVILLAND,attack,670,1,500,0,5000,yes,target,always,0,,,,,,,
-1974,Banshee Master@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x181,,,,,
-1974,Banshee Master@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3795,,,,,
+1974,Banshee Master@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x81,,,,,
+1974,Banshee Master@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3695,,,,,
 1974,Banshee Master@NPC_SUMMONSLAVE,idle,196,2,10000,0,0,no,self,onspawn,0,1868,,,,,,
 1975,Beholder Master@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1975,Beholder Master@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,0,,,,,,52,
@@ -5358,8 +5358,8 @@
 1987,Centipede@NPC_COMBOATTACK,attack,171,1,3000,0,5000,yes,target,always,0,,,,,,,
 1987,Centipede@WZ_QUAGMIRE,chase,92,5,500,700,5000,yes,target,always,0,,,,,,12,
 1987,Centipede@HW_GANBANTEIN,attack,483,1,3000,0,7000,no,target,always,0,,,,,,,
-1987,Centipede@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-1987,Centipede@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+1987,Centipede@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1987,Centipede@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1988,Nepenthes@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
 1988,Nepenthes@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,30,
 1988,Nepenthes@NPC_ENERGYDRAIN,chase,200,1,500,0,5000,yes,target,always,0,,,,,,30,
@@ -5384,8 +5384,8 @@
 1990,Hardrock Mammoth@NPC_SUMMONSLAVE,attack,196,3,10000,0,30000,yes,self,slavele,0,1997,1997,1997,,,,
 1990,Hardrock Mammoth@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,,
 1990,Hardrock Mammoth@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,,
-1990,Hardrock Mammoth@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x37B5,,,,,
-1990,Hardrock Mammoth@NPC_EMOTION,attack,197,1,1000,0,5000,yes,self,always,0,19,0x1A1,,,,,
+1990,Hardrock Mammoth@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x3695,,,,,
+1990,Hardrock Mammoth@NPC_EMOTION,attack,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,,
 1990,Hardrock Mammoth@WZ_WATERBALL,attack,86,10,2000,0,10000,yes,target,always,0,,,,,,,
 1990,Hardrock Mammoth@LK_SPIRALPIERCE,attack,397,1,500,3000,10000,no,target,always,0,,,,,,,
 1990,Hardrock Mammoth@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,no,self,myhpltmaxrate,30,,,,,,6,
@@ -5405,8 +5405,8 @@
 1991,Tendrilion@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
 1991,Tendrilion@SM_PROVOKE,chase,6,10,500,600,5000,yes,target,myhpltmaxrate,80,,,,,,,
 1991,Tendrilion@SM_PROVOKE,attack,6,10,500,600,5000,yes,target,myhpltmaxrate,80,,,,,,,
-1991,Tendrilion@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x37B5,,,,,
-1991,Tendrilion@NPC_EMOTION,attack,197,1,1000,0,10000,yes,self,always,0,19,0x39A5,,,,,
+1991,Tendrilion@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x3695,,,,,
+1991,Tendrilion@NPC_EMOTION,attack,197,1,1000,0,10000,yes,self,always,0,19,0x3885,,,,,
 1991,Tendrilion@NPC_CRITICALWOUND,chase,673,2,2000,500,60000,no,target,always,0,,,,,,,
 1991,Tendrilion@NPC_CRITICALWOUND,attack,673,2,2000,700,60000,no,target,always,0,,,,,,,
 1991,Tendrilion@MO_BODYRELOCATION,chase,264,1,2000,200,1000,yes,target,always,0,,,,,,,

+ 1 - 1
db/pre-re/skill_cast_db.txt

@@ -378,7 +378,7 @@
 //-- CR_HOLYCROSS
 253,0,0,0,0,30000,0
 //-- CR_GRANDCROSS
-254,2000,1500,900,900,30000,0
+254,3000,1500,800,800,30000,0
 //-- CR_DEVOTION
 255,3000,0,0,0,30000:45000:60000:75000:90000,0
 //-- CR_PROVIDENCE

+ 6 - 6
db/pre-re/skill_db.txt

@@ -415,7 +415,7 @@
 286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1000,		SA_DELUGE,Deluge
 287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1000,		SA_VIOLENTGALE,Whirlwind
 288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,		SA_LANDPROTECTOR,Magnetic Earth
-289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20,	SA_DISPELL,Dispell
+289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x10020,	SA_DISPELL,Dispell
 290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	SA_ABRACADABRA,Hocus-pocus
 291,9,6,1,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_MONOCELL,Monocell
 292,9,6,1,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_CLASSCHANGE,Class Change
@@ -576,7 +576,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
-396,1,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
+396,7,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
 
 //****
 // Lord Knight
@@ -778,7 +778,7 @@
 
 //****
 // Additional NPC Skills (Episode 11.3)
-653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
+653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x1,	NPC_EARTHQUAKE,Earthquake
 654,6,6,1,3,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
 655,6,6,1,1,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_ICEBREATH,Ice Breath
 656,6,6,1,4,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_THUNDERBREATH,Thunder Breath
@@ -983,7 +983,7 @@
 2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AB_EUCHARISTICA,Eucharistica
 2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_RENOVATIO,Renovatio
 2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0,0x0,	AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack.
-2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
+2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x10020,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
 2053,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members?
 2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0,0x0,	AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later.
 2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	AB_DUPLELIGHT_MELEE,Duple Light Melee
@@ -1242,7 +1242,7 @@
 //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0,	RL_GLITTERING_GREED,Flip The Coin Greed
 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RL_RICHS_COIN,Rich's Coin
 2553,15,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_MASS_SPIRAL,Mass Spiral
-2554,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x20,	RL_BANISHING_BUSTER,Banishing Buster
+2554,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
 2555,3,6,2,0,0x1,1,5,1,no,0,0,3,misc,0,0x0,	RL_B_TRAP,Bind Trap
 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0,	RL_FLICKER,Flicker
 2557,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
@@ -1274,7 +1274,7 @@
 3006,7:8:9:10:11,6,2,-1,0x42,2,5,1,no,0,0,0,weapon,0,0x0,	KO_BAKURETSU,Kunai Explosion
 3007,0,6,4,-1,0x42,4:4:4:4:5,5,1,no,0,0,0,weapon,0,0x0,	KO_HAPPOKUNAI,Kunai Splash
 3008,11,8,2,0,0x56,1:1:1:1:1:1:1:1:1:2,10,-10,no,0,0,0,misc,0,0x0,	KO_MUCHANAGE,Rapid Throw
-3009,9:10:11:12:13,8,2,-1,0x2,3,5,2,no,0,0,0,weapon,0,0x0,	KO_HUUMARANKA,Swirling Petal
+3009,9:10:11:12:13,8,2,-1,0x2,3,5,-5,no,0,0,0,weapon,0,0x0,	KO_HUUMARANKA,Swirling Petal
 3010,3,6,4,0,0x52,0,5,1,no,0,0x80,0,weapon,0,0x10,	KO_MAKIBISHI,Makibishi
 3011,0,6,4,0,0x1,0,5,0,yes,0,0,0,none,0,0x0,	KO_MEIKYOUSISUI,Pure Soul
 3012,0,6,4,0,0x1,0,5,0,no,0,0,1,none,3:4:5:6:7,0x0,	KO_ZANZOU,Illusion - Shadow

+ 1 - 1
db/pre-re/skill_require_db.txt

@@ -921,7 +921,7 @@
 3007,0,0,8:9:10:11:12,0,0,0,99,7,8,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_HAPPOKUNAI
 3008,0,0,50,0,0,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000,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_MUCHANAGE
 3009,0,0,24:28:32:36:40,0,0,0,22,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_HUUMARANKA
-3010,0,0,9:12:15:18:21,0,0,0,99,0,0,none,0,0,6493,3:4:5:6:7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//KO_MAKIBISHI
+3010,0,0,9:12:15:18:21,0,0,0,99,0,0,none,0,0,6493,3,6493,4,6493,5,6493,6,6493,7,0,0,0,0,0,0,0,0,0,0,0		//KO_MAKIBISHI
 3011,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							//KO_MEIKYOUSISUI
 3012,0,0,40:44:48:52: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					//KO_ZANZOU
 3013,0,0,40:44:48:52: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					//KO_KYOUGAKU

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

@@ -105,6 +105,7 @@
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010	//NJ_SUITON
 539,0x86,    ,  3, 0,1000,enemy, 0x010	//NJ_HYOUSYOURAKU
 541,0x86,    ,  2:2:3:3:4, 0,1000,enemy, 0x010	//NJ_RAIGEKISAI
+653,0xc6,    ,  0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010	//NPC_EARTHQUAKE
 670,0xc7,    ,  1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008	//NPC_EVILLAND
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG

+ 16 - 14
db/re/instance_db.txt

@@ -1,18 +1,20 @@
 // Instance Database
 //
 // Structure of Database:
-// ID,Name,LimitTime,EnterMap,EnterX,EnterY,Map1,Map2,Map3,Map4,Map5,Map6,Map7,Map8
+// ID,Name,LimitTime,IdleTimeOut,EnterMap,EnterX,EnterY,Map2,...,Map255
+//
+// EnterMap is considered as Map1
 
-1,Endless Tower,14400,1@tower,50,355,1@tower,2@tower,3@tower,4@tower,5@tower,6@tower
-2,Sealed Catacomb,7200,1@cata,100,224,1@cata,2@cata
-3,Orc's Memory,3600,1@orcs,179,15,1@orcs,2@orcs
-4,Nidhoggur's Nest,14400,1@nyd,32,36,1@nyd,2@nyd
-5,Mistwood Maze,7200,1@mist,89,29,1@mist
-6,Culvert,3600,1@pump,63,98,1@pump,2@pump
-7,Octopus Cave,3600,1@cash,199,99,1@cash
-8,Bangungot Hospital 2F,3600,1@ma_h,40,157,1@ma_h
-9,Buwaya Cave,3600,1@ma_c,35,57,1@ma_c
-10,Bakonawa Lake,7200,1@ma_b,64,51,1@ma_b
-11,Wolfchev's Laboratory,14400,1@lhz,45,148,1@lhz
-12,Old Glast Heim,3600,1@gl_k,150,20,1@gl_k,2@gl_k
-13,Eclage Interior,1200,1@ecl,60,50,1@ecl
+1,Endless Tower,14400,300,1@tower,50,355,2@tower,3@tower,4@tower,5@tower,6@tower
+2,Sealed Catacomb,7200,300,1@cata,100,224,2@cata
+3,Orc's Memory,3600,300,1@orcs,179,15,2@orcs
+4,Nidhoggur's Nest,14400,300,1@nyd,32,36,2@nyd
+5,Mistwood Maze,7200,300,1@mist,89,29
+6,Culvert,3600,300,1@pump,63,98,2@pump
+7,Octopus Cave,3600,300,1@cash,199,99
+8,Bangungot Hospital 2F,3600,300,1@ma_h,40,157
+9,Buwaya Cave,3600,300,1@ma_c,35,57
+10,Bakonawa Lake,7200,300,1@ma_b,64,51
+11,Wolfchev's Laboratory,14400,300,1@lhz,45,148
+12,Old Glast Heim,3600,300,1@gl_k,150,20,2@gl_k
+13,Eclage Interior,1200,300,1@ecl,60,50

+ 39 - 9
db/re/item_combo_db.txt

@@ -29,7 +29,7 @@
 1479:2700,{ bonus2 bResEff,Eff_Confusion,9500; }
 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; .@lv = getskilllv("LK_SPIRALPIERCE"); bonus4 bAutoSpellOnSkill,"LK_JOINTBEAT","LK_SPIRALPIERCE",(.@lv ? .@lv : 1),50+(getskilllv("LK_JOINTBEAT")*10); /* Confirm: Success rate */ }
+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 */ }
 1535:4361,{ bonus bBreakArmorRate,900; bonus bBreakWeaponRate,900; }
 1559:5467,{ bonus bAspd,1; bonus bFlee2,3; }
 1572:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; }
@@ -182,8 +182,8 @@
 2475:2574:2883:15036,{ bonus bMaxHPRate,14; bonus2 bSubEle,Ele_Neutral,10; bonus2 bSkillAtk,"RK_HUNDREDSPEAR",50; skill "CR_AUTOGUARD",1; bonus bUseSPrate,10; }
 2476:2575:2884:15037,{ bonus2 bAddClass,Class_All,10; bonus3 bAutoSpell,"RK_STORMBLAST",1,20; bonus2 bSkillAtk,"RK_WINDCUTTER",100; bonus2 bSkillAtk,"RK_SONICWAVE",100; autobonus3 "{ bonus bAspd,2; }",1000,10000,"LK_CONCENTRATION","{ specialeffect2 EF_ENHANCE; }"; }
 2477:2577:2886:15038,{ bonus bFlee,10; bonus bCritical,15; bonus bCritAtkRate,40; bonus2 bSkillAtk,"GC_CROSSIMPACT",20; bonus bUseSPrate,10; }
-2478:2578:2887:15039,{ bonus3 bAutoSpell,"ASC_BREAKER",(getskilllv("ASC_BREAKER"))?getskilllv("ASC_BREAKER"):1,20; if(readparam(bStr)>119) { bonus bBaseAtk,30; } bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bCritical,-20; }
-2479:2580:2890:15042,{ bonus bAspd,2; bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bLongAtkRate,30; bonus3 bAutoSpell,"AC_DOUBLE",(getskilllv("AC_DOUBLE") < 3)?3:getskilllv("AC_DOUBLE"),20; }
+2478:2578:2887:15039,{ bonus3 bAutoSpell,"ASC_BREAKER",max(getskilllv("ASC_BREAKER"),1),20; if(readparam(bStr)>119) { bonus bBaseAtk,30; } bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bCritical,-20; }
+2479:2580:2890:15042,{ bonus bAspd,2; bonus2 bSkillAtk,"RA_ARROWSTORM",50; bonus bLongAtkRate,30; bonus3 bAutoSpell,"AC_DOUBLE",max(getskilllv("AC_DOUBLE"),3),20; }
 2480:2581:2891:15043,{ bonus bMaxHPRate,15; bonus bFlee2,20; bonus2 bSkillAtk,"RA_CLUSTERBOMB",20; bonus bLongAtkRate,-30; bonus bAspd,-7; }
 2481:2730,{ bonus bBaseAtk,getequiprefinerycnt(EQI_SHOES); }
 2481:2731,{ bonus bMatkRate,getequiprefinerycnt(EQI_SHOES)/2; bonus bVariableCastrate,-(getequiprefinerycnt(EQI_SHOES)/2); }
@@ -278,6 +278,7 @@
 2968:18821,{ bonus bMatkRate,getequiprefinerycnt(EQI_HEAD_TOP)/2; }
 2969:13092,{ bonus bBaseAtk,getequiprefinerycnt(EQI_HAND_R)*10; }
 2969:18821,{ bonus bMatkRate,getequiprefinerycnt(EQI_HEAD_TOP)/2; }
+2979:18852,{ bonus2 bSubEle,Ele_Fire,10; bonus bLongAtkRate,30; }
 2983:4218,{ bonus bVit,-3; bonus bHPrecovRate,-20; bonus bMaxHP,1000; }
 2983:4218:4269,{ bonus bVit,-3; bonus bHPrecovRate,-20; bonus bMaxHP,1000; bonus bInt,-3; bonus bSPrecovRate,-20; bonus bMaxSP,150; }
 2983:4269,{ bonus bInt,-3; bonus bSPrecovRate,-20; bonus bMaxSP,150; }
@@ -346,6 +347,26 @@
 4629:4630,{ bonus3 bAutoSpell,677,2,2; bonus2 bSubEle,Ele_Neutral,5; }
 4631:4632,{ bonus5 bAutoSpell,85,1,1,BF_SHORT,0; }
 4635:4636,{ bonus2 bResEff,Eff_Burning,10000; }
+4642:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
+4643:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
+4644:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
+4645:4646,{ bonus bAtkRate,10; bonus bMatkRate,10; }
+4653:4654,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreMdefRaceRate,RC_Brute,50; bonus2 bIgnoreMdefRaceRate,RC_Undead,50; }
+4653:4655,{ bonus2 bSubRace,RC_Brute,5; bonus2 bSubRace,RC_Undead,5; bonus2 bIgnoreDefRaceRate,RC_Brute,50; bonus2 bIgnoreDefRaceRate,RC_Undead,50; }
+4656:4657,{ /* Unofficial chance */ bonus3 bAutoSpellWhenHit,"NPC_WIDESLEEP",2,10; bonus2 bSubEle,Ele_Neutral,5; }
+4671:4692,{ autobonus "{ active_transform 3242,6000; bonus bMatk,100; }",30,6000,BF_MAGIC; }
+4672:4693,{ autobonus "{ active_transform 3243,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4673:4696,{ autobonus "{ active_transform 3245,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4674:4684,{ autobonus "{ active_transform 3220,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4675:4685,{ autobonus "{ active_transform 3221,6000; bonus bMatk,100; }",30,6000,BF_MAGIC; }
+4676:4687,{ autobonus "{ active_transform 3222,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4677:4688,{ autobonus "{ active_transform 3223,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4678:4686,{ autobonus "{ active_transform 3224,6000; bonus bMatk,100; }",30,6000,BF_MAGIC; }
+4679:4689,{ autobonus "{ active_transform 3225,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+4680:4690,{ autobonus "{ active_transform 3240,6000; bonus bAtk,100; }",30,6000,BF_WEAPON; }
+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; }
 5040:5442,{ bonus bAspdRate,3; bonus bVariableCastrate,3; }
 5040:18673,{ bonus bSPrecovRate,3; }
 5041:18538,{ bonus2 bSubRace,RC_Angel,9; }
@@ -371,22 +392,31 @@
 //5470:5653,{ bonus bDex,1; bonus bLongAtkRate,3; }
 5475:18656,{ bonus bBaseAtk,30; bonus bMatk,30; bonus2 bAddMonsterDropItem,529,400; bonus2 bAddMonsterDropItem,530,400; bonus2 bAddMonsterDropItem,538,400; bonus2 bAddMonsterDropItem,12192,400;}
 5498:5521,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if(.@r>=7) bonus bCritAtkRate,10; if(.@r>=9) bonus bAspd,1; }
-5548:5766,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,(.@r>10?10:.@r); bonus bMatk,(.@r>10?10:.@r); }
+5548:5766,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bBaseAtk,min(.@r,10); bonus bMatk,min(.@r,10); }
 5920:18542,{ bonus bHealPower,2*getequiprefinerycnt(EQI_HEAD_TOP); }
 //9024:18832,{ bonus3 bAutoSpell,"BS_ADRENALINE",2,(GetPetRelationship >= 3)?15:10; }
-13027:15044,{ .@r = getequiprefinerycnt(EQI_ARMOR)?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_Player,70*.@r; bonus3 bAddMonsterDropItem,970,RC_Player,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; }
 15088:18816:18818,{ bonus bMatk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
 15088:18817:18819,{ bonus bBaseAtk,BaseLevel/3; bonus2 bExpAddClass,Class_All,5; }
 15090:18820:20721:22033,{ bonus2 bSubEle,Ele_Neutral,15; bonus bMaxHPrate,25; bonus bMaxSPrate,25; bonus bMatkRate,10; bonus3 bAutoSpellWhenHit,"WL_DRAINLIFE",3,1; }
-15116:20743:22046,{ bonus bMaxSPrate,25; bonus bMaxSPrate,25; bonus bSpeedAddRate,10; }
-15126:20788:22083,{ bonus bMaxHP,2000; bonus bNoCastCancel,1; .@r=getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bFixedCastrate,15+.@r; }
-15129:20789:22084,{ bonus bMaxHP,3000; bonus bNoCastCancel,1; .@r=getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bFixedCastrate,20+.@r; }
+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)); }
+15126:20788:22083:28380: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)); }
+15129:20789:22084:28380: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; .@r=getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES); bonus bFixedCastrate,25+.@r; }
+15156:20790:22085,{ bonus bMaxHP,4000; bonus bNoCastCancel,1; bonus bFixedCastrate,-25-(getequiprefinerycnt(EQI_ARMOR)+getequiprefinerycnt(EQI_GARMENT)+getequiprefinerycnt(EQI_SHOES)); }
+15156:20790:22085:28380: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; }
 18507:18539,{ bonus bUseSPrate,-3; }
 18559:18560,{ bonus bCritAtkRate,5; }
 18776:20710,{ bonus bBaseAtk,10; }

File diff suppressed because it is too large
+ 267 - 103
db/re/item_db.txt


+ 0 - 7
db/re/item_group_db.txt

@@ -1,7 +0,0 @@
-import: db/re/item_bluebox.txt
-import: db/re/item_violetbox.txt
-import: db/re/item_cardalbum.txt
-import: db/item_findingore.txt
-import: db/re/item_giftbox.txt
-import: db/re/item_misc.txt
-import: db/re/item_package.txt

+ 3 - 0
db/re/item_noequip.txt

@@ -18,12 +18,15 @@
 // 1024 - restricted in zone 6
 // 2048 - restricted in zone 7
 //
+// Passing negative value as flag will unset the flag instead.
+//
 // Examples:
 // 1201,1   // Knife can't be worn on normal maps
 // 608,4    // Yggdrasil Seed can't be consumed in both GvG and WoE Castles
 // 4174,6   // Deviling Card has no effect in every PVP or GVG map, and during WoE
 // 501,32   // Red Potion can't be consumed on maps marked as 'restricted zone 1'
 // 519,322  // Milk can't be consumed in PVP and maps marked as 'restricted zone 2' or 'restricted zone 4' (256+64+2)
+// 519,-2   // Unset `restricted in PVP` flag from Milk. Making it usable in PVP again.
 
 //----------------------------------------------------------------------------
 // Normal maps

File diff suppressed because it is too large
+ 1 - 1
db/re/job_basehpsp_db.txt


+ 1 - 1
db/re/job_db1.txt

@@ -272,4 +272,4 @@
 // Rebellion
 4215,   28000,90   ,650  ,469  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520  ,620  ,570  ,970  ,1070 ,2000 ,2000 ,600
 // Summoner
-4218,	20000,75   ,500  ,700  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590
+4218,	20000,70   ,500  ,500  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590

+ 37 - 37
db/re/level_penalty.txt

@@ -11,50 +11,50 @@
 // Note: RENEWAL_DROP and/or RENEWAL_EXP must be enabled.
 
 // EXP modifiers due to level difference
-1,0,16,40
-1,0,15,115
-1,0,14,120
-1,0,13,125
-1,0,12,130
-1,0,11,135
-1,0,10,140
-1,0,9,135
-1,0,8,130
-1,0,7,125
-1,0,6,120
-1,0,5,115
-1,0,4,110
-1,0,3,105
-1,0,0,100
-1,0,-1,100
-1,0,-6,95
-1,0,-11,90
-1,0,-16,85
-1,0,-21,60
-1,0,-26,35
-1,0,-31,10
+1,CLASS_NORMAL,16,40
+1,CLASS_NORMAL,15,115
+1,CLASS_NORMAL,14,120
+1,CLASS_NORMAL,13,125
+1,CLASS_NORMAL,12,130
+1,CLASS_NORMAL,11,135
+1,CLASS_NORMAL,10,140
+1,CLASS_NORMAL,9,135
+1,CLASS_NORMAL,8,130
+1,CLASS_NORMAL,7,125
+1,CLASS_NORMAL,6,120
+1,CLASS_NORMAL,5,115
+1,CLASS_NORMAL,4,110
+1,CLASS_NORMAL,3,105
+1,CLASS_NORMAL,0,100
+1,CLASS_NORMAL,-1,100
+1,CLASS_NORMAL,-6,95
+1,CLASS_NORMAL,-11,90
+1,CLASS_NORMAL,-16,85
+1,CLASS_NORMAL,-21,60
+1,CLASS_NORMAL,-26,35
+1,CLASS_NORMAL,-31,10
 
 // Boss Type
-1,1,0,100
+1,CLASS_BOSS,0,100
 
 // Guardian Type
-1,2,0,100
+1,CLASS_GUARDIAN,0,100
 
 // Drop rate modifiers due to level difference
-2,0,16,50
-2,0,13,60
-2,0,10,70
-2,0,7,80
-2,0,4,90
-2,0,0,100
-2,0,-4,90
-2,0,-7,80
-2,0,-10,70
-2,0,-13,60
-2,0,-16,50
+2,CLASS_NORMAL,16,50
+2,CLASS_NORMAL,13,60
+2,CLASS_NORMAL,10,70
+2,CLASS_NORMAL,7,80
+2,CLASS_NORMAL,4,90
+2,CLASS_NORMAL,0,100
+2,CLASS_NORMAL,-4,90
+2,CLASS_NORMAL,-7,80
+2,CLASS_NORMAL,-10,70
+2,CLASS_NORMAL,-13,60
+2,CLASS_NORMAL,-16,50
 
 // Boss Type
-2,1,0,100
+2,CLASS_BOSS,0,100
 
 // Guardian Type
-2,2,0,100
+2,CLASS_GUARDIAN,0,100

File diff suppressed because it is too large
+ 341 - 341
db/re/mob_db.txt


+ 11 - 2
db/re/mob_race2_db.txt

@@ -1,7 +1,7 @@
 // Monster Racial Groups Database
 //
 // Structure of Database:
-// Race2ID,MobID1,MobID2,MobID3,...,MobID9
+// Race2ID,MobID1,MobID2,MobID3,...,MobID50
 
 // Goblins
 1,1122,1123,1124,1125,1126,1258,1299
@@ -12,6 +12,15 @@
 // Golems
 4,1040,1278,1366,1497,2024
 // Guardians
-5,1285,1286,1287
+5,1285,1286,1287,2081
 // Ninja Classes (Pirate's_Pride)
 6,1315,1364,1401,1560
+// GvG
+7,1143,1905,1906,1907
+// Battlefield
+8,1906,1909,1914,1915
+// Treasure Chests
+9,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1938,1939,1940,1941,1942,1943,1944,1945,1946
+// Bio Labs
+// TODO : Monsters in lhz_dun_n not implemented yet. [secretdataz]
+10,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241

+ 0 - 5
db/re/mob_random_db.txt

@@ -1,5 +0,0 @@
-import: db/re/mob_branch.txt
-import: db/re/mob_poring.txt
-import: db/re/mob_boss.txt
-import: db/mob_pouch.txt
-import: db/mob_classchange.txt

+ 118 - 118
db/re/mob_skill_db.txt

@@ -1,4 +1,4 @@
-// Mob Skill Database 
+// Mob Skill Database
 // Based on Aegis Episode 11.3
 //
 // Structure of Database:
@@ -125,7 +125,7 @@
 1029,Isis@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1029,Isis@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
 1029,Isis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1029,Isis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3195,,,,,
+1029,Isis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3095,,,,,
 1030,Anacondaq@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
 1030,Anacondaq@NPC_POISONATTACK,attack,188,1,2000,0,5000,yes,target,always,0,,,,,,,
 1031,Poporing@NPC_EMOTION,loot,197,1,2000,0,5000,yes,self,always,0,2,,,,,,
@@ -144,7 +144,7 @@
 1035,Hunter Fly@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1035,Hunter Fly@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,6,
 1035,Hunter Fly@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1035,Hunter Fly@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3985,,,,,
+1035,Hunter Fly@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3885,,,,,
 1035,Hunter Fly@NPC_WINDATTACK,attack,187,1,2000,0,5000,yes,target,always,0,,,,,,,
 1035,Hunter Fly@NPC_BLOODDRAIN,angry,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1035,Hunter Fly@NPC_COMBOATTACK,angry,171,1,500,700,5000,no,target,always,0,,,,,,6,
@@ -490,7 +490,7 @@
 1099,Argiope@NPC_POISON,attack,176,3,500,800,5000,no,target,always,0,,,,,,,
 1099,Argiope@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,0,,,,,,,
 1099,Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1099,Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3795,,,,,
+1099,Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3695,,,,,
 1100,Argos@NPC_POISON,attack,176,2,500,800,5000,no,target,always,0,,,,,,,
 1100,Argos@PF_SPIDERWEB,idle,405,1,3000,0,10000,yes,target,always,0,,,,,,,
 1100,Argos@PF_SPIDERWEB,attack,405,1,2000,0,10000,yes,target,always,0,,,,,,,
@@ -503,7 +503,7 @@
 1101,Baphomet Jr.@NPC_HALLUCINATION,attack,207,1,500,500,5000,yes,target,always,0,,,,,,29,
 1101,Baphomet Jr.@NPC_HALLUCINATION,chase,207,1,500,500,5000,yes,target,always,0,,,,,,29,
 1101,Baphomet Jr.@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1101,Baphomet Jr.@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1101,Baphomet Jr.@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1102,Bathory@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,0,,,,,,,
 1102,Bathory@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,0,30,,,,,,
 1102,Bathory@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,30,
@@ -703,7 +703,7 @@
 1139,Mantis@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,6,
 1139,Mantis@NPC_GROUNDATTACK,attack,185,2,500,500,5000,no,target,always,0,,,,,,6,
 1139,Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1139,Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3195,,,,,
+1139,Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3095,,,,,
 1140,Marduk@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1140,Marduk@MG_FIREBOLT,attack,19,3,500,1500,5000,yes,target,always,0,,,,,,9,
 1140,Marduk@MG_FIREBOLT,chase,19,3,500,1500,5000,yes,target,always,0,,,,,,9,
@@ -760,7 +760,7 @@
 1148,Medusa@NPC_PETRIFYATTACK,attack,180,5,500,500,5000,no,target,always,0,,,,,,3,
 1148,Medusa@NPC_PETRIFYATTACK,chase,180,5,500,500,5000,no,target,always,0,,,,,,3,
 1148,Medusa@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1148,Medusa@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1148,Medusa@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1149,Minorous@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1149,Minorous@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,0,,,,,,,
 1149,Minorous@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,0,,,,,,6,
@@ -920,7 +920,7 @@
 1179,Whisper@AS_CLOAKING,chase,135,1,2000,200,5000,yes,self,always,0,,,,,,,
 1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,,,,,,
 1179,Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,28,0x3195,,,,,
+1179,Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,28,0x3095,,,,,
 1179,Whisper@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,0,,,,,,28,
 1180,Nine-Tail@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1180,Nine-Tail@NPC_ATTRICHANGE,attack,161,1,500,2000,5000,no,self,myhpltmaxrate,30,,,,,,,
@@ -971,7 +971,7 @@
 1194,Arclouse@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1194,Arclouse@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
 1194,Arclouse@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1194,Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+1194,Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1195,Rideword@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,0,,,,,,,
 1195,Rideword@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,2,
 1195,Rideword@NPC_PIERCINGATT,attack,158,3,500,0,5000,yes,target,always,0,,,,,,2,
@@ -1335,8 +1335,8 @@
 1287,Guardian Soldier@SM_BASH,attack,5,10,2000,0,5000,yes,target,always,0,,,,,,,
 1289,Maya Purple@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1289,Maya Purple@KN_BRANDISHSPEAR,attack,57,10,500,1000,5000,no,target,always,0,,,,,,,
-1289,Maya Purple@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xA1,,,,,
-1289,Maya Purple@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x37B5,,,,,
+1289,Maya Purple@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1289,Maya Purple@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3695,,,,,
 1289,Maya Purple@NPC_SUMMONSLAVE,idle,196,3,10000,2000,60000,no,self,slavele,0,1194,,,,,,
 1289,Maya Purple@WZ_HEAVENDRIVE,attack,91,5,500,1200,5000,yes,target,always,0,,,,,,,
 1289,Maya Purple@WZ_HEAVENDRIVE,chase,91,5,500,1200,5000,yes,target,always,0,,,,,,,
@@ -1355,7 +1355,7 @@
 1292,Mini Demon@NPC_DARKBREATH,attack,202,2,500,800,5000,no,target,always,0,,,,,,29,
 1292,Mini Demon@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
 1292,Mini Demon@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1292,Mini Demon@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,18,0x3795,,,,,
+1292,Mini Demon@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,18,0x3695,,,,,
 1292,Mini Demon@NPC_SUMMONSLAVE,attack,196,2,10000,2000,60000,no,self,slavele,0,1109,,,,,11,
 1292,Mini Demon@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1109,,,,,11,
 1292,Mini Demon@NPC_DARKTHUNDER,attack,341,5,500,1500,5000,yes,target,always,0,,,,,,29,
@@ -1374,15 +1374,15 @@
 1294,Killer Mantis@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,6,
 1294,Killer Mantis@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,0,,,,,,6,
 1294,Killer Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1294,Killer Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3795,,,,,
+1294,Killer Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1294,Killer Mantis@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1139,,,,,,
 1295,Owl Baron@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1295,Owl Baron@MG_LIGHTNINGBOLT,attack,20,5,2000,0,5000,yes,target,always,0,,,,,,,
 1295,Owl Baron@MG_LIGHTNINGBOLT,chase,20,5,2000,0,5000,yes,target,always,0,,,,,,,
 1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
 1295,Owl Baron@SA_DISPELL,attack,289,5,0,0,30000,yes,target,always,0,,,,,,5,
-1295,Owl Baron@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xA1,,,,,
-1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
+1295,Owl Baron@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1295,Owl Baron@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1295,Owl Baron@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1320,,,,,,
 1296,Kobold Leader@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1296,Kobold Leader@BS_ADRENALINE,attack,111,10,500,1500,300000,no,self,always,0,,,,,,6,
@@ -1419,7 +1419,7 @@
 1303,Giant Hornet@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1303,Giant Hornet@NPC_PIERCINGATT,attack,158,3,500,0,5000,yes,target,always,0,,,,,,6,
 1303,Giant Hornet@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1303,Giant Hornet@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3795,,,,,
+1303,Giant Hornet@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3695,,,,,
 1303,Giant Hornet@NPC_SILENCEATTACK,chase,178,3,500,700,5000,no,target,always,0,,,,,,,
 1303,Giant Hornet@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6,
 1303,Giant Hornet@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,6,
@@ -1428,7 +1428,7 @@
 1304,Giant Spider@NPC_POISON,attack,176,5,500,800,5000,no,target,always,0,,,,,,,
 1304,Giant Spider@NPC_STOP,attack,342,1,500,0,30000,yes,target,always,0,,,,,,,
 1304,Giant Spider@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1304,Giant Spider@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3795,,,,,
+1304,Giant Spider@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,9,0x3695,,,,,
 1304,Giant Spider@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1100,,,,,,
 1305,Ancient Worm@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1305,Ancient Worm@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,0,,,,,,,
@@ -1547,8 +1547,8 @@
 1320,Owl Duke@MG_LIGHTNINGBOLT,attack,20,3,2000,0,5000,yes,target,always,0,,,,,,,
 1320,Owl Duke@MG_LIGHTNINGBOLT,chase,20,3,2000,0,5000,yes,target,always,0,,,,,,,
 1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,,
-1320,Owl Duke@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xA1,,,,,
-1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x37B5,,,,,
+1320,Owl Duke@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+1320,Owl Duke@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,6,0x3695,,,,,
 1321,Dragon Tail@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,,
 1321,Dragon Tail@NPC_SLEEPATTACK,attack,182,3,500,0,5000,yes,target,always,0,,,,,,,
 1321,Dragon Tail@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,,
@@ -3545,7 +3545,7 @@
 1689,Bacsojin@NPC_SUMMONSLAVE,chase,196,4,10000,0,5000,yes,self,slavele,2,1690,,,,,,
 1690,Spring Rabbit@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,0,2,,,,,,
 1690,Spring Rabbit@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
-1690,Spring Rabbit@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0xC3,,,,,
+1690,Spring Rabbit@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x83,,,,,
 1690,Spring Rabbit@SM_BASH,attack,5,10,500,0,5000,yes,target,always,0,,,,,,6,
 1690,Spring Rabbit@TF_THROWSTONE,chase,152,1,2000,0,5000,yes,target,always,0,,,,,,,
 1691,Kraben@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,19,
@@ -4238,7 +4238,7 @@
 1783,Galion@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6,
 1783,Galion@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,0,,,,,,0,
 1783,Galion@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,0,,,,,,,
-1783,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x31B5,,,,,
+1783,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1783,Galion@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1783,Galion@NPC_SUMMONSLAVE,attack,196,3,10000,1000,30000,no,self,slavele,3,1794,,,,,,
 1783,Galion@NPC_SUMMONSLAVE,idle,196,3,10000,1000,30000,no,self,slavele,3,1794,,,,,,
@@ -4299,7 +4299,7 @@
 1791,Galion@NPC_COMBOATTACK,attack,171,1,500,500,5000,no,target,always,0,,,,,,6,
 1791,Galion@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,0,,,,,,0,
 1791,Galion@NPC_DARKNESSATTACK,attack,190,3,2000,0,5000,yes,target,always,0,,,,,,,
-1791,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x31B5,,,,,
+1791,Galion@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1791,Galion@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1794,Roween@NPC_WINDATTACK,attack,187,2,500,500,5000,no,target,always,0,,,,,,,
 1794,Roween@NPC_COMBOATTACK,attack,171,4,500,500,5000,no,target,always,0,,,,,,6,
@@ -5013,9 +5013,9 @@
 1921,Incarnation of Morroc@HP_ASSUMPTIO,idle,361,5,5000,1000,5000,no,friend,friendhpltmaxrate,90,,,,,,,
 1921,Incarnation of Morroc@HP_ASSUMPTIO,chase,361,5,5000,1000,10000,no,friend,friendhpltmaxrate,90,,,,,,,
 1921,Incarnation of Morroc@HP_ASSUMPTIO,attack,361,5,5000,1000,10000,no,friend,friendhpltmaxrate,90,,,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1922,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1922,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1922,Incarnation of Morroc@NPC_SLOWCAST,attack,672,5,10000,0,30000,yes,self,always,0,,,,,,,
 1922,Incarnation of Morroc@NPC_PULSESTRIKE,chase,661,5,2000,0,30000,yes,self,always,0,,,,,,,
 1922,Incarnation of Morroc@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,,
@@ -5030,9 +5030,9 @@
 1922,Incarnation of Morroc@WZ_VERMILION,attack,85,5,2000,700,25000,no,target,always,0,,,,,,,
 1922,Incarnation of Morroc@WZ_JUPITEL,chase,84,5,5000,1000,20000,no,target,always,0,,,,,,,
 1922,Incarnation of Morroc@WZ_JUPITEL,attack,84,5,3000,1000,20000,no,target,always,0,,,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1923,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1923,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1923,Incarnation of Morroc@NPC_SUMMONSLAVE,chase,196,7,10000,1000,10000,no,self,slavele,0,1937,,,,,,
 1923,Incarnation of Morroc@NPC_SUMMONSLAVE,attack,196,7,10000,1000,10000,no,self,slavele,0,1937,,,,,,
 1923,Incarnation of Morroc@NPC_BLOODDRAIN,attack,199,1,3000,0,0,yes,target,always,0,,,,,,,
@@ -5040,18 +5040,18 @@
 1923,Incarnation of Morroc@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,always,0,,,,,,,
 1923,Incarnation of Morroc@NPC_EARTHQUAKE,attack,653,1,2000,700,100000,no,self,myhpltmaxrate,10,,,,,,,
 1923,Incarnation of Morroc@SM_MAGNUM,attack,7,25,2000,500,5000,no,self,always,0,,,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1924,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1924,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,attack,673,4,10000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,idle,673,4,5000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_CRITICALWOUND,chase,673,4,5000,0,5000,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_ENERGYDRAIN,chase,200,1,3000,0,0,yes,target,always,0,,,,,,,
 1924,Incarnation of Morroc@NPC_WIDESILENCE,chase,663,2,10000,1000,20000,no,self,always,0,,,,,,36,
 1924,Incarnation of Morroc@NPC_WIDESILENCE,attack,663,2,10000,1000,20000,no,self,always,0,,,,,,36,
-1925,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1925,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
-1925,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x38A5,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,idle,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,chase,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
+1925,Incarnation of Morroc@NPC_EMOTION,attack,197,1,10000,0,30000,yes,self,always,0,9,0x3885,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,idle,361,5,5000,1000,5000,yes,friend,friendhpltmaxrate,90,,,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,chase,361,5,5000,1000,10000,yes,friend,friendhpltmaxrate,90,,,,,,,
 1925,Incarnation of Morroc@HP_ASSUMPTIO,attack,361,5,5000,1000,10000,yes,friend,friendhpltmaxrate,90,,,,,,,
@@ -5281,7 +5281,7 @@
 1974,Banshee Master@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,0,,,,,,21,
 1974,Banshee Master@NPC_EVILLAND,attack,670,1,500,0,5000,yes,target,always,0,,,,,,,
 1974,Banshee Master@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,7,0x81,,,,,
-1974,Banshee Master@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3795,,,,,
+1974,Banshee Master@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,,0x3695,,,,,
 1974,Banshee Master@NPC_SUMMONSLAVE,idle,196,2,10000,0,0,no,self,onspawn,0,1868,,,,,,
 1975,Beholder Master@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 1975,Beholder Master@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,0,,,,,,52,
@@ -5360,7 +5360,7 @@
 1987,Centipede@WZ_QUAGMIRE,chase,92,5,500,700,5000,yes,target,always,0,,,,,,12,
 1987,Centipede@HW_GANBANTEIN,attack,483,1,3000,0,7000,no,target,always,0,,,,,,,
 1987,Centipede@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
-1987,Centipede@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+1987,Centipede@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 1988,Nepenthes@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
 1988,Nepenthes@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,30,
 1988,Nepenthes@NPC_ENERGYDRAIN,chase,200,1,500,0,5000,yes,target,always,0,,,,,,30,
@@ -5385,8 +5385,8 @@
 1990,Hardrock Mammoth@NPC_SUMMONSLAVE,attack,196,3,10000,0,30000,yes,self,slavele,0,1997,1997,1997,,,,
 1990,Hardrock Mammoth@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,,
 1990,Hardrock Mammoth@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,,
-1990,Hardrock Mammoth@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x36B5,,,,,
-1990,Hardrock Mammoth@NPC_EMOTION,attack,197,1,1000,0,5000,yes,self,always,0,19,0xA1,,,,,
+1990,Hardrock Mammoth@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x3695,,,,,
+1990,Hardrock Mammoth@NPC_EMOTION,attack,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,,
 1990,Hardrock Mammoth@WZ_WATERBALL,attack,86,10,2000,0,10000,yes,target,always,0,,,,,,,
 1990,Hardrock Mammoth@LK_SPIRALPIERCE,attack,397,1,500,3000,10000,no,target,always,0,,,,,,,
 1990,Hardrock Mammoth@KN_TWOHANDQUICKEN,attack,60,30,10000,0,120000,no,self,myhpltmaxrate,30,,,,,,6,
@@ -5406,8 +5406,8 @@
 1991,Tendrilion@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,,
 1991,Tendrilion@SM_PROVOKE,chase,6,10,500,600,5000,yes,target,myhpltmaxrate,80,,,,,,,
 1991,Tendrilion@SM_PROVOKE,attack,6,10,500,600,5000,yes,target,myhpltmaxrate,80,,,,,,,
-1991,Tendrilion@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x36B5,,,,,
-1991,Tendrilion@NPC_EMOTION,attack,197,1,1000,0,10000,yes,self,always,0,19,0x38A5,,,,,
+1991,Tendrilion@NPC_EMOTION,chase,197,1,10000,0,5000,yes,self,always,0,7,0x3695,,,,,
+1991,Tendrilion@NPC_EMOTION,attack,197,1,1000,0,10000,yes,self,always,0,19,0x3885,,,,,
 1991,Tendrilion@NPC_CRITICALWOUND,chase,673,2,2000,500,60000,no,target,always,0,,,,,,,
 1991,Tendrilion@NPC_CRITICALWOUND,attack,673,2,2000,700,60000,no,target,always,0,,,,,,,
 1991,Tendrilion@MO_BODYRELOCATION,chase,264,1,2000,200,1000,yes,target,always,0,,,,,,,
@@ -5858,15 +5858,15 @@
 2083,Scaraba@NPC_COMBOATTACK,attack,171,2,500,700,5000,no,target,always,0,,,,,,,
 2083,Scaraba@NPC_COMBOATTACK,chase,171,2,500,700,5000,no,target,always,0,,,,,,,
 2083,Scaraba@NPC_STOP,attack,342,1,500,500,5000,no,target,always,0,,,,,,,
-2083,Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x181,,,,,
-2083,Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3195,,,,,
+2083,Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,,
+2083,Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3095,,,,,
 2084,Scaraba@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,0,,,,,,,
 2084,Scaraba@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,29,
 2084,Scaraba@NPC_COMBOATTACK,attack,171,2,500,700,5000,no,target,always,0,,,,,,,
 2084,Scaraba@SM_BASH,attack,5,5,500,0,5000,yes,target,always,0,,,,,,,
 2084,Scaraba@NPC_STOP,attack,342,1,500,500,5000,no,target,always,0,,,,,,,
-2084,Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x181,,,,,
-2084,Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3195,,,,,
+2084,Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,,
+2084,Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3095,,,,,
 2085,Antler Scaraba@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,0,,,,,,,
 2085,Antler Scaraba@BS_ADRENALINE,attack,111,10,500,1500,300000,no,self,always,0,,,,,,6,
 2085,Antler Scaraba@BS_ADRENALINE,chase,111,10,500,1500,300000,no,self,always,0,,,,,,6,
@@ -5884,8 +5884,8 @@
 2086,Rake Scaraba@NPC_STONESKIN,attack,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6,
 2086,Rake Scaraba@NPC_STONESKIN,chase,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6,
 2086,Rake Scaraba@PF_SPIDERWEB,chase,405,1,300,0,10000,yes,target,always,0,,,,,,7,
-2086,Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x181,,,,,
-2086,Rake Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3195,,,,,
+2086,Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,0,19,0x81,,,,,
+2086,Rake Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,0,6,0x3095,,,,,
 2087,Queen Scaraba@AL_HEAL,attack,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3,
 2087,Queen Scaraba@AL_HEAL,attack,28,11,10000,0,5000,no,self,myhpltmaxrate,30,,,,,,3,
 2087,Queen Scaraba@AL_HEAL,chase,28,11,10000,0,5000,no,friend,friendhpltmaxrate,60,,,,,,3,
@@ -8183,8 +8183,8 @@
 2357,Nightmare Mimic@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,0,,,,,,,
 2358,Nightmare Arclouse@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2358,Nightmare Arclouse@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,0,,,,,,,
-2358,Nightmare Arclouse@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x181,,,,,
-2358,Nightmare Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3195,,,,,
+2358,Nightmare Arclouse@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,0,19,0x81,,,,,
+2358,Nightmare Arclouse@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,7,0x3095,,,,,
 2359,Nightmare Arclouse@NPC_GROUNDATTACK,angry,185,1,2000,0,5000,yes,target,always,0,,,,,,,
 2359,Nightmare Arclouse@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,0,,,,,,,
 2360,Nightmare Ancient Mummy@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
@@ -8467,7 +8467,7 @@
 2618,Solid Whisper@AS_CLOAKING,idle,135,1,2000,200,5000,yes,self,always,,,,,,,,
 2618,Solid Whisper@AS_CLOAKING,chase,135,1,2000,200,5000,yes,self,always,,,,,,,,
 2618,Solid Whisper@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,,,,,,,28,
-2618,Solid Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2618,Solid Whisper@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2618,Solid Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,28,0x3095,,,,,
 2618,Solid Whisper@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,,,,,,,
 2619,Weak Skeleton Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,2405,,,,,,
@@ -8500,7 +8500,7 @@
 2624,Venomous Ringleader@NPC_SELFDESTRUCTION,attack,173,1,500,2000,5000,no,self,skillused,173,,,,,,23,
 2624,Venomous Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1621,,,,,,
 2625,Furious Venatu@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-2625,Furious Venatu@NPC_EMOTION,chase,197,1,100,0,5000,yes,self,always,,7,0x0081,,,,,
+2625,Furious Venatu@NPC_EMOTION,chase,197,1,100,0,5000,yes,self,always,,7,0x81,,,,,
 2625,Furious Venatu@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,,0x3695,,,,,
 2625,Furious Venatu@NPC_GUIDEDATTACK,attack,172,3,500,1000,20000,no,target,always,,,,,,,6,
 2625,Furious Venatu@NPC_SLEEPATTACK,attack,182,3,500,0,5000,yes,target,always,,,,,,,,
@@ -8529,7 +8529,7 @@
 2629,Ungoliant Ringleader@NPC_PETRIFYATTACK,attack,180,2,1000,500,5000,no,target,always,,,,,,,3,
 2629,Ungoliant Ringleader@NPC_POISONATTACK,attack,188,3,1000,0,5000,yes,target,always,,,,,,,,
 2629,Ungoliant Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1618,,,,,,
-2630,Furious Toucan@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2630,Furious Toucan@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2630,Furious Toucan@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2630,Furious Toucan@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,2,,,,,,
 2630,Furious Toucan@NPC_SILENCEATTACK,attack,178,3,500,700,5000,no,target,always,,,,,,,,
@@ -8564,7 +8564,7 @@
 2637,Solid Tatacho@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2637,Solid Tatacho@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,,,,,,,,
 2637,Solid Tatacho@HW_GANBANTEIN,attack,483,1,2000,0,7000,no,target,always,,,,,,,,
-2637,Solid Tatacho@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2637,Solid Tatacho@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2637,Solid Tatacho@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3095,,,,,
 2637,Solid Tatacho@NPC_STUNATTACK,attack,179,3,500,1000,5000,yes,target,always,,,,,,,19,
 2638,Tarou Ringleader@NPC_DARKNESSATTACK,attack,190,1,2000,0,5000,yes,target,always,,,,,,,,
@@ -8575,7 +8575,7 @@
 2639,Furious Tamruan@NPC_SILENCEATTACK,attack,178,5,2000,700,5000,no,target,always,,,,,,,9,
 2640,Elusive Sting@AM_POTIONPITCHER,idle,231,4,10000,0,5000,yes,self,mystatuson,hiding,,,,,,,
 2640,Elusive Sting@KN_SPEARSTAB,attack,58,10,500,800,5000,no,target,always,,,,,,,11,
-2640,Elusive Sting@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2640,Elusive Sting@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2640,Elusive Sting@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,20,0x3695,,,,,
 2640,Elusive Sting@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,,,,,,,
 2640,Elusive Sting@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,12,
@@ -8594,7 +8594,7 @@
 2644,Furious Stalactic Golem@BS_HAMMERFALL,attack,110,5,500,1500,5000,no,target,always,,,,,,,,
 2644,Furious Stalactic Golem@CR_AUTOGUARD,attack,249,5,500,0,300000,yes,self,always,,,,,,,,
 2644,Furious Stalactic Golem@CR_AUTOGUARD,chase,249,5,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
-2644,Furious Stalactic Golem@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0091,,,,,
+2644,Furious Stalactic Golem@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x91,,,,,
 2644,Furious Stalactic Golem@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2644,Furious Stalactic Golem@NPC_STUNATTACK,attack,179,4,500,1500,5000,no,target,always,,,,,,,6,
 2644,Furious Stalactic Golem@SM_ENDURE,chase,8,1,5000,0,10000,yes,self,longrangeattacked,,,,,,,6,
@@ -8609,7 +8609,7 @@
 2646,Swift Spore@NPC_WATERATTACK,attack,184,1,2000,0,5000,yes,target,always,,,,,,,,
 2647,Solid Solider@CR_AUTOGUARD,attack,249,2,500,0,300000,yes,self,always,,,,,,,,
 2647,Solid Solider@CR_AUTOGUARD,chase,249,2,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
-2647,Solid Solider@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0091,,,,,
+2647,Solid Solider@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x91,,,,,
 2647,Solid Solider@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,9,,,,,,
 2647,Solid Solider@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,6,
 2647,Solid Solider@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,,
@@ -8766,7 +8766,7 @@
 2667,Solid Cecil Damon@NPC_STUNATTACK,attack,179,5,1000,0,5000,yes,target,always,,,,,,,,
 2667,Solid Cecil Damon@NPC_WINDATTACK,attack,187,5,1000,0,5000,yes,target,always,,,,,,,,
 2667,Solid Cecil Damon@SN_SHARPSHOOTING,attack,382,5,2000,500,1500,no,target,always,,,,,,,,
-2668,Sea Otter Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2668,Sea Otter Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2668,Sea Otter Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,0x3095,,,,,
 2668,Sea Otter Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,,,,,,
 2668,Sea Otter Ringleader@NPC_WATERATTACK,attack,184,3,2000,0,5000,yes,target,always,,,,,,,,
@@ -8893,14 +8893,14 @@
 2693,Furious Rake Scaraba@BS_HAMMERFALL,attack,110,5,500,1500,5000,no,target,always,,,,,,,,
 2693,Furious Rake Scaraba@MC_MAMMONITE,attack,42,5,500,800,5000,no,target,always,,,,,,,8,
 2693,Furious Rake Scaraba@NPC_CRITICALWOUND,attack,673,1,2000,0,30000,yes,target,always,,,,,,,,
-2693,Furious Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,19,0x0081,,,,,
+2693,Furious Rake Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,19,0x81,,,,,
 2693,Furious Rake Scaraba@NPC_EMOTION,idle,197,1,3000,0,5000,yes,self,always,,6,0x3695,,,,,
 2693,Furious Rake Scaraba@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,6,
 2693,Furious Rake Scaraba@NPC_STONESKIN,attack,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6,
 2693,Furious Rake Scaraba@NPC_STONESKIN,chase,675,3,10000,1000,30000,no,self,myhpltmaxrate,50,,,,,,6,
 2693,Furious Rake Scaraba@PF_SPIDERWEB,chase,405,1,300,0,10000,yes,target,always,,,,,,,7,
 2694,Elusive Raggler@NPC_COMBOATTACK,attack,171,2,500,700,5000,no,target,always,,,,,,,6,
-2694,Elusive Raggler@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2694,Elusive Raggler@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2694,Elusive Raggler@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2694,Elusive Raggler@NPC_WINDATTACK,attack,187,3,2000,0,5000,yes,target,always,,,,,,,,
 2696,Poring Ringleader@NPC_EMOTION,loot,197,1,2000,0,5000,yes,self,always,,2,,,,,,
@@ -8933,8 +8933,8 @@
 2704,Swift Poisonous Toad@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,,,,,,
 2704,Swift Poisonous Toad@NPC_POISON,attack,176,3,500,800,5000,no,target,always,,,,,,,,
 2704,Swift Poisonous Toad@NPC_POISONATTACK,attack,188,3,2000,0,5000,yes,target,always,,,,,,,,
-2705,Solid Poison Spore@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
-2705,Solid Poison Spore@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2705,Solid Poison Spore@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
+2705,Solid Poison Spore@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2705,Solid Poison Spore@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,1,0x3885,,,,,
 2705,Solid Poison Spore@NPC_POISON,angry,176,3,500,800,5000,no,target,always,,,,,,,6,
 2705,Solid Poison Spore@NPC_POISON,attack,176,2,500,800,5000,no,target,always,,,,,,,6,
@@ -8968,7 +8968,7 @@
 2710,Solid Dark Pinguicula@AL_HEAL,idle,28,9,10000,3000,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
 2710,Solid Dark Pinguicula@AL_HEAL,idle,28,9,5000,500,5000,yes,self,myhpltmaxrate,40,,,,,,19,
 2710,Solid Dark Pinguicula@NPC_BLOODDRAIN,attack,199,1,5000,500,5000,yes,target,myhpltmaxrate,40,,,,,,19,
-2710,Solid Dark Pinguicula@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2710,Solid Dark Pinguicula@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2710,Solid Dark Pinguicula@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3885,,,,,
 2710,Solid Dark Pinguicula@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,,,,,,,,
 2710,Solid Dark Pinguicula@NPC_SLEEPATTACK,attack,182,3,1000,1500,5000,no,target,always,,,,,,,,
@@ -8977,7 +8977,7 @@
 2710,Solid Dark Pinguicula@NPC_STUNATTACK,attack,179,3,1000,1500,5000,no,target,always,,,,,,,,
 2711,Pinguicula Ringleader@AL_HEAL,idle,28,9,10000,3000,5000,yes,friend,friendhpltmaxrate,50,,,,,,,
 2711,Pinguicula Ringleader@AL_HEAL,idle,28,9,5000,500,5000,yes,self,myhpltmaxrate,40,,,,,,19,
-2711,Pinguicula Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2711,Pinguicula Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2711,Pinguicula Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3885,,,,,
 2711,Pinguicula Ringleader@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,,,,,,,,
 2711,Pinguicula Ringleader@NPC_SLEEPATTACK,attack,182,3,1000,1500,5000,no,target,always,,,,,,,,
@@ -8991,13 +8991,13 @@
 2713,Elusive Phen@NPC_WATERATTACK,attack,184,3,500,500,5000,no,target,always,,,,,,,19,
 2714,Swift Petite@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2714,Swift Petite@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
-2714,Swift Petite@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2714,Swift Petite@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2714,Swift Petite@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2714,Swift Petite@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,2,,,,,,
 2714,Swift Petite@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,6,
 2714,Swift Petite@NPC_TELEKINESISATTACK,chase,191,5,500,0,5000,yes,target,always,,,,,,,,
 2714,Swift Petite@SM_BASH,attack,5,5,500,0,5000,yes,target,always,,,,,,,,
-2715,Solid Petite@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2715,Solid Petite@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2715,Solid Petite@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2715,Solid Petite@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,2,,,,,,
 2715,Solid Petite@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,6,
@@ -9020,7 +9020,7 @@
 2719,Swift Pasana@NPC_BLEEDING,attack,660,2,2000,0,3000,yes,target,always,,,,,,,32,
 2719,Swift Pasana@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,,,,,,,,
 2719,Swift Pasana@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,,,,,,,29,
-2719,Swift Pasana@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2719,Swift Pasana@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2719,Swift Pasana@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3095,,,,,
 2719,Swift Pasana@SM_BASH,attack,5,5,500,0,5000,yes,target,always,,,,,,,,
 2720,Solid Parasite@NPC_CURSEATTACK,attack,181,3,500,800,5000,no,target,always,,,,,,,9,
@@ -9033,14 +9033,14 @@
 2721,Owl Duke Ringleader@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2721,Owl Duke Ringleader@MG_LIGHTNINGBOLT,attack,20,3,2000,0,5000,yes,target,always,,,,,,,,
 2721,Owl Duke Ringleader@MG_LIGHTNINGBOLT,chase,20,3,2000,0,5000,yes,target,always,,,,,,,,
-2721,Owl Duke Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2721,Owl Duke Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2721,Owl Duke Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2721,Owl Duke Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,32,,,,,,
 2721,Owl Duke Ringleader@PR_LEXDIVINA,attack,76,3,500,1000,5000,yes,target,always,,,,,,,2,
 2721,Owl Duke Ringleader@PR_LEXDIVINA,chase,76,3,500,1000,5000,yes,target,always,,,,,,,2,
 2721,Owl Duke Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1320,,,,,,
-2722,Furious Orc Warrior@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
-2722,Furious Orc Warrior@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2722,Furious Orc Warrior@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
+2722,Furious Orc Warrior@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2722,Furious Orc Warrior@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,32,0x3885,,,,,
 2722,Furious Orc Warrior@NPC_EMOTION,follow,197,1,2000,0,5000,yes,self,always,,27,,,,,,
 2722,Furious Orc Warrior@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,,,,,,,,
@@ -9177,14 +9177,14 @@
 2739,Swift Mummy@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2739,Swift Mummy@NPC_COMBOATTACK,angry,171,1,500,700,5000,no,target,always,,,,,,,9,
 2739,Swift Mummy@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,,,,,,,9,
-2739,Swift Mummy@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
-2739,Swift Mummy@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2739,Swift Mummy@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
+2739,Swift Mummy@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2739,Swift Mummy@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3885,,,,,
 2739,Swift Mummy@NPC_UNDEADATTACK,attack,347,3,2000,0,5000,yes,target,always,,,,,,,,
 2740,Solid Mummy@NPC_COMBOATTACK,angry,171,1,500,700,5000,no,target,always,,,,,,,9,
 2740,Solid Mummy@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,,,,,,,9,
-2740,Solid Mummy@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
-2740,Solid Mummy@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2740,Solid Mummy@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
+2740,Solid Mummy@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2740,Solid Mummy@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3885,,,,,
 2740,Solid Mummy@NPC_UNDEADATTACK,attack,347,3,2000,0,5000,yes,target,always,,,,,,,,
 2741,Muka Ringleader@NPC_GROUNDATTACK,attack,185,2,500,500,5000,no,target,always,,,,,,,6,
@@ -9249,13 +9249,13 @@
 2746,Miyabi Doll Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1404,,,,,,
 2747,Furious Minorous@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2747,Furious Minorous@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,,,,,,,,
-2747,Furious Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2747,Furious Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2747,Furious Minorous@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3095,,,,,
 2747,Furious Minorous@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2747,Furious Minorous@WZ_HEAVENDRIVE,attack,91,3,500,1200,5000,yes,target,always,,,,,,,19,
 2748,Elusive Minorous@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2748,Elusive Minorous@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,,,,,,,,
-2748,Elusive Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2748,Elusive Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2748,Elusive Minorous@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3095,,,,,
 2748,Elusive Minorous@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2748,Elusive Minorous@WZ_HEAVENDRIVE,attack,91,3,500,1200,5000,yes,target,always,,,,,,,19,
@@ -9263,7 +9263,7 @@
 2749,Swift Minorous@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2749,Swift Minorous@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2749,Swift Minorous@BS_HAMMERFALL,attack,110,3,500,1500,5000,no,target,always,,,,,,,,
-2749,Swift Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2749,Swift Minorous@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2749,Swift Minorous@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3095,,,,,
 2749,Swift Minorous@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2749,Swift Minorous@WZ_HEAVENDRIVE,attack,91,3,500,1200,5000,yes,target,always,,,,,,,19,
@@ -9316,7 +9316,7 @@
 2756,Metaling Ringleader@RG_STRIPWEAPON,attack,215,3,500,0,10000,no,target,always,,,,,,,18,
 2756,Metaling Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1613,,,,,,
 2757,Furious Merman@KN_PIERCE,attack,56,5,500,700,5000,no,target,always,,,,,,,,
-2757,Furious Merman@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2757,Furious Merman@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2757,Furious Merman@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2757,Furious Merman@NPC_RANGEATTACK,chase,160,1,500,0,5000,yes,target,always,,,,,,,,
 2757,Furious Merman@NPC_WATERATTACK,attack,184,3,500,500,5000,no,target,always,,,,,,,6,
@@ -9328,7 +9328,7 @@
 2759,Swift Medusa@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2759,Swift Medusa@MG_STONECURSE,attack,16,10,500,1500,5000,no,target,always,,,,,,,3,
 2759,Swift Medusa@NPC_BLEEDING,attack,660,5,2000,0,3000,yes,target,always,,,,,,,32,
-2759,Swift Medusa@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2759,Swift Medusa@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2759,Swift Medusa@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2759,Swift Medusa@NPC_PETRIFYATTACK,attack,180,5,500,500,5000,no,target,always,,,,,,,3,
 2759,Swift Medusa@NPC_PETRIFYATTACK,chase,180,5,500,500,5000,no,target,always,,,,,,,3,
@@ -9353,7 +9353,7 @@
 2764,Swift Mantis@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2764,Swift Mantis@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2764,Swift Mantis@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,,,,,,,6,
-2764,Swift Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2764,Swift Mantis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2764,Swift Mantis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3095,,,,,
 2764,Swift Mantis@NPC_GROUNDATTACK,attack,185,3,500,500,5000,no,target,always,,,,,,,6,
 2765,Solid Mandragora@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,,,,,,,,
@@ -9368,7 +9368,7 @@
 2766,Manananggal Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,2311,,,,,,
 2767,Furious Majoruros@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2767,Furious Majoruros@BS_HAMMERFALL,attack,110,5,500,1500,5000,no,target,always,,,,,,,,
-2767,Furious Majoruros@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2767,Furious Majoruros@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2767,Furious Majoruros@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3695,,,,,
 2767,Furious Majoruros@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2767,Furious Majoruros@NPC_SUMMONSLAVE,idle,196,2,10000,2000,60000,no,self,slavele,0,1149,,,,,,
@@ -9437,7 +9437,7 @@
 2779,Swift Lesavka@NPC_COMBOATTACK,attack,171,2,3000,700,5000,no,target,always,,,,,,,,
 2779,Swift Lesavka@NPC_POISON,attack,176,2,1000,0,5000,yes,target,always,,,,,,,,
 2780,Solid Leib Olmai@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-2780,Solid Leib Olmai@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2780,Solid Leib Olmai@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2780,Solid Leib Olmai@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2780,Solid Leib Olmai@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,,,,,,,,
 2780,Solid Leib Olmai@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,,,,,,,6,
@@ -9454,7 +9454,7 @@
 2784,Swift Kobold Archer@AC_DOUBLE,attack,46,3,500,1000,5000,no,target,always,,,,,,,6,
 2784,Swift Kobold Archer@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,20,,,,,,
 2784,Swift Kobold Archer@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
-2785,Solid Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2785,Solid Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2785,Solid Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x308D,,,,,
 2785,Solid Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,,,,,,
 2785,Solid Kobold@NPC_WINDATTACK,attack,187,5,500,500,5000,no,target,always,,,,,,,6,
@@ -9491,7 +9491,7 @@
 2789,Swift Karakasa@WZ_WATERBALL,chase,86,1,500,500,5000,yes,target,always,,,,,,,6,
 2790,Solid Isis@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,,,,,,,6,
 2790,Solid Isis@NPC_DARKNESSATTACK,attack,190,3,2000,0,5000,yes,target,always,,,,,,,,
-2790,Solid Isis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2790,Solid Isis@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2790,Solid Isis@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3095,,,,,
 2791,Isilla Ringleader@AL_HEAL,attack,28,5,3000,0,5000,yes,friend,friendhpltmaxrate,50,,,,,,3,
 2791,Isilla Ringleader@AL_HEAL,idle,28,5,3000,0,5000,yes,friend,friendhpltmaxrate,50,,,,,,3,
@@ -9537,8 +9537,8 @@
 2797,Furious Hunter Fly@NPC_BLOODDRAIN,attack,199,1,500,0,5000,yes,target,always,,,,,,,2,
 2797,Furious Hunter Fly@NPC_COMBOATTACK,angry,171,1,500,700,5000,no,target,always,,,,,,,6,
 2797,Furious Hunter Fly@NPC_COMBOATTACK,attack,171,1,500,700,5000,no,target,always,,,,,,,6,
-2797,Furious Hunter Fly@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
-2797,Furious Hunter Fly@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2797,Furious Hunter Fly@NPC_EMOTION,follow,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
+2797,Furious Hunter Fly@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2797,Furious Hunter Fly@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3885,,,,,
 2797,Furious Hunter Fly@NPC_WINDATTACK,angry,187,2,2000,0,5000,yes,target,always,,,,,,,,
 2797,Furious Hunter Fly@NPC_WINDATTACK,attack,187,2,2000,0,5000,yes,target,always,,,,,,,,
@@ -9551,7 +9551,7 @@
 2799,Swift Uni-Horn Scaraba@NPC_BLEEDING,attack,660,2,500,700,5000,no,target,always,,,,,,,,
 2799,Swift Uni-Horn Scaraba@NPC_COMBOATTACK,attack,171,2,500,700,5000,no,target,always,,,,,,,,
 2799,Swift Uni-Horn Scaraba@NPC_COMBOATTACK,chase,171,2,500,700,5000,no,target,always,,,,,,,,
-2799,Swift Uni-Horn Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,19,0x0081,,,,,
+2799,Swift Uni-Horn Scaraba@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,19,0x81,,,,,
 2799,Swift Uni-Horn Scaraba@NPC_PIERCINGATT,attack,158,3,1000,0,5000,yes,target,always,,,,,,,,
 2799,Swift Uni-Horn Scaraba@NPC_STOP,attack,342,1,500,500,5000,no,target,always,,,,,,,,
 2800,Solid Horn@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,,,,,,,,
@@ -9580,7 +9580,7 @@
 2804,Swift Hill Wind@WZ_JUPITEL,attack,84,3,500,1500,5000,yes,target,always,,,,,,,6,
 2804,Swift Hill Wind@WZ_JUPITEL,chase,84,3,500,1500,5000,yes,target,always,,,,,,,6,
 2805,Solid High Orc@CR_SHIELDCHARGE,attack,250,2,500,0,5000,no,target,always,,,,,,,,
-2805,Solid High Orc@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2805,Solid High Orc@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2805,Solid High Orc@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3695,,,,,
 2805,Solid High Orc@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,,6,,,,,,
 2805,Solid High Orc@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
@@ -9616,13 +9616,13 @@
 2809,Swift Greatest General@WZ_EARTHSPIKE,idle,90,3,5000,1500,5000,no,target,casttargeted,,,,,,,6,
 2809,Swift Greatest General@WZ_EARTHSPIKE,idle,90,3,5000,1500,5000,no,target,longrangeattacked,,,,,,,6,
 2810,Solid Grand Peco@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,,,,,,,6,
-2810,Solid Grand Peco@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0081,,,,,
-2810,Solid Grand Peco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2810,Solid Grand Peco@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x81,,,,,
+2810,Solid Grand Peco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2810,Solid Grand Peco@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2810,Solid Grand Peco@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2811,Grand Peco Ringleader@AS_SONICBLOW,attack,136,5,500,800,5000,no,target,always,,,,,,,6,
-2811,Grand Peco Ringleader@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0081,,,,,
-2811,Grand Peco Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2811,Grand Peco Ringleader@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x81,,,,,
+2811,Grand Peco Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2811,Grand Peco Ringleader@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2811,Grand Peco Ringleader@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,6,
 2811,Grand Peco Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1369,,,,,,
@@ -9631,13 +9631,13 @@
 2812,Furious Golem@CR_SHIELDCHARGE,attack,250,2,500,1500,5000,no,target,always,,,,,,,9,
 2812,Furious Golem@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,,,,,,
 2812,Furious Golem@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,,,,,,,6,
-2813,Elusive Goblin@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2813,Elusive Goblin@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2813,Elusive Goblin@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,2,0x308D,,,,,
 2813,Elusive Goblin@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,,18,,,,,,
 2813,Elusive Goblin@NPC_WINDATTACK,attack,187,5,500,500,5000,no,target,always,,,,,,,,
 2814,Swift Goblin@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2814,Swift Goblin@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
-2814,Swift Goblin@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2814,Swift Goblin@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2814,Swift Goblin@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,2,0x308D,,,,,
 2814,Swift Goblin@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,,18,,,,,,
 2814,Swift Goblin@NPC_WINDATTACK,attack,187,5,500,500,5000,no,target,always,,,,,,,,
@@ -9654,11 +9654,11 @@
 2816,Goat Ringleader@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,,
 2816,Goat Ringleader@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,,,,,,,6,
 2816,Goat Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1372,,,,,,
-2817,Furious Dark Hammer Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2817,Furious Dark Hammer Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2817,Furious Dark Hammer Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x308D,,,,,
 2817,Furious Dark Hammer Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,,,,,,
 2817,Furious Dark Hammer Kobold@NPC_POISONATTACK,attack,188,5,500,500,5000,no,target,always,,,,,,,6,
-2818,Elusive Dark Hammer Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2818,Elusive Dark Hammer Kobold@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2818,Elusive Dark Hammer Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x308D,,,,,
 2818,Elusive Dark Hammer Kobold@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,,,,,,
 2818,Elusive Dark Hammer Kobold@NPC_POISONATTACK,attack,188,5,500,500,5000,no,target,always,,,,,,,6,
@@ -9673,7 +9673,7 @@
 2820,Solid Dark Shadow@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,,,,,,
 2820,Solid Dark Shadow@NPC_FIREATTACK,attack,186,3,500,500,5000,no,target,always,,,,,,,,
 2821,Giant Hornet Ringleader@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
-2821,Giant Hornet Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2821,Giant Hornet Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2821,Giant Hornet Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,9,0x3695,,,,,
 2821,Giant Hornet Ringleader@NPC_PIERCINGATT,attack,158,3,500,0,5000,yes,target,always,,,,,,,6,
 2821,Giant Hornet Ringleader@NPC_SILENCEATTACK,chase,178,3,500,700,5000,no,target,always,,,,,,,,
@@ -9714,20 +9714,20 @@
 2829,Swift Seal@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2829,Swift Seal@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2829,Swift Seal@NPC_COMBOATTACK,attack,171,2,500,700,5000,yes,target,always,,,,,,,6,
-2829,Swift Seal@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2829,Swift Seal@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2829,Swift Seal@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,1,0x3095,,,,,
 2829,Swift Seal@NPC_WATERATTACK,attack,184,5,500,500,5000,yes,target,always,,,,,,,6,
 2830,Solid Freezer@MG_COLDBOLT,attack,14,3,500,1500,5000,yes,target,always,,,,,,,,
 2830,Solid Freezer@MG_COLDBOLT,chase,14,3,500,1500,5000,yes,target,always,,,,,,,,
 2830,Solid Freezer@MG_FROSTDIVER,attack,15,9,500,1000,5000,yes,target,always,,,,,,,,
-2830,Solid Freezer@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2830,Solid Freezer@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2830,Solid Freezer@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2830,Solid Freezer@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,20,,,,,,
 2830,Solid Freezer@NPC_WATERATTACK,attack,184,3,500,500,5000,yes,target,always,,,,,,,6,
 2831,Freezer Ringleader@MG_COLDBOLT,attack,14,3,500,1500,5000,yes,target,always,,,,,,,,
 2831,Freezer Ringleader@MG_COLDBOLT,chase,14,3,500,1500,5000,yes,target,always,,,,,,,,
 2831,Freezer Ringleader@MG_FROSTDIVER,attack,15,9,500,1000,5000,yes,target,always,,,,,,,,
-2831,Freezer Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2831,Freezer Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2831,Freezer Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2831,Freezer Ringleader@NPC_EMOTION,walk,197,1,2000,0,5000,yes,self,always,,20,,,,,,
 2831,Freezer Ringleader@NPC_WATERATTACK,attack,184,3,500,500,5000,yes,target,always,,,,,,,6,
@@ -9785,12 +9785,12 @@
 2839,Swift Elder Willow@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2839,Swift Elder Willow@MG_FIREBOLT,attack,19,3,500,1500,5000,yes,target,always,,,,,,,,
 2839,Swift Elder Willow@MG_FIREBOLT,chase,19,3,500,1500,5000,yes,target,always,,,,,,,,
-2839,Swift Elder Willow@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2839,Swift Elder Willow@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2839,Swift Elder Willow@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2839,Swift Elder Willow@NPC_FIREATTACK,attack,186,3,500,500,5000,yes,target,always,,,,,,,6,
 2840,Solid Elder Willow@MG_FIREBOLT,attack,19,3,500,1500,5000,yes,target,always,,,,,,,,
 2840,Solid Elder Willow@MG_FIREBOLT,chase,19,3,500,1500,5000,yes,target,always,,,,,,,,
-2840,Solid Elder Willow@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2840,Solid Elder Willow@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2840,Solid Elder Willow@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2840,Solid Elder Willow@NPC_FIREATTACK,attack,186,3,500,500,5000,yes,target,always,,,,,,,6,
 2841,Echio Ringleader@AS_SONICBLOW,attack,136,5,1000,800,5000,yes,target,always,,,,,,,,
@@ -9946,20 +9946,20 @@
 2867,Elusive Comodo@NPC_POISONATTACK,attack,188,5,2000,0,5000,yes,target,always,,,,,,,,
 2868,Swift Coco@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2868,Swift Coco@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
-2868,Swift Coco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2868,Swift Coco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2868,Swift Coco@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,,,,,,,,
 2868,Swift Coco@TF_THROWSTONE,chase,152,1,2000,0,5000,yes,target,always,,,,,,,6,
-2869,Solid Coco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2869,Solid Coco@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2869,Solid Coco@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,,,,,,,,
 2869,Solid Coco@TF_THROWSTONE,chase,152,1,2000,0,5000,yes,target,always,,,,,,,6,
 2870,Clock Ringleader@NPC_CURSEATTACK,attack,181,4,500,800,5000,yes,target,always,,,,,,,6,
-2870,Clock Ringleader@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0091,,,,,
+2870,Clock Ringleader@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x91,,,,,
 2870,Clock Ringleader@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2870,Clock Ringleader@NPC_GROUNDATTACK,attack,185,4,500,500,5000,yes,target,always,,,,,,,6,
 2870,Clock Ringleader@NPC_STUNATTACK,attack,179,3,500,1500,5000,yes,target,always,,,,,,,6,
 2870,Clock Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1269,,,,,,
 2871,Furious Clock@NPC_CURSEATTACK,attack,181,4,500,800,5000,yes,target,always,,,,,,,6,
-2871,Furious Clock@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0091,,,,,
+2871,Furious Clock@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x91,,,,,
 2871,Furious Clock@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2871,Furious Clock@NPC_GROUNDATTACK,attack,185,4,500,500,5000,yes,target,always,,,,,,,6,
 2871,Furious Clock@NPC_STUNATTACK,attack,179,3,500,1500,5000,yes,target,always,,,,,,,6,
@@ -9971,13 +9971,13 @@
 2873,Swift Centipede@AS_VENOMDUST,attack,140,1,500,1500,5000,no,around1,always,,,,,,,,
 2873,Swift Centipede@HW_GANBANTEIN,attack,483,1,3000,0,7000,no,target,always,,,,,,,,
 2873,Swift Centipede@NPC_COMBOATTACK,attack,171,1,3000,0,5000,yes,target,always,,,,,,,,
-2873,Swift Centipede@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2873,Swift Centipede@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2873,Swift Centipede@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2873,Swift Centipede@NPC_POISON,attack,176,3,500,800,5000,no,target,always,,,,,,,,
 2873,Swift Centipede@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,,,,,,,,
 2873,Swift Centipede@WZ_QUAGMIRE,chase,92,5,500,700,5000,yes,target,always,,,,,,,12,
 2874,Solid Cenere@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,,,,,,,,
-2874,Solid Cenere@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2874,Solid Cenere@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2874,Solid Cenere@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2874,Solid Cenere@NPC_PETRIFYATTACK,attack,180,3,500,500,5000,no,target,always,,,,,,,7,
 2874,Solid Cenere@NPC_WINDATTACK,attack,187,2,2000,0,5000,yes,target,always,,,,,,,,
@@ -10048,7 +10048,7 @@
 2881,Furious Breeze@NPC_WINDATTACK,attack,187,3,500,500,5000,no,target,always,,,,,,,6,
 2882,Elusive Bradium Golem@CR_AUTOGUARD,attack,249,5,500,0,300000,yes,self,always,,,,,,,,
 2882,Elusive Bradium Golem@CR_AUTOGUARD,chase,249,5,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
-2882,Elusive Bradium Golem@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x0091,,,,,
+2882,Elusive Bradium Golem@NPC_EMOTION,idle,197,1,200,0,30000,yes,self,always,,9,0x91,,,,,
 2882,Elusive Bradium Golem@NPC_EMOTION_ON,attack,474,1,10000,0,30000,yes,self,always,,6,0x3885,,,,,
 2882,Elusive Bradium Golem@NPC_STUNATTACK,attack,179,4,500,1500,5000,no,target,always,,,,,,,6,
 2882,Elusive Bradium Golem@SM_ENDURE,chase,8,1,5000,0,10000,yes,self,longrangeattacked,,,,,,,6,
@@ -10060,7 +10060,7 @@
 2883,Swift Bloody Butterfly@NPC_SLEEPATTACK,chase,182,5,500,0,5000,yes,target,always,,,,,,,7,
 2884,Bigfoot Ringleader@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,,6,,,,,,
 2884,Bigfoot Ringleader@NPC_GROUNDATTACK,attack,185,1,2000,0,5000,yes,target,always,,,,,,,,
-2884,Bigfoot Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2884,Bigfoot Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2884,Bigfoot Ringleader@NPC_STUNATTACK,attack,179,2,500,1500,5000,no,target,always,,,,,,,,
 2884,Bigfoot Ringleader@SM_ENDURE,chase,8,1,5000,0,10000,yes,self,longrangeattacked,,,,,,,6,
 2884,Bigfoot Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1060,,,,,,
@@ -10076,7 +10076,7 @@
 2886,Elusive Banshee Master@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,,,,,,,21,
 2886,Elusive Banshee Master@NPC_DARKSTRIKE,attack,340,9,2000,0,5000,yes,target,always,,,,,,,,
 2886,Elusive Banshee Master@NPC_DARKSTRIKE,chase,340,9,2000,0,5000,yes,target,always,,,,,,,,
-2886,Elusive Banshee Master@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,7,0x0081,,,,,
+2886,Elusive Banshee Master@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,7,0x81,,,,,
 2886,Elusive Banshee Master@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,,0x3695,,,,,
 2886,Elusive Banshee Master@NPC_EVILLAND,attack,670,1,500,0,5000,yes,self,always,,,,,,,,
 2886,Elusive Banshee Master@NPC_VAMPIRE_GIFT,attack,679,1,500,0,5000,yes,self,always,,,,,,,,
@@ -10088,7 +10088,7 @@
 2887,Swift Banshee@NPC_DARKNESSATTACK,attack,190,3,1000,0,5000,yes,target,always,,,,,,,21,
 2887,Swift Banshee@NPC_DARKSTRIKE,attack,340,9,2000,0,5000,yes,target,always,,,,,,,,
 2887,Swift Banshee@NPC_DARKSTRIKE,chase,340,9,2000,0,5000,yes,target,always,,,,,,,,
-2887,Swift Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,7,0x0081,,,,,
+2887,Swift Banshee@NPC_EMOTION,chase,197,1,1000,0,5000,yes,self,always,,7,0x81,,,,,
 2887,Swift Banshee@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,,0x3695,,,,,
 2887,Swift Banshee@NPC_EVILLAND,attack,670,1,500,0,5000,yes,self,always,,,,,,,,
 2887,Swift Banshee@NPC_VAMPIRE_GIFT,attack,679,1,500,0,5000,yes,self,always,,,,,,,,
@@ -10103,7 +10103,7 @@
 2889,Assaulter Ringleader@AS_SONICBLOW,attack,136,10,500,800,5000,no,target,always,,,,,,,,
 2889,Assaulter Ringleader@MO_BODYRELOCATION,chase,264,1,2000,500,5000,no,target,always,,,,,,,,
 2889,Assaulter Ringleader@NPC_EMOTION,attack,197,1,2000,0,600000,yes,self,myhpltmaxrate,20,23,,,,,,
-2889,Assaulter Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2889,Assaulter Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2889,Assaulter Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3695,,,,,
 2889,Assaulter Ringleader@NPC_WINDATTACK,attack,187,5,500,500,5000,no,target,always,,,,,,,6,
 2889,Assaulter Ringleader@NPC_COMBOATTACK,attack,171,1,1500,700,5000,no,target,always,,,,,,,24,
@@ -10117,22 +10117,22 @@
 2891,Elusive Argiope@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,,,,,,,,
 2891,Elusive Argiope@NPC_POISON,attack,176,3,1500,800,5000,no,target,always,,,,,,,,
 2891,Elusive Argiope@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,,,,,,,,
-2891,Elusive Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2891,Elusive Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2891,Elusive Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2892,Swift Argiope@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2892,Swift Argiope@AL_HEAL,attack,28,5,10000,500,5000,yes,self,myhpltmaxrate,50,,,,,,,
 2892,Swift Argiope@AS_VENOMDUST,attack,140,1,500,1500,5000,no,target,always,,,,,,,,
 2892,Swift Argiope@NPC_POISON,attack,176,3,1500,800,5000,no,target,always,,,,,,,,
 2892,Swift Argiope@NPC_POISONATTACK,attack,188,2,500,500,5000,no,target,always,,,,,,,,
-2892,Swift Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2892,Swift Argiope@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2892,Swift Argiope@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2893,Solid Arclouze@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2893,Solid Arclouze@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,,,,,,,,
-2893,Solid Arclouze@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2893,Solid Arclouze@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2893,Solid Arclouze@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2894,Arclouze Ringleader@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,
 2894,Arclouze Ringleader@NPC_GROUNDATTACK,attack,185,3,2000,0,5000,yes,target,always,,,,,,,,
-2894,Arclouze Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2894,Arclouze Ringleader@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2894,Arclouze Ringleader@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,7,0x3095,,,,,
 2894,Arclouze Ringleader@NPC_SUMMONSLAVE,idle,196,2,10000,700,30000,no,self,slavele,0,1194,,,,,,
 2895,Furious Apocalypse@CR_AUTOGUARD,attack,249,5,500,0,300000,yes,self,always,,,,,,,,
@@ -10161,7 +10161,7 @@
 2899,Furious Anolian@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,22,,,,,,
 2899,Furious Anolian@NPC_WATERATTACK,attack,184,3,2000,0,5000,yes,target,always,,,,,,,,
 2899,Furious Anolian@SM_BASH,attack,5,7,500,800,5000,no,target,always,,,,,,,2,
-2899,Furious Anolian@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2899,Furious Anolian@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2899,Furious Anolian@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,2,0x3695,,,,,
 2900,Elusive Angra Mantis@AS_SONICBLOW,attack,136,10,500,800,5000,no,target,always,,,,,,,,
 2900,Elusive Angra Mantis@CR_AUTOGUARD,attack,249,2,700,0,300000,yes,self,always,,,,,,,,
@@ -10197,7 +10197,7 @@
 2906,Swift Rafflesia Arnoldi@NPC_POISONATTACK,attack,188,5,2000,0,5000,yes,target,always,,,,,,,,
 2907,Solid Alligator@NPC_WATERATTACK,attack,184,4,1000,500,5000,no,target,always,,,,,,,6,
 2907,Solid Alligator@NPC_CRITICALSLASH,attack,170,2,500,500,5000,no,target,always,,,,,,,6,
-2907,Solid Alligator@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0091,,,,,
+2907,Solid Alligator@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x91,,,,,
 2908,Aliza Ringleader@AL_HEAL,attack,28,5,5000,1000,5000,yes,friend,friendhpltmaxrate,80,,,,,,3,
 2908,Aliza Ringleader@AL_HEAL,idle,28,5,5000,1000,5000,yes,friend,friendhpltmaxrate,80,,,,,,3,
 2908,Aliza Ringleader@AL_HEAL,walk,28,5,5000,1000,5000,yes,friend,friendhpltmaxrate,80,,,,,,3,
@@ -10213,7 +10213,7 @@
 2909,Furious Alicel@NPC_GUIDEDATTACK,attack,172,1,1000,1000,20000,no,target,always,,,,,,,,
 2910,Elusive Alarm@NPC_BLINDATTACK,attack,177,3,500,0,5000,yes,target,always,,,,,,,,
 2910,Elusive Alarm@NPC_DARKBREATH,attack,202,2,500,800,5000,no,target,always,,,,,,,7,
-2910,Elusive Alarm@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x0081,,,,,
+2910,Elusive Alarm@NPC_EMOTION,chase,197,1,200,0,5000,yes,self,always,,19,0x81,,,,,
 2910,Elusive Alarm@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,,6,0x3695,,,,,
 2910,Elusive Alarm@NPC_SPLASHATTACK,attack,174,1,2000,0,5000,yes,target,attackpcge,2,,,,,,6,
 2911,Swift Agav@AL_TELEPORT,attack,26,1,500,0,5000,yes,self,myhpltmaxrate,50,,,,,,,

+ 5 - 5
db/re/produce_db.txt

@@ -308,15 +308,15 @@
 
 
 //---- Enchanted Stones ------------------------
-//-- Star Crumb <-- BS_ENCHANTSTONE & 10 Star Dust
+//-- Star Crumb <-- BS_ENCHANTEDSTONE & 10 Star Dust
 114,1000,21,96,1,1001,10
-//-- Flame Heart <-- BS_ENCHANTSTONE & 10 Red Blood
+//-- Flame Heart <-- BS_ENCHANTEDSTONE & 10 Red Blood
 115,994,21,96,1,990,10
-//-- Mystic Frozen <-- BS_ENCHANTSTONE & 10 Crystal Blue
+//-- Mystic Frozen <-- BS_ENCHANTEDSTONE & 10 Crystal Blue
 116,995,21,96,1,991,10
-//-- Rough Wind <-- BS_ENCHANTSTONE & 10 Wind of Verdure
+//-- Rough Wind <-- BS_ENCHANTEDSTONE & 10 Wind of Verdure
 117,997,21,96,1,993,10
-//-- Great Nature <-- BS_ENCHANTSTONE & 10 Green Live
+//-- Great Nature <-- BS_ENCHANTEDSTONE & 10 Green Live
 118,996,21,96,1,992,10
 //----------------------------------------------
 

+ 17 - 17
db/re/quest_db.txt

@@ -783,19 +783,19 @@
 5110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The Rumored Character"
 5111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To the Lab..."
 5112,259200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Laboratory Restricted Access"
-5113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Lord Knight"
-5114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Paladin"
-5115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] High Priest"
-5116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Champion"
-5117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] High Wizard"
-5118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Professor"
-5119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Whitesmith"
-5120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Creator"
-5121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Assassin Cross"
-5122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Stalker"
-5123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Sniper"
-5124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Clown"
-5125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Gypsy"
+5113,0,1646,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Lord Knight"
+5114,0,2235,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Paladin"
+5115,0,1649,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] High Priest"
+5116,0,2238,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Champion"
+5117,0,1651,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] High Wizard"
+5118,0,2237,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Professor"
+5119,0,1648,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Whitesmith"
+5120,0,2236,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Creator"
+5121,0,1647,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Assassin Cross"
+5122,0,2239,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Stalker"
+5123,0,1650,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Sniper"
+5124,0,2240,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Clown"
+5125,0,2241,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"[Rest] Gypsy"
 
 // Kagerou/Oboro Job Quest
 5131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Strange Conversation"
@@ -977,13 +977,13 @@
 7101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  1"
 7102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  2"
 7103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  3"
-7104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  4"
-7105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  4"
+7104,3000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  4"
+7105,600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  4"
 7106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  5"
-7107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  6"
+7107,10800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  6"
 7108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  7"
 7109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  8"
-7110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  9"
+7110,600,2030,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  9"
 7111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Special task of an assassin guild  10"
 7112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Information of Madelle"
 7113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Information of Crave"

+ 5 - 5
db/re/skill_cast_db.txt

@@ -376,7 +376,7 @@
 //-- CR_HOLYCROSS
 253,0,0,0,0,20000,0,0
 //-- CR_GRANDCROSS
-254,1500,1500,900,900,20000,0,1500
+254,1500,1500,800,800,20000,0,1500
 //-- CR_DEVOTION
 255,1500,0,0,0,30000:45000:60000:75000:90000,0,1500
 //-- CR_PROVIDENCE
@@ -1768,17 +1768,17 @@
 //-- SU_HIDE
 5020,0,1000,0,-1,0,15000,0
 //-- SU_SCRATCH
-5021,0,1000,0,10000,0,3000:2000:1000,0
+5021,0,1000,0,0,120000,3000:2000:1000,0
 //-- SU_STOOP
 5022,0,1000,0,6000,0,15000,0
 //-- SU_LOPE
 5023,500,1000,0,0,0,2000:4000:6000,0
 //-- SU_SV_STEMSPEAR
-5026,2500,1000,0,10000,0,0,0
+5026,2500,1000,0,0,120000,0,0
 //-- SU_CN_POWDERING
 5027,1500,1000,0,3000:4000:5000:6000:7000,0,0,0
 //-- SU_CN_METEOR
-5028,6000,1000,0,1500:2000:2500:3000:3500,20000,2000:3000:4000:5000:6000,0
+5028,7500,1000,0,1500:2000:2500:3000:3500,20000,5000,-1
 //-- SU_SV_ROOTTWIST
 5029,0,1000,0,7000:9000:11000:13000:15000,0,3000,0
 //-- SU_SV_ROOTTWIST_ATK
@@ -1792,7 +1792,7 @@
 //-- SU_ARCLOUSEDASH
 5035,2500,1000,0,60000:70000:80000:90000:100000,0,10000,0
 //-- SU_LUNATICCARROTBEAT
-5036,3000,1000,0,1000,0,8000,0
+5036,1500,1000,0,0,5000,6000,0
 //-- SU_TUNABELLY
 5038,2000,1000,0,0,0,8000:10000:12000:14000:16000,0
 //-- SU_TUNAPARTY

+ 8 - 8
db/re/skill_db.txt

@@ -415,7 +415,7 @@
 286,2,6,2,1,0x1,0,5,1,yes,0,0,0,magic,0,0x1000,		SA_DELUGE,Deluge
 287,2,6,2,4,0x1,0,5,1,yes,0,0,0,magic,0,0x1000,		SA_VIOLENTGALE,Whirlwind
 288,2,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,		SA_LANDPROTECTOR,Magnetic Earth
-289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20,	SA_DISPELL,Dispell
+289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x10020,	SA_DISPELL,Dispell
 290,0,6,4,0,0x1,0,10,1,yes,0,0,0,magic,0,0x0,	SA_ABRACADABRA,Hocus-pocus
 291,9,6,1,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_MONOCELL,Monocell
 292,9,6,1,0,0x1,0,1,1,yes,0,0x2,0,magic,0,0x0,	SA_CLASSCHANGE,Class Change
@@ -576,7 +576,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
-396,1,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
+396,7,6,16,0,0x1,0,1,1,yes,0,0x600,0,none,0,0x40,	CG_MARIONETTE,Marionette Control
 
 //****
 // Lord Knight
@@ -778,7 +778,7 @@
 
 //****
 // Additional NPC Skills (Episode 11.3)
-653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x0,	NPC_EARTHQUAKE,Earthquake
+653,0,8,4,0,0x26,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x1,	NPC_EARTHQUAKE,Earthquake
 654,6,6,1,3,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_FIREBREATH,Fire Breath
 655,6,6,1,1,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_ICEBREATH,Ice Breath
 656,6,6,1,4,0,3,10,1,no,0,0x2,14,weapon,0,0x0,	NPC_THUNDERBREATH,Thunder Breath
@@ -983,7 +983,7 @@
 2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		AB_EUCHARISTICA,Eucharistica
 2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0,0x0,	AB_RENOVATIO,Renovatio
 2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0,0x0,	AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack.
-2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x20,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
+2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x10020,	AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why?
 2053,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0,0x0,	AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members?
 2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0,0x0,	AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later.
 2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0x0,	AB_DUPLELIGHT_MELEE,Duple Light Melee
@@ -1245,7 +1245,7 @@
 //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0,	RL_GLITTERING_GREED,Flip The Coin Greed
 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RL_RICHS_COIN,Rich's Coin
 2553,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_MASS_SPIRAL,Mass Spiral
-2554,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x20,	RL_BANISHING_BUSTER,Banishing Buster
+2554,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
 2555,3:4:4:5:5,6,2,0,0x1,1,5,1,no,0,0,1,misc,0,0x0,	RL_B_TRAP,Bind Trap
 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0,	RL_FLICKER,Flicker
 2557,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
@@ -1277,7 +1277,7 @@
 3006,7:8:9:10:11,6,2,-1,0x42,2,5,1,no,0,0,0,weapon,0,0x0,	KO_BAKURETSU,Kunai Explosion
 3007,0,6,4,-1,0x42,4:4:4:4:5,5,1,no,0,0,0,weapon,0,0x0,	KO_HAPPOKUNAI,Kunai Splash
 3008,11,8,2,0,0x56,1:1:1:1:1:1:1:1:1:2,10,-10,no,0,0,0,misc,0,0x0,	KO_MUCHANAGE,Rapid Throw
-3009,9:10:11:12:13,8,2,-1,0x2,3,5,2,no,0,0,0,weapon,0,0x0,	KO_HUUMARANKA,Swirling Petal
+3009,9:10:11:12:13,8,2,-1,0x2,3,5,-5,no,0,0,0,weapon,0,0x0,	KO_HUUMARANKA,Swirling Petal
 3010,3,6,4,0,0x52,0,5,1,no,0,0x80,0,weapon,0,0x10,	KO_MAKIBISHI,Makibishi
 3011,0,6,4,0,0x1,0,5,0,yes,0,0,0,none,0,0x0,	KO_MEIKYOUSISUI,Pure Soul
 3012,0,6,4,0,0x1,0,5,0,no,0,0,1,none,3:4:5:6:7,0x0,	KO_ZANZOU,Illusion - Shadow
@@ -1339,7 +1339,7 @@
 5025,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,		SU_POWEROFLAND,Power of Land
 5026,9,6,1,2:3:1:4:8,0x0,0,5,1,yes,0,0,0,magic,0,0x0,		SU_SV_STEMSPEAR,Silvervine Stem Spear
 5027,9,6,1,0,0x3,0,5,1,yes,0,0,1,none,0,0x0,		SU_CN_POWDERING,Catnip Powdering
-5028,9,8,2,0,0,1:1:2:2:3,5,1:2:3:4:5,yes,0,0,0,magic,0,0x0,		SU_CN_METEOR,Catnip Meteor
+5028,9,8,2,0,0,1:1:2:2:3,5,-5,yes,0,0,0,magic,0,0x0,		SU_CN_METEOR,Catnip Meteor
 5029,9,6,1,0,0x1,0,5,1,yes,0,0,1,none,0,0x0,		SU_SV_ROOTTWIST,Silvervine Root Twist
 5030,0,6,1,5,0x30,0,5,1,no,0,0,1,magic,0,0x0,	SU_SV_ROOTTWIST_ATK,Silver Vine Root Twist Attack
 5031,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,		SU_POWEROFLIFE,Power of Life
@@ -1347,7 +1347,7 @@
 5033,9,8,1,-1,0,0,5,-5,yes,0,0,0,weapon,0,0x0,	SU_PICKYPECK,Picky Peck
 5034,0,8,1,-1,0,0,5,-5,yes,0,0,0,weapon,0,0x0,	SU_PICKYPECK_DOUBLE_ATK,Picky Peck Double Attack
 5035,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		SU_ARCLOUSEDASH,Arclouse Dash
-5036,9,8,1,-1,0x2,1:1:2:2:3,5,1:2:3:4:5,yes,0,0,0,weapon,0,0x0,	SU_LUNATICCARROTBEAT,Lunatic Carrot Beat
+5036,9,8,1,-1,0x2,1:1:2:2:3,5,-3,yes,0,0,0,weapon,0,0x0,	SU_LUNATICCARROTBEAT,Lunatic Carrot Beat
 5037,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,		SU_POWEROFSEA,Power of Sea
 5038,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		SU_TUNABELLY,Tuna Belly
 5039,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		SU_TUNAPARTY,Tuna Party

+ 1 - 1
db/re/skill_require_db.txt

@@ -925,7 +925,7 @@
 3007,0,0,8:9:10:11:12,0,0,0,99,7,8,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_HAPPOKUNAI
 3008,0,0,50,0,0,10000:20000:30000:40000:50000:60000:70000:80000:90000:100000,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_MUCHANAGE
 3009,0,0,24:28:32:36:40,0,0,0,22,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_HUUMARANK
-3010,0,0,9:12:15:18:21,0,0,0,99,0,0,none,0,0,6493,3:4:5:6:7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//KO_MAKIBISHI
+3010,0,0,9:12:15:18:21,0,0,0,99,0,0,none,0,0,6493,3,6493,4,6493,5,6493,6,6493,7,0,0,0,0,0,0,0,0,0,0,0		//KO_MAKIBISHI
 3011,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							//KO_MEIKYOUSISUI
 3012,0,0,40:44:48:52: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					//KO_ZANZOU
 3013,0,0,40:44:48:52: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					//KO_KYOUGAKU

+ 2 - 1
db/re/skill_unit_db.txt

@@ -106,6 +106,7 @@
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x8010	//NJ_SUITON
 539,0x86,    ,  3, 0,1000,enemy, 0x010	//NJ_HYOUSYOURAKU
 541,0x86,    ,  1:1:2:2:3, 0,1000,enemy, 0x010	//NJ_RAIGEKISAI
+653,0xc6,    ,  0, 5:7:9:11:13:5:7:9:11:13, 300,enemy, 0x010	//NPC_EARTHQUAKE
 670,0xc7,    ,  1, 5:5:5:5:5:5:5:5:5:13,1000,all,0x008	//NPC_EVILLAND
 
 //706,0xfd,    ,  0, 0,1000,all, 0x000	//NPC_VENOMFOG
@@ -178,7 +179,7 @@
 5013,0x102,   ,  3, 0,  -1,all,   0x2002	//LG_KINGS_GRACE
 
 5027,0x106,   ,  1:1:2:2:3, 0,  -1,enemy, 0x2010 // SU_CN_POWDERING
-5028,0x86,    ,  0, 1, 500,enemy, 0x10 // SU_CN_METEOR
+5028,0x86,    ,  0, 3, 500,enemy, 0x10 // SU_CN_METEOR
 5029,0x107,   ,  0, 0,1000,enemy, 0x10 // SU_SV_ROOTTWIST
 
 8020,0xf5,    ,  3, 0,2300:2100:1900:1700:1500,enemy,   0x018	//MH_POISON_MIST

+ 1 - 0
db/skill_copyable_db.txt

@@ -152,6 +152,7 @@ NJ_SHADOWJUMP,3   // Shadow Leap
 NJ_KIRIKAGE,3     // Shadow Slash
 NJ_UTSUSEMI,3     // Cicada Skin Sheeding
 NJ_KOUENKA,3      // Crimson Fire Petal
+NJ_KAENSIN,3      // Crimson Fire Formation
 NJ_BAKUENRYU,3    // Raging Fire Dragon
 NJ_HYOUSENSOU,3   // Spear of Ice
 NJ_HYOUSYOURAKU,3 // Ice Meteor

+ 4 - 0
doc/atcommands.txt

@@ -968,10 +968,14 @@ Changes Kafra Points by the specified amount.
 @hairstyle <default: 0-27>
 @haircolor <default: 0-8>
 @dye <default: 0-4>
+@bodystyle <default: 0-1>
 
 Changes appearance based on the given parameters.
 The min/max values are set in '/conf/battle/client.conf'.
 
+Appearance changed via @bodystyle won't save unless
+'save_body_style' is enabled in '/conf/battle/client.conf'
+
 ---------------------------------------
 
 @changelook {position} <view ID>

+ 4 - 4
doc/ea_job_system.txt

@@ -13,10 +13,10 @@ Preface:
 -------------------------------------------------------------------------------
 
 	Most scripters are aware of the class values used in RO and their constants
-	specified on db/const.txt. Each class has a number associated to it for
-	referencing, so when someone's class is 9 that means they are a wizard.
-	However, this list of job numbers has no real order behind it, and no logic
-	behind it's assignation.
+	specified in src/map/script_constants.h. Each class has a number associated
+	to it for referencing, so when someone's class is 9 that means they are a
+	wizard. However, this list of job numbers has no real order behind it, and
+	no logic behind it's assignation.
 
 	You can add 3999 to a job to get their rebirth ID, but if you try to do the
 	same to get the Baby class ID, that fails on the super Baby class. Also,

+ 5 - 1
doc/item_bonus.txt

@@ -109,8 +109,10 @@ 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 bWeaponAtkRate,n; 	Weapon ATK + n%
 bonus bMatk,n;     			Magical attack power + n
 bonus bMatkRate,n; 			Magical attack power + n%
+bonus bWeaponMatkRate,n;	Weapon Magical ATK + n% (renewal mode only)
 bonus bDef,n;      			Equipment DEF + n
 bonus bDefRate,n;  			Equipment DEF + n%
 bonus bDef2,n;     			VIT based DEF + n
@@ -166,7 +168,7 @@ bonus bLongAtkRate,n;     		Increases damage of ranged attacks by n%
 bonus bCritAtkRate,n;     		Increases critical damage by +n%
 bonus bCriticalDef,n;     		Decreases the chance of being hit by critical hits by n%
 bonus2 bWeaponAtk,w,n;    		Adds n ATK when weapon of type w is equipped
-bonus2 bWeaponAtkRate,w,n;		Adds n% damage to normal attacks when weapon of type w is equipped
+bonus2 bWeaponDamageRate,w,n;	Adds n% damage to normal attacks when weapon of type w is equipped
 
 bonus bNearAtkDef,n; 			Adds n% damage reduction against melee physical attacks
 bonus bLongAtkDef,n; 			Adds n% damage reduction against ranged physical attacks
@@ -245,6 +247,7 @@ bonus2 bAddMDefMonster,mid,x;     	+x% magical damage reduction against monster
 
 bonus2 bAddRace2,mr,x;			+x% damage against monster race mr
 bonus2 bSubRace2,mr,x;			+x% damage reduction against monster race mr
+bonus2 bMagicAddRace2,mr,x;		+x% magic damage against monster race mr
 
 bonus2 bSubSkill,sk,n;  		Reduces n% damage received from skill sk
 
@@ -272,6 +275,7 @@ bonus2 bIgnoreDefRaceRate,r,n;  	Disregard n% of the target's DEF if the target
 bonus bIgnoreDefClass,c;		Disregard DEF against enemies of class c
 bonus bIgnoreMDefRace,r;		Disregard MDEF against enemies of race r
 bonus2 bIgnoreMdefRaceRate,r,n; 	Disregard n% of the target's MDEF if the target belongs to race r
+bonus2 bIgnoreMdefRace2Rate,mr,n; 	Disregard n% of the target's MDEF if the target belongs to monster race mr
 bonus bIgnoreMDefEle,e; 		Disregard MDEF against enemies of element e
 bonus2 bIgnoreMdefClassRate,c,n;	Disregard n% of the target's MDEF if the target belongs to class c
 

+ 56 - 55
doc/mob_db_mode_list.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20160130
+//= 20160402
 //===== Description: =========================================
 //= A reference description of rAthena's mob_db 'mode' field.
 //============================================================
@@ -11,40 +11,41 @@
 Bit Legend
 -------------------------------------------------------------------------------
 
-MD_CANMOVE            | 0x0000001 |        1
-MD_LOOTER             | 0x0000002 |        2
-MD_AGGRESSIVE         | 0x0000004 |        4
-MD_ASSIST             | 0x0000008 |        8
-MD_CASTSENSOR_IDLE    | 0x0000010 |       16
-MD_BOSS               | 0x0000020 |       32
-MD_PLANT              | 0x0000040 |       64
-MD_CANATTACK          | 0x0000080 |      128
-MD_DETECTOR           | 0x0000100 |      256
-MD_CASTSENSOR_CHASE   | 0x0000200 |      512
-MD_CHANGECHASE        | 0x0000400 |     1024
-MD_ANGRY              | 0x0000800 |     2048
-MD_CHANGETARGET_MELEE | 0x0001000 |     4096
-MD_CHANGETARGET_CHASE | 0x0002000 |     8192
-MD_TARGETWEAK         | 0x0004000 |    16384
-MD_RANDOMTARGET       | 0x0008000 |    32768
-MD_IGNOREMELEE        | 0x0010000 |    65536
-MD_IGNOREMAGIC        | 0x0020000 |   131072
-MD_IGNORERANGED       | 0x0040000 |   262144
-MD_MVP                | 0x0080000 |   524288
-MD_IGNOREMISC         | 0x0100000 |  1048576
-MD_KNOCKBACK_IMMUNE   | 0x0200000 |  2097152
-MD_NORANDOM_WALK      | 0x0400000 |  4194304
-MD_NOCAST_SKILL       | 0x0800000 |  8388608
-MD_FIXED_ITEMDROP     | 0x1000000 | 16777216
+MD_CANMOVE            | 0x0000001 |         1
+MD_LOOTER             | 0x0000002 |         2
+MD_AGGRESSIVE         | 0x0000004 |         4
+MD_ASSIST             | 0x0000008 |         8
+MD_CASTSENSOR_IDLE    | 0x0000010 |        16
+MD_NORANDOM_WALK      | 0x0000020 |        32
+MD_NOCAST_SKILL       | 0x0000040 |        64
+MD_CANATTACK          | 0x0000080 |       128
+FREE                  | 0x0000100 |       256
+MD_CASTSENSOR_CHASE   | 0x0000200 |       512
+MD_CHANGECHASE        | 0x0000400 |      1024
+MD_ANGRY              | 0x0000800 |      2048
+MD_CHANGETARGET_MELEE | 0x0001000 |      4096
+MD_CHANGETARGET_CHASE | 0x0002000 |      8192
+MD_TARGETWEAK         | 0x0004000 |     16384
+MD_RANDOMTARGET       | 0x0008000 |     32768
+---------------------------------------------
+MD_IGNOREMELEE        | 0x0010000 |     65536
+MD_IGNOREMAGIC        | 0x0020000 |    131072
+MD_IGNORERANGED       | 0x0040000 |    262144
+MD_MVP                | 0x0080000 |    524288
+MD_IGNOREMISC         | 0x0100000 |   1048576
+MD_KNOCKBACK_IMMUNE   | 0x0200000 |   2097152
+MD_TELEPORT_BLOCK     | 0x0400000 |   4194304
+FREE                  | 0x0800000 |   8388608
+---------------------------------------------
+MD_FIXED_ITEMDROP     | 0x1000000 |  16777216
+MD_DETECTOR           | 0x2000000 |  33554432
+MD_STATUS_IMMUNE      | 0x4000000 |  67108864
+MD_SKILL_IMMUNE       | 0x8000000 | 134217728
 
 Explanation for modes
 -------------------------------------------------------------------------------
 
-CanMove: Enables the mob to move/chase characters.
-
-CanAttack: Enables the mob to attack/retaliate when you are within attack
-	range. Note that this only enables them to use normal attacks, skills are
-	always allowed.
+Can Move: Enables the mob to move/chase characters.
 
 Looter: The mob will loot up nearby items on the ground when it's on idle state.
 
@@ -55,14 +56,17 @@ Assist: When a nearby mob of the same class attacks, assist types will join them
 Cast Sensor Idle: Will go after characters who start casting on them if idle
 	or walking (without a target).
 
-Cast Sensor Chase: Will go after characters who start casting on them if idle
-	or chasing other players (they switch chase targets)
+No Random Walk: The mob will not randomly walk around while in the
+	idle state.
 
-Boss: Special flag which makes mobs immune to certain status changes and skills.
+No Cast Skill: The mob will be unable to cast skills.
 
-Plant: Always receives 1 damage from attacks.
+Can Attack: Enables the mob to attack/retaliate when you are within attack
+	range. Note that this only enables them to use normal attacks, skills are
+	always allowed.
 
-Detector: Enables mob to detect and attack characters who are in hiding/cloak.
+Cast Sensor Chase: Will go after characters who start casting on them if idle
+	or chasing other players (they switch chase targets)
 
 Change Chase: Allows chasing mobs to switch targets if another player happens
 	to be within attack range (handy on ranged attackers, for example)
@@ -91,19 +95,23 @@ Ignore Magic: The mob will take 1 HP damage from magic attacks.
 
 Ignore Range: The mob will take 1 HP damage from ranged attacks.
 
-MVP: Flagged as MVP which makes mobs resistant to Coma.
+MVP: Flagged as MVP which makes mobs resistant to Coma. Also displays the
+	MVP sign and gives players MVP EXP or MVP items.
 
 Ignore Misc: The mob will take 1 HP damage from "none" attack type.
 
 Knockback Immune: The mob will be unable to be knocked back.
 
-No Random Walk: The mob will not randomly walk around while in the
-	idle state.
-
-No Cast Skill: The mob will be unable to cast skills.
+Teleport Block: Not implemented yet.
 
 Fixed Item Drop: The mob's drops are not affected by item drop modifiers.
 
+Detector: Enables mob to detect and attack characters who are in hiding/cloak.
+
+Status Immune: Immune to being affected by statuses.
+
+Skill Immune: Immune to being affected by skills.
+
 Aegis Mob Types
 -------------------------------------------------------------------------------
 
@@ -129,14 +137,11 @@ Aegis/rA (description)
 19: 0x3095 (aggressive, change-target melee/chase, cast sensor idle)
 20: 0x3295 (aggressive, change-target melee/chase, cast sensor idle/chase)
 21: 0x3695 (aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target)
-24: 0x400081 (passive, does not walk randomly) [Slave]
+24: 0x00A1 (passive, does not walk randomly) [Slave]
 25: 0x0001 (passive, can't attack) [Pet]
 26: 0xB695 (aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target, random target)
 27: 0x8084 (aggressive, immobile, random target)
 
-- Note that the detector bit due to being Insect/Demon, plant and Boss mode
-  bits need to be added independently of this list (also see below).
-
 Aegis Class Types
 -------------------------------------------------------------------------------
 
@@ -146,13 +151,13 @@ Add the mode listed here to the mode above.
 
 Aegis/rA
 00: 0x0000000 (normal monster)
-01: 0x0000120 (boss class, immune to status changes, immune to knockback, detector)
-02: ? (guardian class, immune to status changes)
-04: ? (battleground class, immune to status changes, completely ignores all skills)
+01: 0x6200000 (boss class, immune to status changes, immune to knockback, detector)
+02: 0x4000000 (guardian class, immune to status changes)
+04: 0xC000000 (battlefield class, immune to status changes, completely ignores all skills)
 05: 0x1000000 (event class, ignores all drop rate adjustments)
 
-- Guardian and battleground classes are currently not 100% possible with
-  rA mode bits, it is recommended to use MD_BOSS (0x0000020) for now
+- Note that the detector bit for Insect/Demon monsters need to be added
+  independently.
 
 Aegis Attr Types
 -------------------------------------------------------------------------------
@@ -167,9 +172,5 @@ Aegis/rA
 04: 0x040000 (takes 1 damage from ranged attacks)
 08: 0x080000 (MVP, gives MVP rewards, immune to instant death/coma effects)
 16: 0x100000 (takes 1 damage from misc attacks)
-23: 0x000040 (plant mode)
 32: 0x200000 (cannot be knocked back)
-64: ? (teleport block)
-
-- Note that if attr=23 (1+2+4+16), it's better to use 0x40 (plant mode) for
-  easier reading
+64: 0x400000 (teleport block)

+ 140 - 61
doc/script_commands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20160325
+//= 20160523
 //===== Description: =========================================
 //= A reference manual for the rAthena scripting language.
 //= Commands are sorted depending on their functionality.
@@ -472,8 +472,8 @@ nothing  - A permanent variable attached to the character, the default variable
            ends it. When a scope ends, its variables are converted to values 
            ('return .@var;' returns a value, not a reference).
 "'"      - An instance variable.
-           These are used with the instancing system, and are unique to each 
-           party's instance.
+           These are used with the instancing system and are unique to each 
+           instance type.
 "#"      - A permanent local account variable.
            They are stored by char-server in the `acc_reg_num` table and
            `acc_reg_str`.
@@ -503,6 +503,8 @@ $@name$ - temporary global string variable
  .name$ - NPC string variable
 .@name  - scope integer variable
 .@name$ - scope string variable
+ 'name  - instance integer variable
+ 'name$ - instance string variable
  #name  - permanent local account integer variable
  #name$ - permanent local account string variable
 ##name  - permanent global account integer variable
@@ -2489,27 +2491,27 @@ This function returns the item ID of the item equipped in the equipment slot
 specified on the invoking character. If nothing is equipped there, it returns -1. 
 Valid equipment slots are:
 
-EQI_HEAD_TOP (1)          - Upper Headgear
-EQI_ARMOR (2)             - Armor (jackets, robes)
-EQI_HAND_L (3)            - Left hand (weapons, shields)
-EQI_HAND_R (4)            - Right hand (weapons)
-EQI_GARMENT (5)           - Garment (mufflers, hoods, manteaus)
-EQI_SHOES (6)             - Footgear (shoes, boots)
-EQI_ACC_L (7)             - Accessory 1
-EQI_ACC_R (8)             - Accessory 2
-EQI_HEAD_MID (9)          - Middle Headgear (masks, glasses)
-EQI_HEAD_LOW (10)         - Lower Headgear (beards, some masks)
-EQI_COSTUME_HEAD_LOW (11) - Lower Costume Headgear
-EQI_COSTUME_HEAD_MID (12) - Middle Costume Headgear
-EQI_COSTUME_HEAD_TOP (13) - Upper Costume Headgear
-EQI_COSTUME_GARMENT (14)  - Costume Garment
-EQI_AMMO (15)    		  - Arrow/Ammunition
-EQI_SHADOW_ARMOR (16)     - Shadow Armor
-EQI_SHADOW_WEAPON (17)    - Shadow Weapon
-EQI_SHADOW_SHIELD (18)    - Shadow Shield
-EQI_SHADOW_SHOES (19)     - Shadow Shoes
-EQI_SHADOW_ACC_R (20)     - Shadow Accessory 2
-EQI_SHADOW_ACC_L (21)     - Shadow Accessory 1
+EQI_ACC_L (0)             - Accessory 1
+EQI_ACC_R (1)             - Accessory 2
+EQI_SHOES (2)             - Footgear (shoes, boots)
+EQI_GARMENT (3)           - Garment (mufflers, hoods, manteaux)
+EQI_HEAD_LOW (4)          - Lower Headgear (beards, some masks)
+EQI_HEAD_MID (5)          - Middle Headgear (masks, glasses)
+EQI_HEAD_TOP (6)          - Upper Headgear
+EQI_ARMOR (7)             - Armor (jackets, robes)
+EQI_HAND_L (8)            - Left hand (weapons, shields)
+EQI_HAND_R (9)            - Right hand (weapons)
+EQI_COSTUME_HEAD_TOP (10) - Upper Costume Headgear
+EQI_COSTUME_HEAD_MID (11) - Middle Costume Headgear
+EQI_COSTUME_HEAD_LOW (12) - Lower Costume Headgear
+EQI_COSTUME_GARMENT (13)  - Costume Garment
+EQI_AMMO (14)    		  - Arrow/Ammunition
+EQI_SHADOW_ARMOR (15)     - Shadow Armor
+EQI_SHADOW_WEAPON (16)    - Shadow Weapon
+EQI_SHADOW_SHIELD (17)    - Shadow Shield
+EQI_SHADOW_SHOES (18)     - Shadow Shoes
+EQI_SHADOW_ACC_R (19)     - Shadow Accessory 2
+EQI_SHADOW_ACC_L (20)     - Shadow Accessory 1
 
 Notice that a few items occupy several equipment slots, and if the character is 
 wearing such an item, 'getequipid' will return its ID number for either slot.
@@ -2648,6 +2650,9 @@ This function returns the weapon level for the weapon equipped in the specified
 equipment slot on the invoking character. For a list of equipment slots see 
 'getequipid'.
 
+If -1 is passed as the equipment slot argument then the weapon level for the item calling this function, 
+assuming it is called by an item script, will be returned. Otherwise, 0 will be returned.
+
 Only EQI_HAND_L and EQI_HAND_R normally make sense, since only weapons have
 a weapon level. You can, however, probably, use this field for other equippable
 custom items as a flag or something.
@@ -4241,14 +4246,15 @@ Here are the possible look types:
  LOOK_CLOTHES_COLOR - Clothes color
  LOOK_SHIELD - Shield
  LOOK_SHOES - Shoes
- LOOK_BODY2 - bodystyle
+ LOOK_BODY2 - Body style
 
 Whatever 'shoes' means is anyone's guess, ask Gravity - the client does nothing 
 with this value. It still wants it from the server though, so it is kept, but 
 normally doesn't do a thing.
  
 Only the look data for hairstyle, hair color and clothes color are saved to the 
-char server's database and will persist. The rest freely change as the character 
+char server's database and will persist. Body style will also persist if 'save_body_style'
+configuration is enabled in '/conf/battle/client.conf'. The rest freely change as the character 
 puts on and removes equipment, changes maps, logs in and out and otherwise you 
 should not expect to set them. In fact, messing with them is generally 
 hazardous, do it at your own risk, it is not tested what will this actually do -
@@ -5416,7 +5422,7 @@ Flags (bitmask):
 	8   : Remove when player logs out.
 	16  : Removeable by Banishing Buster.
 	32  : Removable by Refresh.
-	64  : Removable by Luxanima.
+	64  : Removable by Lux Anima.
 	128 : Remove when Madogear is activated or deactivated.
 	256 : Remove when receive damage.
 	512 : Script is permanent, cannot be cleared by bonus_script_clear.
@@ -5516,14 +5522,20 @@ undisguise; // Return to normal character sprite.
 
 ---------------------------------------
 
-*transform <monster ID>,<duration>,<sc type>{,<val1>,<val2>,<val3>,<val4>};
-*transform "<monster name>",<duration>,<sc type>{,<val1>,<val2>,<val3>,<val4>};
+*transform <monster ID>,<duration>{,<sc type>,<val1>,<val2>,<val3>,<val4>};
+*transform "<monster name>",<duration>{,<sc type>,<val1>,<val2>,<val3>,<val4>};
+*active_transform <monster ID>,<duration>{,<sc type>,<val1>,<val2>,<val3>,<val4>};
+*active_transform "<monster name>",<duration>{,<sc type>,<val1>,<val2>,<val3>,<val4>};
 
-This command will turn a player into a monster for a given duration and grants an
-SC attribute effect while transformed. Note that players cannot be transformed
+This command will turn a player into a monster for a given duration and can grant
+a SC attribute effect while transformed. Note that players cannot be transformed
 during War of Emperium or if already disguised.
 Can only be removed when you die or the duration ends.
 
+'transform' and 'active_transform' can stack on each other but using 'transform' or
+'active_transform' twice will not stack (it will cancel the previous bonus for the new).
+'active_transform' will take priority over transform for its duration.
+
 ---------------------------------------
 \\
 4,3 Marriage-related commands
@@ -5645,7 +5657,8 @@ The only very special thing about this command is an event label, which is an
 optional parameter. This label is written like '<NPC object name>::<label name>' 
 and upon the monster being killed, it will execute the script inside of the 
 specified NPC object starting from the label given. The RID of the player 
-attached at this execution will be the RID of the killing character.
+attached at this execution will be the RID of the killing character. The variable
+'killedrid' is set to the Class (mob ID) of the monster killed.
 
 <size> can be:
 	0 = medium (default)
@@ -5979,8 +5992,7 @@ It is an approximation of official server script language's 'cmdothernpc'.
 
 This command will display a message to the surrounding area as if the NPC object 
 running it was a player talking - that is, above their head and in the chat 
-window. The display name of the NPC will get appended in front of the message to 
-complete the effect.
+window. The display name of the NPC won't get appended in front of the message.
 
     // This will make everyone in the area see the NPC greet the character
     // who just invoked it.
@@ -7137,7 +7149,7 @@ Suggest to use 'unitblockmove' to forcefully stop the unit with OnTouch.
 
 *unittalk <GID>,"<text>";
 
-This command will make a <GID> say a message.
+This command will make a <GID> say a message. The display name of the <GID> won't get appended in front of the message.
 
 ---------------------------------------
 
@@ -7163,9 +7175,16 @@ For the position, the x and y are given in the UnitSkillUsePos.
 
 ---------------------------------------
 
+*unitexists <GID>;
+
+Checks if the given Game ID exists. Returns false if the object doesn't exist, or true if
+it does.
+
+---------------------------------------
+
 *getunittype <GID>;
 
-Returns the type of object from the given Game ID. Returns -1 if the given <GID> does not
+Returns the type of object from the given Game ID. Returns -1 if the given GID does not
 exist.
 
 	UNITTYPE_PC     0
@@ -7195,6 +7214,8 @@ Elemental don't support custom names.
 
 Changing a homunculus or pet name will be permanent.
 
+Returns "Unknown" if unit is not found.
+
 ---------------------------------------
 
 *getunitdata <GID>,<arrayname>;
@@ -7204,6 +7225,8 @@ This is used to get and set special data related to the unit.
 With getunitdata, the array given will be filled with the current data. In setunitdata
 the indexes in the array would be used to set that data on the unit.
 
+Both getunitdata and setunitdata will return -1 if the given GID does not exist.
+
 Note: When adjusting a unit's stat (STR, AGI, etc) the unit's respective statuses are
       recalculated (HIT, FLEE, etc) automatically. Keep in mind that some stats don't
 	  affect a unit's status and will have to directly be modified.
@@ -7634,6 +7657,29 @@ Example:
 
 ---------------------------------------
 
+*min(<number or array>{,<number or array>,...})
+*minimum(<number or array>{,<number or array>,...})
+*max(<number or array>{,<number or array>,...})
+*maximum(<number or array>{,<number or array>,...})
+
+Returns the smallest (or biggest) from the set of given parameters.
+These parameters have to be either numbers or number arrays.
+
+Example:
+	.@minimum = min( 1, -6, -2, 8, 2 ); // .@minimum will be equal to -6
+	.@maximum = max( 0, 5, 10, 4 ); // .@maximum will be equal to 10
+	.@level = min( BaseLevel, 70 ); // .@level will be the character's base level, capped to 70
+	
+	setarray .@testarray, 4, 5, 12, 6, 7, 3, 8, 9, 10;
+	
+	.@minimum = min( .@testarray ); // .@minimum will be equal to 3
+	.@maximum = max( .@testarray ); // .@maximum will be equal to 12
+	
+	.@minimum = min( -6, 1, 2, 3, .@testarray ); // .@minimum will be equal to -6
+	.@maximum = max( -6, 1, 2, 3, .@testarray ); // .@maximum will be equal to 12
+
+---------------------------------------
+
 *md5("<string>")
 
 Returns the md5 checksum of a number or string.
@@ -7648,8 +7694,8 @@ Example:
 *query_sql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});
 *query_logsql("your MySQL query"{, <array variable>{, <array variable>{, ...}}});
 
-Executes an SQL query. A 'select' query can fill array variables with up to 128 rows of values,
-and will return the number of rows (i.e. array size) or -1 on failure/empty array.
+Executes an SQL query. A 'select' query can fill array variables with up to 2 billion rows of
+values, and will return the number of rows (i.e. array size) or -1 on failure.
 
 Note that 'query_sql' runs on the main database while 'query_logsql' runs on the log database.
 
@@ -8095,17 +8141,23 @@ This command will open a book item at the specified page.
 ========================
 ---------------------------------------
 
-*instance_create("<instance name>");
+*instance_create("<instance name>"{,<instance mode>{,<owner id>}});
+
+Creates an instance for the <owner id> of <mode>. The instance name, along with
+all other instance data, is read from 'db/(pre-)re/instance_db.txt'. Upon success,
+the command generates a unique instance ID, duplicates all listed maps and NPCs,
+sets the alive time, and triggers the "OnInstanceInit" label in all NPCs inside
+the instance.
 
-Creates an instance for the party of the attached player. The instance name,
-along with all other instance data, is read from 'db/(pre-)re/instance_db.txt'.
-Upon success, the command generates a unique instance ID, duplicates all listed
-maps and NPCs, sets the alive time, and triggers the "OnInstanceInit" label in
-all NPCs inside the instance.
+Instance Mode options:
+ IM_NONE: Attached to no one.
+ IM_CHAR: Attached to a single character.
+ IM_PARTY: Attached to a party (default instance mode).
+ IM_GUILD: Attached to a guild.
 
 The command returns the instance ID upon success, and these values upon failure:
  -1: Invalid type.
- -2: Party not found.
+ -2: Character/Party/Guild not found.
  -3: Instance already exists.
  -4: No free instances (MAX_INSTANCE exceeded).
 
@@ -8115,20 +8167,21 @@ The command returns the instance ID upon success, and these values upon failure:
 
 Destroys instance with the ID <instance id>. If no ID is specified, the instance
 the script is attached to is used. If the script is not attached to an instance,
-the instance of the currently attached player's party is used. If that fails,
-the script will come to a halt.
+the instance of the currently attached player is used (if it is a character, party,
+or guild mode). If it is not owned by anyone, no player needs to be attached. If
+that fails, the script will come to a halt.
 
 ---------------------------------------
 
-*instance_enter("<instance name>"{,<x>,<y>,<char_id>});
+*instance_enter("<instance name>",{<x>,<y>,<char_id>});
 
 Warps player to the specified instance after the script terminates. The map and
 coordinates are located in 'db/(pre-)re/instance_db.txt'.
 
 The command returns 0 upon success, and these values upon failure:
- 1: Party not found.
- 2: Party does not have an instance.
- 3: Other errors (invalid instance name, instance doesn't match with party).
+ 1: Party/Guild not found (for party/guild modes).
+ 2: Character/Party/Guild does not have an instance.
+ 3: Other errors (invalid instance name, instance doesn't match with character/party/guild).
 
 Put -1 for x and y if want to warp player with default entrance coordinates.
 
@@ -8138,8 +8191,8 @@ Put -1 for x and y if want to warp player with default entrance coordinates.
 
 Returns the unique name of the instanced script. If no ID is specified,
 the instance the script is attached to is used. If the script is not attached to
-an instance, the instance of the currently attached player's party is used. If
-that fails, the script will come to a halt.
+an instance, the instance of the currently attached NPC, player, party, or guild
+is used. If that fails, the script will come to a halt.
 
 ---------------------------------------
 
@@ -8147,16 +8200,18 @@ that fails, the script will come to a halt.
 
 Returns the unique name of the instanced map. If no instance ID is specified,
 the instance the script is attached to is used. If the script is not attached to
-an instance, the instance of the currently attached player's party is used. If
-that fails, the command returns an empty string instead.
+an instance, the instance of the currently attached player is used (if it is a
+character, party, or guild mode). If it is not owned by anyone, no player needs
+to be attached. If that fails, the command returns an empty string instead.
 
 ---------------------------------------
 
 *instance_id()
 
 Returns the unique instance id of the attached script. If the script is not
-attached to an instance, the instance of the currently attached player's party is
-used. If that fails, the function will return 0.
+attached to an instance, the instance of the currently attached player is
+used (if it is a character, party, or guild mode). If it is not owned by anyone, no
+player needs to be attached. If that fails, the function will return 0.
 
 ---------------------------------------
 
@@ -8165,17 +8220,19 @@ used. If that fails, the function will return 0.
 Warps all players in the instance <instance id> to <map name> at given
 coordinates. If no ID is specified, the instance the script is attached to
 is used. If the script is not attached to an instance, the instance of the
-currently attached player's party is used. If that fails, the script will
-come to a halt.
+currently attached player is used (if it is a character, party, or guild
+mode). If it is not owned by anyone, no player needs to be attached. If that
+fails, the script will come to a halt.
 
 ---------------------------------------
 
 *instance_announce <instance id>,"<text>",<flag>{,<fontColor>{,<fontType>{,<fontSize>{,<fontAlign>{,<fontY>}}}}};
 
 Broadcasts a message to all players in the instance <instance id> currently
-residing on an instance map. If -1 is specified for <instance id>, the instance
+residing on an instance map. If 0 is specified for <instance id>, the instance
 the script is attached to is used. If the script is not attached to an instance,
-the instance of the currently attached player's party is used.
+the instance of the currently attached player is used (if it is a character,
+party, or guild mode). If it is not owned by anyone, no player needs to be attached.
 
 For details on the other parameters, see 'announce'.
 
@@ -8203,6 +8260,28 @@ if (instance_check_party(getcharid(1),2,2,149)) {
 
 ---------------------------------------
 
+*instance_check_guild(<guild id>{,<amount>{,<min>{,<max>}}})
+
+This function checks if a guild meets certain requirements, returning 1 if all
+conditions are met and 0 otherwise. It will only check online characters.
+
+amount - number of online guild members (default is 1).
+min    - minimum level of all characters in the guild (default is 1).
+max    - maximum level of all characters in the guild (default is max level in conf).
+
+Example:
+
+if (instance_check_guild(getcharid(2),2,2,149)) {
+	mes "Your guild meets the Memorial Dungeon requirements.",
+	mes "All online members are between levels 1-150 and at least two are online.";
+	close;
+} else {
+	mes "Sorry, your guild does not meet requirements.";
+	close;
+}
+
+---------------------------------------
+
 =========================
 |8.- Quest Log commands.|
 =========================

+ 15 - 23
npc/cities/lighthalzen.txt

@@ -42,6 +42,7 @@
 //= 2.0 Added missing Lab Staff#amano08 NPC. (bugreport:4319) [Gepard]
 //= 2.1 Commented out Duplicate NPCs. (bugreport:4555)
 //= 2.2 Added missing NPC found in AEGIS files. [L0ne_W0lf]
+//= 2.3 Updated the second entrance to Biolabs. [Capuche]
 //=============================================================
 
 lighthalzen,198,285,5	script	Jiwon#zen5	862,{
@@ -1946,40 +1947,31 @@ OnTouch:
 	end;
 }
 
-lhz_in01,25,141,4	script	Regenschirm Guard	868,{
-
+lhz_in01,24,140,3	script	Regenschirm Guard#40	4_M_LGTGUARD,{
 	mes "[Regenschirm Guard]";
-	if(isequipped(2241) && isequipped(2243)){
+	if (lhz_sincube > 10 && countitem(2657) > 0) {// Lab_Passport
 		mes "Do you wish to";
 		mes "go underground?";
 		next;
-		if(select("Yes:No")==1){
-			if(isequipped(2657)){
-				warp "lhz_dun01",150,288;
-				end;
-			}
+		if (select("Yes","No") == 1) {
 			mes "[Regenschirm Guard]";
-			mes "I'm sorry but I can't let";
-			mes "staff without proper autorization";
-			mes "pass. Only staff members with";
-			mes "Laboratory Passports are allowed";
-			mes "to enter the underground.";
-			close;
-
+			mes "Thank you and";
+			mes "have a nice day.";
+			close2;
+			warp "lhz_dun01",149,285;
+			end;
 		}
 		mes "[Regenschirm Guard]";
 		mes "Thank you and";
 		mes "have a nice day.";
 		close;
 	}
-	mes "This area is restricted";
-	mes "to the public! Who are you";
-	mes "and how did you get in here?!";
-	mes "Hey, I need backup right away!";
-	close2;
-	warp "lhz_in01",34,224;
-	end;
-
+	mes "May I help you?";
+	mes "If you would like to";
+	mes "enter, you must first";
+	mes "have a Laboratory Permit.";
+	mes "Thank you for your cooperation.";
+	close;
 }
 
 

+ 5 - 8
npc/custom/card_remover.txt

@@ -30,16 +30,13 @@ prt_in,28,73,4	script	Wise Old Woman#eAcustom	78,{
 		mes "Very well. Which item shall I examine for you?";
 		next;
 
-		setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
-		set .@menu$,"";
-		for( set .@i,1; .@i <= 10; set .@i,.@i+1 )
-		{
-			if( getequipisequiped(.@i) )
-			set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
-
+		setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
+		for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) {
+			if( getequipisequiped(.@indices[.@i]) )
+				set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
 			set .@menu$, .@menu$ + ":";
 		}
-		set .@part,select(.@menu$);
+		set .@part, .@indices[ select(.@menu$) ];
 		if(!getequipisequiped(.@part)) {
 			mes "[Wise Old Woman]";
 			mes "Young one... Your not wearing anything there that I can remove cards from.";

+ 21 - 21
npc/custom/etc/marriage.txt

@@ -104,11 +104,11 @@ prt_church,100,123,4	script	Vomars	60,{
 	mes "I am going to wed "+$wed_groom$+" and "+$wed_bride$+", do you have an objection to it?";
 	if (select("Sorry, please go on.","Yes, I actually do.") == 2) {
 		//Abort
-		npctalk "Ladies and gentlemen, "+strcharinfo(0)+" has an objection to the wedding!";
+		npctalk @name$ +" : Ladies and gentlemen, "+strcharinfo(0)+" has an objection to the wedding!";
 		SF_wed_end();
 		mes "Why should they not be wed?";
 		input $@msg$;
-		npctalk strcharinfo(0)+"'s objection is: "+$@msg$;
+		npctalk @name$ +" : "+ strcharinfo(0) +"'s objection is: "+$@msg$;
 		emotion e_sob;
 		mes "I see...";
 	} else
@@ -203,7 +203,7 @@ function SF_AcceptGroom {
 		mes "Ah... err... ehm... okay. You two seem to have some differences to settle first.";
 		close2;
 		emotion e_omg;
-		npctalk "Ladies and gentlemen, "+$wed_bride$+" has rejected to marry "+$wed_groom$+"!";
+		npctalk @name$ +" : Ladies and gentlemen, "+$wed_bride$+" has rejected to marry "+$wed_groom$+"!";
 		SF_wed_end();
 		break;
 	case 3:
@@ -236,7 +236,7 @@ function SF_AcceptBride {
 		mes "Ah... err... ehm... okay. You two seem to have some differences to settle first.";
 		emotion e_omg;
 		close2;
-		npctalk "Ladies and gentlemen, "+$wed_groom$+" has rejected to marry "+$wed_bride$+"!";
+		npctalk @name$ +" : Ladies and gentlemen, "+$wed_groom$+" has rejected to marry "+$wed_bride$+"!";
 		SF_wed_end();
 		break;
 	case 3:
@@ -260,7 +260,7 @@ function SF_RingsAccepted {
 	announce $wed_groom$+" and "+$wed_bride$+"'s wedding ceremony will be held at the church!",8;
 	close2;
 	emotion e_lv;
-	npctalk "May the groom and bride please step forward and retrieve their rings?";
+	npctalk @name$ +" : May the groom and bride please step forward and retrieve their rings?";
 }
 
 function SF_RetrieveRingM {
@@ -336,51 +336,51 @@ function SF_StartCeremony {
 }
 
 OnTimer1000:
-	npctalk "Ladies and Gentlemen, We will now join in holy matrimony these two lovers.";
+	npctalk @name$ +" : Ladies and Gentlemen, We will now join in holy matrimony these two lovers.";
 	end;
 	
 OnTimer5000:
-	npctalk "Now more than ever, will both of your lives be entwined together as so will be your souls.";
+	npctalk @name$ +" : Now more than ever, will both of your lives be entwined together as so will be your souls.";
 	end;
 
 OnTimer10000:
-	npctalk "You will both honor and cherish each other through the best and worst of times.";
+	npctalk @name$ +" : You will both honor and cherish each other through the best and worst of times.";
 	end;
 	
 OnTimer15000:
-	npctalk "The safety and well being of your other will now also be your responsibility.";
+	npctalk @name$ +" : The safety and well being of your other will now also be your responsibility.";
 	end;
 	
 OnTimer20000:
-	npctalk "May in sickness or good health, your love burn bright like no force can extinguish it.";
+	npctalk @name$ +" : May in sickness or good health, your love burn bright like no force can extinguish it.";
 	end;
 	
 OnTimer25000:
-	npctalk "Those here stand witness to these vows bestowed upon you, you must act accordingly to them.";
+	npctalk @name$ +" : Those here stand witness to these vows bestowed upon you, you must act accordingly to them.";
 	end;
 	
 OnTimer30000:
-	npctalk "Understanding that, we are nothing more but mortals on this earth, but this is our triumph.";
+	npctalk @name$ +" : Understanding that, we are nothing more but mortals on this earth, but this is our triumph.";
 	end;
 	
 OnTimer35000:
-	npctalk "We here will now join these two mortal entities, and create an immortal love.";
+	npctalk @name$ +" : We here will now join these two mortal entities, and create an immortal love.";
 	end;
 	
 OnTimer40000:
-	npctalk $wed_groom$+", you have accepted to take "+$wed_bride$+" as your lawfully wedded wife,";
+	npctalk @name$ +" : "+ $wed_groom$ +", you have accepted to take "+$wed_bride$+" as your lawfully wedded wife,";
 	end;
 	
 OnTimer45000:
-	npctalk "and you, "+$wed_bride$+", have accepted take "+$wed_groom$+" as your lawfully wedded husband.";
+	npctalk @name$ +" : and you, "+$wed_bride$+", have accepted take "+$wed_groom$+" as your lawfully wedded husband.";
 	end;
 
 OnTimer50000:
-	npctalk "And as such, now, by the powers vested in me...";
+	npctalk @name$ +" : And as such, now, by the powers vested in me...";
 	end;
 
 OnTimer55000:
-	npctalk "I pronounce you Husband and Wife, you may kiss the bride and exchange rings.";
+	npctalk @name$ +" : I pronounce you Husband and Wife, you may kiss the bride and exchange rings.";
 	if ($wedding_effect_id && isloggedin($wedding_effect_id))
 	{
 		attachrid($wedding_effect_id);
@@ -561,7 +561,7 @@ function SF_WedProgress {
 			mes "Very well, now go to the Priest to reaffirm your vows and the ceremony will begin."; 
 			emotion e_no1;
 			close2;
-			npctalk "Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest.";
+			npctalk @name$ +" : Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest.";
 			emotion e_no1;
 			end;
 		} else {
@@ -582,7 +582,7 @@ function SF_WedProgress {
 			mes "Very well, now go to the Priest to reaffirm your vows and the ceremony will begin."; 
 			emotion e_no1;
 			close2;
-			npctalk "Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest.";
+			npctalk @name$ +" : Registration finished. "+$wed_groom$+" and "+$wed_bride$+", please reaffirm your vows with the Priest.";
 			emotion e_no1;
 			end;
 		} else {
@@ -658,7 +658,7 @@ OnTimer60000:
 	else
 		set $@msg$, $wed_groom$;
 
-	npctalk "Registration timed out. Is it that noone wants to marry "+$@msg$+"..?";
+	npctalk @name$ +" : Registration timed out. Is it that noone wants to marry "+$@msg$+"..?";
 	emotion e_hmm;
 	
 	set $wed_groom$,"";
@@ -930,7 +930,7 @@ function SF_DivorceEnd {
 }
 
 OnTimer60000:
-	npctalk "Divorce confirmation time's is up. Where did "+$@divorcer$+"'s spouse go...";
+	npctalk @name$ +" : Divorce confirmation time's is up. Where did "+$@divorcer$+"'s spouse go...";
 	emotion e_what;
 	SF_DivorceEnd();
 	end;

+ 1 - 1
npc/custom/etc/quest_warper.txt

@@ -454,7 +454,7 @@ Zeny_short_SP:
 
 L_Storage:
 	next;
-	if(basicskillcheck() > 0 && getskilllv("NV_BASIC") < 6) goto L_StorageJBlow;
+	if(!callfunc("F_CanOpenStorage")) goto L_StorageJBlow;
 	set @fee, $QW_S_PRICE;
 	if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30;
 	if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60;

+ 8 - 8
npc/custom/events/cluckers.txt

@@ -26,29 +26,29 @@ prontera,156,219,4	script	Cluckers	800,{
 	if (.startcluck) {
 		specialeffect2 EF_HIT3;
 		switch(rand(15)) {
-			case 0: npctalk "CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
-			case 1: npctalk "Cluuuuuck!~"; break;
+			case 0: npctalk "Cluckers : CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
+			case 1: npctalk "Cluckers : Cluuuuuck!~"; break;
 			case 2: unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; break;
 			case 3: sc_start SC_Freeze,10000,0; break;
-			case 4: npctalk "CLUUUUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
+			case 4: npctalk "Cluckers : CLUUUUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
 			case 5: sc_start SC_Sleep,10000,0; break;
 			case 6: sc_start SC_Stone,10000,0; emotion e_gg; break;
-			case 7: npctalk "CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
-			case 8: npctalk "Cluck! CLUUUCK!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
+			case 7: npctalk "Cluckers : CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
+			case 8: npctalk "Cluckers : Cluck! CLUUUCK!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
 			case 9: sc_start SC_Stun,10000,0; break;
 			case 10: sc_start SC_Sleep,10000,0; emotion e_gg; break;
-			case 11: npctalk "Cluck! Cluck!"; break;
+			case 11: npctalk "Cluckers : Cluck! Cluck!"; break;
 			case 12: sc_start SC_Stun,10000,0; break;
 			case 13: unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; break;
 			default:
 				if (rand(50) < 4) {
-					npctalk "WOOF!...........";
+					npctalk "Cluckers : WOOF!...........";
 					specialeffect2 EF_SPHERE;
 					announce "[Cluck! Cluck! Boom!] " + strcharinfo(0) + " squeezed out the prize! Well done!",0;
 					getitem $cluck_item_id,$cluck_item_amount;
 					set .startcluck,0;
 				} else {
-					npctalk "Cluck! CLUUUCK!!";
+					npctalk "Cluckers : Cluck! CLUUUCK!!";
 					unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1;
 				}
 				break;

+ 2 - 2
npc/custom/events/disguise.txt

@@ -177,7 +177,7 @@ OnTimer30000:
 	if (.Timer) end;
 	set .Change,0;
 	setnpcdisplay "Disguise Event",795;
-	npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
+	npctalk "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
 	specialeffect EF_DETECT2;
 	set $MonsterName$,"";
 	deletepset 1;
@@ -238,7 +238,7 @@ iCorrect:
 		setnpcdisplay "Disguise Event",795;
 		set .RoundCount,0; set .Change,0; set .EventON,0;
 		setnpctimer 0; stopnpctimer;
-		npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
+		npctalk "Disguise Event : Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
 		end;
 	}
 	setnpcdisplay "Disguise Event",795;

+ 5 - 6
npc/custom/item_signer.txt

@@ -51,14 +51,13 @@ prt_in,24,61,7	script	Perchik	47,{
 	mes "[Perchik]";
 	mes "Show me your items to sign...";
 	next;
-	setarray .@pos$[1],"Upper Headgear","Armor","Left hand","Right hand","Garment","Footgear","Left Accessory","Right Accessory","Mid Headgear","Lower Headgear";
-	set .@menu$,"";
+	setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
 	for (set .@i,1; .@i<=10; set .@i,.@i+1) {
-		if (getequipisequiped(.@i))
-			set .@menu$, .@menu$+.@pos$[.@i]+" [^0055FF"+getequipname(.@i)+"^000000]";
+		if (getequipisequiped(.@indices[.@i]))
+			set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) +" [^0055FF"+getequipname(.@indices[.@i])+"^000000]";
 		set .@menu$, .@menu$+":";
 	}
-	set .@part, select(.@menu$);
+	set .@part, .@indices[ select(.@menu$) ];
 	set .@id, getequipid(.@part);
 	set .@ref, getequiprefinerycnt(.@part);
 	mes "[Perchik]";
@@ -118,7 +117,7 @@ prt_in,24,61,7	script	Perchik	47,{
 	}
 	if (!countitem2(.@id,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3])) {
 		mes "Where is "+getitemname(@id)+"...?";
-		npctalk "You're a snoozy cheater!";
+		npctalk "Perchik : You're a snoozy cheater!";
 		logmes "Hack: Tried to sign an item not having it: "+getitemname(@id);
 		emotion e_wah;
 		close;

+ 31 - 45
npc/custom/resetnpc.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Description: =========================================
@@ -13,56 +13,42 @@
 //= 1.1 Optimized for the greater good. [Kisuka]
 //= 1.2 Cleaning [Euphy]
 //= 1.3 All statuses removed upon skill reset. [Euphy]
+//= 1.4 Compressed Script, Added limit use option [Stolao]
+//=	Changed set -> setarray, Improved text with F_InsertPlural
 //============================================================
-
 prontera,150,193,4	script	Reset Girl	124,{
-
-	.@ResetStat  = 5000;	// Zeny for stat reset
-	.@ResetSkill = 5000;	// Zeny for skill reset
-	.@ResetBoth  = 9000;	// Zeny for resetting both together
-
+	//	 		Skills,	Stats,	Both,	Limit
+	setarray .@Reset,	5000,	5000,	9000,	0;
 	mes "[Reset Girl]";
+	if(.@Reset[3] && reset_limit > .@Reset[3]) {
+		mes "Sorry you can only reset "+callfunc("F_InsertPlural",.@Reset[3],"time")+" in your life.";
+		close;
+	}
 	mes "I am the Reset Girl.";
-	mes "Reset Stats: "  + callfunc("F_InsertComma", .@ResetStat)  + "z";
-	mes "Reset Skills: " + callfunc("F_InsertComma", .@ResetSkill) + "z";
-	mes "Reset Both: "   + callfunc("F_InsertComma", .@ResetBoth)  + "z";
+	mes "Reset Stats: "+ callfunc("F_InsertComma",.@Reset[1]) +"z";
+	mes "Reset Skills: "+ callfunc("F_InsertComma",.@Reset[0]) +"z";
+	mes "Reset Both: "+ callfunc("F_InsertComma",.@Reset[2]) +"z";
+	if(.@Reset[3]) mes "You may only reset "+callfunc("F_InsertPlural",.@Reset[3],"time")+", so use "+((.@Reset[3]>1)?"them":"it")+" wisely.";
 	mes "Please select the service you want:";
 	next;
-	switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")) {
-	case 1:
-		mes "[Reset Girl]";
-		if (Zeny < .@ResetSkill) {
-			mes "Sorry, you don't have enough Zeny.";
-			close;
-		}
-		Zeny -= .@ResetSkill;
-		sc_end SC_ALL;
-		resetskill;
-		mes "There you go!";
-		close;
-	case 2:
-		mes "[Reset Girl]";
-		if (Zeny < .@ResetStat) {
-			mes "Sorry, you don't have enough Zeny.";
-			close;
-		}
-		Zeny -= .@ResetStat;
-		resetstatus;
-		mes "There you go!";
-		close;
-	case 3:
-		mes "[Reset Girl]";
-		if (Zeny < .@ResetBoth) {
-			mes "Sorry, you don't have enough Zeny.";
-			close;
-		}
-		Zeny -= .@ResetBoth;
-		sc_end SC_ALL;
-		resetskill;
-		resetstatus;
-		mes "There you go!";
-		close;
-	case 4:
+	set .@i,(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel"));
+	if(.@i > 3) close;
+	mes "[Reset Girl]";
+	if (Zeny < .@Reset[.@i-1]) {
+		mes "Sorry, you don't have enough Zeny.";
 		close;
 	}
+	if(.@Reset[3]){
+		mes "You can only reset "+callfunc("F_InsertPlural",.@Reset[3],"time")+" in your life, are you sure?";
+		if(select("Let me think:That's fine") == 1) close;
+	}
+	set Zeny, Zeny-.@Reset[.@i-1];
+	if(.@i&1){
+		sc_end SC_ALL;// TODO make a sc_end current classes sc only
+		ResetSkill;
+	}
+	if(.@i&2) ResetStatus;
+	mes "There you go!";
+	if(.@Reset[3]) set reset_limit,reset_limit + 1;
+	close;
 }

+ 1 - 1
npc/guild/agit_main.txt

@@ -349,7 +349,7 @@ OnRecvCastle:
 		next;
 		switch (select("Use Storage:Use Teleport Service:Rent a Pushcart:Cancel")) {
 		case 1:
-			if (getskilllv("NV_BASIC") < 6) {
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Kafra Employee]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";

+ 1 - 1
npc/guild2/agit_main_se.txt

@@ -848,7 +848,7 @@ OnInit:
 		next;
 		switch(select("Use Storage:Use Warp Service:Rent Pushcart:Cancel")) {
 		case 1:
-			if (basicskillcheck() && getskilllv("NV_BASIC") < 6) {
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Kafra Employee]";
 				mes "I'm so sorry, but you must";
 				mes "have at least Novice Skill";

+ 1 - 1
npc/jobs/1-1e/gunslinger.txt

@@ -39,7 +39,7 @@ que_ng,152,167,3	script	Master Miller	901,{
 		close;
 	}
 	if (Class == Job_Novice) {
-		if (JobLevel < 10 || getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "[Master Miller]";
 			mes "Interested in becoming";
 			mes "a Gunslinger, eh? You've";

+ 1 - 1
npc/jobs/1-1e/taekwon.txt

@@ -80,7 +80,7 @@ payon,157,141,5	script	Phoenix#TKJobChange	753,{
 		mes "art. It won't be easy, but it will lead you to great strength...";
 		next;
 		if(select("Okay, I will join you.","No, thank you.") == 1) {
-			if(getskilllv("NV_BASIC") < 9) {
+			if(!callfunc("F_CanChangeJob")) {
 				mes "[Phoenix]";
 				mes "How unfortunate!";
 				mes "You're not yet ready to";

+ 8 - 6
npc/jobs/2-1/assassin.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= kobra_k88
 //===== Current Version: ===================================== 
-//= 3.6
+//= 3.7
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
@@ -49,6 +49,8 @@
 //= 3.4 Removed the need for use of 'goto.' [L0ne_W0lf]
 //= 3.5 Fixed the waitingroom where player can enter the Test Area without passing the written exam. Now player will not be warp inside the Test Area when did not passed the written exam instead the player will be warp back to the written exam entrance [JayPee]
 //= 3.6 Fixed broken event calls. [Euphy]
+//= 3.7 Fixed issue that the player can't progress in the quest if timed out at weapon reward step. This issue is fixed on iRO but not on kRO. [https://forums.warpportal.com/index.php?/topic/130060-didnt-receive-necklace-of-oblivion-when-changing-assassin/#entry1496042] [MrAntares]
+//= 3.8 Another 'unofficial fix'. Player can't change job if time out after the necklace is deleted.
 //============================================================ 
 
 in_moc_16,19,33,1	script	Guildsman#asn	55,{
@@ -126,12 +128,12 @@ in_moc_16,19,33,1	script	Guildsman#asn	55,{
 		mes "...";
 		mes "......";
 		next;
-		delitem 1008,1; //Frozen_Heart
-		changequest 8007,8008;
 		mes "[Assassin Expert 'Huey']";
 		mes "Alright!";
 		mes "You've been approved!";
 		next;
+		delitem 1008,1; //Frozen_Heart
+		changequest 8007,8008;
 		completequest 8008;
 		callfunc "Job_Change",Job_Assassin;
 		callfunc "F_ClearJobVar";		// clears all job variables for the current player
@@ -2056,8 +2058,6 @@ OnTouch:
 			next;
 		}
 		if (ASSIN_Q3 == 1 && BaseJob == Job_Thief && ASSIN_Q > 6 && ASSIN_Q < 17) {
-			set ASSIN_Q,17;
-			set ASSIN_Q3,2;
 			mes "[Guildmaster]";
 			mes "Well, I've said too much. Please choose a weapon as a present.";
 			next;
@@ -2091,10 +2091,11 @@ OnTouch:
 				mes "It used to rule over the Assassin weapon market. Please take care of my gladius.";
 				getitem 1220,1; //Gladius_
 			}
+			set ASSIN_Q,17;
+			set ASSIN_Q3,2;
 			next;
 		}
 		else {
-			set ASSIN_Q,17;
 			mes "[Guildmaster]";
 			mes "Well, I talked too much.";
 			mes "Please take this first.";
@@ -2115,6 +2116,7 @@ OnTouch:
 			case 5:
 				getitem 1252,1; //Katar
 			}
+			set ASSIN_Q,17;
 		}
 		mes "[Guildmaster]";
 		mes "Well, I am giving you a token. Please return to the Assassin expert, the Ferocious-Looking Huey, at the entrance.";

+ 1 - 1
npc/jobs/novice/supernovice.txt

@@ -142,7 +142,7 @@ aldeba_in,223,167,3	script	Tzerero#sn	709,{
 		next;
 		switch(select("Accept his offer.:Reject his offer.:Listen more carefully.")) {
 		case 1:
-			if (getskilllv("NV_BASIC") < 9) {
+			if (!callfunc("F_CanChangeJob")) {
 				mes "[Tzerero]";
 				mes "Hmm...But do you truly";
 				mes "appreciate the value of";

+ 1 - 1
npc/kafras/cool_event_corp.txt

@@ -44,7 +44,7 @@ function	script	F_CoolEventCorp	{
 		break;
 	case 2:
 		mes "[Cool Event Corp. Staff]";
-		if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+		if(!callfunc("F_CanOpenStorage")){
 			mes "I'm sorry, but you";
 			mes "need the Novice's";
 			mes "Basic Skill Level 6 to";

+ 2 - 2
npc/kafras/functions_kafras.txt

@@ -221,7 +221,7 @@ function	script	F_KafStor	{
 		close;
 	}
 	// Unable to access Normal Storage (Insufficient Basic Skills)
-	if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+	if(!callfunc("F_CanOpenStorage")){
 		mes "[Kafra Employee]";
 		// Niflheim Specific Message
 		if (getarg(2) == 1) {
@@ -667,4 +667,4 @@ function	script	F_KafSet	{
 		setd "@wrpC$["+.@i+"]",getd("@wrpD$["+.@i+"]")+" -> "+getd("@wrpP["+.@i+"]")+" z";
 	setd "@wrpC$["+getarraysize(@wrpC$)+"]","Cancel";
 	return;
-}
+}

+ 4 - 5
npc/merchants/advanced_refiner.txt

@@ -37,11 +37,10 @@ payon,157,146,6	script	Suhnbi#cash	85,{
 	mes "know what you want to refine.";
 	next;
 
-	setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
-	set .@menu$,"";
+	setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
 	for(set .@i,1; .@i<=10; set .@i,.@i+1) {
-		if (getequipisequiped(.@i)) {
-			set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
+		if (getequipisequiped(.@indices[.@i])) {
+			set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
 			set .@equipped,1;
 		}
 		set .@menu$, .@menu$ + ":";
@@ -51,7 +50,7 @@ payon,157,146,6	script	Suhnbi#cash	85,{
 		mes "I don't think I can refine any items you have...";
 		close;
 	}
-	set .@part, select(.@menu$);
+	set .@part, .@indices[ select(.@menu$) ];
 
 	if (!getequipisequiped(.@part)) //custom check
 		close;

+ 5 - 6
npc/merchants/refine.txt

@@ -569,11 +569,10 @@ function	script	refinemain	{
 	mes "know what you want me to refine.";
 	next;
 
-	setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
-	set .@menu$,"";
-	for(set .@i,1; .@i<=10; set .@i,.@i+1) {
-		if(getequipisequiped(.@i)) {
-			set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
+	setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
+	for(set .@i,1; .@i<getarraysize(.@indices); set .@i,.@i+1) {
+		if(getequipisequiped(.@indices[.@i])) {
+			set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
 			set .@equipped,1;
 		}
 		set .@menu$, .@menu$ + ":";
@@ -583,7 +582,7 @@ function	script	refinemain	{
 		mes "I don't think I can refine any items you have...";
 		close;
 	}
-	set .@part, select(.@menu$);
+	set .@part, .@indices[select(.@menu$)];
 
 	if(!getequipisequiped(.@part)) { //custom check
 		mes "["+ .@npc_name$ +"]";

+ 49 - 1
npc/other/Global_Functions.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Lupus, kobra_k88
 //===== Current Version: ===================================== 
-//= 2.24
+//= 2.25
 //===== Compatible With: ===================================== 
 //= rAthena Project
 //===== Description: ========================================= 
@@ -47,6 +47,8 @@
 //= 2.22 Further improvements to "F_GetPlural". [Euphy]
 //= 2.23 Completed article function and added "F_GetArticle". [Euphy]
 //= 2.24 Added functions to check for equipment swap hacks. [Euphy]
+//= 2.25 Added "F_CanOpenStorage" and "F_CanChangeJob". [secretdataz]
+//= 2.26 Added "F_getpositionname". [Capuche]
 //============================================================ 
 
 //////////////////////////////////////////////////////////////////////////////////
@@ -592,3 +594,49 @@ function	script	F_GetNumSuffix	{
 	else if (.@mod == 3 && .@n != 13) return .@n+"rd";
 	else return .@n+"th";
 }
+
+//////////////////////////////////////////////////////////////////////////////////
+// Indicate if attached player can open storage
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_CanOpenStorage	{
+	return (!basicskillcheck() || !(getskilllv("NV_BASIC") < 6 && getskilllv("SU_BASIC_SKILL") < 1));
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// Indicate if attached player can advance to class 1 by checking
+// basic skill level 9.
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_CanChangeJob	{
+	return (!basicskillcheck() || getskilllv("NV_BASIC") > 8);
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+// Return the position name of the EQI_* equipment slot.
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_getpositionname	{
+	switch( getarg(0,999) ) {
+		case EQI_ACC_L:		return "Accessory 1";
+		case EQI_ACC_R:		return "Accessory 2";
+		case EQI_SHOES:		return "Shoes";
+		case EQI_GARMENT:	return "Robe";
+		case EQI_HEAD_LOW:	return "Head 3";
+		case EQI_HEAD_MID:	return "Head 2";
+		case EQI_HEAD_TOP:	return "Head";
+		case EQI_ARMOR:		return "Body";
+		case EQI_HAND_L:	return "Left hand";
+		case EQI_HAND_R:	return "Right hand";
+		case EQI_COSTUME_HEAD_TOP:	return "Upper Costume Headgear";
+		case EQI_COSTUME_HEAD_MID:	return "Middle Costume Headgear";
+		case EQI_COSTUME_HEAD_LOW:	return "Lower Costume Headgear";
+		case EQI_COSTUME_GARMENT:	return "Costume Garment";
+		case EQI_AMMO:			return "Arrow/Ammunition";
+		case EQI_SHADOW_ARMOR:	return "Shadow Armor";
+		case EQI_SHADOW_WEAPON:	return "Shadow Weapon";
+		case EQI_SHADOW_SHIELD:	return "Shadow Shield";
+		case EQI_SHADOW_SHOES:	return "Shadow Shoes";
+		case EQI_SHADOW_ACC_R:	return "Shadow Accessory 2";
+		case EQI_SHADOW_ACC_L:	return "Shadow Accessory 1";
+		default:
+			return "Unknown";
+	}
+}

+ 2 - 2
npc/pre-re/jobs/1-1/acolyte.txt

@@ -38,7 +38,7 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 				mes "Ah, I sense you have endured";
 				mes "a past life experience. You must have learned many things before entering Valhalla.";
 				next;
-				if (getskilllv("NV_BASIC") < 9) {
+				if (!callfunc("F_CanChangeJob")) {
 					mes "[Father Mareusis]";
 					mes "Unfortunately, I don't think you're ready to become an Acolyte yet. Please finish learning all of the Basic Skills first.";
 					next;
@@ -137,7 +137,7 @@ prt_church,184,41,4	script	Cleric#aco	60,{
 		mes "Oh, you've come back. Let me check and see if you are ready to serve God. Let's see...";
 		next;
 		mes "[Father Mareusis]";
-		if (getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "Good Lord! Haven't you accomplished the Basic Training yet?! It's important that you finish that!";
 			next;
 			mes "[Father Mareusis]";

+ 2 - 2
npc/pre-re/jobs/1-1/archer.txt

@@ -37,7 +37,7 @@ payon_in02,64,71,4	script	Archer Guildsman#archer	85,{
 			mes "to Valhalla and been reborn.";
 			mes "Wow, that's so impressive!";
 			next;
-			if (getskilllv("NV_BASIC") < 9) {
+			if (!callfunc("F_CanChangeJob")) {
 				mes "[Archer Guildsman]";
 				mes "Err...";
 				mes "You'd better learn all the Basic Skills first before you can become an Archer.";
@@ -125,7 +125,7 @@ payon_in02,64,71,4	script	Archer Guildsman#archer	85,{
 		mes "[Archer Guildsman]";
 		mes "Are you..." + strcharinfo(0) + "?";
 		next;
-		if (getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "[Archer Guildsman]";
 			mes "Well, you're not at the right job level. Please check the requirements again.";
 			next;

+ 2 - 2
npc/pre-re/jobs/1-1/mage.txt

@@ -35,7 +35,7 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 				mes "[Mage Guildsman]";
 				mes "Ah, you must have been reborn. Well, I'm glad to have you back.";
 				next;
-				if (getskilllv("NV_BASIC") < 9) {
+				if (!callfunc("F_CanChangeJob")) {
 					mes "[Mage Guildsman]";
 					mes "I'm sorry, but I don't think you're ready to learn magic yet. Why don't you go finish learning the Basic Skills first?";
 					next;
@@ -139,7 +139,7 @@ geffen_in,164,124,4	script	Mage Guildsman	123,{
 			close;
 		}
 		mes "Yeah? Ready...?";
-		if (getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "Oh, what a bummer. You haven't met the requirements yet.";
 			next;
 			mes "[Mage Guildsman]";

+ 2 - 2
npc/pre-re/jobs/1-1/merchant.txt

@@ -44,7 +44,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "Whoa...";
 			mes "You've actually been to Valhalla?! Wow, you've come a long way...";
 			next;
-			if (getskilllv("NV_BASIC") < 9) {
+			if (!callfunc("F_CanChangeJob")) {
 				mes "[Chief Mahnsoo]";
 				mes "Hmmm...";
 				mes "It seems that you're not ready to become a Merchant again. Go finish learning the Basic Novice Skills first.";
@@ -288,7 +288,7 @@ alberta_in,53,43,6	script	Merchant#mer	86,{
 			mes "be a Merchant?";
 			mes "Well...";
 			next;
-			if (getskilllv("NV_BASIC") < 9) {
+			if (!callfunc("F_CanChangeJob")) {
 				mes "[Chief Mahnsoo]";
 				mes "First, you have to be a Novice with Job Level 10. Once you do that, make sure you learn all of the Basic Skills.";
 				next;

+ 3 - 3
npc/pre-re/jobs/1-1/swordman.txt

@@ -48,7 +48,7 @@ izlude_in,74,172,4	script	Swordman#swd_1	119,{
 			mes "[Swordman]";
 			mes "I see you're retreading the path of the Swordman! Once you've gotten used to brandishing a sword, you can never go back!!";
 			next;
-			if (getskilllv("NV_BASIC") < 9) {
+			if (!callfunc("F_CanChangeJob")) {
 				mes "[Swordman]";
 				mes "Hmm? Ah, you must first master the Basic Skills before you are ready to become a Swordman.";
 				next;
@@ -138,7 +138,7 @@ izlude_in,74,172,4	script	Swordman#swd_1	119,{
 			}
 		}
 		mes "[Swordman]";
-		if (getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "Hm, you still haven't learned all of the Basic Skills. You need to do that before you can become a Swordman.";
 			next;
 			mes "[Swordman]";
@@ -213,7 +213,7 @@ izlude_in,62,170,6	script	Swordman#swd_2	85,{
 		mes "Who the hell are you?! Nobody, other than Novices, is permitted to come in here!";
 		close;
 	}
-	else if (getskilllv("NV_BASIC") < 9) {
+	else if (!callfunc("F_CanChangeJob")) {
 		mes "Stop! I can't let you in until you learn all of the Basic Skills. The Test Hall isn't for goofing off!";
 		close;
 	}

+ 2 - 2
npc/pre-re/jobs/1-1/thief.txt

@@ -29,7 +29,7 @@ moc_prydb1,39,129,2	script	Thief Guide	69,{
 				mes "[Thief Guide]";
 				mes "Huh? Do I know you? It's creepy that you seem so familiar. You don't have a twin, do you?";
 				next;
-				if (getskilllv("NV_BASIC") < 9) {
+				if (!callfunc("F_CanChangeJob")) {
 					mes "[Thief Guide]";
 					mes "What, do you want to be a Thief? I'm sorry, but you look like you need more training.";
 					next;
@@ -290,7 +290,7 @@ moc_prydb1,39,129,2	script	Thief Guide	69,{
 		mes strcharinfo(0) + "? Um, where is it? Ah, here it is. Let's see...";
 		next;
 		mes "[Thief Guide]";
-		if (getskilllv("NV_BASIC") < 9) {
+		if (!callfunc("F_CanChangeJob")) {
 			mes "Isn't that cute? I can see you're ambitious, but you gotta learn all of the Basic Skills before you can become a Thief.";
 			close;
 		}

+ 3 - 3
npc/quests/quests_13_1.txt

@@ -7655,7 +7655,7 @@ function Catwarp;
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";
@@ -7702,7 +7702,7 @@ function Catwarp;
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";
@@ -7824,7 +7824,7 @@ function Catwarp;
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";

+ 3 - 3
npc/quests/quests_13_2.txt

@@ -99,7 +99,7 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";
@@ -146,7 +146,7 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";
@@ -267,7 +267,7 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 			mes "You can now directly return to this camp.";
 			close;
 		case 2:
-			if(basicskillcheck() && getskilllv("NV_BASIC") < 6){
+			if(!callfunc("F_CanOpenStorage")){
 				mes "[Cat Hand Agent]";
 				mes "I'm sorry, but you";
 				mes "need the Novice's";

+ 9 - 11
npc/quests/seals/mjolnir_seal.txt

@@ -1945,14 +1945,13 @@ mjolnir_01,35,136,7	script	Dwarf Blacksmith#west	826,{
 				mes "Which one should I upgrade first, huh? My heart is pounding with anticipation...";
 				next;
 
-				setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
-				set .@menu$,"";
+				setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
 				for(set .@i,1; .@i <= 10; set .@i,.@i+1) {
-					if (getequipisequiped(.@i))
-						set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
+					if (getequipisequiped(.@indices[.@i]))
+						set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
 					set .@menu$, .@menu$ + ":";
 				}
-				set .@part,select(.@menu$);
+				set .@part, .@indices[ select(.@menu$) ];
 
 				if (getequipisequiped(.@part) == 0)
 					close;
@@ -2162,15 +2161,14 @@ mjolnir_01,35,136,7	script	Dwarf Blacksmith#west	826,{
 				mes "Great...!";
 				mes "Which one should I upgrade first, huh? My heart is pounding with anticipation...";
 				next;
-				
-				setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";
-				set .@menu$,"";
+
+				setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
 				for(set .@i,1; .@i <= 10; set .@i,.@i+1) {
-					if (getequipisequiped(.@i))
-						set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";
+					if (getequipisequiped(.@indices[.@i]))
+						set .@menu$, .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
 					set .@menu$, .@menu$ + ":";
 				}
-				set .@part,select(.@menu$);
+				set .@part, .@indices[ select(.@menu$) ];
 
 				if (getequipisequiped(.@part) == 0)
 					close;

+ 2 - 2
npc/quests/thana_quest.txt

@@ -914,8 +914,8 @@ tha_t03,67,70,0	script	Rune Device#tt1	111,4,4,{
 				next;
 				goto L_Key;
 			}
-			else if (getequipweaponlv(4) == 4) {
-				mes "^3355FFWith your "+getequipname(4)+" in";
+			else if (getequipweaponlv(EQI_HAND_R) == 4) {
+				mes "^3355FFWith your "+getequipname(EQI_HAND_R)+" in";
 				mes "hand, you smash the energy";
 				mes "field with all of your strength. After absorbing the impact, the";
 				mes "field fizzles out with a soft,";

Some files were not shown because too many files changed in this diff