Browse Source

Merge branch 'master' into feature/store_taxes

# Conflicts:
#	src/map/battle.cpp
#	src/map/battle.hpp
Lemongrass3110 7 years ago
parent
commit
de46196963
89 changed files with 18335 additions and 2360 deletions
  1. 1 1
      .github/CONTRIBUTING.md
  2. 149 33
      .travis.yml
  3. 2 19
      appveyor.yml
  4. 1 1
      conf/battle/client.conf
  5. 6 0
      conf/battle/items.conf
  6. 341 143
      conf/msg_conf/map_msg_spn.conf
  7. 1 1
      db/pre-re/achievement_db.yml
  8. 1 1
      db/pre-re/item_combo_db.txt
  9. 1 1
      db/re/achievement_db.yml
  10. 2 0
      db/re/instance_db.txt
  11. 43 2
      db/re/item_combo_db.txt
  12. 64 20
      db/re/item_db.txt
  13. 2 0
      db/re/item_trade.txt
  14. 69 55
      db/re/mob_db.txt
  15. 79 41
      db/re/mob_skill_db.txt
  16. 149 10
      db/re/quest_db.txt
  17. 17 2
      doc/script_commands.txt
  18. 1 1
      npc/airports/airships.txt
  19. 2 2
      npc/custom/official/GeffenMagicTournament.txt
  20. 1 1
      npc/events/christmas_2008.txt
  21. 3 3
      npc/events/halloween_2006.txt
  22. 7 7
      npc/events/twintowers.txt
  23. 2 2
      npc/other/Global_Functions.txt
  24. 7 7
      npc/other/bulletin_boards.txt
  25. 1 1
      npc/other/divorce.txt
  26. 1 1
      npc/pre-re/mobs/dungeons/yggdrasil.txt
  27. 1 1
      npc/quests/first_class/tu_merchant.txt
  28. 5 5
      npc/quests/quests_hugel.txt
  29. 1 1
      npc/quests/quests_niflheim.txt
  30. 1 1
      npc/quests/skills/bard_skills.txt
  31. 1 1
      npc/quests/skills/merchant_skills.txt
  32. 1 1
      npc/quests/the_sign_quest.txt
  33. 1384 0
      npc/re/instances/CentralLaboratory.txt
  34. 589 0
      npc/re/instances/LastRoom.txt
  35. 1418 1332
      npc/re/instances/OldGlastHeim.txt
  36. 1 1
      npc/re/kafras/kafras.txt
  37. 4 0
      npc/re/mapflag/nobranch.txt
  38. 4 0
      npc/re/mapflag/noicewall.txt
  39. 6 0
      npc/re/mapflag/nomemo.txt
  40. 10 0
      npc/re/mapflag/noteleport.txt
  41. 6 0
      npc/re/mapflag/nowarp.txt
  42. 6 0
      npc/re/mapflag/nowarpto.txt
  43. 4 0
      npc/re/mapflag/partylock.txt
  44. 327 0
      npc/re/merchants/OldGlastHeim_merchants.txt
  45. 1 1
      npc/re/mobs/dungeons/yggdrasil.txt
  46. 2 2
      npc/re/mobs/fields/niflheim.txt
  47. 34 0
      npc/re/mobs/verus.txt
  48. 1 1
      npc/re/quests/eden/91-99.txt
  49. 3 3
      npc/re/quests/eden/eden_100_111.txt
  50. 3 1
      npc/re/quests/eden/eden_common.txt
  51. 9070 0
      npc/re/quests/quests_15_1.txt
  52. 2579 0
      npc/re/quests/quests_15_2.txt
  53. 1 1
      npc/re/quests/quests_glastheim.txt
  54. 7 2
      npc/re/scripts_athena.conf
  55. 1 0
      npc/re/scripts_monsters.conf
  56. 2 0
      npc/re/scripts_warps.conf
  57. 6 0
      npc/re/warps/other/paradise.txt
  58. 132 0
      npc/re/warps/other/un_myst.txt
  59. 156 0
      npc/re/warps/other/verus.txt
  60. 64 20
      sql-files/item_db_re.sql
  61. 69 55
      sql-files/mob_db_re.sql
  62. 74 78
      sql-files/mob_skill_db.sql
  63. 824 186
      sql-files/mob_skill_db_re.sql
  64. 1 1
      src/char/char_clif.cpp
  65. 37 40
      src/char/inter.cpp
  66. 10 8
      src/map/atcommand.cpp
  67. 22 20
      src/map/battle.cpp
  68. 1 0
      src/map/battle.hpp
  69. 1 1
      src/map/chrif.cpp
  70. 26 8
      src/map/clif.cpp
  71. 1 1
      src/map/clif.hpp
  72. 9 1
      src/map/clif_obfuscation.hpp
  73. 124 0
      src/map/clif_shuffle.hpp
  74. 7 3
      src/map/guild.cpp
  75. 1 0
      src/map/instance.cpp
  76. 23 19
      src/map/intif.cpp
  77. 5 5
      src/map/itemdb.cpp
  78. 1 1
      src/map/itemdb.hpp
  79. 1 2
      src/map/map.cpp
  80. 3 3
      src/map/npc.cpp
  81. 6 1
      src/map/npc.hpp
  82. 33 19
      src/map/pc.cpp
  83. 105 124
      src/map/pet.cpp
  84. 19 13
      src/map/pet.hpp
  85. 53 20
      src/map/script.cpp
  86. 4 0
      src/map/script_constants.hpp
  87. 24 22
      src/map/skill.cpp
  88. 41 0
      tools/ci/sql.bat
  89. 26 0
      tools/ci/sql.sh

+ 1 - 1
.github/CONTRIBUTING.md

@@ -63,7 +63,7 @@ Suggesting Enhancements
 #### How to create Pull Requests :pencil:
 
 1. Make sure you have a [GitHub account](https://github.com/signup/free).
-2. Next, you will need to [fork rAthena](https://help.github.com/articles/fork-a-repo/#step-3-configure-git-to-sync-your-fork-with-the-original-spoon-knife-repository) to your account.
+2. Next, you will need to [fork rAthena](https://help.github.com/articles/fork-a-repo/#fork-an-example-repository) to your account.
 3. Before making changes, make sure you [create a new branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/) for your working tree.
 4. After completing your changes, commit and push it to your branch.
 5. Now you are ready to [create a Pull Request](https://help.github.com/articles/creating-a-pull-request/) for rAthena!

+ 149 - 33
.travis.yml

@@ -1,36 +1,157 @@
 language: cpp
-compiler:
-  - clang
-  - gcc
 dist: trusty
+sudo: false
+
+matrix:
+  include:
+# First check if all our options are good
+#   Renewal without VIP
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+         - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+#   Renewal with VIP
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+         - CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=no --enable-buildbot=yes"
+#   Pre-Renewal without VIP
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+         - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=yes --enable-buildbot=yes"
+#   Pre-Renewal with VIP
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+         - CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=yes --enable-buildbot=yes"
+# After that check all different compilers and compiler versions
+# GCC
+#   Version 6
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-6
+      env:
+        - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
+        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+#   Version 7
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-7
+      env:
+        - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
+        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+# Clang
+#   Version 3.9
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - llvm-toolchain-trusty-3.9
+          packages:
+            - clang-3.9
+      env:
+        - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9"
+        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+#   Version 4
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - llvm-toolchain-trusty-4.0
+          packages:
+            - clang-4.0
+      env:
+        - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
+        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+#   Version 5
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - llvm-toolchain-trusty-5.0
+          packages:
+            - clang-5.0
+      env:
+        - MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
+        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
+#   LLVM on OSX
+#    - os: osx
+#      osx_image: xcode9.2
+#      install:
+#        - brew update
+#        - brew install mysql
+#        - brew tap homebrew/services
+#        - brew services start mysql
+##         MySQL takes a while to start...
+#        - brew services list
+#        - launchctl list | grep mysql
+#      before_install: false
+#      env:
+#        - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes --enable-lto=no"
+#      script:
+#        - ./configure $CONFIGURE_FLAGS
+##         MacOS default MySQL configuration does not like our card seller(only full group by)
+#        - ./tools/ci/npc.sh
+#        - make clean
+#        - make server
+#        - ./login-server --run-once
+#        - ./char-server --run-once
+#        - ./map-server --run-once
+# CMake
+    - os: linux
+      addons:
+        apt:
+          sources:
+            - ubuntu-toolchain-r-test
+          packages:
+            - g++-5
+      env:
+         - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+      script:
+         - mkdir cbuild
+         - cd cbuild
+         - cmake -G "Unix Makefiles" ..
+         - make
+
+before_install:
+    - eval "${MATRIX_EVAL}"
 
 before_script:
   - uname -a
-  - mysql -u $DB_ROOT -e "CREATE DATABASE $DB_NAME;" || aborterror "Unable to create database."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/main.sql || aborterror "Unable to import main database."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/logs.sql || aborterror "Unable to import logs database."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db.sql || aborterror "Unable to import cash item table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db2.sql || aborterror "Unable to import cash item 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_db.sql || aborterror "Unable to import pre-renewal item table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2.sql || aborterror "Unable to import pre-renewal item 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re.sql || aborterror "Unable to import renewal item table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2_re.sql || aborterror "Unable to import renewal item 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db.sql || aborterror "Unable to import pre-renewal monster table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2.sql || aborterror "Unable to import pre-renewal monster 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db_re.sql || aborterror "Unable to import renewal monster table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2_re.sql || aborterror "Unable to import renewal monster 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db.sql || aborterror "Unable to import pre-renewal monster skill table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2.sql || aborterror "Unable to import pre-renewal monster skill 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db_re.sql || aborterror "Unable to import renewal monster skill table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2_re.sql || aborterror "Unable to import renewal monster skill 2 table."
-  - mysql -u $DB_ROOT $DB_NAME < sql-files/roulette_default_data.sql || aborterror "Unable to import roulette table."
-  - mysql -u $DB_ROOT -e "GRANT ALL ON *.* TO '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';"
-  - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
-  - sudo apt-get update -q
-  - sudo apt-get install gcc-5 -y
-  - sudo apt-get install g++-5 -y
-  - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1
-  - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1
+  - ./tools/ci/sql.sh
 
 script:
   - ./configure $CONFIGURE_FLAGS
@@ -48,11 +169,6 @@ env:
     - DB_NAME="ragnarok"
     - DB_USER="ragnarok"
     - DB_PASS="ragnarok"
-  matrix:
-    - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=no --enable-buildbot=yes"
-    - CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=no --enable-buildbot=yes"
-    - CONFIGURE_FLAGS="--enable-prere=no --enable-vip=yes --enable-buildbot=yes"
-    - CONFIGURE_FLAGS="--enable-prere=yes --enable-vip=yes --enable-buildbot=yes"
 
 notifications:
   email: false

+ 2 - 19
appveyor.yml

@@ -42,26 +42,9 @@ test_script:
     
     set MYSQL="C:\Program Files\MySql\MySQL Server 5.7\bin\mysql.exe"
     
-    rem Setting creation
-    
     cd C:\projects\rathena
     
-    echo map_server_ip: %DB_HOST%>> conf\import\inter_conf.txt
-    
-    echo map_server_id: %DB_USER%>> conf\import\inter_conf.txt
-    
-    echo map_server_pw: %DB_PASS%>> conf\import\inter_conf.txt
-    
-    echo map_server_db: %DB_NAME%>> conf\import\inter_conf.txt
-    
-    echo log_db_ip: %DB_HOST%>> conf\import\inter_conf.txt
-    
-    echo log_db_id: %DB_USER%>> conf\import\inter_conf.txt
-    
-    echo log_db_pw: %DB_USERPW%>> conf\import\inter_conf.txt
-    
-    echo log_db_db: %DB_NAME%>> conf\import\inter_conf.txt
-    
+    rem TODO should be replace with tools\ci\sql.bat as soon as possible
     rem MySQL database setup
     
     %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "CREATE DATABASE %DB_NAME%;"
@@ -100,7 +83,7 @@ test_script:
     
     %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\roulette_default_data.sql"
     
-    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "GRANT ALL ON *.* TO '%DB_USER%'@'%DB_HOST%' IDENTIFIED BY '%DB_USERPW%';"
+    %MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "GRANT SELECT,INSERT,UPDATE,DELETE ON %DB_NAME%.* TO '%DB_USER%'@'%DB_HOST%' IDENTIFIED BY '%DB_USERPW%';"
     
     rem Activate all custom and test scripts
     

+ 1 - 1
conf/battle/client.conf

@@ -71,7 +71,7 @@ wedding_modifydisplay: no
 save_clothcolor: yes
 
 // Save body styles. (Note 1)
-// Note: Don't turn this on unless you know what your doing.
+// Note: Don't turn this on unless you know what you are doing.
 // Sprites are not released officially.
 save_body_style: no
 

+ 6 - 0
conf/battle/items.conf

@@ -121,3 +121,9 @@ allow_bound_sell: 0x0
 // no = normal refine chances in effect (official/default value)
 // yes = event refine chances in effect
 event_refine_chance: no
+
+// Hide n last characters of player's name with asterisk (*) when the player
+// obtained an item with special broadcast flag.
+// Note: Players with short names can be fully converted to asterisks if this
+// config value is set high.
+broadcast_hide_name: 2

+ 341 - 143
conf/msg_conf/map_msg_spn.conf

@@ -2,20 +2,16 @@
 // Configuración de mensajes
 // Si vas a traducirlo simplemente tienes que cambiar el msg de la segunda línea, no tienes que modificar el código fuente,
 // aunque también puedes utilizar conf/import/map_msg_spn_conf.txt
-// El formato es el siguiente:
-// // Mensaje en inglés
-// msg_number: mensaje traducido
-
-// Del 0 al 410 están reservados para comandos de GM (Game Master)
-// Del 500-900 están reservados para otros usos
-// Del 900 al 1300 son mensajes de @atcommand
-
+// 
+// Formato:
+// msg_number: mensaje traducido (tamaño máximo: 255 caracteres)
+//
 // Si quieres desactivar una variable (%s) de una cadena de texto, haz que su tamaño máximo sea 0:
 // Por ejemplo:
 // 270: *%s %s* (Este es el formato de texto para el comando @me)
 // 270: *%.0s%s* (Si pones esto no se mostrará el nombre del personaje)
 
-// Aquí empiezan los mensajes relacionados con los comandos de GM
+// Mensajes de comandos de GM
 // -----------------------
 
 0: Te has teletransportado.
@@ -90,10 +86,10 @@
 69: Has reducido el nivel de oficio de ese personaje.
 70: Has adquirido esa habilidad.
 71: Has olvidado esa habilidad.
-72: Ha comenzado la Guerra del Emperium.
-73: En estos momentos ya hay una Guerra del Emperium.
-74: La Guerra del Emperium ha finalizado.
-75: En estos momentos no hay ninguna Guerra del Emperium.
+72: Ha comenzado la guerra de clanes.
+73: En estos momentos ya hay una guerra de clanes.
+74: La guerra de clanes ha finalizado.
+75: En estos momentos no hay ninguna guerra de clanes.
 76: Se han añadido todas las habilidades a tu árbol de habilidades.
 77: Estos son los resultados de la búsqueda de '%s' (nombre: ID):
 78: %s: %d
@@ -131,9 +127,9 @@
 110: El NPC ha sido cargado con éxito.
 111: Ese NPC no existe.
 112: El NPC ha sido desactivado.
-113: Un GM te ha eliminado %d objeto(s).
-114: Se han eliminado %d objeto(s) del jugador.
-115: Se han eliminado %d objeto(s). El jugador sólo tenía %d de %d objetos.
+113: Un GM te ha eliminado esta cantidad de objetos: %d.
+114: Objetos eliminados del jugador: %d.
+115: Objetos eliminados: %d. El jugador sólo tenía %d de %d objetos.
 116: Ese personaje no tiene el objeto que has introducido.
 117: Un GM te ha enviado a la cárcel.
 118: Has enviado al jugador a la cárcel.
@@ -158,7 +154,7 @@
 141: Has quitado el disfraz de ese personaje.
 142: Ese personaje no lleva ningún disfraz.
 143: No puedes utilizar ese comando en este mapa.
-144: La dirección de correo electrónico no es válida, si no sabes cual es prueba a@a.com
+144: La dirección de correo electrónico no es válida, si no sabes cuál es prueba a@a.com
 145: La dirección de correo electrónico no es válida. Introduce una de verdad.
 146: Debes introducir una dirección de correo electrónico de verdad.
 147: La nueva dirección de correo electrónico debe ser distinta a la actual.
@@ -259,7 +255,7 @@
 242: Ahora cualquier jugador puede atacarte.
 243: Ya no se pueden utilizar habilidades en este mapa.
 244: Ahora se pueden utilizar habilidades en este mapa.
-245: El servidor lleva en marcha %ld días, %ld horas, %ld minutos, %ld segundos.
+245: Tiempo de conexión del servidor: Días: %ld. Horas: %ld. Minutos: %ld. Segundos: %ld.
 246: Tu nivel de GM no está autorizado para realizar esa acción.
 247: No tienes permiso para ir a ese mapa.
 248: No tienes permiso para salir de este mapa.
@@ -310,6 +306,13 @@
 290: Ahora nadie puede atacar a ese jugador.
 291: Los efectos climáticos desaparecerán al teletransportarse o al utilizar @refresh.
 292: Has restablecido la condición de asesino.
+// Sistema de ligado de objetos
+293: Este objeto está ligado y no puede intercambiarse.
+294: Este objeto está ligado y no puede almacenarse.
+295: Introduce el nombre de un objeto o su ID (instrucciones: @item <nombre/ID> <cantidad> <ligado>).
+296: Introduce todos los parámetros (instrucciones: @item2 <nombre/ID> <cantidad>)
+297:   <identificado> <refinamiento> <atributo> <carta1> <carta2> <carta3> <carta4> <ligado>).
+298: El ligado del objeto no es válido. Tipos válidos: 1-Cuenta, 2-Clan, 3-Grupo, 4-Personaje.
 // Número de los castillos
 // --------------------
 //299: ?? castillos
@@ -352,14 +355,15 @@
 
 //Plantillas para el resultado de @who
 343: Nombre: %s
-344: (%s)
+344:  (%s)
 345: | Grupo: '%s'
 346: | Clan: '%s'
 //Si eliminas el último %s no verás el oficio de tus jugadores.
 347: | Nv:%d/%d | Oficio: %s
 //Si eliminas los 2 últimos %d no verás las coordenadas de tus jugadores, tan solo el nombre el mapa donde están
 348: | Ubicación: %s %d %d
-
+// @fullstrip
+349: Introduce el nombre de un jugador (instrucciones: @fullstrip <personaje/ID>).
 // @duel (1ª parte)
 350: Duelo: No puedes usar @invite porque no estás en un duelo.
 351: Duelo: Se ha alcanzado el límite máximo de jugadores para este duelo.
@@ -392,7 +396,15 @@
 380: Ha ocurrido un error. El objeto [%s] no puede usarse todavía. Espera %d segundos.
 381: La habilidad ha fallado. Para utilizar [%s] necesitas %dx %s.
 382: Estás demasiado cerca de un emperium o una piedra guardián.
-//383-389 vacíos
+383: No puedes crear un punto de guardado en una instancia.
+384: No puedes hacer memo en una instancia.
+//Comprobación de emblemas
+385: No se puede cambiar el emblema durante una guerra de clanes.
+386: El emblema que has elegido no es válido.
+387: El emblema que has elegido tiene demasiada transparencia (límite=%d)
+//etc
+388: No puedes utilizar este objeto con el almacén abierto.
+389: La velocidad ha vuelto a la normalidad.
 //NoAsk (rechazar invitaciones)
 390: Rechazas todas las invitaciones de manera automática.
 391: Ya no rechazas todas las invitaciones de manera automática.
@@ -406,11 +418,11 @@
 400: Instrucciones @jailfor <tiempo> <nombre del personaje>
 401: Tu pena de prisión es de %d años, %d meses, %d días, %d horas y %d minutos.
 402: %s estará en la cárcel durante %d años, %d meses, %d días, %d horas y %d minutos.
-// WoE SE (@agitstart2) Guerra del Emperium, 2ª edición.
-403: Ha dado comienzo la Guerra del Emperium de la 2ª edición.
-404: Hay una Guerra del Emperium de la 2ª edición en marcha.
-405: Ha finalizado la Guerra del Emperium de la 2ª edición.
-406: No hay ninguna Guerra del Emperium de la 2ª edición en marcha.
+// WoE SE (@agitstart2) guerra de clanes, 2ª edición.
+403: Ha dado comienzo la guerra de clanes de la 2ª edición.
+404: Hay una guerra de clanes de la 2ª edición en marcha.
+405: Ha finalizado la guerra de clanes de la 2ª edición.
+406: No hay ninguna guerra de clanes de la 2ª edición en marcha.
 //407 free
 //Mensajes de chrif
 408: Necesitas desconectarte para realizar el cambio de sexo.
@@ -436,15 +448,21 @@
 430: desbloquear
 431: desbloquear
 432: cambiar el sexo de
+433: Este personaje tiene el acceso bloqueado hasta 
+434: El char-server va a %s al personaje '%.*s'.
+435: Introduce el nombre de un jugador (instrucciones: %s <nombre de personaje>).
+436: VIP
+437: Un GM no puede ser VIP.
+438: Ya no eres VIP.
 
 // Mensajes de homúnculos
 450: Ya tienes un homúnculo.
 
-// Return pet to egg message
-451: No puedes devolver tu pet al huevo porque tu inventario está lleno.
+// Mensaje al devolver la mascota al huevo
+451: No puedes devolver tu mascota al huevo porque tu inventario está lleno.
 
 // Sistema de mensajería
-460: Introduce un idioma válido (Instrucciones: @langtype <idioma>)
+460: Introduce un idioma válido (instrucciones: @langtype <idioma>)
 461: Has establecido %s como idioma.
 462: Ese idioma está desactivado.
 463: Se ha actualizado la configuración de los mensajes.
@@ -458,7 +476,7 @@
 485:    Usuarios: %d/%d | Contraseña: %s | Abierto: %s
 486: Sí
 487: No
-488: Introduce un valor de la lista (Instrucciones: @mapinfo <0-3> <mapa>).
+488: Introduce un valor de la lista (instrucciones: @mapinfo <0-3> <mapa>).
 489: NPC %d: %s::%s | Dirección: %s | Sprite: %d | Ubicación: %d %d
 490: NPC %d: %s | Dirección: %s | Sprite: %d | Ubicación: %d %d
 491: Norte
@@ -479,35 +497,65 @@
 503: Está activado el modo nocturno.
 
 //Mensajes de los puntos de cash
-504: Has utilizado %d puntos Kafra y %d puntos de cash. Te quedan %d puntos Kafra y %d puntos de cash.
-505: Has obtenido %d puntos de cash. Tienes un total de %d puntos.
-506: Has obtenido %d puntos Kafra. Tienes un total de %d puntos.
-410: Se han eliminado %d puntos de cash. Quedan %d puntos.
-411: Se han eliminado %d puntos Kafra. Quedan %d puntos.
+504: Puntos utilizados: Kafra: %d. Cash: %d. Puntos restantes: Kafra: %d. Cash: %d.
+505: Puntos de cash obtenidos: %d. Puntos totales: %d.
+506: Puntos de Kafra obtenidos %d. Puntos totales: %d.
+410: Puntos de cash eliminados: %d. Puntos restantes: %d.
+411: Puntos de Kafra eliminados: %d. Puntos restantes: %d.
 
-// Mensajes del sistema de intercambio de objetos
-507: Este jugador ha sido expulsado durante %d minuto(s).
-508: Este jugador no ha sido expulsado (La opción está desactivada).
-//509 vacío
+// Bloqueo de personajes
+507: Este jugador ha sido bloqueado durante estos minutos: %d.
+508: Este jugador no ha sido bloqueado (el bloqueo está desactivado).
+
+509: Comandos de scripts ligados:
 
 // Sistema de correo
-//----------------------
-510: Tienes un total de %d cartas nuevas (%d sin leer).
+510: Correos nuevos: %d (%d sin leer).
+
+//Instancing
+515: Tu instancia se ha recargado.
+516: Se ha recargado la base de datos de instancias.
+
+// @auction
+517: El sistema de subastas está desactivado.
+
+//@itemlist -- continuación
+518: Adorno para la boca,
+519: Adorno para la cabeza,
+520: Adorno para la cabeza y la boca,
+521: Adorno para los ojos,
+522: Adorno para ojos y boca,
+523: Adorno para toda la cara,
+524: Ropa decorativa,
+525: Suelo decorativo,
+526: Armadura,
+527: Cuerpo sombrío,
+528: Mano derecha sombría,
+529: Mano izquierda sombría,
+530: Sombra en ambas manos,
+531: Zapatos sombríos,
+532: Accesorio derecho sombrío,
+533: Accesorio izquierdo sombrío,
+
+534: ¡No quedan existencias! Vuelve más tarde.
 
 // Mensajes de detección de bots (sin uso)
 535: Se ha detectado un posible bot (99% de probabilidades) o un cliente modificado: '%s' (cuenta: %d, char_id: %d). Este jugador te pregunta el nombre si estás escondido.
 536: El personaje '%s' (cuenta: %d) está intentando utilizar un bot (intentando detectar a un jugador falso).
 537: El personaje '%s' (cuenta: %d) está intentando utilizar un bot (intentando detectar a un monstruo falso).
+
 // Mensajes del sistema de intercambio de objetos
 538: Se ha detectado una irregularidad en el intercambio de objetos del personaje '%s' (cuenta: %d), está intentando intercambiar más de lo que tiene.
 539: Ese jugador tiene %d unidades del objeto (id: %hu), pero ha intentado intercambiar %d.
 540: Ese jugador ha sido bloqueado.
+
 // Anuncios de consecución de objetos poco comunes y robos de objetos.
 541: '%s' ha conseguido de %s un %s (probabilidad: %0.02f%%)
 //541: %.0s%.0s alguien ha conseguido %s
 542: '%s' ha robado de %s un %s (probabilidad: %0.02f%%)
 //542: %.0s%.0s alguien ha robado%s
 //543~548 no se utilizan (pertenecían a @away)
+
 // @autotrade
 549: Debes abrir una tienda para poder utilizar @autotrade.
 
@@ -639,7 +687,7 @@
 663: Duelo: No puedes utilizar ese objeto en pleno duelo.
 664: No puedes utilizar ese comando estando muerto.
 665: No puedes crear una sala de chat en este mapa.
-666: Las mascotas están prohibidas en la Guerra del Emperium.
+666: Las mascotas están prohibidas en la guerra de clanes.
 667: No estás muerto.
 668: Tus puntos de memorización actuales son los siguientes:
 669: Has roto el arma de tu enemigo.
@@ -649,12 +697,11 @@
 673: No puedes realizar esa acción en estos momentos. Inténtalo más tarde.
 674: Se ha eliminado de tu lista de amigos.
 675: No puedes enviar tantos correos seguidos.
-676: No se pueden establecer alianzas durante una Guerra del Emperium.
-677: No se puede romper una alianza durante una Guerra del Emperium.
+676: No se pueden establecer alianzas durante una guerra de clanes.
+677: No se puede romper una alianza durante una guerra de clanes.
 678: Ya no eres el líder del clan.
 679: Te has convertido en el líder del clan.
 680: Te has recuperado.
-//681-899 vacíos
 
 681: Rune Knight T
 682: Warlock T
@@ -676,6 +723,86 @@
 698: Baby Summoner
 699: Baby Ninja
 
+// @vip
+700: Instrucciones: @vip <tiempo> <nombre del personaje>
+701: El tiempo introducido no es válido.
+702: El formato del tiempo es +/-<valor>. y/a = Año, m = Mes, d/j = Día, h = Horas, n/mn = Minutos, s = Segundos.
+703: Un GM te ha retirado el VIP.
+704: El jugador ya no es VIP.
+705: Tiempo restante como VIP: Años: %d. Meses: %d. Días: %d. Horas: %d. Minutos: %d.
+706: El jugador '%s' será VIP durante: Años: %d. Meses: %d. Días: %d. Horas: %d. Minutos: %d.
+707: Serás VIP hasta: %s
+708: El jugador será VIP hasta: %s
+
+709: El objeto %hu ha sido eliminado de tu inventario.
+710: El objeto %hu ha sido eliminado de tu carro.
+711: El objeto %hu ha sido eliminado de tu almacén.
+
+// Item shop
+712: No tienes suficientes %s (%hu).
+713: No tienes suficientes '%s'.
+714: Listado de la tienda de objetos: %s (%hu)
+715: Listado de puntos de la tienda: '%s'
+716: Tu '%s' ahora es: %d
+
+// MVP EXP reward message
+717: ¡Enhorabuena! ¡Eres todo un MVP! ¡¡Puntos de experiencia obtenidos: %u!!
+
+// @showrate
+718: La información de ratio personal no se mostrará.
+719: Ahora se mostrará la información de ratio personal.
+
+//Skill messages
+//720: Vacío
+721: [%s] Se ha imbuido el arma con veneno.
+//722: Vacío
+
+// @costume
+723: No existe el disfraz '%s'.
+724: Ya llevas puesto el disfraz '%s', escribe '@costume' para quitártelo.
+725: -- %s
+726: - Disfraces disponibles
+727: Disfraz '%s' eliminado.
+
+// Monster Transformation
+728: ¡¡Traaaansformación!! ¡¡Forma %s!!
+729: No puedes transformarte en un monstruo si llevas un disfraz.
+730: El personaje no puede disfrazarse si está transformado en un monstruo.
+731: No puedes transformarte en monstruo durante la guerra de clanes.
+
+732: No puedes abrir el objeto porque tu inventario está lleno.
+
+733: Introduce la ruta de archivo de un NPC (instrucciones: @reloadnpcfile <ruta>).
+
+// @cloneequip/@clonestat
+734: No puedes clonar tu propio %s.
+735: Instrucciones: %s <personaje/ID>
+736: No se puede clonar el %s de ese jugador.
+737: '%s' (%d) no se puede clonar, límite (%d).
+738: Clonación de '%s' realizada.
+
+// @bodystyle
+739: Introduce un estilo de cuerpo (instrucciones: @bodystyle <ID de cuerpo: %d-%d>).
+740: Este oficio no tiene estilos de cuerpo alternativos.
+
+// @showexp
+741: Obtenida
+742: Perdida
+743: Experiencia %s Base:%ld (%0.2f%%) Oficio:%ld (%0.2f%%)
+
+// @adopt
+744: El bebé ya está adoptado o está en proceso de adopción.
+745: Necesitas estar casado y dentro de un grupo con tu pareja y el bebé para adoptarlo.
+746: El padre y la madre deben equiparse sus anillos de boda.
+747: El bebé no es un Novice.
+748: Falta uno de los padres o el bebé.
+
+// Guerra de clanes de entrenamiento (@agitstart3/@agitend3)
+749: Ha empezado la guerra de clanes de entrenamiento.
+750: La guerra de clanes de entrenamiento ya ha sido iniciada.
+751: Ha terminado la guerra de clanes de entrenamiento.
+752: La guerra de clanes de entrenamiento no ha sido iniciada.
+
 // Expanded Baby Jobs
 753: Baby Kagerou
 754: Baby Oboro
@@ -685,6 +812,27 @@
 758: Baby Gunslinger
 759: Baby Rebellion
 
+// Channel System
+760: No puedes unirte al canal '%s'. Se ha llegado al límite de %d usuarios.
+761: %s %s se ha unido al canal.
+762: No puedes abandonar el canal '%s'.
+763: %s %s ha abandonado el canal.
+764: No puedes modificar el color del canal '%s'.
+765: No tienes permisos para bloquear a nadie.
+766: No puedes expulsar a nadie del canal '%s'.
+767: No puedes expulsar a nadie del canal.
+768: Se ha expulsado a %s %s del canal.
+769: Se ha bloqueado a %s %s del canal.
+770: Se ha desbloqueado a %s %s del canal.
+
+//@reloadachievementdb
+771: Se ha recargado la base de datos de logros.
+
+// Achievements
+772: Los logros están desactivados.
+
+//773-899 vacíos
+
 //------------------------------------
 // Más mensajes relacionados con comandos
 //------------------------------------
@@ -701,13 +849,13 @@
 908: Has introducido un valor desconocido en:
 
 // @rura
-909: Introduce un nombre de mapa (Instrucciones: @warp/@rura/@mapmove <nombre de mapa> <x> <y>).
+909: Introduce un nombre de mapa (instrucciones: @warp/@rura/@mapmove <nombre de mapa> <x> <y>).
 
 // @where
-910: Introduce el nombre de algún jugador (Instrucciones: @where <personaje>).
+910: Introduce el nombre de algún jugador (instrucciones: @where <personaje>).
 
 // @jumpto
-911: Introduce el nombre de algún jugador (Instrucciones: @jumpto/@warpto/@goto <personaje/ID>).
+911: Introduce el nombre de algún jugador (instrucciones: @jumpto/@warpto/@goto <personaje/ID>).
 
 // @who
 912: (CID:%d/AID:%d)
@@ -720,7 +868,7 @@
 917: Ninguno
 
 // @speed
-918: Introduce un valor para tu velocidad (Instrucciones: @speed <%d-%d>).
+918: Introduce un valor para tu velocidad (instrucciones: @speed <%d-%d>).
 
 // @storage
 919: Has abierto el almacén.
@@ -737,22 +885,22 @@
 //924-979 vacíos (¿posibles futuros oficios?)
 
 // @kami
-980: Introduce un mensaje (Instrucciones: @kami <mensaje>).
-981: Introduce un color y un mensaje (Instrucciones: @kamic <color> <mensaje>).
+980: Introduce un mensaje (instrucciones: @kami <mensaje>).
+981: Introduce un color y un mensaje (instrucciones: @kamic <color> <mensaje>).
 982: Ese color no es válido.
 
 // @item
-983: Introduce el nombre de un objeto o su ID (Instrucciones: @item <nombre del objeto/ID> <cantidad>).
+983: Introduce el nombre de un objeto o su ID (instrucciones: @item <nombre del objeto/ID> <cantidad>).
 
 // @item2
-984: Introduce todos los parámetros (Instrucciones: @item2 <nombre del objeto/id> <cantidad>)
+984: Introduce todos los parámetros (instrucciones: @item2 <nombre del objeto/id> <cantidad>)
 985: <¿identificado?> <refinamiento> <atributos> <carta1> <carta2> <carta3> <carta4>.
 
 // @baselevelup
-986: Introduce una cifra (Instrucciones @lvup/@blevel/@baselvlup <cantidad de niveles>).
+986: Introduce una cifra (instrucciones @lvup/@blevel/@baselvlup <cantidad de niveles>).
 
 // @joblevelup
-987: Introduce una cifra (Instrucciones: @joblvup/@jlevel/@joblvlup <cantidad de niveles>).
+987: Introduce una cifra (instrucciones: @joblvup/@jlevel/@joblvlup <cantidad de niveles>).
 
 // @help
 988: No hay ayuda disponible para %c%s.
@@ -760,22 +908,22 @@
 990: Alternativas disponibles:
 
 // @model
-991: Introduce al menos un valor (Instrucciones: @model <ID del peinado: %d-%d> <color del peinado: %d-%d> <tinte de ropa: %d-%d>).
+991: Introduce al menos un valor (instrucciones: @model <ID del peinado: %d-%d> <color del peinado: %d-%d> <tinte de ropa: %d-%d>).
 
 // @dye
-992: Introduce un tinte de ropa (Instrucciones: @dye/@ccolor <tinte de ropa: %d-%d>).
+992: Introduce un tinte de ropa (instrucciones: @dye/@ccolor <tinte de ropa: %d-%d>).
 
 // @hairstyle
-993: Introduce un tipo de peinado (Instrucciones: @hairstyle/@hstyle <ID del peinado: %d-%d>).
+993: Introduce un tipo de peinado (instrucciones: @hairstyle/@hstyle <ID del peinado: %d-%d>).
 
 // @haircolor
-994: Introduce un color de peinado (Instrucciones: @haircolor/@hcolor <color del peinado: %d-%d>).
+994: Introduce un color de peinado (instrucciones: @haircolor/@hcolor <color del peinado: %d-%d>).
 
 // @go
 995: No puedes utilizar @go en este mapa.
 
 // @refine
-996: Introduce una pieza de equipo y una cantidad (Instrucciones: @refine <pieza de equipo> <+/- cantidad>).
+996: Introduce una pieza de equipo y una cantidad (instrucciones: @refine <pieza de equipo> <+/- cantidad>).
 997: %d: Boca
 998: %d: Mano derecha
 999: %d: Ropaje
@@ -788,89 +936,92 @@
 1006: %d: Ojos / Orejas
 
 // @produce
-1007: Introduce el nombre/ID de un objeto (Instrucciones: @produce <pieza de equipo/ID> <elemento> <# cantidad de "muy">)
+1007: Introduce el nombre/ID de un objeto (instrucciones: @produce <pieza de equipo/ID> <elemento> <# cantidad de "muy">)
 
 // @memo
-1008: Introduce una ubicación válida (Instrucciones: @memo <posición_memo:%d-%d>).
+1008: Introduce una ubicación válida (instrucciones: @memo <posición_memo:%d-%d>).
 
 // @displaystatus
-1009: Introduce un valor válido (Instrucciones: @displaystatus <tipo de estado> <identificador> <punto> {<valor1> {<valor2> {<valor3>}}}).)
+1009: Introduce un valor válido (instrucciones: @displaystatus <tipo de estado> <identificador> <punto> {<valor1> {<valor2> {<valor3>}}}).)
 
 // @stpoint
-1010: Introduce una cantidad (Instrucciones: @stpoint <cantidad de puntos>)
+1010: Introduce una cantidad (instrucciones: @stpoint <cantidad de puntos>)
 
 // @skpoint
-1011: Introduce una cantidad (Instrucciones: @skpoint <cantidad de puntos>)
+1011: Introduce una cantidad (instrucciones: @skpoint <cantidad de puntos>)
 
 // @zeny
-1012: Introduce una cantidad (Instrucciones: @zeny <cantidad>).
+1012: Introduce una cantidad (instrucciones: @zeny <cantidad>).
 
 // @param
-1013: Introduce una cantidad (Instrucciones: @str/@agi/@vit/@int/@dex/@luk <+/- cantidad>).
+1013: Introduce una cantidad (instrucciones: @str/@agi/@vit/@int/@dex/@luk <+/- cantidad>).
 
 // @guildlevelup
-1014: Introduce una cantidad (Instrucciones: @guildlvup/@guildlvlup <cantidad de niveles>).
+1014: Introduce una cantidad (instrucciones: @guildlvup/@guildlvlup <cantidad de niveles>).
 
 // @makeegg
-1015: Introduce el nombre de un monstruo/huevo/ID (Instrucciones: @makeegg <mascota>).
+1015: Introduce el nombre de un monstruo/huevo/ID (instrucciones: @makeegg <mascota>).
 
 // @petfriendly
-1016: Introduce una cantidad (Instrucciones: @petfriendly <0-1000>).
+1016: Introduce una cantidad (instrucciones: @petfriendly <0-1000>).
 
 // @pethungry
-1017: Introduce una cantidad (Instrucciones: @pethungry <0-100>).
+1017: Introduce una cantidad (instrucciones: @pethungry <0-100>).
 
 // @recall
-1018: Introduce el nombre de un jugador (Instrucciones: @recall <nombre/ID>)
+1018: Introduce el nombre de un jugador (instrucciones: @recall <nombre/ID>)
 1019: No estás autorizado a llevar a nadie a este mapa.
 
 // @recall
 1020: No estás autorizado a sacar a ese jugador de su mapa.
 
-// @charblock
-1021: Introduce el nombre de un jugador (Instrucciones: @charblock/@block <nombre del personaje>)
+// @charblock/@charunblock
+1021: Introduce el nombre de un jugador (instrucciones: @charblock/@block <nombre del personaje>)
 
-// @charban
-1022: Introduce la duración del bloqueo y el nombre del jugador que quieres bloquear (Instrucciones: @charban/@ban/@banish/@charbanish <tiempo> <nombre del personaje>).
+// @ban/@charban
+1022: Introduce la duración del bloqueo y el nombre del jugador (instrucciones: %s <tiempo> <nombre del personaje>).
 1023: No estás autorizado para modificar ningún bloqueo temporal.
 
-// @charunblock
-1024: Introduce el nombre de un jugador bloqueado (Instrucciones: @charunblock <nombre del personaje>).
+// @rates
+1024: Ratio de objetos de MVP: Comunes %.2fx / Curativos %.2fx / Consumibles %.2fx / Equipo %.2fx / Carta %.2fx
+
+// @recall
+1025: El personaje está en autotrade y no puede acudir.
 
 // @kick
-1026: Introduce el nombre de un personaje (Instrucciones: @kick <nombre del personaje/ID>).
+1026: Introduce el nombre de un personaje (instrucciones: @kick <nombre del personaje/ID>).
 
 // @questskill / @lostskill
 1027: Introduce la ID de una habilidad de quest.
 
 // @spiritball
-1028: Introduce una cantidad (Instrucciones: @spiritball <cantidad: 0-%d>).
+1028: Introduce una cantidad (instrucciones: @spiritball <cantidad: 0-%d>).
 
 // @party
-1029: Introduce el nombre de un grupo (Instrucciones: @party <nombre del grupo>).
+1029: Introduce el nombre de un grupo (instrucciones: @party <nombre del grupo>).
 
 // @guild
-1030: Introduce el nombre de un clan (Instrucciones: @guild <nombre del clan>).
+1030: Introduce el nombre de un clan (instrucciones: @guild <nombre del clan>).
 
 // @idsearch
-1031: Introduce una parte del nombre de un objeto (Instrucciones: @idsearch <parte del nombre>).
+1031: Introduce una parte del nombre de un objeto (instrucciones: @idsearch <parte del nombre>).
 
 // @recallall / @guildrecall / @partyrecall
 1032: No estás autorizado a traer nadie a este mapa.
 1033: Jugadores no convocados: %d (no estás autorizado).
 
 // @guildrecall
-1034: Introduce el nombre/ID de un clan (Instrucciones: @guildrecall <nombre/ID del clan>).
+1034: Introduce el nombre/ID de un clan (instrucciones: @guildrecall <nombre/ID del clan>).
 
 // @partyrecall
-1035: Introduce el nombre/ID de un grupo (Instrucciones: @partyrecall <nombre/ID del grupo>).
+1035: Introduce el nombre/ID de un grupo (instrucciones: @partyrecall <nombre/ID del grupo>).
 
 // @reloadatcommand
 1036: Ha ocurrido un error al cargar el archivo groups.conf.
 1037: Ha ocurrido un error al cargar el archivo atcommand_athena.conf.
 
 // @mapinfo
-1038: Introduce un número de la lista (Instrucciones: @mapinfo <0-3> <mapa>).
+1038: Introduce un número de la lista (instrucciones: @mapinfo <0-3> <mapa>).
 1039: ------ Información del mapa ------
 1040: Mapa: %s | Jugadores: %d | NPCs: %d | Chats: %d | Tiendas: %d
 1041: ------ Opciones del mapa ------
@@ -884,14 +1035,16 @@
 1049: Opciones climáticas:
 1050: Otras opciones:
 1051: Otras opciones2:
-
+1052: Ajustes de daño de habilidades:
+//1053-1064 vacíos
 1065: Sin penalización de experiencia: %s | Sin penalización de zeny: %s
 1066: Activado
 1067: Desactivado
-1068: Sin opción de guardado (Vuelves al punto de guardado)
+1068: Sin opción de guardado (vuelves al punto de guardado)
 1069: Sin opción de guardado, punto de guardado: %s, aleatorio
 1070: Sin opción de guardado, punto de guardado: %s,%d,%d
 
+
 // @mount
 1119: Te has montado en tu dragón.
 1120: Has liberado a tu dragón.
@@ -902,34 +1055,34 @@
 
 // @guildspy
 1125: Este comando está desactivado.
-1126: Introduce el nombre/ID de un clan (Instrucciones: @guildspy <nombre/ID del clan>).
+1126: Introduce el nombre/ID de un clan (instrucciones: @guildspy <nombre/ID del clan>).
 
 // @partyspy
-1127: Introduce el nombre/ID de un grupo (Instrucciones: @partyspy <nombre/ID del grupo>).
+1127: Introduce el nombre/ID de un grupo (instrucciones: @partyspy <nombre/ID del grupo>).
 
 // @nuke
-1128: Introduce el nombre de algún jugador (Instrucciones: @nuke <nombre del personaje>).
+1128: Introduce el nombre de algún jugador (instrucciones: @nuke <nombre del personaje>).
 
 // @tonpc
-1129: Introduce el nombre de algún NPC (Instrucciones: @tonpc <nombre del NPC>).
+1129: Introduce el nombre de algún NPC (instrucciones: @tonpc <nombre del NPC>).
 
 // @enablenpc
-1130: Introduce el nombre de un NPC (Instrucciones: @enablenpc <nombre del NPC>).
+1130: Introduce el nombre de un NPC (instrucciones: @enablenpc <nombre del NPC>).
 
 // @hidenpc
-1131: Introduce el nombre de un NPC (Instrucciones: @hidenpc <nombre del NPC>).
+1131: Introduce el nombre de un NPC (instrucciones: @hidenpc <nombre del NPC>).
 
 // @loadnpc
-1132: Introduce el nombre de un script (Instrucciones: @loadnpc <ruta del script>)
+1132: Introduce el nombre de un script (instrucciones: @loadnpc <ruta del script>)
 
 // @unloadnpc
-1133: Introduce el nombre de un NPC (Instrucciones: @unloadnpc <nombre del NPC>).
+1133: Introduce el nombre de un NPC (instrucciones: @unloadnpc <nombre del NPC>).
 
 // @jail
-1134: Introduce el nombre de algún jugador (Instrucciones: @jail <nombre del personaje>).
+1134: Introduce el nombre de algún jugador (instrucciones: @jail <nombre del personaje>).
 
 // @unjail
-1135: Introduce el nombre de algún jugador (Instrucciones: @unjail/@discharge <nombre del personaje>).
+1135: Introduce el nombre de algún jugador (instrucciones: @unjail/@discharge <nombre del personaje>).
 
 // @jailfor
 1136: La duración que has introducido no es válida.
@@ -943,32 +1096,32 @@
 1142: Te quedarás
 
 // @disguise
-1143:Introduce el nombre/ID de un monstruo/NPC (Instrucciones: @disguise <nombre/ID>).
+1143:Introduce el nombre/ID de un monstruo/NPC (instrucciones: @disguise <nombre/ID>).
 1144: No puedes disfrazarte en una montura.
 
 // @disguiseall
-1145: Introduce el nombre/ID de un monstruo/NPC (Instrucciones: @disguiseall <nombre/ID>).
+1145: Introduce el nombre/ID de un monstruo/NPC (instrucciones: @disguiseall <nombre/ID>).
 
 // @disguiseguild
-1146: Introduce el nombre/ID de un monstruo, y el nombre/ID de un clan (Instrucciones: @disguiseguild <nombre/ID del monstruo> <nombre/ID del clan>).
+1146: Introduce el nombre/ID de un monstruo, y el nombre/ID de un clan (instrucciones: @disguiseguild <nombre/ID del monstruo> <nombre/ID del clan>).
 
 // @undisguiseguild
-1147: Introduce el nombre/ID de un clan (Instrucciones: @undisguiseguild <nombre/ID del clan>).
+1147: Introduce el nombre/ID de un clan (instrucciones: @undisguiseguild <nombre/ID del clan>).
 
 // @exp
 1148: Nivel de base: %d (%.3f%%) | Nivel de oficio: %d (%.3f%%)
 
 // broadcast
-1149: Escribe un mensaje (Instrucciones: @broadcast <mensaje>).
+1149: Escribe un mensaje (instrucciones: @broadcast <mensaje>).
 
 // localbroadcast
-1150: Introduce un mensaje (Instrucciones @localbroadcast <mensaje>).
+1150: Introduce un mensaje (instrucciones @localbroadcast <mensaje>).
 
 // @email
-1151: Introduce dos correos electrónicos (Instrucciones: @email <actual> <nuevo>)
+1151: Introduce dos correos electrónicos (instrucciones: @email <actual> <nuevo>)
 
 // @effect
-1152: Introduce el ID de algún efecto (Instrucciones: @effect <ID del efecto>)
+1152: Introduce el ID de algún efecto (instrucciones: @effect <ID del efecto>)
 
 // @npcmove
 1153: Instrucciones: @npcmove <X> <Y> <nombre del NPC>
@@ -989,7 +1142,7 @@
 1162: Has almacenado todos tus objetos.
 
 // @skillid
-1163: Introduce el nombre de la habilidad a buscar (Instrucciones: @skillid <nombre de la habilidad>).
+1163: Introduce el nombre de la habilidad a buscar (instrucciones: @skillid <nombre de la habilidad>).
 1164: habilidad %d: %s (%s)
 
 // @useskill
@@ -1047,7 +1200,7 @@
 1194: Has eliminado '%s'/'%s' {%hu} de tu lista de recogida de objetos.
 1195: Puedes almacenar %d objetos en tu lista de recogida de objetos.
 1196: Para añadir un nuevo objeto a la lista utiliza @alootid <nombre/ID del objeto>. Para eliminar un objeto utiliza @alootid <nombre/ID del objeto>.
-1197: @alootid reset reiniciará tu lista de recogida de objetos.
+1197: "@alootid reset" reiniciará tu lista de recogida de objetos.
 1198: Tu lista de recogida de objetos está vacía.
 1199: Lista de objetos para recoger automáticamente:
 1200: Has reiniciado tu lista de recogida de objetos.
@@ -1085,10 +1238,10 @@
 1216: Ha comenzado el espectáculo de fuegos artificiales.
 
 // @sound
-1217: Introduce el nombre de un archivo de sonido (Instrucciones: @sound <archivo>).
+1217: Introduce el nombre de un archivo de sonido (instrucciones: @sound <archivo>).
 
 // @mobsearch
-1218: Introduce el nombre de un monstruo (Instrucciones: @mobsearch <nombre del monstruo>),
+1218: Introduce el nombre de un monstruo (instrucciones: @mobsearch <nombre del monstruo>),
 1219: Ese monstruo no existe (%s).
 1220: Búsqueda... %s %s
 
@@ -1096,14 +1249,14 @@
 1221: Has eliminado todos los objetos arrojados al suelo.
 
 // @npctalk
-1222: Introduce los siguientes parámetros (Instrucciones: @npctalk <nombre del npc> <mensaje>).
-1223: Introduce los siguientes parámetros (Instrucciones @npctalk <color> <nombre del npc> <mensaje>).
+1222: Introduce los siguientes parámetros (instrucciones: @npctalk <nombre del npc> <mensaje>).
+1223: Introduce los siguientes parámetros (instrucciones @npctalk <color> <nombre del npc> <mensaje>).
 
 // @pettalk
-1224: Introduce un mensaje (Instrucciones: @pettalk <mensaje>).
+1224: Introduce un mensaje (instrucciones: @pettalk <mensaje>).
 
 // @summon
-1225: Introduce el nombre de un monstruo (Instrucciones: @summon <nombre del monstruo> {duración}).
+1225: Introduce el nombre de un monstruo (instrucciones: @summon <nombre del monstruo> {duración}).
 
 // @adjgroup
 1226: Instrucciones @adjgroup <ID del grupo>
@@ -1112,7 +1265,7 @@
 1229: Has cambiado de grupo.
 
 // @trade
-1230: Introduce el nombre de un jugador (Instrucciones: @trade <nombre del personaje>).
+1230: Introduce el nombre de un jugador (instrucciones: @trade <nombre del personaje>).
 
 // @setbattleflag
 1231: Instrucciones: @setbattleflag <opción> <parámetro>
@@ -1120,7 +1273,7 @@
 1233: Se ha configurado con éxito.
 
 // @unmute
-1234: Introduce el nombre de un jugador (Instrucciones: @unmute <nombre del personaje>).
+1234: Introduce el nombre de un jugador (instrucciones: @unmute <nombre del personaje>).
 1235: El jugador no está silenciado.
 1236: El jugador ya no está silenciado.
 
@@ -1131,7 +1284,7 @@
 1238: No tienes ningún objeto para identificar.
 
 // @mobinfo
-1239: Introduce el nombre/ID de un monstruo (Instrucciones: @mobinfo <nombre/ID del monstruo>).
+1239: Introduce el nombre/ID de un monstruo (instrucciones: @mobinfo <nombre/ID del monstruo>).
 1240: Monstruo MVP: '%s'/'%s'/'%s' (%d)
 1241: Monstruo: '%s'/'%s'/'%s' (%d)
 1242: Nv:%d  HP:%d  EXP de base:%u  EXP de oficio:%u  HIT:%d  FLEE:%d
@@ -1149,7 +1302,7 @@
 1252: Búsqueda de monstruos... %s %s
 
 // @homlevel
-1253: Introduce un nivel (Instrucciones: @homlevel <cantidad de niveles>).
+1253: Introduce un nivel (instrucciones: @homlevel <cantidad de niveles>).
 
 // @homlevel / @homevolve / @homfriendly / @homhungry / @homtalk / @hominfo / @homstats
 1254: No tienes ningún homúnculo.
@@ -1158,17 +1311,17 @@
 1255: Tu homúnculo no puede evolucionar.
 
 // @makehomun
-1256: Introduce el ID de un homúnculo (Instrucciones: @makehomun <ID del homúnculo>).
+1256: Introduce el ID de un homúnculo (instrucciones: @makehomun <ID del homúnculo>).
 1257: El ID que has introducido no es válido.
 
 // @homfriendly
-1258: Introduce un valor de amistad (Instrucciones: @homfriendly <valor de amistad [0-1000]>).
+1258: Introduce un valor de amistad (instrucciones: @homfriendly <valor de amistad [0-1000]>).
 
 // @homhungry
-1259: Introduce un valor de hambre (Instrucciones: @homhungry <valor de hambre [0-100]>).
+1259: Introduce un valor de hambre (instrucciones: @homhungry <valor de hambre [0-100]>).
 
 // @homtalk
-1260: Introduce un mensaje (Instrucciones: @homtalk <mensaje>).
+1260: Introduce un mensaje (instrucciones: @homtalk <mensaje>).
 
 // @hominfo
 1261: Atributos del homúnculo:
@@ -1192,7 +1345,7 @@
 1275: Has alterado los atributos del homúnculo.
 
 // @iteminfo
-1276: Introduce el nombre/ID de un objeto (Instrucciones: @ii/@iteminfo <nombre/ID del objeto>).
+1276: Introduce el nombre/ID de un objeto (instrucciones: @ii/@iteminfo <nombre/ID del objeto>).
 1277: Objeto: '%s'/'%s'[%d] (%hu) Tipo: %s | Efecto: %s
 1278: Ninguno
 1279: Contiene código
@@ -1202,13 +1355,13 @@
 1283: - Ningún monstruo tiene este objeto.
 
 // @whodrops
-1284: Introduce el nombre/ID de un objeto (Instrucciones: @whodrops <nombre/ID del objeto>). 
+1284: Introduce el nombre/ID de un objeto (instrucciones: @whodrops <nombre/ID del objeto>). 
 1285: Objeto: '%s'[%d] (ID:%d)
 1286: - Ningún monstruo tiene ese objeto.
 1287: - Estos monstruos tienen ese objeto (sólo se muestran un máximo de %d):
 
 // @whereis
-1288: Introduce el nombre/ID de un monstruo (Instrucciones: @whereis <nombre/ID del monstruo>).
+1288: Introduce el nombre/ID de un monstruo (instrucciones: @whereis <nombre/ID del monstruo>).
 1289: Puedes encontrar un %s en:
 1290: Este monstruo no aparece en ninguna parte.
 
@@ -1223,7 +1376,7 @@
 1296: No se puede especificar la versión SVN.
 
 // @mutearea
-1297: Introduce la cantidad de minutos (Instrucciones: @mutearea/@stfu <minutos>).
+1297: Introduce la cantidad de minutos (instrucciones: @mutearea/@stfu <minutos>).
 
 // @rates
 1298: Experiencia: Base %.2fx / Oficio %.2fx
@@ -1232,13 +1385,13 @@
 1301: Otros objetos: MvP %.2fx / Cartas %.2fx / Cofres %.2fx
 
 // @me
-1302: Introduce un mensaje (Instrucciones: @me <mensaje>).
+1302: Introduce un mensaje (instrucciones: @me <mensaje>).
 
 // @size / @sizeall / @sizeguild
 1303: Has alterado tu tamaño.
 
 // @sizeguild
-1304: Introduce el nombre/ID de un clan (Instrucciones: @sizeguild <tamaño> <nombre/ID del clan>).
+1304: Introduce el nombre/ID de un clan (instrucciones: @sizeguild <tamaño> <nombre/ID del clan>).
 
 // @monsterignore
 1305: Ahora eres inmune a cualquier ataque.
@@ -1315,7 +1468,7 @@
 1354: Objetos encontrados: %d en %d %s ranuras.
 
 // @delitem
-1355: Introduce el nombre/ID de un objeto, una cantidad, y el nombre de un jugador (Instrucciones: #delitem <jugador> <nombre/ID del objeto> <cantidad>).
+1355: Introduce el nombre/ID de un objeto, una cantidad, y el nombre de un jugador (instrucciones: #delitem <jugador> <nombre/ID del objeto> <cantidad>).
 
 // @font
 1356: Ahora se utilizará la fuente por defecto.
@@ -1336,21 +1489,23 @@
 
 // @set
 1367: Instrucciones: @set <nombre de la variable> <valor>
-1368: Instrucciones: ej. @set PoringCharVar 50
-1369: Instrucciones: ej. @set PoringCharVarSTR$ Cadena de texto
-1370: Instrucciones: ej. @set PoringCharVarSTR$ muestra su valor, Cadena de texto.
+1368: Instrucciones: ej. "@set PoringCharVar 50"
+1369: Instrucciones: ej. "@set PoringCharVarSTR$ Cadena de texto"
+1370: Instrucciones: ej. "@set PoringCharVarSTR$" muestra su valor, cadena de texto.
 1371: Las variables de NPC no se pueden editar con @set.
 1372: Las variables de instancias no se pueden editar con @set.
-1373: El valor %s ahora es:%d
-1374: El valor %s ahora es :%s
+1373: El valor %s ahora es: %d
+1374: El valor %s ahora es: %s
 1375: %s está vacío
-//1376: free
+
+// @cash/@points
+1376: Cierra la tienda de cash antes de ejecutar este comando.
 
 // @reloadquestdb
 1377: Se ha actualizado la base de datos de las quest con éxito.
 
 // @addperm
-1378: Instrucciones %s <permisos>
+1378: Instrucciones: %s <permisos>
 1379: -- Listado de permisos
 1380: '%s' no es un permiso válido.
 1381: El jugador '%s' ya tiene el permiso '%s'.
@@ -1364,11 +1519,11 @@
 1387: Ese archivo no existe.
 
 // Mensajes de comandos en general
-1388: Ha fallado el comando (Instrucciones: %c<comando> <nombre del personaje> <parámetros>).
+1388: Ha fallado el comando (instrucciones: %c<comando> <nombre del personaje> <parámetros>).
 1389: Ha ocurrido un error con %s. El jugador no existe o no está conectado.
 
 // @cart
-1390: Ese carro no existe (Instrucciones: %s <0-%d>).
+1390: Ese carro no existe (instrucciones: %s <0-%d>).
 1391: No tienes ningún carro.
 1392: Ahora tienes un carro.
 
@@ -1387,9 +1542,9 @@
 1398: -- Mostrando los primeros %d resultados:
 
 // @channel
-1399: Ese canal no existe (Instrucciones: %s <#nombre del canal>).
-1400: El canal '%s' no existe (Instrucciones: %s <#nombre del canal>).
-1401: El canal '%s' está protegido con contraseña (Instrucciones: %s <#nombre del canal> <contraseña>).
+1399: Ese canal no existe (instrucciones: %s <#nombre del canal>).
+1400: El canal '%s' no existe (instrucciones: %s <#nombre del canal>).
+1401: El canal '%s' está protegido con contraseña (instrucciones: %s <#nombre del canal> <contraseña>).
 1402: No estás en ese canal, escribe '@join <#nombre del canal>'.
 1403: Has entrado al canal '%s'.
 1404: %s ha fallado.
@@ -1459,15 +1614,58 @@
 1468: -- Limpia la lista de accesos prohibidos al canal.
 1469: * %s delete <#nombre del canal>
 1470: -- Elimina el canal especificado.
-1471: * %s list mine
+1471: * %s listado propio
 1472: -- Muestra una lista de todos los canales en los que estás conectado.
 1473: * %s join <#nombre del canal> <contraseña>
 1474: -- Te unes al canal especificado.
 1475: ---- Mis canales ----
 1476: No te has unido a ningún canal.
 
+// @effect
+1477: Introduce un efecto válido dentro del rango de ID %d a %d.
+
+// @partysharelvl
+1478: Se ha modificado el rango para compartir experiencia en grupos.
+1479: No se ha podido actualizar la configuración. El char-server está desconectado.
+
+// @autoloottype
+1480: Tipo de objeto no encontrado.
+1481: Ya estás autorrecogiendo ese tipo de objeto.
+1482: Tu lista de autorrecogida de objetos tiene todos los tipos.Puedes eliminar algunos con @autoloottype -<tipo o ID>.
+1483: Autorrecogida de objetos del tipo: '%s' {%d}
+1484: No estás autorrecogiendo ese tipo de objeto.
+1485: Tipo de objeto: '%s' {%d} eliminado de tu lista de autorrecogida de objetos.
+1486: Para añadir un tipo de objetos a la lista, usa  "@aloottype +<tipo o ID>". Para eliminarlo, use "@aloottype -<tipo o ID>".
+1487: Lista de tipos: curativo = 0, consumible = 2, etc = 3, armadura = 4, arma = 5, carta = 6, huevo de mascota = 7, equipo de mascota = 8, municición = 10
+1488: "@aloottype reset" borrará tu lista de autorrecogida de objetos.
+1489: Tu lista de autorrecogida de objetos está vacía.
+1490: Tipos de objetos presentes en tu lista:
+1491: Tu lista de autorrecogida de objetos se ha reseteado.
+
+// @dropall
+1492: Instrucciones: @dropall {<tipo>}
+1493: Listado de tipos: (por defecto) todos = -1, curativos = 0, consumibles = 2, etc = 3, armadura = 4, arma = 5, carta = 6, huevo de mascota = 7, equipo de mascota = 8, munición = 10
+1494: ¡Objetos tirados: %d (omitidos: %d)!
+
+// Banking
+1495: ¡No puedes retirar tanto dinero!
+1496: El banco está desactivado
+
+// Roulette
+1497: La ruleta está desactivada
+
 // @guild
-1498: You cannot create a guild because you are in a clan.
+1498: No puedes crear un clan porque ya estás en uno.
+
+// @clanspy
+1499: Introduce un nombre de de clan o ID (instrucciones: @clanspy <clan o ID>).
+1500: Ya no estás espiando al clan %s.
+1501: Estás espiando al clan %s.
+1502: Nombre o ID de clan no válido.
+
+// PK Mode msgs
+1503: Has entrado en una zona PK.
+1504: Has entrado en una zona PK (segura hasta el nivel %d).
 
 //Traducciones personalizadas
 import: conf/msg_conf/import/map_msg_spn_conf.txt

+ 1 - 1
db/pre-re/achievement_db.yml

@@ -1778,7 +1778,7 @@ Achievements:
   - ID: 200031
     Group: "AG_JOB_CHANGE"
     Name: "Reborn in Valhalla!"
-    Condition: " BaseLevel == 99 && Class == JOB_NOVICE_HIGH "
+    Condition: " Class == JOB_NOVICE_HIGH "
     Reward:
     #  ItemID: 22808
       Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; "

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

@@ -23,7 +23,7 @@
 1573:2716:2717,{ bonus bInt,5; bonus bMaxHP,700; bonus bAspdRate,5; }
 1615:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bCastRate,-10; }
 1616:2515,{ bonus bSpeedRate,25; }
-1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; if(getequiprefinerycnt(EQI_GARMENT) > 10) { bonus2 bSubEle,Ele_Neutral,30; } else { bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; } }
+1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,min(5, getequiprefinerycnt(EQI_HAND_R)-5); bonus2 bSubEle,Ele_Neutral,min(30, getequiprefinerycnt(EQI_GARMENT)*3); }
 1618:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; }
 1620:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; if(getequiprefinerycnt(EQI_GARMENT) > 10) { bonus2 bSubEle,Ele_Neutral,30; } else { bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; } }
 1620:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; }

+ 1 - 1
db/re/achievement_db.yml

@@ -1778,7 +1778,7 @@ Achievements:
   - ID: 200031
     Group: "AG_JOB_CHANGE"
     Name: "Reborn in Valhalla!"
-    Condition: " BaseLevel == 99 && Class == JOB_NOVICE_HIGH "
+    Condition: " Class == JOB_NOVICE_HIGH "
     Reward:
       ItemID: 22808
       Script: " specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,30000,10; "

+ 2 - 0
db/re/instance_db.txt

@@ -24,3 +24,5 @@
 17,Faceworm's Nest,3600,300,1@face,112,374
 18,Ghost Palace,3600,300,1@spa,42,196
 21,Fenrir and Sarah,3600,300,1@glast,367,304
+26,Central Laboratory,3600,300,1@lab,120,30
+27,Last room,3600,300,1@uns,142,30

+ 43 - 2
db/re/item_combo_db.txt

@@ -7,11 +7,17 @@
 1166:2527:5467,{ bonus2 bAddRace,RC_Dragon,25; }
 1180:2527,{ bonus2 bAddRace,RC_Dragon,5; }
 1180:2527:5467,{ bonus2 bAddRace,RC_Dragon,25; }
+1219:5782,{ bonus2 bAddClass,Class_All,3; }
+1220:5782,{ bonus2 bAddClass,Class_All,3; }
+1221:5782,{ bonus2 bAddClass,Class_All,3; }
 1269:5467,{ bonus bAspd,1; bonus bFlee2,3; }
 1284:2892,{ bonus2 bSkillAtk,"AS_SONICBLOW",50; bonus bBaseAtk,50; bonus bFlee,-30; }
 1285:2892,{ bonus bCritical,4; bonus bCritAtkRate,40; bonus bMaxHPRate,-10; }
 1287:15123,{ if (getequiprefinerycnt(EQI_HAND_R) >= 7) { autobonus "{ bonus bIgnoreDefClass,Class_Normal; }",1000,3000,BF_SHORT,BF_NORMAL; } /* Confirm: Success rate */ }
 1387:19021,{ bonus2 bSkillAtk,"WS_CARTTERMINATION",15+(getequiprefinerycnt(EQI_HAND_R))*5; }
+1407:5782,{ bonus2 bAddClass,Class_All,3; }
+1408:5782,{ bonus2 bAddClass,Class_All,3; }
+1409:5782,{ bonus2 bAddClass,Class_All,3; }
 1420:2115,{ bonus3 bAutoSpellWhenHit,"HP_ASSUMPTIO",2,5; }
 1420:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
 1421:2133,{ bonus2 bAddClass,Class_All,4; bonus bDef,2; }
@@ -44,7 +50,7 @@
 1615:18539,{ bonus bMatk,10*getequiprefinerycnt(EQI_HAND_R); bonus bVariableCastrate,-10; }
 1616:2515,{ bonus bSpeedRate,25; }
 1617:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatk,.@r; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
-1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,getequiprefinerycnt(EQI_HAND_R)-5; if(getequiprefinerycnt(EQI_GARMENT) > 10) { bonus2 bSubEle,Ele_Neutral,30; } else { bonus2 bSubEle,Ele_Neutral,getequiprefinerycnt(EQI_GARMENT)*3; } }
+1618:2509,{ bonus bMaxHP,300; bonus bMatkRate,min(5, getequiprefinerycnt(EQI_HAND_R)-5); bonus2 bSubEle,Ele_Neutral,min(30, getequiprefinerycnt(EQI_GARMENT)*3); }
 1618:2535,{ bonus bMatkRate,5; bonus2 bSubEle,Ele_Neutral,25; }
 1618:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatk,.@r; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
 1619:19020,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); bonus bMatk,.@r; if (.@r >= 10) { autobonus "{ bonus bVariableCastrate,-50; }",100,5000,BF_MAGIC; /* Confirm: Success rate? */ } }
@@ -110,6 +116,7 @@
 2123:2881,{ bonus bMatkRate,getequiprefinerycnt(EQI_HAND_L)*2; }
 2124:2702,{ bonus bAspdRate,10; bonus bShortWeaponDamageReturn,5; }
 2124:22064,{ bonus bAspd,getequiprefinerycnt(EQI_HAND_L)/3; }
+2125:5782,{ bonus bDef,2; bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubEle,Ele_Fire,5; bonus2 bSubEle,Ele_Water,5; bonus2 bSubEle,Ele_Wind,5; bonus2 bSubEle,Ele_Earth,5; bonus2 bSubEle,Ele_Dark,5; bonus2 bSubEle,Ele_Holy,5; bonus2 bSubEle,Ele_Ghost,5; }
 2135:2426,{ bonus2 bAddEff,Eff_Blind,500; autobonus "{ bonus bFlee,20; }",200,10000,BF_WEAPON,"{ specialeffect2 EF_INCAGILITY; }"; }
 2137:2353:5124,{ bonus bDef,2-getequiprefinerycnt(EQI_HAND_L)-getequiprefinerycnt(EQI_HEAD_TOP); bonus bMdef,5+getequiprefinerycnt(EQI_HAND_L)+getequiprefinerycnt(EQI_HEAD_TOP); }
 2153:28372,{ .@r = getequiprefinerycnt(EQI_HAND_R)/6*8; bonus2 bSkillAtk,"LG_SHIELDPRESS",.@r; }
@@ -253,6 +260,7 @@
 2725:2773,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2725:2774,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2726:2727,{ bonus bUseSPrate,-25; }
+27264:27265,{ bonus2 bAddEle,Ele_Dark,15; bonus2 bAddEle,Ele_Undead,15; bonus2 bMagicAddEle,Ele_Dark,15; bonus2 bMagicAddEle,Ele_Undead,15; bonus2 bSubEle,Ele_Dark,15; bonus2 bSubEle,Ele_Undead,15; }
 2733:2772,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2733:2773,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
 2733:2774,{ bonus2 bAddClass,Class_All,5; bonus bMatkRate,3; bonus bHealPower,5; }
@@ -264,6 +272,7 @@
 2779:2780:5577,{ bonus bMatkRate,10; bonus bInt,5; bonus2 bSubRace,RC_Angel,10; }
 2779:2827:5482,{ autobonus "{ bonus bAspdRate,2; }",50,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bMaxHP,BaseLevel*15; bonus bMaxSP,(BaseLevel*12)/10; bonus2 bAddClass,Class_All,3; }
 2780:2826:5577,{ autobonus "{ bonus bAspdRate,2; }",50,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bMaxHP,BaseLevel*15; bonus bMaxSP,(BaseLevel*12)/10; bonus2 bAddClass,Class_All,3; }
+2782:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"WZ_WATERBALL",.@a,(.@a*10); }
 2826:2827:5577,{ autobonus "{ bonus bAspdRate,2; }",50,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; bonus bMaxHP,BaseLevel*15; bonus bMaxSP,(BaseLevel*12)/10; bonus2 bAddClass,Class_All,3; }
 2855:5360,{ bonus bCritAtkRate,10; if(getequiprefinerycnt(EQI_HEAD_TOP)>5) bonus bCritical,5; }
 2913:2710,{ bonus bBaseAtk,10; }
@@ -296,7 +305,8 @@
 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; }
+2979:18852,{ bonus bMaxHPrate,15; bonus2 bSubEle,Ele_Fire,10; bonus bLongAtkRate,30; }
+2979:18853,{ bonus bMaxHPrate,15; 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; }
@@ -355,6 +365,10 @@
 4311:4319:4331:4371,{ bonus bInt,1; bonus bStr,1; bonus bDef,2; bonus bSPrecovRate,10; bonus2 bSkillAtk,"PA_SHIELDCHAIN",10; bonus2 bSkillAtk,"PA_SACRIFICE",10; bonus bVariableCastrate,-10; if(BaseJob==Job_Crusader) bonus bDefEle,Ele_Holy; }
 4323:4324,{ bonus3 bAutoSpell,"MG_FROSTDIVER",3,250; }
 4435:4436,{ bonus2 bSPGainRace,RC_DemiHuman,2; bonus2 bSPGainRace,RC_Player,2; }
+4335:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"WZ_EARTHSPIKE",.@a,(.@a*10); bonus3 bAutoSpell,"WZ_HEAVENDRIVE",.@a,(.@a*10); }
+4345:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"MG_LIGHTNINGBOLT",.@a,(.@a*10); bonus3 bAutoSpell,"MG_THUNDERSTORM",.@a,(.@a*10); }
+4350:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"MG_COLDBOLT",.@a,(.@a*10); bonus3 bAutoSpell,"WZ_FROSTNOVA",.@a,(.@a*10); }
+4380:19156,{ .@r = getequiprefinerycnt(EQI_HEAD_TOP); if (.@r < 4) { .@a = 4; } else { .@a = min(.@r,10); } bonus3 bAutoSpell,"MG_FIREBOLT",.@a,(.@a*10); bonus3 bAutoSpell,"MG_FIREBALL",.@a,(.@a*10); }
 4335:21012,{ bonus5 bAutoSpell,"WZ_EARTHSPIKE",5,10+(getequiprefinerycnt(EQI_HAND_R)*10),BF_NORMAL|BF_WEAPON,1; /* Confirm: Success rate */ }
 4345:21012,{ bonus5 bAutoSpell,"MG_LIGHTNINGBOLT",5,10+(getequiprefinerycnt(EQI_HAND_R)*10),BF_NORMAL|BF_WEAPON,1; /* Confirm: Success rate */ }
 4350:21012,{ bonus5 bAutoSpell,"MG_COLDBOLT",5,10+(getequiprefinerycnt(EQI_HAND_R)*10),BF_NORMAL|BF_WEAPON,1; /* Confirm: Success rate */ }
@@ -364,6 +378,7 @@
 4545:18730,{ bonus bMatk,5; bonus bBaseAtk,5; }
 4605:4606,{ bonus2 bSubEle,Ele_Neutral,20; bonus bFlee,20; bonus2 bHPLossRate,100,6000; bonus2 bSPLossRate,6,6000; }
 4608:4609,{ bonus2 bAddSize,Size_Medium,15; bonus2 bAddSize,Size_Large,15; bonus2 bSubSize,Size_Medium,5; bonus2 bSubSize,Size_Large,5; }
+4610:27168,{ bonus bAtk,100; autobonus "{ active_transform 3190,6000; }",30,6000,BF_WEAPON; }
 4626:4628,{ bonus2 bIgnoreMdefRaceRate,RC_Demon,50; }
 4627:4628,{ bonus2 bIgnoreDefRaceRate,RC_Formless,50; bonus2 bIgnoreDefRaceRate,RC_Demon,50;}
 4629:4630,{ bonus3 bAutoSpell,"NPC_WIDECURSE",2,2; bonus2 bSubEle,Ele_Neutral,5; }
@@ -518,6 +533,30 @@
 20718:22009,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20718:22010,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20718:22011,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22107,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22108,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22109,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22110,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22111,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22112,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22113,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22114,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22115,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22116,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22117,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22118,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22107,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22108,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22109,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22110,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22111,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22112,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22113,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22114,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22115,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22116,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22117,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22118,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20797:2339,{ bonus bInt,15; bonus bMaxHPrate,5; bonus bMaxSPrate,5; if (getequiprefinerycnt(EQI_ARMOR) > 6) bonus bNoCastCancel,1; }
 20797:4174,{ bonus2 bSubEle,Ele_All,50; bonus2 bSubEle,Ele_Neutral,-50; }
 22069:2195,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); }
@@ -642,6 +681,8 @@
 24253:28391,{ bonus2 bAddRace,RC_All,1; bonus bMaxHPrate,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=10) { bonus2 bAddRace,RC_All,2; bonus bMaxHPrate,2; } }
 24255:28392,{ bonus2 bAddRace,RC_All,1; bonus bMaxHPrate,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=10) { bonus2 bAddRace,RC_All,2; bonus bMaxHPrate,2; } }
 27147:27148,{ bonus bDelayrate,-3; }
+27163:27165,{ bonus bDelayrate,-3; bonus bVit,2; bonus bInt,2; bonus bAgi,2; bonus bDex,2; }
+27166:27167,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bMagicAddSize,Size_All,10; }
 28315:28317,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28316:28318,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28321:28322,{ bonus bUseSPrate,-(getskilllv("HT_BEASTBANE") * 2); }

+ 64 - 20
db/re/item_db.txt

@@ -1392,9 +1392,9 @@
 2188,Svalinn_J,Svalinn,4,10,,500,,80,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ .@r = getrefine(); bonus bMaxHP,9+.@r/3; bonus2 bAddEle,Ele_Water,4+.@r/3*5; },{},{}
 2189,Mad_Bunny,Mad Bunny Shield,4,10,,100,,40,,1,0xFFFFFFFF,63,2,32,,30,1,6,{ bonus2 bSubEle,Ele_All,5; bonus bMdef,6; bonus bDex,1; },{},{}
 2190,Ancient_Shield_Of_Aeon,Ancient Shield Of Aeon,4,0,,200,,5,,0,0x000FDF80,63,2,32,,130,1,2,{ bonus2 bSubEle,Ele_Neutral,10; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubEle,Ele_Holy,10; bonus2 bSubEle,Ele_Ghost,10; bonus bMaxHP,500; bonus bMaxSP,50; if(getrefine()>=14) skill "MG_STONECURSE",5; },{},{}
-2195,Lian_Shield,Lian Shield,4,0,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5; },{},{}
-2196,White_Gold_Shield,White Gold Shield,4,0,,1800,,140,,1,0xFFFFFFFF,63,2,32,,,1,,{ autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */ },{},{}
-2198,Lapine_Shield,Lapine Shield,4,0,,1000,,25,,1,0xFFFFFFFF,63,2,32,,100,1,,{ bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; } },{},{}
+2195,Lian_Shield,Lian Shield,4,0,,1300,,50,,1,0xFFFFFFFF,63,2,32,,65,1,3,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5; },{},{}
+2196,White_Gold_Shield,White Gold Shield,4,0,,1800,,140,,1,0xFFFFFFFF,63,2,32,,,1,4,{ autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */ },{},{}
+2198,Lapine_Shield,Lapine Shield,4,0,,1000,,25,,1,0xFFFFFFFF,63,2,32,,100,1,3,{ bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; } },{},{}
 // GM Shield
 2199,Ahura_Mazda,Ahura Mazdah,4,1,,10,,10000,,0,0xFFFFFFFF,63,2,32,,1,1,1,{ bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback,0; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision,1; },{ sc_start4 SC_ENDURE,60000,10,0,0,1; },{ sc_end SC_ENDURE; }
 //===================================================================
@@ -2162,7 +2162,7 @@
 2976,Red_Lantern,Red Lantern,4,10,,200,,0,,1,0xFFFFFFFF,63,2,136,,100,0,,{ bonus bMaxSP,-300; skill "MG_SIGHT",1; },{},{ sc_end SC_SIGHT; }
 2977,Hurt_Mind,Hurt Mind,4,10,,100,,0,,1,0xFFFFFFFF,63,2,136,,110,0,,{ bonus bMaxSP,200; skill "DC_SCREAM",3; },{},{}
 2978,KindHeart,Kind Heart,4,10,,100,,0,,1,0xFFFFFFFF,63,2,136,,110,0,,{ bonus bMaxHP,500; bonus2 bHPRegenRate,300,10000; skill "DC_SCREAM",3; },{},{}
-2979,Strawberry_Decoration,Strawberry Decoration,4,0,,500,,1,,1,0xFFFFFFFF,63,2,136,,,0,,{ bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,10; /* Confirm: Frost Nova cast chance */ },{},{}
+2979,Strawberry_Decoration,Strawberry Decoration,4,20,,500,,1,,1,0xFFFFFFFE,63,2,136,,1,,,{ bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,10; /* Confirm: Frost Nova cast chance */ },{},{}
 2980,Evilspirit_Gloves,Evilspirit Gloves,4,10,,100,,,,1,0xFFFFFFFF,63,2,136,,110,1,,{ bonus bMaxHP,500; bonus bMaxSP,200; skill "PF_SPIDERWEB",1; },{},{}
 2981,RingOfHero,Warrior's Ring,4,10,,200,,0,,0,0xFFFFFFFF,63,2,136,,160,,,{},{},{}
 2983,Greed_Brooch,Greed Brooch,4,10,,100,,,,1,0xFFFFFFFF,63,2,136,,50,1,,{ bonus2 bHPLossRate,10,5000; },{},{}
@@ -3952,7 +3952,7 @@
 5822,Love_Chick_Hat,Love Chick Hat,4,10000,,100,,4,,0,0xFFFFFFFF,63,2,256,,0,1,500,{ bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Brute,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; },{},{}
 5823,Love_Arrow,Love Arrow,4,5000,,100,,1,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bDex,5; bonus bAgi,5; },{},{}
 5824,Fools_Day_Hat,Fools Day Hat,4,20,,300,,6,,0,0xFFFFFFFF,63,2,256,,30,1,265,{},{},{}
-5825,Badge_Of_Order_Grace,Badge Of Order Grace,4,0,,0,,1,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bMdef,1; },{},{}
+5825,Badge_Of_Order_Grace,Badge Of Order Grace,4,0,,0,,1,,0,0xFFFFFFFF,63,2,136,,0,0,0,{ bonus bMdef,1; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHP,1500; },{},{}
 5826,Valkyrie_Helmet,Valkyrie Helmet,4,0,,0,,10,,0,0xFFFFFFFF,63,2,256,,0,0,225,{ bonus bStr,2; bonus bInt,2; bonus bDex,2; bonus bAgi,2; bonus bMdef,5; },{},{}
 5827,Book_File_Hat,Book File Hat,4,20,,100,,1,,0,0xFFFFFFFF,63,2,256,,1,1,423,{},{},{}
 5828,Honor_Gold_Ring,Honor Gold Ring,4,0,,50,,0,,0,0xFFFFFFFF,63,2,136,,1,1,0,{ bonus bAllStats,1; bonus bMdef,5; },{},{}
@@ -4604,11 +4604,12 @@
 6605,Muspellium,Muspellium,3,0,,0,,,,,,,,,,,,,{},{},{}
 6606,Cute_Cart_Coupon,Cute Cart Remodel Coupon,3,0,,10,,,,,,,,,,,,,{},{},{}
 6607,Temporal_Crystal,Temporal Crystal,3,20,,10,,,,,,,,,,,,,{},{},{}
-6608,Coagulated_Spell,Coagulated Spell,3,0,,0,,,,,,,,,,,,,{},{},{}
-6609,Glast_Decayed_Nail,Glast Decayed Nail,3,82,,10,,,,,,,,,,,,,{},{},{}
-6610,Glast_Horrendous_Mouth,Glast Horrendous Mouth,3,390,,10,,,,,,,,,,,,,{},{},{}
-6612,Gold_Coin_Basket,Gold Coin Basket,3,20,,200,,,,,,,,,,,,,{},{},{}
-6613,Flashy_Brooch,Flashy Brooch,3,20,,10,,,,,,,,,,,,,{},{},{}
+6608,Coagulated_Spell,Coagulated Spell,3,20,,10,,,,,,,,,,,,,{},{},{}
+6609,Glast_Decayed_Nail,Glast Decayed Nail,3,2800,,10,,,,,,,,,,,,,{},{},{}
+6610,Glast_Horrendous_Mouth,Glast Horrendous Mouth,3,3200,,10,,,,,,,,,,,,,{},{},{}
+6611,Colorful_Key,Colorful Key,3,50000,,10,,,,,,,,,,,,,{},{},{}
+6612,Gold_Coin_Basket,Gold Coin Basket,3,300000,,200,,,,,,,,,,,,,{},{},{}
+6613,Colorful_Brooch,Colorful Brooch,3,100000,,10,,,,,,,,,,,,,{},{},{}
 6615,Siege_Guild_Coin,Siege Guild Coin,3,0,,10,,,,,,,,,,,,,{},{},{}
 6616,Lmtd_Manny_Card,Limited Manny Card,3,20,,10,,,,,,,,,,,,,{},{},{}
 6617,Lmtd_Sid_Card,Limited Sid Card,3,20,,10,,,,,,,,,,,,,{},{},{}
@@ -4885,6 +4886,8 @@
 6957,Lamb_Fleece,Lamb Fleece,3,10,,0,,,,,,,,,,,,,{},{},{}
 6958,Lamb_Horns,Lamb Horns,3,10,,0,,,,,,,,,,,,,{},{},{}
 6960,Key_Air_Fortress,Key Air Fortress,3,10,,10,,,,,,,,,,,,,{},{},{}
+6961,Huge_Metal_Scrap,Huge Metal Scrap,3,10,0,1000,,,,,,,,,,,,,{},{},{}
+6962,Old_Fuel,Old Fuel,3,10,0,100,,,,,,,,,,,,,{},{},{}
 //
 7001,Mould_Powder,Mould Powder,3,466,,10,,,,,,,,,,,,,{},{},{}
 7002,Ogre_Tooth,Ogre Tooth,3,658,,10,,,,,,,,,,,,,{},{},{}
@@ -6405,7 +6408,7 @@
 12260,Cool_Summer_Outfit,Cool Summer Outfit,2,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_SUMMER,600000,0; },{},{}
 12261,Secret_Medicine,Leap of Fantasy,2,0,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ getexp2(2000000,1000000); },{},{}
 12262,Inspector_Certificate_,Authoritative Badge,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_SPEEDUP0,540000,25; },{},{}
-12263,Comp_Battle_Manual,Field Manual,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_EXPBOOST,1800000,50; },{},{}
+12263,Comp_Battle_Manual,Field Manual,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_EXPBOOST,1800000,200; },{},{}
 12264,Comp_Bubble_Gum,Bubble Gum,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ITEMBOOST,1800000,200; },{},{}
 12265,Comp_Insurance,Life Insurrance,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_LIFEINSURANCE,1800000,0; },{},{}
 12266,Sesame_Pastry_,Sesame Pastry,2,2,,70,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_HITFOOD,180000,30; },{},{}
@@ -9513,7 +9516,7 @@
 18560,Fafnir_Mask,Fafnir Mask,4,20,,300,,2,,0,0xFFFFFFFF,63,2,1,,50,0,180,{ bonus bCritical,2; },{},{}
 18561,B_Feather_Beret,B Feather Beret,4,20,,300,,5,,1,0xFFFFFFFF,63,2,256,,40,1,731,{ bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; },{},{}
 18562,Bone_Hat,Bone Hat,4,20,,200,,3,,1,0xFFFFFFFF,63,2,256,,10,1,732,{ bonus bMdef,3; },{},{}
-18563,Heart_Wing_Hairband,Heart Wing Hairband,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,50,1,733,{ bonus bUseSPrate,-10; bonus bDelayrate,-5; .@r = getrefine()/3; if(.@r>0){ bonus bUseSPrate,.@r*3; bonus bDelayrate,.@r*3; } },{},{}
+18563,Heart_Wing_Hairband,Heart Wing Hairband,4,20,,300,,0,,1,0xFFFFFFFF,63,2,256,,50,1,733,{ .@r = getrefine()/3; bonus bUseSPrate,-(10+.@r*3); bonus bDelayrate,-(5+.@r*3); },{},{}
 18564,Love_Piece,Love Piece,4,20,,200,,0,,0,0xFFFFFFFF,63,2,1,,50,0,734,{ bonus bNoCastCancel,1; bonus bUseSPrate,15; },{},{}
 18565,Leprechaun_Hat,St Patrick's Hat,4,20,,300,,8,,1,0xFFFFFFFF,63,2,256,,40,1,735,{ bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>7){ bonus2 bAddMonsterDropItem,12135,50; } },{},{}
 18566,Nut_Donut_In_Mouth,Nut Donut In Mouth,4,20,,0,,1,,0,0xFFFFFFFF,63,2,1,,0,0,736,{ bonus bBaseAtk,5; bonus bMatk,5; },{},{}
@@ -9836,7 +9839,7 @@
 18984,Old_Camo_RabbitHood,Old Camouflage Rabbit Hood,4,10,,100,,10,,1,0x0000800,56,2,256,,170,1,1142,{ bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bLongAtkRate,.@r; bonus bFlee2,.@r/3; bonus2 bSkillAtk,"RA_CLUSTERBOMB",15*.@r/2; bonus2 bSkillAtk,"RA_WUGSTRIKE",10*.@r/2; },{},{}
 18985,Falconer_Flute,Falconer Flute,4,0,,100,,,,0,0x0000800,63,2,1,,75,0,1143,{ set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus3 bAutoSpell,"HT_BLITZBEAT",.@i,((.@bblvl / 3) * 10) + (.@luk * 10) + (((.@bblvl / 5) * .@bblvl) * 2); },{},{}
 18987,RWC13_Jormungandr_Hat,RWC13 Jormungandr Hat,4,20,,2500,,7,,1,0xFFFFFFFF,63,2,256,,1,0,1149,{ bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150; },{ sc_end SC_SpeedUp0; },{}
-18997,Riot_Chip,Reckless Chip,4,10,,300,,,,1,0xFFFFFFFF,63,2,256,,100,1,1201,{ bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50; },{},{}
+18997,Riot_Chip,Runaway Chip,4,10,,300,,,,1,0xFFFFFFFF,63,2,256,,100,1,1201,{ bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50; },{},{}
 19019,Elemental_Crown,Elemental Crown,4,0,,500,,10,,1,0xFFFFFFFF,63,2,256,,,1,1219,{ .@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4; },{},{}
 19020,Survive_Circlet,Survive Circlet,4,0,,500,,10,,0,0xFFFFFFFF,63,2,256,,,1,1220,{ .@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4; },{},{}
 19021,Gigant_Helm,Gigant Helm,4,0,,500,,10,,0,0xFFFFFFFF,63,2,256,,,1,1221,{ bonus bStr,3+((BaseLevel > 130) ? getrefine() : 0); bonus2 bAddClass,Class_All,4; },{},{}
@@ -9898,6 +9901,7 @@
 19153,Ghostring_Balloon,Ghostring Balloon,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1,,1,0,1436,{ bonus3 bAutoSpell,"MG_SOULSTRIKE",5,10; bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5; },{},{}
 19154,Arch_Angelring_Balloon,Arch Angelring Balloon,4,20,,10,,0,,0,0xFFFFFFFF,63,2,1,,1,0,1437,{ skill "ALL_RESURRECTION",1; bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5; },{},{}
 19155,Demons_Eyes,Demon's Eyes,4,20,,10,,0,,0,0xFFFFFFFF,63,2,512,,60,0,1490,{ bonus2 bSubRace,RC_Player,3; bonus bFlee2,2; },{},{}
+19156,Lunar_Rainbow,Lunar Rainbow,4,20,,200,,10,,1,0xFFFFFFFF,63,2,256,,80,1,704,{ bonus bAgi,3; bonus bMdef,10; bonus bMatk,(10*getrefine()); },{},{}
 19157,Drooping_Rebellion_,Drooping Rebellion,4,20,,200,,1,,1,0xFFFFFFFF,63,2,256,,1,1,1444,{ bonus bAllStats,1; bonus bUseSPrate,-10; .@r = getrefine(); if (.@r >= 9) { bonus bAspd,1; } if (.@r >= 12) { bonus bSpeedRate,25; } bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5; },{},{}
 19158,C_GeminiS58_Eyes_Blue,Costume GeminiS58 Eyes Blue,4,0,,0,,0,,0,0xFFFFFFFF,63,2,2048,,0,0,1456,{},{},{}
 19159,Barrel_Helm,Barrel Helm,4,20,,420,,59,,1,0xFFFFFFFF,63,2,769,,60,1,1498,{ bonus bVit,5; bonus bHPrecovRate,-10; .@r = getrefine(); if (.@r >= 7) { bonus bDef,100; skill "CR_AUTOGUARD",1; } if (.@r >= 8) { bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(BaseJob==Job_SuperNovice) { skill "CR_AUTOGUARD",5; } } },{},{}
@@ -10878,6 +10882,18 @@
 22101,Angel_Poring_Boots,Angel Poring Boots,4,10,,300,,15,,1,0xFFFFFFFF,63,2,64,,1,1,,{ bonus bAllStats,1; skill "AL_HEAL",1; },{},{}
 22103,Excelion_Leg,Excelion Leg,4,0,,500,,13,,0,0xFFFFFFFF,63,2,64,,100,1,,{ .@r = getrefine(); bonus bMaxHP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; bonus bMaxSP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; },{},{}
 22106,Giant_Boots,Giant Boots,4,0,,500,,13,,1,0xFFFFFFFF,63,2,64,,1,1,,{ bonus2 bSubRace,RC_All,1; bonus bMaxHPrate,2; bonus bMaxSPrate,2; .@r = getrefine(); if (.@r > 4) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } if (.@r > 6) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } },{},{}
+22107,Modified_Str_Boots,Modified Str Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{}
+22108,Modified_Int_Boots,Modified Int Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{}
+22109,Modified_Agi_Boots,Modified Agi Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1; },{},{}
+22110,Modified_Vit_Boots,Modified Vit Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{}
+22111,Modified_Dex_Boots,Modified Dex Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{}
+22112,Modified_Luk_Boots,Modified Luk Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30; },{},{}
+22113,Modified_Str_Boots_,Modified Str Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{}
+22114,Modified_Int_Boots_,Modified Int Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{}
+22115,Modified_Agi_Boots_,Modified Agi Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1; },{},{}
+22116,Modified_Vit_Boots_,Modified Vit Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{}
+22117,Modified_Dex_Boots_,Modified Dex Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{}
+22118,Modified_Luk_Boots_,Modified Luk Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30; },{},{}
 22122,Para_Team_Boots100,Awakened Eden Group Boots I,4,0,,0,,22,,0,0xFFFFFFFF,63,2,64,,100,1,,{ bonus bAllStats,1; bonus bHPrecovRate,30; bonus bSPrecovRate,14; },{},{}
 22123,Para_Team_Boots115,Awakened Eden Group Boots II,4,0,,0,,25,,0,0xFFFFFFFF,63,2,64,,115,1,,{ bonus bAllStats,1; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}
 22124,Para_Team_Boots130,Awakened Eden Group Boots III,4,0,,0,,27,,0,0xFFFFFFFF,63,2,64,,130,1,,{ bonus bAllStats,2; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}
@@ -10991,12 +11007,12 @@
 22679,Chest_Of_Death,Death Bin,18,10,,0,,,,0,0xFFFFFFFF,63,2,,,170,,,{ /*TODO*/ },{},{}
 22685,Solo_Christmas_Gift,Single Union Christmas Gift,2,0,,0,,,,,0xFFFFFFFF,63,2,,,0,,,{ getgroupitem(IG_Solo_Christmas_Gift); },{},{}
 22686,Solo_Cookie,Single Cookie,0,0,,50,,,,,0xFFFFFFFF,63,2,,,0,,,{ percentheal 5,5; },{},{}
-22687,Pieces_Of_Sentiment,Fragments Vicious Mind,3,10,,1,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO*/ },{},{}
-22691,Piece_Of_Record1,Record Fragment,3,10,,0,,,,,,,,,,,,,{},{},{}
-22692,Piece_Of_Record2,Record Fragment,3,10,,0,,,,,,,,,,,,,{},{},{}
-22693,Piece_Of_Record3,Record Fragment,3,10,,0,,,,,,,,,,,,,{},{},{}
-22694,Piece_Of_Record4,Record Fragment,3,10,,0,,,,,,,,,,,,,{},{},{}
-22695,Piece_Of_Record5,Record Fragment,3,10,,0,,,,,,,,,,,,,{},{},{}
+22687,Fragments_Vicious_Mind,Fragments Vicious Mind,3,10,,1,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO*/ },{},{}
+22691,Record_Fragment1,Record Fragment,0,,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "un_bk_q",98,143; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 1; } },{},{}
+22692,Record_Fragment2,Record Fragment,0,,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "un_bk_q",45,276; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 2; } },{},{}
+22693,Record_Fragment3,Record Fragment,0,,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "un_bk_q",217,346; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 3; } },{},{}
+22694,Record_Fragment4,Record Fragment,0,,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "un_bk_q",273,235; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 4; } },{},{}
+22695,Record_Fragment5,Record Fragment,0,,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ warp "un_bk_q",275,290; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 5; } },{},{}
 22699,Test_Reagent,Test Reagent,3,10,,0,,,,,,,,,,,,,{},{},{}
 22700,Jumping_Support_Box,Jumping Support Box,18,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ /*TODO: getitem 12529,1; getitem 12323,200; getitem 12324,50; and 5 boxes that containing quivers + oridecons*/ },{},{}
 22702,STR_Soul_Potion,STR Reduction Potion,11,10,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ callfunc "F_CashReduceStat",bStr,-1,22702; },{},{}
@@ -11436,6 +11452,34 @@
 27160,Vavayaga_Card,Vavayaga Card,6,20,,10,,,,,,,,64,,,,,{ bonus bFlee,getrefine()*2; },{},{}
 27161,Mavka_Card,Mavka Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bMagicAtkEle,Ele_Fire,20; bonus2 bMagicAtkEle,Ele_Earth,20; },{},{}
 27162,Gopinich_Card,Gopinich Card,6,20,,10,,,,,,,,769,,,,,{ bonus bSPDrainValue,5; bonus bUseSPrate,50; },{},{}
+27163,Faceworm_Card,Faceworm Card,6,20,,10,,,,,,,,136,,,,,{ bonus bAgi,-1; bonus bDex,-1; bonus bAspdRate,3; },{},{}
+27164,Faceworm_Queen_Card,Faceworm Queen Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMaxHPrate,-10; .@r = getrefine(); bonus bCritical,15 + .@r; bonus bCritAtkRate,.@r; },{},{}
+27165,Dark_Faceworm_Card,Dark Faceworm Card,6,20,,10,,,,,,,,136,,,,,{ bonus bVit,-1; bonus bInt,-1; bonus bDelayrate,-3; },{},{}
+27166,Faceworm_Egg_Card,Faceworm Egg Card,6,20,,10,,,,,,,,64,,,,,{ .@r = getrefine(); .@sub = 2+(.@r >= 9 ? 3 : .@r >= 7 ? 1 : 0); bonus bNearAtkDef,.@sub; bonus bMagicAtkDef,.@sub; },{},{}
+27167,Faceworm_Larva_Card,Faceworm Larva Card,6,20,,10,,,,,,,,4,,,,,{ bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAddSize,Size_All,getrefine()*3; },{},{}
+27168,Irene_High_Elder_Card,Irene High Elder Card,6,20,,10,,,,,,,,4,,,,,{ bonus bHit,10 + 5 * (getrefine()/3); },{},{}
+27169,Payon_Soldier_Card,Payon Soldier Card,6,20,,10,,,,,,,,2,,,,,{ .@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } } bonus bAtk,.@atk; bonus bMatk,.@atk; },{},{}
+27181,Airship_Raid_Card,Airship Raid Card,6,20,,10,,,,,,,,2,,,,,{ .@r = getrefine(); bonus bLongAtkRate,1 + .@r/2; bonus bCritical,.@r/2; },{},{}
+27182,Captain_Felock_Card,Captain Felock Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtk,30; .@r = getrefine(); bonus2 bSkillAtk,"RL_AM_BLAST",.@r >= 10 ? 60 : 30; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",.@r >= 10 ? 60 : 30; },{},{}
+27183,Gigantes_Card,Gigantes Card,6,20,,10,,,,,,,,128,,,,,{ bonus bAtk,20; if(readparam(bStr) >= 120) { bonus bAtk,20; bonus bAspdRate,-3; } },{},{}
+27184,Knight_Sakray_Card,Knight Sakray Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtk,20; bonus2 bAddRace,RC_Demon,30; bonus2 bAddRace,RC_Undead,30; },{},{}
+27249,Arhi_Card,Arhi Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAtk,15; bonus bMatk,15; bonus bMaxHP,500; bonus bHit,15; bonus bFlee,15; },{},{}
+27250,Dio_Anemos_Card,Dio Anemos Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Neutral,5; bonus2 bMagicAtkEle,Ele_Earth,5; },{},{}
+27251,Geffen_Gang_Member_Card,Geffen Gang Member Card,6,20,,10,,,,,,,,64,,,,,{ bonus bCritAtkRate,3; bonus bAspdRate,5; },{},{}
+27252,Geffen_Bully_Card,Geffen Bully Card,6,20,,10,,,,,,,,64,,,,,{ bonus bCritAtkRate,5; bonus bAspdRate,3; },{},{}
+27253,Geffen_Shoplifter_Card,Geffen Shoplifter Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Fire,5; bonus2 bMagicAtkEle,Ele_Holy,5; },{},{}
+27254,Faymont_Card,Faymont Card,6,20,,10,,,,,,,,64,,,,,{ bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"CH_SOULCOLLECT",1,10; },{},{}
+27255,Ordre_Card,Ordre Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Wind,5; bonus2 bMagicAtkEle,Ele_Water,5; },{},{}
+27256,Blut_Hase_Card,Blut Hase Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAtkRate,3; bonus bLongAtkRate,5; },{},{}
+27257,Kuro_Akuma_Card,Kuro Akuma Card,6,20,,10,,,,,,,,64,,,,,{ bonus bCastrate,3; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NJ_HUUJIN",5; bonus2 bSkillAtk,"NJ_HYOUSENSOU",5; bonus2 bSkillAtk,"NJ_KOUENKA",5; },{},{}
+27258,Ifodes_Card,Ifodes Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAtkRate,3; bonus bAspdRate,5; },{},{}
+27259,Licheniyes_Card,Licheniyes Card,6,20,,10,,,,,,,,64,,,,,{ bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Holy,5; bonus bHealPower,5; },{},{}
+27260,Odoric_Card,Odoric Card,6,20,,10,,,,,,,,64,,,,,{ bonus bAspdRate,3; bonus bLongAtkRate,5; },{},{}
+27261,Ju_Card,Ju Card,6,20,,10,,,,,,,,2,,,,,{ .@rate = 10 + (getiteminfo(getequipid(EQI_HAND_R),11) == W_BOOK ? 20 : 0) + (getrefine() >= 14 ? 20 : 0); bonus2 bSkillAtk,"MG_FIREBOLT",.@rate; bonus2 bSkillAtk,"MG_COLDBOLT",.@rate; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@rate; },{},{}
+27262,Dwigh_Card,Dwigh Card,6,20,,10,,,,,,,,136,,,,,{ bonus2 bMagicAtkEle,Ele_Dark,20; bonus2 bMagicAtkEle,Ele_Neutral,20; },{},{}
+27263,Fay_Kanavian_Card,Fay Kanavian Card,6,20,,10,,,,,,,,64,,,,,{ autobonus "{ bonus bDef,300; }",100,10000,BF_WEAPON|BF_SHORT,"{ active_transform 1040,10000; }"; },{},{}
+27264,Evil_Shadow_Card,Evil Shadow Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Dark,30; bonus2 bSubEle,Ele_Undead,30; bonus2 bSubEle,Ele_Holy,-30; bonus2 bSubEle,Ele_Fire,-30; },{},{}
+27265,Evil_Fanatics_Card,Evil Fanatics Card,6,20,,10,,,,,,,,2,,,,,{ bonus2 bAddEle,Ele_Dark,30; bonus2 bAddEle,Ele_Undead,30; bonus2 bMagicAddEle,Ele_Dark,30; bonus2 bMagicAddEle,Ele_Undead,30; bonus2 bAddEle,Ele_Holy,-30; bonus2 bAddEle,Ele_Fire,-30; bonus2 bMagicAddEle,Ele_Holy,-30; bonus2 bMagicAddEle,Ele_Fire,-30; },{},{}
 //===================================================================
 // New Katars
 //===================================================================
@@ -11563,7 +11607,7 @@
 28700,Ru_Gold_Dagger,Ru Gold Dagger,5,0,,1000,160,,1,2,0x00020000,56,2,2,3,120,1,1,{ bonus bStr,8; bonus bInt,8; },{},{}
 28701,Ru_Gold_Knife,Ru Gold Knife,5,0,,500,160,,1,2,0x00010000,56,2,2,3,120,1,1,{ bonus bVit,8; bonus bInt,8; },{},{}
 28702,Ru_Gold_Ashura,Ru Gold Ashura,5,0,,1000,150:150,,1,2,0x2000000,63,2,2,3,120,1,1,{},{},{}
-28703,Infinity_Dagger,Infinity Dagger,5,10,,500,125,,1,1,0x028F5EEF,56,2,2,4,100,1,1,{},{},{}
+28703,Infinity_Dagger,Infinity Dagger,5,10,,500,125:100,,1,1,0x028F5EEF,56,2,2,4,100,1,1,{},{},{}
 28705,Crimson_Dagger,Crimson Dagger,5,20,,550,55,,1,2,0x028F5EEF,63,2,2,3,70,1,1,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225); },{},{}
 28706,Dagger_of_Vicious_Mind,Dagger of Vicious Mind,5,20,,1050,105:50,,1,1,0x028F5EEF,63,2,2,4,160,1,1,{ bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2; },{},{}
 //===================================================================

+ 2 - 0
db/re/item_trade.txt

@@ -829,6 +829,8 @@
 6752,467,100	// Charleston_Parts
 6753,507,100	// Token_Of_Destruction
 6754,507,100	// Collected_Medicinal_Herbs
+6756,507,100	// Cohesive_Energy
+6757,507,100	// The_Memory_Recorder
 6766,499,100	// Ice_World_Ticket
 6767,499,100	// Summer_Fes_Coin
 6768,499,100	// Red_Beans_Of_Ice

+ 69 - 55
db/re/mob_db.txt

@@ -528,7 +528,7 @@
 // Event MVP
 1502,PORING_V,Pori Pori,Bring it on!,99,95000000,1,78525,25106,1,5000,10000,0,10,100,100,65,100,255,255,10,12,1,3,25,0x6283885,160,1672,672,480,43625,10020,1000,4005,100,2286,200,5035,10000,2344,2500,2346,2500,2350,2500,2348,2500,2655,500,7126,10000,0,0,0,0,2110,4500
 
-// Nifflheim (7.0)
+// Niflheim (7.0)
 1503,GIBBET,Gibbet,Gibbet,105,12999,1,1944,1458,1,536,621,116,45,103,56,62,55,61,37,10,12,2,6,27,0x2003885,180,917,1584,576,0,0,0,0,0,0,0,7212,1800,7218,5335,7222,4074,724,300,716,100,604,10,7939,100,0,0,0,0,4278,1
 1504,DULLAHAN,Dullahan,Dullahan,108,18546,1,2509,1977,2,666,741,111,38,121,29,51,43,87,3,10,12,1,1,49,0x3885,155,847,1152,480,0,0,0,0,0,0,0,7209,3200,7210,4850,2614,1,2505,13,2506,1,15039,10,0,0,0,0,0,0,4176,1
 1505,LOLI_RURI,Loli Ruri,Loli Ruri,109,15280,1,2790,2093,2,787,1017,53,44,111,50,47,79,79,79,10,12,2,6,87,0x2003885,125,747,1632,576,0,0,0,0,0,0,0,7206,800,7219,3000,7214,5044,985,100,7019,1,2718,5,6246,300,15038,10,0,0,4191,1
@@ -1616,20 +1616,20 @@
 2462,TREASURE_BOX_TE_10,Treasure Chest,Treasure Chest,99,0,1,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,0,0,0,20,0x1000000,0,0,0,0,0,0,0,0,0,0,0,6600,40,658,500,7444,10000,7444,10000,12399,5000,0,0,616,400,12399,500,0,0,0,0
 //2463,E_BOMBPORING
 
-// Old Glast Heim (currently placeholders)
-2464,MG_ZOMBIE,Zombie,Zombie,17,9340,1,117,87,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2465,MG_WRAITH,Wraith,Wraith,77,23168,1,1190,1191,1,335,396,80,40,62,26,30,55,76,5,10,12,2,1,89,0x3695,300,1816,576,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2466,MG_GHOUL,Ghoul,Ghoul,61,12614,1,583,656,1,216,245,78,5,56,12,19,11,27,10,10,12,1,1,49,0x3885,250,2456,912,504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2467,MG_ARCLOUSE,Arclouse,Arclouze,107,14020,1,1844,2607,1,269,309,101,36,60,73,45,35,140,15,10,12,1,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2468,MG_RAYDRIC,Raydric,Raydric,115,25408,1,20770,2076,1,572,668,89,15,129,87,55,32,76,27,10,12,2,7,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2469,MG_RAYDRIC_ARCHER,Raydric Archer,Raydric Archer,82,30370,1,1049,1332,9,377,395,63,40,53,24,40,15,112,30,10,12,1,6,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2470,MG_KNIGHT_OF_ABYSS,Knight of Abyss,Abysmal Knight,122,332970,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2471,MG_KHALITZBURG,Khalitzburg,Khalitzburg,118,109860,1,2862,2147,1,737,833,125,10,121,48,40,31,89,32,10,12,2,1,29,0x3695,350,528,1000,396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2472,MG_BLOODY_KNIGHT,Bloody Knight,Bloody Knight,116,285000,1,7348,6511,3,942,1065,122,50,132,59,70,57,98,45,10,12,2,0,87,0x3695,250,828,528,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2473,MG_M_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2474,MG_F_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2475,MG_CORRUPTION_ROOT,Root of Corruption,Root of Corruption,136,3190000,1,240120,187920,3,710,1762,213,123,86,89,120,131,101,92,14,12,2,7,62,0x6280084,170,854,2016,480,120060,607,5500,608,3500,732,5500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4603,1
-2476,MG_AMDARAIS,Amdarias,Amdarias,143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x6283695,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4601,1
+// Old Glast Heim
+2464,MG_ZOMBIE,Corrupted Steward,Corrupted Steward,130,135600,1,13332,15998,1,2364,2808,15,15,44,22,77,25,88,22,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,938,1000,727,500,0,0,0,0,0,0,0,0,0,0
+2465,MG_WRAITH,Corrupted Monk,Corrupted Monk,133,100168,1,13998,16796,1,999,3786,80,200,16,26,30,115,79,5,10,12,2,1,89,0x3695,350,1816,576,240,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,2206,100,731,100,747,500,0,0,0,0,0,0,0,0
+2466,MG_GHOUL,Grand Chamberlain in pain,Grand Chamberlain in pain,132,208100,1,14222,17066,1,2965,3631,30,30,88,44,88,21,95,44,10,12,1,1,49,0x3885,300,2456,912,504,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,756,100,2609,100,7751,1000,0,0,0,0,0,0,0,0
+2467,MG_ARCLOUSE,Maggot,Maggot,133,80811,1,22,26,1,1246,2503,121,36,60,103,45,35,172,15,10,12,0,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,1096,3000,997,100,0,0,0,0,0,0,0,0,0,0
+2468,MG_RAYDRIC,Corrupted Palace Guard,Corrupted Palace Guard,135,184080,1,16306,6944,2,3167,3305,89,15,159,87,66,33,106,27,10,12,1,1,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2316,200,0,0,0,0,0,0,0,0
+2469,MG_RAYDRIC_ARCHER,Wandering Archer,Wandering Archer,136,144370,1,14248,9378,14,3891,4058,63,40,53,24,40,15,156,30,10,12,1,1,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2330,200,0,0,0,0,0,0,0,0
+2470,MG_KNIGHT_OF_ABYSS,Corrupted Knight of Abyss,Corrupted Abysmal Knight,142,225789,1,18584,16576,2,3200,3322,102,50,121,55,99,70,126,37,10,12,2,1,87,0x6203695,300,1000,500,1000,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,1064,5000,1004,10,2341,200,0,0,0,0,0,0,0,0
+2471,MG_KHALITZBURG,Suffering Khalitzburg,Suffering Khalitzburg,143,236851,1,17542,14662,2,2800,2900,125,10,121,142,55,81,105,32,10,12,2,1,29,0x6203695,350,0,1000,396,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,985,50,1004,10,1110,300,0,0,0,0,0,0,0,0
+2472,MG_BLOODY_KNIGHT,Bloody Knight,Bloody Knight,143,246751,1,20448,21882,2,1881,5081,122,300,132,55,89,151,137,45,10,12,2,1,87,0x6203695,250,828,528,192,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,7054,5000,1160,100,1157,100,0,0,0,0,0,0,0,0
+2473,MG_M_UNDEAD_KNIGHT,1st Commander of Destruction,1st Commander of Destruction,145,950033,1,160018,135184,2,3321,4330,80,150,165,82,110,122,154,52,10,12,1,1,49,0x6203695,130,350,864,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1191,10,1163,100,1463,200,0,0,0,0,0,0,4605,1
+2474,MG_F_UNDEAD_KNIGHT,2nd Commander of Destruction,2nd Commander of Destruction,145,848011,1,159672,120398,2,3090,4578,80,180,155,88,110,135,154,59,10,12,1,1,49,0x6203695,120,350,768,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1163,100,1145,50,0,0,0,0,0,0,0,0,4606,1
+2475,MG_CORRUPTION_ROOT,Corrupted Soul,Corrupted Soul,150,1820000,1,2199906,2008478,3,3887,7774,333,333,201,20,90,201,201,20,10,12,2,6,62,0x6280084,2000,576,672,480,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,2854,1000,7566,10000,0,0,0,0,0,0,4603,1
+2476,MG_AMDARAIS,Amdarias,Amdarias,150,4290000,1,2291324,2197024,3,5290,9190,30,40,255,39,90,169,166,20,10,12,2,1,89,0x6283695,120,312,1200,432,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,1186,1000,1004,10000,0,0,0,0,0,0,4601,1
 
 2477,NG_WANDER_MAN,Nightmare Wander Man,Nightmare Wander Man,151,130682,1,19814,17228,2,2827,3045,129,16,208,151,76,39,231,50,12,12,1,6,24,0x2003695,100,672,500,192,0,0,0,0,0,0,0,7005,4850,616,2,13015,5,2270,5,21003,1,984,110,1164,10,0,0,0,0,0,0
 2478,NG_RIDEWORD,Nightmare Rideword,Nightmare Rideword,146,103220,1,10500,15840,1,2320,2486,140,59,131,195,58,66,263,5,12,12,0,0,60,0x3695,150,864,500,192,0,0,0,0,0,0,0,1097,4850,1568,5,1569,5,1570,5,1571,5,7015,150,18752,1,0,0,0,0,0,0
@@ -1682,9 +1682,9 @@
 //2525,WATERMELON_16
 //2526,E_BANDIT
 //2527,ME_ANOPHELES
-2528,FACEWORM,Faceworm,Faceworm,140,482427,1,38800,3960,2,1818,727,50,30,100,50,100,100,100,50,10,12,2,4,25,0x2000085,200,384,720,480,0,0,0,0,0,0,0,971,100,22507,100,0,0,0,0,0,0,0,0,13089,10,7326,1000,972,100,0,0
-2529,FACEWORM_QUEEN,Faceworm Queen,Faceworm Queen,155,50000000,1,200000,200000,2,4024,1609,100,60,200,100,200,200,200,100,10,12,2,4,85,0x6283695,200,768,540,480,90909,0,0,617,2500,12246,2500,607,1000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0
-2530,FACEWORM_DARK,Faceworm Dark,Dark Faceworm,144,5000000,1,100000,80000,2,2012,805,100,30,150,100,150,150,150,100,10,12,2,4,45,0x6283695,180,576,480,480,0,0,0,0,0,0,0,13089,10,22507,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2528,FACEWORM,Faceworm,Faceworm,140,482427,1,38800,3960,2,1818,727,50,30,100,50,100,100,100,50,10,12,2,4,25,0x2000085,200,384,720,480,0,0,0,0,0,0,0,971,100,22507,100,0,0,0,0,0,0,0,0,13089,10,7326,1000,972,100,27163,1
+2529,FACEWORM_QUEEN,Faceworm Queen,Faceworm Queen,155,50000000,1,200000,200000,2,4024,1609,100,60,200,100,200,200,200,100,10,12,2,4,85,0x6283695,200,768,540,480,90909,0,0,617,2500,12246,2500,607,1000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,27164,1
+2530,FACEWORM_DARK,Faceworm Dark,Dark Faceworm,144,5000000,1,100000,80000,2,2012,805,100,30,150,100,150,150,150,100,10,12,2,4,45,0x6283695,180,576,480,480,0,0,0,0,0,0,0,13089,10,22507,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27165,1
 2531,VENOM_BUG,Venom Bug,Venom Bug,140,10000,1,0,0,1,340,0,200,100,200,200,200,200,200,200,12,12,0,4,25,0x2200084,2000,384,0,480,0,0,0,0,0,0,0,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7326,1000,0,0
 2532,FACEWORM_QUEEN_R,Faceworm Queen (Red),Red Faceworm Queen,155,50000000,1,200000,200000,2,12000,4800,400,400,500,100,200,200,200,100,10,12,2,4,23,0x6283695,200,768,540,480,90909,12246,2500,617,2500,0,0,994,5000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0
 2533,FACEWORM_QUEEN_G,Faceworm Queen (Green),Green Faceworm Queen,155,50000000,1,200000,200000,2,5000,2000,500,60,200,100,400,200,200,100,10,12,2,4,22,0x6283695,200,768,540,480,90909,617,2500,12246,2500,0,0,6649,5000,13090,100,997,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -1694,30 +1694,30 @@
 2537,HIDDEN_MOB4,Hidden Mob 4,Monster 4,151,10000,200,0,0,1,2000,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x0370084,2000,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //2538,E_KING_PORING
 2539,HIDDEN_MOB5,Hidden Mob 5,Monster 5,151,10000,200,0,0,9,500,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x2370084,2000,0,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2540,FACEWORM_EGG,Faceworm Egg,Faceworm Egg,140,10,1,10,12,1,150,150,10,10,10,10,10,10,10,10,10,12,1,4,25,0x2370000,150,24,0,0,0,0,0,0,0,0,0,7032,5000,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2541,FACEWORM_LARVA,Faceworm Larva,Faceworm Larva,145,260380,1,10,12,1,1286,1851,10,10,10,50,50,50,180,50,10,12,1,4,45,0x2000085,150,1000,792,336,0,0,0,0,0,0,0,912,225,0,0,0,0,0,0,0,0,0,0,1096,1750,943,400,938,1500,0,0
-2542,IRENE_ELDER,Irene Elder,Doyen Irene,101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,0,0
-2543,PAYONSOLDIER,1st Payon Soldier,1st Payon Soldier,101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,0,0
-2544,PAYONSOLDIER2,2nd Payon Soldier,2nd Payon Soldier,101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,0,0
+2540,FACEWORM_EGG,Faceworm Egg,Faceworm Egg,140,10,1,10,12,1,150,150,10,10,10,10,10,10,10,10,10,12,1,4,25,0x2370000,150,24,0,0,0,0,0,0,0,0,0,7032,5000,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27166,1
+2541,FACEWORM_LARVA,Faceworm Larva,Faceworm Larva,145,260380,1,10,12,1,1286,1851,10,10,10,50,50,50,180,50,10,12,1,4,45,0x2000085,150,1000,792,336,0,0,0,0,0,0,0,912,225,0,0,0,0,0,0,0,0,0,0,1096,1750,943,400,938,1500,27167,1
+2542,IRENE_ELDER,Irene Elder,Doyen Irene,101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,27168,1
+2543,PAYONSOLDIER,1st Payon Soldier,1st Payon Soldier,101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,27169,1
+2544,PAYONSOLDIER2,2nd Payon Soldier,2nd Payon Soldier,101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,27169,1
 2545,GUARDDOG,1st Guard Dog,1st Guard Dog,101,20099,1,944,2658,1,546,598,66,36,20,46,25,35,64,30,10,12,1,2,22,0x3091,150,73,348,288,0,0,0,0,0,0,0,12043,600,12068,600,7477,1,12048,600,12053,600,12058,600,12063,600,12125,333,0,0,0,0
 2546,GUARDDOG2,2nd Guard Dog,2nd Guard Dog,101,21099,1,1014,2673,1,573,229,66,36,20,46,25,35,64,30,10,12,1,2,23,0x3095,120,73,348,288,0,0,0,0,0,0,0,12045,466,7478,1,12050,466,12055,466,12060,466,12065,466,12070,466,12126,200,0,0,0,0
 //2547,MER_GARM_BABY
 //2548,MER_HILLSRION
-2549,GEFFEN_MAGE_1,Arhi,Arhi,90,100000,1,8900,4550,1,329,424,64,38,50,50,50,50,130,50,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2550,GEFFEN_MAGE_2,Dio Anemos,Dio Anemos,95,200000,1,9440,4430,1,478,649,129,18,40,40,50,80,130,60,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,1095,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2551,GEFFEN_MAGE_3_1,Geffen Shoplifter,Geffen Shoplifter,100,300000,1,9780,3665,1,478,632,93,36,70,70,40,40,140,60,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2552,GEFFEN_MAGE_3_2,Geffen Bully,Geffen Bully,100,300000,1,9780,3665,1,478,632,93,36,70,50,70,40,140,40,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2553,GEFFEN_MAGE_3_3,Geffen Gang Member,Geffen Gang Member,100,300000,1,9780,3665,1,468,622,93,36,60,80,30,30,140,70,10,12,1,7,20,0x85,200,950,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2554,GEFFEN_MAGE_4,Faymont,Faymont,105,400000,1,11660,4370,1,477,633,114,21,60,60,60,60,140,60,10,12,1,7,20,0x85,200,672,648,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2555,GEFFEN_MAGE_5,Ordre,Ordre,110,600000,1,15610,4861,1,654,906,107,21,40,70,40,100,150,60,10,12,1,7,20,0x85,200,768,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2556,GEFFEN_MAGE_6,Blut Hase,Blut Hase,120,1000000,1,20560,10010,1,480,601,66,47,120,120,120,50,150,60,10,12,1,7,48,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2557,GEFFEN_MAGE_7,Kuro Akuma,Kuro Akuma,130,1200000,1,26100,12030,1,761,1026,135,10,100,100,100,100,145,100,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2558,GEFFEN_MAGE_8,Ifodes,Ifodes,140,1400000,1,46150,18900,1,676,869,120,60,150,100,100,50,170,100,10,12,1,7,20,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2559,GEFFEN_MAGE_9,Licheniyes,Licheniyes,145,1600000,1,52060,24105,1,763,1048,140,57,50,100,50,200,220,75,10,12,1,7,20,0x85,200,864,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2560,GEFFEN_MAGE_10,Odoric,Odoric,150,2000000,1,60027,40237,1,950,1250,165,62,200,150,50,50,170,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2561,GEFFEN_MAGE_11,Ju,Ju,155,5000000,1,75335,52130,1,1045,1465,170,65,50,100,100,200,220,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2562,GEFFEN_MAGE_12,Dwigh,Dwigh,160,7000000,1,151317,123000,1,1410,2010,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2563,FEI_KANABIAN,Fei Kanabian,Fay Kanavian,160,8000000,1,157975,110571,1,1710,2460,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,720,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+2549,GEFFEN_MAGE_1,Arhi,Arhi,90,100000,1,8900,4550,1,329,424,64,38,50,50,50,50,130,50,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27249,1
+2550,GEFFEN_MAGE_2,Dio Anemos,Dio Anemos,95,200000,1,9440,4430,1,478,649,129,18,40,40,50,80,130,60,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,1095,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27250,1
+2551,GEFFEN_MAGE_3_1,Geffen Shoplifter,Geffen Shoplifter,100,300000,1,9780,3665,1,478,632,93,36,70,70,40,40,140,60,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27253,1
+2552,GEFFEN_MAGE_3_2,Geffen Bully,Geffen Bully,100,300000,1,9780,3665,1,478,632,93,36,70,50,70,40,140,40,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27252,1
+2553,GEFFEN_MAGE_3_3,Geffen Gang Member,Geffen Gang Member,100,300000,1,9780,3665,1,468,622,93,36,60,80,30,30,140,70,10,12,1,7,20,0x85,200,950,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27251,1
+2554,GEFFEN_MAGE_4,Faymont,Faymont,105,400000,1,11660,4370,1,477,633,114,21,60,60,60,60,140,60,10,12,1,7,20,0x85,200,672,648,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27254,1
+2555,GEFFEN_MAGE_5,Ordre,Ordre,110,600000,1,15610,4861,1,654,906,107,21,40,70,40,100,150,60,10,12,1,7,20,0x85,200,768,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27255,1
+2556,GEFFEN_MAGE_6,Blut Hase,Blut Hase,120,1000000,1,20560,10010,1,480,601,66,47,120,120,120,50,150,60,10,12,1,7,48,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27256,1
+2557,GEFFEN_MAGE_7,Kuro Akuma,Kuro Akuma,130,1200000,1,26100,12030,1,761,1026,135,10,100,100,100,100,145,100,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27257,1
+2558,GEFFEN_MAGE_8,Ifodes,Ifodes,140,1400000,1,46150,18900,1,676,869,120,60,150,100,100,50,170,100,10,12,1,7,20,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27258,1
+2559,GEFFEN_MAGE_9,Licheniyes,Licheniyes,145,1600000,1,52060,24105,1,763,1048,140,57,50,100,50,200,220,75,10,12,1,7,20,0x85,200,864,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27259,1
+2560,GEFFEN_MAGE_10,Odoric,Odoric,150,2000000,1,60027,40237,1,950,1250,165,62,200,150,50,50,170,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27260,1
+2561,GEFFEN_MAGE_11,Ju,Ju,155,5000000,1,75335,52130,1,1045,1465,170,65,50,100,100,200,220,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27261,1
+2562,GEFFEN_MAGE_12,Dwigh,Dwigh,160,7000000,1,151317,123000,1,1410,2010,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27262,1
+2563,FEI_KANABIAN,Fei Kanabian,Fay Kanavian,160,8000000,1,157975,110571,1,1710,2460,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,720,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27263,1
 2564,GEFFEN_FENRIR,Geffen Fenrir,Fenrir,160,20000000,1,323300,300000,1,2160,3060,200,70,200,100,200,200,220,100,10,12,1,7,48,0x6200085,200,900,864,480,0,0,0,0,0,0,0,22511,100,22511,100,22511,100,22511,100,22511,100,22511,100,0,0,0,0,0,0,4556,1
 2565,ALPHONSE,Alphonse,Alphonse,150,1000000,1,0,0,1,650,850,100,20,100,100,50,50,170,100,10,12,1,7,42,0x85,200,1400,816,396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 2566,ALPHONSE_JR,Alphonse Jr,Alphonse Jr,150,100000,1,0,0,1,450,550,80,20,100,100,50,50,170,100,10,12,1,7,62,0x85,200,936,792,432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
@@ -2307,13 +2307,13 @@
 //3150,MG_AMDARAIS_H
 //3151,MG_CORRUPTION_ROOT_H
 //3152,G_MG_KHALITZBURG_H
-//3153,EXCAVATOR_ROBOT
-//3154,RECON_ROBOT
-//3155,REPAIR_ROBOT
-//3156,EXPLORATION_ROVER
-//3157,RUIN_BELIEVER1
-//3158,RUIN_BELIEVER2
-//3159,ILLEGAL_PROMOTION
+3153,EXCAVATOR_ROBOT,Excavator Robot,Excavator Robot,163,166860,0,15026,16915,1,4093,6007,138,53,102,104,72,57,98,57,10,12,1,0,60,0x0000085,250,1020,500,768,0,0,0,0,0,0,0,11597,251,984,101,6962,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3154,RECON_ROBOT,Recon Robot,Recon Robot,165,256000,0,15796,17738,1,2668,3863,128,60,112,60,72,57,120,77,10,12,2,0,80,0x0000085,170,1072,672,384,0,0,0,0,0,0,0,998,1001,756,1001,11597,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3155,REPAIR_ROBOT,Repair Robot,Repair Robot,155,154760,0,11748,47654,1,1893,2714,99,55,98,39,30,35,95,45,10,12,0,3,24,0x0000085,300,1500,500,660,0,0,0,0,0,0,0,998,5000,756,1501,999,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3156,EXPLORATION_ROVER,Exploration Rover,Exploration Rover,168,293640,0,18172,126234,1,2278,3283,105,41,100,63,35,99,106,61,10,12,2,7,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,998,5000,756,1,999,1,6961,1,0,0,0,0,0,0,0,0,0,0,0,0
+3157,RUIN_BELIEVER1,Ruin Grace Believer,Ruin Grace Believer,100,61350,0,4666,3874,1,982,1379,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3158,RUIN_BELIEVER2,Ruin Grace Believer,Ruin Grace Believer,100,61350,0,4666,139500,1,982,1379,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,200,2125,2112,0,0,0,0,0,0,0,0,6753,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3159,ILLEGAL_PROMOTION,Illegal Promotion,Illegal Promotion,100,10,0,0,0,1,101,102,1,50,1,1,1,1,1,1,10,12,0,0,40,0x0370020,200,0,0,768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //3160,BOILED_RICE_DUANWU
 //3161,BOMB
 //3162,ELEPHANT
@@ -2401,16 +2401,16 @@
 3244,V_B_GERTIE,Shadow Chaser Gertie,Shadow Chaser Gertie,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 3245,V_B_ALPHOCCIO,Minstrel Alphoccio,Minstrel Alphoccio,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 3246,V_B_TRENTINI,Wanderer Trentini,Wanderer Trentini,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-//3247,CENERE_G
-//3248,REPAIR_ROBOT_T
-//3249,EXPLORATION_ROVER_T
-//3250,SCR_MT_ROBOTS
-//3251,GC109
-//3252,DR815
-//3253,SYS_MSG
-//3254,T_W_O
-//3255,GHOUL_H
-//3256,ZOMBIE_H
+3247,CENERE_G,Cenere G,Green Cenere,150,140088,1,7635,7698,1,1897,2007,91,81,70,48,40,37,100,45,10,12,0,0,24,0x0000085,300,3009,720,360,0,0,0,0,0,0,0,6561,5000,7322,500,7001,1500,7320,1000,12815,500,0,0,0,0,0,0,0,0,27014,1
+3248,REPAIR_ROBOT_T,Repair Robot T,Repair Robot Turbo,158,186320,1,13208,14489,1,2431,2657,118,59,101,42,55,35,110,45,10,12,0,0,40,0x000008B,300,1515,500,660,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27015,1
+3249,EXPLORATION_ROVER_T,Exploration Rover T,Explorer Robot Turbo,171,318117,1,19826,41023,1,2945,3786,121,67,118,80,45,121,138,65,10,12,2,0,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27016,1
+3250,SCR_MT_ROBOTS,Scr Mt Robots,Can Robot,155,30,1,61,58,1,95,97,100,99,35,42,20,12,68,3,10,12,0,0,20,0x0070085,300,0,500,400,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27017,1
+3251,GC109,Machine Component,Machine Component,149,217650,1,6598,5931,1,2678,3935,121,71,60,132,45,35,155,15,10,12,0,0,47,0x0000085,120,1000,500,600,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27018,1
+3252,DR815,Machine Component,Machine Component,153,245670,1,7255,7011,1,3315,4076,143,45,88,98,88,21,116,22,10,12,1,0,27,0x0000085,135,1500,600,500,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27019,1
+3253,SYS_MSG,Sys Msg,System message,160,100,1,0,0,1,1,2,276,99,0,0,0,188,0,0,10,12,0,0,20,0xC170081,2000,3000,600,550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3254,T_W_O,T_W_O,T_W_O,165,48000000,1,0,0,1,3955,4151,158,134,90,141,7,87,267,70,10,12,2,6,67,0x6280085,150,1250,500,350,0,6832,5000,617,5000,617,5000,22699,3000,1531,500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27020,1
+3255,GHOUL_H,Ghoul H,Smelly Ghoul,155,178652,1,10233,10598,1,2235,2451,99,55,98,55,61,22,133,2,10,12,0,3,24,0x0000085,200,0,500,660,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3256,ZOMBIE_H,Zombie H,Smelly Zombie,148,134615,1,6859,6903,1,1995,2445,91,42,76,53,54,21,125,3,10,12,0,0,60,0x0000085,220,0,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //3257,MALE_PORING
 //3258,FEMALE_PORING
 //3259,FANTASTIC_B_UNICORN
@@ -3225,3 +3225,17 @@
 //20085,MD_IZ_CORNUTUS
 //20086,RED_ERUMA_MJ
 //20087,SIORAVA_MJ
+
+//20101,WILOW_MJ
+//20102,MANDRAGORA_MJ
+//20103,STEM_WORM_MJ
+//20104,SPORE_MJ
+//20105,TW_V_B_KATRINN
+//20106,TW_V_B_SHECIL
+//20107,TW_DETALE
+//20108,TW_KIEL
+//20109,TW_TAO_GUNKA
+//20110,TW_KNIGHT_OF_WINDSTORM
+
+//20118,GOBLIN_KING
+//20119,BAD_CATCUMBER

+ 79 - 41
db/re/mob_skill_db.txt

@@ -8730,47 +8730,85 @@
 2449,Nasarin@RG_CLOSECONFINE,attack,1005,1,1000,0,30000,no,target,always,0,,,,,,,
 2449,Nasarin@NPC_POISONATTACK,attack,188,5,1000,0,5000,no,target,always,0,,,,,,,
 
-// Old Glast Heim (currently placeholders)
-2464,MG Zombie@AL_HEAL,idle,28,10,10000,0,5000,yes,self,always,0,,,,,,,26
-2464,MG Zombie@NPC_UNDEADATTACK,chase,347,10,8000,1000,5000,yes,target,always,0,,,,,,,
-2465,MG Wraith@NPC_ENERGYDRAIN,attack,200,1,500,0,5000,yes,target,always,0,,,,,,,
-2466,MG Ghoul@NPC_UNDEADATTACK,chase,347,10,8000,1000,5000,yes,target,always,0,,,,,,,
-2467,MG Arclouse@NPC_GROUNDATTACK,attack,185,10,2000,0,5000,yes,target,always,0,,,,,,,
-2468,MG Raydric@BS_MAXIMIZE,attack,114,5,500,1000,5000,no,self,always,0,,,,,,,
-2468,MG Raydric@BS_MAXIMIZE,chase,114,5,500,1000,5000,no,self,always,0,,,,,,,
-2468,MG Raydric@NPC_EMOTION,chase,197,1,2000,0,5000,yes,self,always,0,0,,,,,,
-2468,MG Raydric@SM_MAGNUM,attack,7,9,500,500,5000,no,self,always,0,,,,,,6,
-2468,MG Raydric@CR_AUTOGUARD,chase,249,2,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
-2468,MG Raydric@CR_AUTOGUARD,attack,249,2,500,0,300000,yes,self,always,0,,,,,,,
-2469,MG Raydric Archer@AC_CHARGEARROW,attack,148,1,500,0,5000,yes,target,always,0,,,,,,9,
-2469,MG Raydric Archer@NPC_DARKNESSATTACK,attack,190,10,500,500,5000,no,target,always,0,,,,,,9,
-2469,MG Raydric Archer@CR_AUTOGUARD,attack,249,2,500,0,300000,yes,self,always,0,,,,,,,
-2470,MG Knight of Abyss@AC_CHARGEARROW,chase,148,1,500,0,5000,yes,target,always,0,,,,,,,
-2470,MG Knight of Abyss@KN_BRANDISHSPEAR,attack,57,10,500,1000,5000,no,target,always,0,,,,,,9,
-2470,MG Knight of Abyss@NPC_DARKNESSATTACK,attack,190,5,500,500,5000,no,target,always,0,,,,,,9,
-2470,MG Knight of Abyss@CR_AUTOGUARD,chase,249,10,2000,0,300000,yes,self,longrangeattacked,,,,,,,,
-2470,MG Knight of Abyss@CR_AUTOGUARD,attack,249,10,500,0,300000,yes,self,always,0,,,,,,,
-2472,MG Bloody Knight@KN_BRANDISHSPEAR,attack,57,5,500,1000,5000,no,target,always,0,,,,,,9,
-2472,MG Bloody Knight@NPC_CHANGEFIRE,attack,164,1,10000,2000,600000,no,self,myhpltmaxrate,20,,,,,,,
-2472,MG Bloody Knight@NPC_DARKNESSATTACK,attack,190,2,500,500,5000,no,target,always,0,,,,,,9,
-2472,MG Bloody Knight@CR_SHIELDCHARGE,attack,250,5,500,0,5000,yes,target,always,0,,,,,,9,
-2472,MG Bloody Knight@WZ_METEOR,attack,83,5,2000,0,5000,no,target,myhpltmaxrate,20,,,,,,,
-2472,MG Bloody Knight@WZ_METEOR,chase,83,5,2000,0,5000,no,target,myhpltmaxrate,20,,,,,,,
-2472,MG Bloody Knight@NPC_WEAPONBRAKER,attack,343,5,500,0,30000,yes,target,always,0,,,,,,,
-2475,MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT,idle,662,10,10000,4000,100,no,self,always,0,,,,,,36,
-2475,MG_CORRUPTION_ROOT@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36,
-2475,MG_CORRUPTION_ROOT@NPC_DARKSTRIKE,attack,340,10,2000,0,5000,yes,target,always,0,,,,,,,
-2475,MG_CORRUPTION_ROOT@NPC_SILENCEATTACK,attack,178,10,2000,0,5000,no,target,always,0,,,,,,,
-2475,MG_CORRUPTION_ROOT@NPC_PETRIFYATTACK,attack,180,5,500,500,5000,no,target,always,0,,,,,,3,
-//2475,MG_CORRUPTION_ROOT@NPC_TALK,idle,682,10,10000,0,60000,no,self,myhpltmaxrate,100,,,,,,,41
-2476,MG_AMDARAIS@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,0,,,,,,6,
-2476,MG_AMDARAIS@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32,
-2476,MG_AMDARAIS@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,,
-2476,MG_AMDARAIS@NPC_FIREBREATH,attack,654,5,500,800,5000,no,target,always,0,,,,,,32,
-2476,MG_AMDARAIS@NPC_DARKBREATH,attack,202,5,500,800,5000,no,target,always,0,,,,,,36,
-2476,MG_AMDARAIS@NPC_WEAPONBRAKER,attack,343,10,500,0,30000,yes,target,always,0,,,,,,,
-2476,MG_AMDARAIS@MG_FIREBALL,chase,17,44,5000,500,1000,no,target,always,0,,,,,,,
-//2476,MG_AMDARAIS@NPC_TALK,idle,682,10,10000,0,60000,no,self,myhpltmaxrate,100,,,,,,,42
+// Old Glast Heim
+2464,Corrupted Steward@NPC_UNDEADATTACK,chase,347,3,5000,0,5000,no,target,always,0,,,,,,,
+2464,Corrupted Steward@AL_HEAL,idle,28,1,5000,1000,3000,no,self,always,0,,,,,,26,
+2464,Corrupted Steward@NPC_UNDEADATTACK,attack,347,3,5000,500,3000,no,target,always,0,,,,,,28,
+2464,Corrupted Steward@NPC_BLOODDRAIN,attack,199,1,5000,500,5000,no,target,always,0,,,,,,47,
+2465,Corrupted Monk@NPC_CURSEATTACK,chase,181,5,5000,800,5000,no,target,always,0,,,,,,9,
+2465,Corrupted Monk@NPC_BLINDATTACK,attack,177,5,5000,0,5000,no,target,always,0,,,,,,,
+2465,Corrupted Monk@NPC_CURSEATTACK,attack,181,5,5000,800,5000,no,target,always,0,,,,,,9,
+2465,Corrupted Monk@NPC_ENERGYDRAIN,attack,200,1,5000,0,5000,no,target,always,0,,,,,,,
+2466,Grand Chamberlain in pain@NPC_UNDEADATTACK,chase,347,4,5000,0,5000,no,target,always,0,,,,,,,
+2466,Grand Chamberlain in pain@AL_HEAL,idle,28,1,5000,1000,3000,no,self,always,0,,,,,,26,
+2466,Grand Chamberlain in pain@NPC_BLEEDING,attack,660,4,500,900,5000,no,target,always,0,,,,,,9,
+2466,Grand Chamberlain in pain@NPC_UNDEADATTACK,attack,347,4,5000,500,3000,no,target,always,0,,,,,,28,
+2466,Grand Chamberlain in pain@NPC_BLOODDRAIN,attack,199,2,5000,500,5000,no,target,always,0,,,,,,47,
+2467,Maggot@NPC_GROUNDATTACK,attack,185,5,2000,0,5000,no,target,always,0,,,,,,,
+2467,Maggot@NPC_EMOTION,chase,197,1,200,0,5000,no,self,always,0,19,0x81,,,,,
+2467,Maggot@NPC_EMOTION,idle,197,1,2000,0,5000,no,self,always,0,7,0x3095,,,,,
+2468,Corrupted Palace Guard@SM_BASH,chase,5,8,5000,1000,5000,no,target,always,0,,,,,,,
+2468,Corrupted Palace Guard@BS_MAXIMIZE,chase,114,5,5000,1000,5000,no,self,always,0,,,,,,,
+2468,Corrupted Palace Guard@CR_AUTOGUARD,chase,249,2,2000,0,300000,no,self,always,0,,,,,,,
+2468,Corrupted Palace Guard@SM_MAGNUM,attack,7,9,5000,1000,5000,no,self,always,0,,,,,,,
+2468,Corrupted Palace Guard@NPC_DARKNESSATTACK,attack,190,5,5000,500,5000,no,target,always,0,,,,,,,
+2469,Wandering Archer@AC_DOUBLE,chase,46,5,5000,1000,1000,no,target,always,0,,,,,,,
+2469,Wandering Archer@AC_CHARGEARROW,attack,148,1,5000,0,50000,no,target,always,0,,,,,,,
+2469,Wandering Archer@NPC_DARKNESSATTACK,attack,190,5,5000,1000,5000,no,target,always,0,,,,,,,
+2469,Wandering Archer@AC_DOUBLE,attack,46,9,5000,1800,5000,no,target,always,0,,,,,,,
+2470,Corrupted Knight of Abyss@NPC_DARKSTRIKE,idle,340,3,5000,0,10000,no,target,rudeattacked,,,,,,,,
+2470,Corrupted Knight of Abyss@CR_AUTOGUARD,chase,249,10,2000,0,300000,no,self,longrangeattacked,,,,,,,,
+2470,Corrupted Knight of Abyss@AC_CHARGEARROW,chase,148,1,500,0,5000,no,target,always,0,,,,,,,
+2470,Corrupted Knight of Abyss@KN_BRANDISHSPEAR,attack,57,10,500,2000,5000,no,target,always,0,,,,,,9,
+2470,Corrupted Knight of Abyss@NPC_DARKNESSATTACK,attack,190,9,500,1500,10000,no,target,always,0,,,,,,7,
+2470,Corrupted Knight of Abyss@NPC_CRITICALSLASH,attack,170,1,500,0,5000,no,target,always,0,,,,,,,
+2472,Bloody Knight@WZ_METEOR,chase,83,7,2000,0,10000,no,target,myhpltmaxrate,50,,,,,,,
+2472,Bloody Knight@WZ_METEOR,attack,83,7,2000,0,5000,no,target,myhpltmaxrate,30,,,,,,,
+2472,Bloody Knight@KN_BRANDISHSPEAR,attack,57,7,500,1000,5000,no,target,always,0,,,,,,9,
+2472,Bloody Knight@NPC_DARKNESSATTACK,attack,190,3,500,500,5000,no,target,always,0,,,,,,9,
+2472,Bloody Knight@NPC_PULSESTRIKE,attack,661,3,500,2000,10000,no,self,always,0,,,,,,7,
+2475,Corrupted Soul@NPC_EARTHQUAKE,idle,653,2,10000,5000,5000,yes,self,rudeattacked,,,,,,,7,
+2475,Corrupted Soul@NPC_EVILLAND,idle,670,10,7000,3000,5000,yes,randomtarget,always,0,,,,,,9,
+2475,Corrupted Soul@NPC_HELLJUDGEMENT,idle,662,5,10000,5000,0,yes,self,always,0,,,,,,9,
+2475,Corrupted Soul@NPC_VAMPIRE_GIFT,idle,679,5,2000,5000,5000,yes,self,always,0,,,,,,29,
+2475,Corrupted Soul@NPC_BLOODDRAIN,idle,199,1,2000,0,2000,no,randomtarget,always,0,,,,,,29,
+2475,Corrupted Soul@AM_DEMONSTRATION,idle,229,9,10000,0,2000,no,randomtarget,always,0,,,,,,,
+2475,Corrupted Soul@NPC_HELLJUDGEMENT,idle,662,5,10000,5000,5000,yes,self,myhpltmaxrate,50,,,,,,,
+2475,Corrupted Soul@AL_HEAL,idle,28,11,10000,0,5000,no,self,myhpltmaxrate,50,,,,,,,
+2475,Corrupted Soul@NPC_POWERUP,idle,349,5,10000,1000,5000,yes,self,myhpltmaxrate,50,,,,,,,
+2475,Corrupted Soul@NPC_EARTHQUAKE,idle,653,4,10000,5000,5000,yes,self,myhpltmaxrate,30,,,,,,7,
+2475,Corrupted Soul@NPC_EVILLAND,idle,670,10,10000,1000,5000,yes,randomtarget,myhpltmaxrate,30,,,,,,9,
+2475,Corrupted Soul@NPC_HELLJUDGEMENT,idle,662,10,10000,5000,0,yes,self,rudeattacked,,,,,,,9,
+2475,Corrupted Soul@NPC_HELLJUDGEMENT,idle,662,8,10000,5000,0,yes,self,casttargeted,,,,,,,9,
+2475,Corrupted Soul@NPC_HELLJUDGEMENT,idle,662,6,10000,5000,0,yes,self,longrangeattacked,,,,,,,9,
+2475,Corrupted Soul@NPC_WIDESOULDRAIN,idle,680,5,10000,1000,0,yes,self,skillused,490,,,,,,9,
+2475,Corrupted Soul@NPC_WIDESOULDRAIN,idle,680,5,10000,1000,0,yes,self,skillused,271,,,,,,9,
+2475,Corrupted Soul@NPC_DARKSTRIKE,attack,340,10,5000,1000,5000,yes,target,always,0,,,,,,,
+2475,Corrupted Soul@NPC_BLOODDRAIN,attack,199,1,2000,1000,0,no,target,always,0,,,,,,29,
+2475,Corrupted Soul@NPC_CRITICALWOUND,attack,673,4,500,0,5000,no,target,always,0,,,,,,,
+2475,Corrupted Soul@AS_SONICBLOW,attack,136,10,500,800,5000,yes,target,always,0,,,,,,,
+2475,Corrupted Soul@NPC_WIDECURSE,attack,677,5,10000,1000,5000,yes,self,always,0,,,,,,,
+2475,Corrupted Soul@NPC_WIDESILENCE,attack,663,5,8000,1000,5000,yes,self,always,0,,,,,,,
+2475,Corrupted Soul@NPC_WIDESTONE,attack,666,3,10000,1000,5000,yes,self,always,0,,,,,,,
+2475,Corrupted Soul@NPC_WIDESTUN,attack,678,3,5000,1000,5000,yes,self,always,0,,,,,,,
+2476,Amdarias@NPC_DARKSTRIKE,idle,340,10,10000,0,0,no,target,rudeattacked,,,,,,,,
+2476,Amdarias@NPC_DARKSTRIKE,chase,340,5,5000,0,1000,no,target,always,0,,,,,,,
+2476,Amdarias@NPC_HELLJUDGEMENT,chase,662,5,5000,4000,5000,yes,self,myhpltmaxrate,30,,,,,,7,
+2476,Amdarias@NPC_DRAGONFEAR,chase,659,5,10000,0,0,no,self,always,0,,,,,,,
+2476,Amdarias@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,yes,self,always,0,,,,,,,
+2476,Amdarias@NPC_HELLJUDGEMENT,attack,662,5,10000,4000,5000,yes,self,myhpltmaxrate,30,,,,,,7,
+2476,Amdarias@NPC_GRANDDARKNESS,attack,339,10,10000,2000,1000,yes,self,myhpltmaxrate,30,,,,,,9,
+2476,Amdarias@NPC_POWERUP,attack,349,5,10000,0,50000,no,self,myhpltmaxrate,30,,,,,,6,
+2476,Amdarias@NPC_VAMPIRE_GIFT,attack,679,5,10000,0,0,no,self,skillused,490,,,,,,42,
+2476,Amdarias@NPC_CRITICALWOUND,attack,673,4,500,500,5000,yes,target,always,0,,,,,,,
+2476,Amdarias@NPC_CHANGEUNDEAD,attack,348,1,500,0,5000,no,target,always,0,,,,,,44,
+2476,Amdarias@NPC_MENTALBREAKER,attack,159,4,500,1500,5000,no,target,always,0,,,,,,42,
+2476,Amdarias@NPC_CRITICALSLASH,attack,170,1,10000,0,5000,no,target,always,0,,,,,,,
+2476,Amdarias@NPC_DARKCROSS,attack,338,10,5000,0,5000,no,target,always,0,,,,,,,
+2476,Amdarias@NPC_UNDEADATTACK,attack,347,10,10000,500,5000,yes,target,always,0,,,,,,,
+2476,Amdarias@NPC_CURSEATTACK,attack,181,5,4000,0,3000,no,target,always,0,,,,,,,
+2476,Amdarias@NPC_STUNATTACK,attack,179,5,2000,0,3000,no,target,always,0,,,,,,,
+2476,Amdarias@SM_MAGNUM,attack,7,25,10000,500,5000,yes,self,always,0,,,,,,,
 
 // Nightmare Glast Heim
 2477,Wanderer (Nightmare)@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,,

+ 149 - 10
db/re/quest_db.txt

@@ -690,6 +690,16 @@
 4286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
 4287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Ninja training-test"
 
+// Episode 15.1 Bard's Story
+4295,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Wandering Bard"
+4296,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Take a Break"
+4297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: Some Corporation"
+4298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: The President"
+4299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: a Scholar in Juno"
+4300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: a Mad Scientist"
+4301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: Hugel"
+4302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bard's Story: Odin Temple"
+
 //4303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //4304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //4305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@@ -869,6 +879,55 @@
 5226,7200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Saving energy crystal[Stand by]"
 5227,7200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Saving energy crystal[Stand by]"
 
+// Episode 15.1 Phantasmagorika
+5304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Chief Kesler"
+5305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Officer Salgran"
+5306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Officer Gerev"
+5307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Officer Seiden"
+5308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Officer Piffs"
+5309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Police Chief's Request"
+5310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Salgran's Problem"
+5311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Gerev's Problem"
+5312,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Seiden's Problem"
+5313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Piffs's Problem"
+5314,0,3159,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Salgran's Request"
+5315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Gerev's Request"
+5316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Seiden's Request"
+5317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Piffs's Request"
+5318,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Come Back Tomorrow"
+
+// Episode 15.2 Memory Record
+5341,79200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Restriction on the Journey"
+5342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Help Her"
+5343,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Making a Head Count"
+5344,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Making a Head Count"
+5345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Making a Head Count"
+5346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Making a Head Count"
+5347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Finishing a Head Count"
+5348,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Finishing a Head Count"
+5349,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Finishing a Head Count"
+5350,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Finishing a Head Count"
+5351,79200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Restriction on the Journey"
+5352,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Air Purifier"
+5353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered to C-0"
+5354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered to F-1"
+5355,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered to F-2"
+5356,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered to I-0"
+5357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered to Z-0"
+5358,79200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Restriction on the Journey"
+5359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grape Harvest"
+5360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grape Delivery"
+5361,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grape Delivery"
+5362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grape Delivery"
+5363,79200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Restriction on the Journey"
+5364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Subdue Hysterical Patients"
+5365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Urgent News"
+5366,79200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Restriction on the Journey"
+5367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Daily Necessities Transport"
+5368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered Supplies"
+5369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delivered the Message"
+5370,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memory Record"
+
 6000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Taekwon"
 6001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Taekwon"
 6002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job Change to Taekwon"
@@ -1446,16 +1505,49 @@
 7563,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Standby for Kafragaten Challenge 1"
 7564,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Standby for Kafragaten Challenge 2"
 
-//7619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7623,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7624,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7627,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
-//7629,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
+// Episode 15.1 Verus City
+7606,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Phantasmagorika Excavator Recruitment"
+7607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Eden Group Leader"
+7608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Artnard Excavation Team 1"
+7609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Artnard Excavation Team 2"
+7610,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Registered Excavator"
+7611,0,3154,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Passage Cleaning"
+7612,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Passage Cleaning - Down"
+7613,0,3155,15,3156,15,0,0,0,0,0,0,0,0,0,0,0,"Eliminating Risks"
+7614,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Eliminating Risks - Down"
+7615,0,0,0,0,0,0,0,3154,6749,2000,3155,6749,2000,3156,6749,2000,"Core Collection"
+7616,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Core Collection - Down"
+7617,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Turning In Excavation Report"
+7618,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Reporting the Results - Down"
+7619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Assisting the Excavation Team"
+7620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Young Blood?"
+7621,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Bottling the Energy"
+7622,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Good News!"
+7623,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Artnard's Summon"
+7624,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"In Search of a Delicacy"
+7625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Count On Me"
+7626,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Delicacy for Him"
+7627,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Last Exploration"
+7628,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"New Power Source"
+7629,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Tomorrow for Tomorrow's Energy"
+
+// Episode 15.2 Atnad Excavator 2
+7641,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Access Permitted"
+7642,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Explore Research facilities"
+7643,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mysterious Piece"
+7644,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Record Player"
+7645,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Piece of Memory Record"
+7646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Play Memory Record"
+7647,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Report Memory Record"
+7648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Memory Records of the Laboratories"
+7649,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Report Memory Record Content"
+7650,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Collect Memory Records of Research facilities"
+7651,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"One Memory a Day"
+7652,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Collect Memory Records of Laboratories"
+7653,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"One Memory a Day 2"
+7654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Play Research facilities Memory Records"
+7655,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Play Laboratories Memory Records"
+7656,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Invitation of Rekenber"
 
 // Lasagna Quests
 7711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Beginning"
@@ -2342,9 +2434,39 @@
 11347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_soft bone(LV.18)"
 11348,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Acolyte_Solid bone(LV.23)"
 
+// Episode 15.1 To Phantasmagorika!
+11363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!"
+11364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!"
+11365,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!"
+11366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To Phantasmagorika!"
+11367,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11370,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11371,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11373,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11374,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Looking for the Traces"
+11376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Let the Specialists Handle It"
+11377,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Act of Kindness"
+
 //11366,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 11378,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trick or treat" // Halloween Event 2013
 
+// Episode 15.2 The Last Room Instance
+11379,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Final Room"
+11380,0,3254,1,0,0,0,0,0,0,0,0,0,0,0,0,0,"Final Room"
+11381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11384,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11385,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11387,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11388,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+11389,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vestige"
+
 // Lasagna Quests
 11435,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vigilante Corp"
 11436,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Vigilante Corp"
@@ -2699,6 +2821,10 @@
 12344,0,3170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
 12345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
 
+// Episode 15.2: Central Laboratory
+12346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Strange Ancient Science"
+12347,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Trace of Laboratory Access"
+
 12363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"?????? ?? ??"
 
 13000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"RWC2011Card Gathering"
@@ -2878,6 +3004,19 @@
 13187,0,3125,50,0,0,0,0,0,0,0,0,0,0,0,0,0,"Deal with the Staff"
 13188,72000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Deal with the Staff - Hold"
 
+// Episode 15.2 Krotzel's Request
+13195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan"
+13196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan"
+13197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan"
+13198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Krotzel's Request"
+13199,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Krotzel's Request - Complete"
+13200,0,3247,30,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Rookie's Request"
+13201,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rookie's Request - Complete"
+13202,0,3248,30,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Photo Journalist's Request"
+13203,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Photo Journalist's Request - Complete"
+13204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monthly Brigan : Grylls' Request"
+13205,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Grylls' Request - Complete"
+
 14118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Wuhari's concern"
 14119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Test of patience"
 14120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Test of patience 2"

+ 17 - 2
doc/script_commands.txt

@@ -2935,6 +2935,13 @@ Merge all stackable items that separated by GUID flags
 (either by flag 4 item_flag.txt or GUID  in item_group).
 If no item ID/name given, all possible items in player's inventory will be merged.
 
+---------------------------------------
+
+*getequiptradability(<equipment slot>{,<char id>});
+
+Returns true if the item in <equipment slot> is tradable.
+Returns false otherwise.
+
 ---------------------------------------
 //
 2,1.- End of item-related commands.
@@ -4864,7 +4871,7 @@ More info, see doc/item_group.txt.
 
 ---------------------------------------
 
-*getrandgroupitem <group_id>{,<quantity>{,<sub_group>}};
+*getrandgroupitem <group_id>{,<quantity>{,<sub_group>{,<identify>{,<char_id>}}}};
 
 Similar to the above example, this command allows players to obtain the specified
 quantity of a random item from the group "<group id>". The different groups and
@@ -4875,16 +4882,24 @@ If 'quantity' is not defined or 0, it will uses defined amount from Item Group l
 If 'sub_group' is not defined the value will be 1 (since random group is 1 ~ 5, and 0 is
 'must' item group).
 
+For item with type IT_WEAPON, IT_ARMOR, IT_PETARMOR, and IT_SHADOWGEAR will be given
+as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
+if 'identify' is defined with value 1.
+
 More info, see doc/item_group.txt.
 
 ---------------------------------------
 
-*getgroupitem <group_id>{,<char_id>};
+*getgroupitem <group_id>{,<identify>{,<char_id>}};
 
 Gives item(s) to the attached player based on item group contents.
 This is not working like 'getrandgroupitem' which only give 1 item for specified
 item group & sub_group.
 
+For item with type IT_WEAPON, IT_ARMOR, IT_PETARMOR, and IT_SHADOWGEAR will be given
+as unidentified item (as defined by itemdb_isidentified in src/map/itemdb.cpp) except
+if 'identify' is defined with value 1.
+
 More info, see doc/item_group.txt.
 
 ---------------------------------------

+ 1 - 1
npc/airports/airships.txt

@@ -248,7 +248,7 @@ airplane,71,91,7	script	Umbala Man#ein_p	789,{
 		mes "Some of them couldn't";
 		mes "overcome their fear of";
 		mes "heights. And a few even";
-		mes "ended up, um, ^333333in Nifflheim^000000.";
+		mes "ended up, um, ^333333in Niflheim^000000.";
 	}
 	else {
 		mes "[Chrmlim]";

+ 2 - 2
npc/custom/official/GeffenMagicTournament.txt

@@ -148,9 +148,9 @@ OnTimer1000:
 		case 106:
 			npctalk "Our friendship is forever~!!!", instance_npcname("Young Lady#gef3");
 			emotion ET_THROB, getnpcid(0, instance_npcname("Handsome Adventurer#gef"));
-			sleep2 500;
+			sleep 500;
 			npctalk "Our friendship is forever~!!!", instance_npcname("Young Lady#gef1");
-			sleep2 500;
+			sleep 500;
 			npctalk "Our friendship is forever~!!!", instance_npcname("Young Lady#gef2");
 			'm1_timer++;
 			break;

+ 1 - 1
npc/events/christmas_2008.txt

@@ -251,7 +251,7 @@ prontera,226,306,4	script	Caroller#iROxmas08	79,{
 				mes "Every year, adventurers challenge to attack Antonio the fake Santa, but there's no way to catch up to him due to his hat and costume!";
 				next;
 				mes "[Caroller]";
-				mes "Are there some spcial abilities within them?";
+				mes "Are there some special abilities within them?";
 				mes "There's still the designer in the Christmas village... How about asking her to make that costume?";
 				next;
 				emotion ET_SMILE;

+ 3 - 3
npc/events/halloween_2006.txt

@@ -1035,11 +1035,11 @@ prontera,155,285,3	script	Familiar#06_hw01::HWFamiDup	799,{
 	mes "Hello.";
 	mes "I'm Loli Ruri's faithful and cute Familiar.";
 	mes "Do you have an invitation from Loli Ruri?";
-	mes "That's a kind of^4d4dffa special ticket to Nifflheim^000000..";
+	mes "That's a kind of^4d4dffa special ticket to Niflheim^000000..";
 	next;
 	if (select( "Yes, I do.:No, I don't.") == 1) {
 		mes "[Familiar]";
-		mes "Do you want to go to Nifflheim?";
+		mes "Do you want to go to Niflheim?";
 		mes "It's available during Halloween.";
 		next;
 		if (select( "Yes, I do:No, I don't.") == 1) {
@@ -1064,7 +1064,7 @@ prontera,155,285,3	script	Familiar#06_hw01::HWFamiDup	799,{
 		}
 		mes "[Familiar]";
 		mes "Ok.";
-		mes "Actually, it's useless to have a special ticket to Nifflheim.";
+		mes "Actually, it's useless to have a special ticket to Niflheim.";
 		close;
 	}
 	mes "[Familiar]";

+ 7 - 7
npc/events/twintowers.txt

@@ -65,25 +65,25 @@ prontera,146,92,4	script	Twin Towers#tt1::Twin-Towers	812,{
 	menu "Hidden Temple", HiddenTemple,"Orc Dungeon",OrcDungeon,"Ant Hell",AntHell,"Mjolnir Waste Pit",MjolnirWastePit,"Sphinx",Sphinx,"Glast Heim",GlastHeim,"Comodo",Comodo;
 		HiddenTemple:
 			warp "prt_fild01",136,368;
-			close;
+			end;
 		OrcDungeon:
 			warp "gef_fild10",67,334;
-			close;
+			end;
 		AntHell:
 			warp "moc_fild04",210,329;
-			close;
+			end;
 		MjolnirWastePit:
 			warp "mjolnir_02",79,361;
-			close;
+			end;
 		Sphinx:
 			warp "moc_fild19",105,99;
-			close;
+			end;
 		GlastHeim:
 			warp "gef_fild06",45,304;
-			close;
+			end;
 		Comodo:
 			warp "cmd_fild01",30,317;
-			close;
+			end;
 }
 
 morocc,160,97,4	duplicate(Twin-Towers)	Twin Towers#tt2	812

+ 2 - 2
npc/other/Global_Functions.txt

@@ -162,9 +162,9 @@ function	script	F_Rand	{
 
 //////////////////////////////////////////////////////////////////////////////////
 // Returns 1st argument if female, 2nd argument if male.
-// -- callfunc "F_Sex",argFemale,argMale
+// -- callfunc "F_SexMes",argFemale,argMale
 // Example:
-//     mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!");
+//     mes callfunc("F_SexMes","What a beautiful lady!","What a handsome man!");
 //////////////////////////////////////////////////////////////////////////////////
 function	script	F_SexMes	{
 	return getarg(Sex);

+ 7 - 7
npc/other/bulletin_boards.txt

@@ -360,23 +360,23 @@ xmas_fild01,75,80,5	script	Bulletin Board#22	837,{
 }
 
 niflheim,200,191,5	script	Bulletin Board#25	837,{
-	mes "[City of the Dead, Nifflheim]";
-	mes "Welcome to Nifflheim, the City of the Dead.";
-	mes "Nifflheim was known as the other world where";
+	mes "[City of the Dead, Niflheim]";
+	mes "Welcome to Niflheim, the City of the Dead.";
+	mes "Niflheim was known as the other world where";
 	mes "you come after the death.";
 	mes "However, recently people found out a secret path behind of a mysterious tree.";
 	mes "So, you will find many other people travelling around this area.";
 	next;
-	mes "[City of the Dead, Nifflheim]";
+	mes "[City of the Dead, Niflheim]";
 	mes "As a tourist attraction, The Witch's castle is suggested.";
 	mes "Unlike normal towns, it is prohibited to save respawn point or";
-	mes "warp point inside Nifflheim. Also monsters spawn within the town as well.";
+	mes "warp point inside Niflheim. Also monsters spawn within the town as well.";
 	next;
-	mes "[City of the Dead, Nifflheim]";
+	mes "[City of the Dead, Niflheim]";
 	mes "Especially, please be attentive with a boss monster";
 	mes "called ^6B1312Lord of the Death^000000.";
 	next;
-	mes "[City of the Dead, Nifflheim]";
+	mes "[City of the Dead, Niflheim]";
 	mes "When you go ahead west, you will arrive at ^6B1312Valley of Gyoll^000000";
 	mes "where all the powerful and fearful monsters dwell upon.";
 	mes "It is suggested to leave the area immediately in case of a new solo adventurer.";

+ 1 - 1
npc/other/divorce.txt

@@ -117,7 +117,7 @@ nif_in,190,112,5	script	Deviruchi#divorce	738,{
 	mes "marriage as a contract...a";
 	mes "contract that ends with 'till";
 	mes "death do we part.' Here in";
-	mes "Nifleheim, it's easy to use";
+	mes "Niflheim, it's easy to use";
 	mes "that little loophole...";
 	next;
 	mes "[Deviruchi]";

+ 1 - 1
npc/pre-re/mobs/dungeons/yggdrasil.txt

@@ -7,7 +7,7 @@
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
-//= 1.0 Splitted from Nifflheim fields [DracoRPG]
+//= 1.0 Splitted from Niflheim fields [DracoRPG]
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //============================================================
 

+ 1 - 1
npc/quests/first_class/tu_merchant.txt

@@ -521,7 +521,7 @@ alberta_in,70,51,5	script	Guarnien	4W_M_02,{
 			tu_merchant = 1;
 			setquest 8229;
 			mes "[Guarnien]";
-			mes callfunc("F_Sex","Atta girl~!","Atta boy~!");
+			mes callfunc("F_SexMes","Atta girl~!","Atta boy~!");
 			mes "But first things first!";
 			mes "You better learn the";
 			mes "^871F78Increase Weight Limit^000000 skill!";

+ 5 - 5
npc/quests/quests_hugel.txt

@@ -4205,7 +4205,7 @@ hugel,198,169,0	script	#HugelTree	139,2,2,{
 			mes "feeling of dread?";
 			mes "This peculiar chill...";
 			mes "It's almost as if you";
-			mes "were in Nifflheim...^000000";
+			mes "were in Niflheim...^000000";
 			close;
 		} else {
 			mes "^3355FFFor some reason, you";
@@ -4302,7 +4302,7 @@ hugel,191,172,3	script	Manainne	892,1,{
 		mes "What? That's...";
 		mes "That's an incredible";
 		mes "story. You met my dead";
-		mes "sister in Nifflheim?! You";
+		mes "sister in Niflheim?! You";
 		mes "must be lying to me!";
 		next;
 		mes "[Manainne]";
@@ -4316,7 +4316,7 @@ hugel,191,172,3	script	Manainne	892,1,{
 		set hg_memory,8;
 		mes "[Manainne]";
 		mes "Gosh, all that talk";
-		mes "about Nifflheim is...";
+		mes "about Niflheim is...";
 		mes "It's giving me the chills!";
 		mes "A-aren't you cold?";
 		close;
@@ -4357,7 +4357,7 @@ hugel,191,172,3	script	Manainne	892,1,{
 		mes "long! Hello, adventurer,";
 		mes "remember me? I'm Kanainne,";
 		mes "the spirit you saw down in";
-		mes "Nifflheim. Let me explain...";
+		mes "Niflheim. Let me explain...";
 		next;
 		mes "[Manainne]";
 		mes "My spirit was able to follow";
@@ -4561,7 +4561,7 @@ niflheim,90,106,3	script	A Spirit#HQuest	802,{
 	} else {
 		mes "[Spirit]";
 		mes "The living shouldn't";
-		mes "be here in Nifflheim...";
+		mes "be here in Niflheim...";
 		mes "Go back! Go back to your";
 		mes "own world before it's too late!";
 		next;

+ 1 - 1
npc/quests/quests_niflheim.txt

@@ -595,7 +595,7 @@ niflheim,153,215,3	script	Feylin	794,{
 		mes "come to the wrong person.";
 		next;
 		mes "[Feylin]";
-		mes "Nobody in Niffelheim can";
+		mes "Nobody in Niflheim can";
 		mes "perform that kind of miracle...";
 		next;
 		mes "[Feylin]";

+ 1 - 1
npc/quests/skills/bard_skills.txt

@@ -544,7 +544,7 @@ morocc_in,169,72,7	script	Spiteful-Looking Bard#bs	741,3,3,{
 				mes "some fresh eggs laid by";
 				mes "Yhelle, just like I asked.";
 				mes "I'm sure it was dangerous";
-				mes "going to Nifflheim, but the flavor of these eggs is worth it.";
+				mes "going to Niflheim, but the flavor of these eggs is worth it.";
 				next;
 				next;
 				mes "[Riott]";

+ 1 - 1
npc/quests/skills/merchant_skills.txt

@@ -41,7 +41,7 @@ alberta,83,96,5	script	Necko	98,7,7,{
 			mes "Ppyakikakikakakakakakakaka!!";
 			close;
 		}
-		else if (JobLevel < 15) {
+		else if (JobLevel < 15 && Class == Job_Merchant ) {
 			mes "[Necko]";
 			mes "Oh, did you come because";
 			mes "you are infatuated with my voice?";

+ 1 - 1
npc/quests/the_sign_quest.txt

@@ -9993,7 +9993,7 @@ que_sign01,122,141,4	script	Witch#s	792,{
 			next;
 			mes "[Kirkena]";
 			mes "Serin's already hid herself";
-			mes "deep within Niffleim, but I'm";
+			mes "deep within Niflheim, but I'm";
 			mes "sure you can find something";
 			mes "if you can find any remaining";
 			mes "trace of her.";

+ 1384 - 0
npc/re/instances/CentralLaboratory.txt

@@ -0,0 +1,1384 @@
+//===== rAthena Script =======================================
+//= Central Laboratory
+//===== Description: =========================================
+//= [Walkthrough Conversion]
+//= Central Laboratory Instance
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+verus01,153,155,5	script	Temporary Dimension-mov	PORTAL,{
+	.@party_id = getcharid(1);
+	if (.@party_id == 0) {
+		mes "[Temporary Dimension-mover]";
+		mes "Do you not have a companion to join you? Organize your party even if traveling alone.";
+		close;
+	}
+	switch( checkquest(12347,PLAYTIME) ) {
+	case -1:
+		switch( instance_enter("Central Laboratory") ) {
+		case IE_NOMEMBER:
+		case IE_NOINSTANCE:
+		case IE_OTHER:
+			mes "[Temporary Dimension-mover]";
+			mes "The passage for dimensional moving has not been vitalized.";
+			close;
+		case IE_OK:
+			mapannounce "verus01", "" + strcharinfo(0) + " of the party, " + getpartyname(.@party_id) + ", is entering Central Laboratory.",bc_map,"0x00FF99";
+			setquest 12347;// Trace of Laboratory Access
+			end;
+		}
+	case 0:
+	case 1:
+		mes "[Temporary Dimension-mover]";
+		mes "There are remaining traces of the last event. Access denied.";
+		close;
+	case 2:
+		mes "^0000ffUse of Dimension-mover seems possible.^000000";
+		erasequest 12347;// Trace of Laboratory Access
+		close;
+	}
+}
+
+verus01,149,155,5	script	Civilization Explorer#p	4_LGTSCIENCE,{
+	mes "^ff0000Taming monsters will impede progress in this dungeon. Please take note of this.^000000";
+	next;
+	mes "[Civilization Explorer]";
+	if (isbegin_quest(12346) == 2) {
+		mes "What do you want to do this time?";
+		next;
+	}
+	else {
+		mes "There are a lot of interesting things about the ancient civilizations in this area.";
+		next;
+		mes "[Civilization Explorer]";
+		mes "Observing the soil strata it is estimated to be 500 to 600 years old!";
+		mes "But many of the excavated objects here already far surpass our current technology.";
+		next;
+		mes "[Civilization Explorer]";
+		mes "A lot of undefined terms are found in the recovered records as well.";
+		next;
+		select("What kind of unknown terms?");
+		mes "[Civilization Explorer]";
+		mes "^0000ffMother Computer^000000 or, ^0000ff LSI Chip^000000 Or, and what else. ^0000ffChicken^000000?";
+		next;
+		mes "[Civilization Explorer]";
+		mes "Mm that's right. There definitely was the word Chicken. I don't know what kind of combination of technology that may be...";
+		next;
+		mes "[Civilization Explorer]";
+		mes "It is referrenced in the records of people who seem to 'root' amongst the many traces of technology.";
+		next;
+		if (select( "It is not a topic I would be interested in.", "Interesting. Have there been any results?" ) == 1) {
+			mes "[Civilization Explorer]";
+			mes "Unfortunate.";
+			close;
+		}
+		mes "[Civilization Explorer]";
+		mes "My aim is to research the use of technology related to the relevant times. Even though what I have found out so far is insignificant.";
+		next;
+		mes "[Civilization Explorer]";
+		mes "If I had it my way I would use the dimension mover to see for myself but there's too much work. Besides I am not an adventurer...";
+		next;
+		mes "[Civilization Explorer]";
+		mes "By any chance, would you interested in traveling to the past?";
+		next;
+		mes "[Civilization Explorer]";
+		mes "Even better if you show me around if you find an interesting object.";
+		next;
+		if (select( "Not interested.", "Ok." ) == 1) {
+			mes "[Civilization Explorer]";
+			mes "Unfortunate.";
+			close;
+		}
+		mes "[Civilization Explorer]";
+		mes "You are an adventurer. Tell me what you decide to do.";
+		if (isbegin_quest(12346) == 0)
+			setquest 12346;// Strange Ancient Science
+		next;
+		completequest 12346;
+	}
+	.@party_id = getcharid(1);
+	if (.@party_id == 0) {
+		mes "[Civilization Explorer]";
+		mes "Please talk to me after composing a party of 1 or more, or after joining a party.";
+		close;
+	}
+	if (getpartyleader(.@party_id,2) != getcharid(0)) {
+		mes "[Civilization Explorer]";
+		mes "Ah. You aren't the party leader. Take me to your leader! Or perhaps take your leader to me.";
+		close;
+	}
+	switch( checkquest(12347,PLAYTIME) ) {
+	case -1:
+		if (select( "Produce a crack of time", "Cancel" ) == 1) {
+			mes "[Civilization Explorer]";
+			mes "When the crack of time opens take a breath and speak again.";
+			instance_create("Central Laboratory");
+		}
+		close;
+	case 0:
+	case 1:
+		mes "[Civilization Explorer]";
+		mes "Ah, oh no.";
+		mes "There are some remaining aftereffects of dimensional travel. We cannot travel again in this condition.";
+		close;
+	case 2:
+		mes "^0000ffAll the traces of entering the central laboratory have been erased. Speaking with the Civilization Explorer seems possible.^000000";
+		erasequest 12347;// Trace of Laboratory Access
+		close;
+	}
+}
+
+// Entrance
+1@lab,104,34,4	script	Probationary researcher	4_LGTSCIENCE,{
+	if ('switch_enabled == 1) {
+		mes "[Probationary researcher]";
+		mes "The entrance door is already open.";
+		close;
+	}
+	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
+		mes "[Probationary researcher]";
+		mes "Please hold. I am speaking with the guide about whether or not you have been authorized.";
+		close;
+	}
+	mes "[Probationary researcher]";
+	mes "Are you participating as assistants to the experiments of research project 32001?";
+	next;
+	if (select( "Yes.", "No." ) == 2) {
+		mes "[Probationary researcher]";
+		mes "It seems you're in the wrong laboratory. Please exit and ask for help.";
+		close;
+	}
+	mes "[Probationary researcher]";
+	mes "We need about 5 seconds of time. Confirming access code.";
+	close2;
+	sleep 3000;
+	npctalk "Probationary researcher : The access code matches. I will open the door.";
+	sleep 6000;
+	npctalk "Probationary researcher : You may now enter. Please note that you cannot open the door from the other side.";
+	if ('switch_enabled == 0) {
+		'switch_enabled = 1;
+		enablenpc instance_npcname("#central_warp_1");
+		enablenpc instance_npcname("#central_warp_2");
+		enablenpc instance_npcname("#central_warp_3");
+		enablenpc instance_npcname("Main Switch#");
+		enablenpc instance_npcname("Senior researcher#pa082");
+		enablenpc instance_npcname("effect_switch");
+		for ( .@i = 1; .@i <= 8; ++.@i )
+			enablenpc instance_npcname( "Switch" + .@i + "#" );
+		'code = 5 * gettime(DT_DAYOFMONTH);
+	}
+	end;
+
+OnInstanceInit:
+	'map_name$ = instance_mapname("1@lab");
+	'code_found = 'code = 0;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		'switch_position[.@i] = 0;
+
+	// Entrance
+	disablenpc instance_npcname("#central_warp_1");
+	disablenpc instance_npcname("#central_warp_2");
+	disablenpc instance_npcname("#central_warp_3");
+
+	// Switchs
+	disablenpc instance_npcname("Main Switch#");
+	disablenpc instance_npcname("Senior researcher#pa082");
+	disablenpc instance_npcname("effect_switch");
+	for ( .@i = 1; .@i <= 8; ++.@i )
+		disablenpc instance_npcname( "Switch" + .@i + "#" );
+
+	// Experiments
+	disablenpc instance_npcname("#central_warp_4");
+	disablenpc instance_npcname("#central_warp_5");
+	disablenpc instance_npcname("DR Silvia#pa0829");
+	disablenpc instance_npcname("DR Federico#pa0829");
+	disablenpc instance_npcname("DR Artemia#pa0829");
+	disablenpc instance_npcname("DR Vincent#pa0829");
+	disablenpc instance_npcname("#wp01");
+	disablenpc instance_npcname("#wp02");
+	for ( .@i = 1; .@i <= 14; ++.@i )
+		hideonnpc instance_npcname("#gen_" + (.@i < 10 ? "0" : "") + .@i);
+	disablenpc instance_npcname("#central_warp_6");
+	end;
+}
+
+// Switchs
+1@lab,37,37,3	script	Switch1#	CLEAR_NPC,{
+	.@num = charat( strnpcinfo(1),6 );
+	setarray .@position$[0], "OFF", "ON";
+	mes "[Switch " + .@num + "]";
+	mes "The switch is currently in the " + .@position$[ 'switch_position[.@num] ] + " position. What will you do?";
+	next;
+	'switch_position[.@num] = !( select( "ON","OFF" ) - 1 );
+	close;
+}
+1@lab,39,37,3	duplicate(Switch1#)	Switch2#	CLEAR_NPC
+1@lab,41,37,3	duplicate(Switch1#)	Switch3#	CLEAR_NPC
+1@lab,43,37,3	duplicate(Switch1#)	Switch4#	CLEAR_NPC
+1@lab,46,37,3	duplicate(Switch1#)	Switch5#	CLEAR_NPC
+1@lab,48,37,3	duplicate(Switch1#)	Switch6#	CLEAR_NPC
+1@lab,50,37,3	duplicate(Switch1#)	Switch7#	CLEAR_NPC
+1@lab,52,37,3	duplicate(Switch1#)	Switch8#	CLEAR_NPC
+
+1@lab,34,37,3	script	Main Switch#	CLEAR_NPC,{
+	.@string$ = 'switch_position[1] + "" + 'switch_position[2] + "" + 'switch_position[3] + "" + 'switch_position[4] + "" +
+		'switch_position[5] + "" + 'switch_position[6] + "" + 'switch_position[7] + "" + 'switch_position[8];
+	.@current_code = strtol( .@string$,2 );
+	npctalk "Today's access code " + 'code + ", currently entered code " + .@current_code + ".";
+	sleep 6000;
+	if ('code_found > 0)
+		npctalk "The door is already open.";
+	else if (.@current_code != 'code)
+		npctalk "The code is incorrect. Please try again.";
+	else {
+		'code_found = 1;
+		npctalk "The code is correct. Opening door.";
+		enablenpc instance_npcname("#central_warp_4");
+		enablenpc instance_npcname("#central_warp_5");
+		enablenpc instance_npcname("DR Silvia#pa0829");
+		enablenpc instance_npcname("DR Federico#pa0829");
+		enablenpc instance_npcname("DR Artemia#pa0829");
+		enablenpc instance_npcname("DR Vincent#pa0829");
+		enablenpc instance_npcname("#wp01");
+		enablenpc instance_npcname("#wp02");
+		donpcevent instance_npcname("effect_switch") + "::OnStop";
+	}
+	end;
+}
+
+1@lab,45,32,3	script	Senior researcher#pa082	4_LGTSCIENCE,{
+	if ('code_found > 0) {
+		mes "[Senior Researcher]";
+		mes "The door is open so you may now enter. Please note that you cannot open the door from the other side.";
+		close;
+	}
+	mes "[Senior Researcher]";
+	mes "It seems you are here to participate in the particle acceleration experiment.";
+	next;
+	mes "[Senior Researcher]";
+	mes "Today's access code is ^0000ff" + 'code + "^000000.";
+	mes "The code needs to be entered as a binary number. Use the switches behind me to enter it.";
+	next;
+	mes "[Senior Researcher]";
+	mes "After entering the code press the main button near the entrance.";
+	for ( .@i = 1; .@i <= 8; ++.@i )
+		specialeffect EF_STEAL, AREA, instance_npcname("Switch" + .@i + "#");
+	close2;
+	donpcevent instance_npcname("effect_switch") + "::OnStart";
+	end;
+}
+
+1@lab,1,1,0	script	effect_switch	-1,{
+OnStart:
+OnTimer2000:
+	specialeffect 203,AREA, instance_npcname("Main Switch#");
+	for ( .@i = 1; .@i <= 8; ++.@i )
+		specialeffect (203+.@i),AREA, instance_npcname("Switch" + .@i + "#");
+	initnpctimer;
+	end;
+OnStop:
+	stopnpctimer;
+	end;
+}
+
+1@lab,81,84,7	script	DR Silvia#pa0829	4_F_SCIENCE,{
+	mes "[DR Silvia]";
+	mes "After the experiment I want to go home and enjoy an ice cold beer and some fried chicken.";
+	next;
+	mes "[DR Silvia]";
+	mes "I haven't been home for almost 2 years.";
+	next;
+	mes "^0000ffSilvia is looking at the particle accelerator device with a very exhausted look.^000000";
+	close;
+}
+
+1@lab,80,87,7	script	DR Federico#pa0829	4_LGTSCIENCE,{
+	mes "[DR Federico]";
+	mes "This device is more amazing the more I look at. There has never been a particle accelerator made in this scale.";
+	next;
+	mes "[DR Federico]";
+	mes "With this size I wonder if it's possible to create a small scale black hole...";
+	next;
+	mes "[DR Federico]";
+	mes "Ah, I was just talking. Such an event is closer to a disaster than an experiment haha.";
+	close;
+}
+
+1@lab,80,90,6	script	DR Artemia#pa0829	4_F_SCIENCE,{
+	mes "[DR Artemia]";
+	mes "Look, reality doesn't like it when you grab a piece of string and give it a tug.";
+	next;
+	mes "[DR Artemia]";
+	mes "A dimensional distortion can happen with such a powerful particle acceleration.";
+	next;
+	mes "[DR Artemia]";
+	mes "I have a bad feeling about this because... Nature finds a way.";
+	close;
+}
+
+1@lab,81,93,6	script	DR Vincent#pa0829	4_LGTSCIENCE,{
+	mes "[DR Vincent]";
+	mes "The machine is perfect. Nothing will go wrong!";
+	next;
+	mes "[DR Vincent]";
+	mes "Artemia worries too much. Anyway I'm going on a trip after the experiment.";
+	close;
+}
+
+1@lab,80,89,0	script	#wp01	HIDDEN_WARP_NPC,9,9,{
+	end;
+OnTouch:
+	donpcevent instance_npcname("#wp02") + "::OnStart";
+	disablenpc instance_npcname("#wp01");
+	end;
+}
+
+1@lab,80,89,0	script	#wp02	HIDDEN_WARP_NPC,{
+	end;
+
+function effect_gen {
+	.@effect = getarg(0);
+	.@count = getargcount();
+	for ( .@i = 1; .@i < .@count; .@i++ )
+		specialeffect .@effect, AREA, getd( "'gen_" + ( getarg(.@i) < 10 ? "0" : "" ) + getarg(.@i) + "$" );
+	return;
+}
+
+function effect_1_10_gen { effect_gen( getarg(0), 1,2,3,4,5,6,7,8,10 ); }
+
+OnStart:
+	'vincent$ = instance_npcname("DR Vincent#pa0829");
+	'federico$ = instance_npcname("DR Federico#pa0829");
+	'silvia$ = instance_npcname("DR Silvia#pa0829");
+	'artemia$ = instance_npcname("DR Artemia#pa0829");
+	'gen_01$ = instance_npcname("#gen_01");
+	'gen_02$ = instance_npcname("#gen_02");
+	'gen_03$ = instance_npcname("#gen_03");
+	'gen_04$ = instance_npcname("#gen_04");
+	'gen_05$ = instance_npcname("#gen_05");
+	'gen_06$ = instance_npcname("#gen_06");
+	'gen_07$ = instance_npcname("#gen_07");
+	'gen_08$ = instance_npcname("#gen_08");
+	'gen_09$ = instance_npcname("#gen_09");
+	'gen_10$ = instance_npcname("#gen_10");
+	'gen_11$ = instance_npcname("#gen_11");
+	'gen_12$ = instance_npcname("#gen_12");
+	'gen_13$ = instance_npcname("#gen_13");
+	'gen_14$ = instance_npcname("#gen_14");
+
+	npctalk "Federico : Let us get started. Hm... Are you ready Dr. Fresa?", 'federico$;
+	sleep 5000;
+	npctalk "Artemia : Probably making final confirmation checks. An experiment of this scope needs such caution.", 'artemia$;
+	sleep 6000;
+	npctalk "Silvia : Care is needed for operating a finished product for the first experiment.", 'silvia$;
+	sleep 4000;
+	npctalk "Vincent : Ah, I hope we can finish quickly so I can go eat chicken.", 'vincent$;
+	sleep 3000;
+	npctalk "Silvia : Ah! I like that too! Call me when you go.", 'silvia$;
+	sleep 6000;
+	mapannounce 'map_name$, "?????: Ah, ah, one two one two, mic test.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 2000;
+	npctalk "Federico : She's here.", 'federico$;
+	sleep 3000;
+	mapannounce 'map_name$, "?????: Chief director Lona Fresa of project particle accelerator.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	mapannounce 'map_name$, "Lona Fresa : Current time " + gettime(DT_MONTH) + " Month " + gettime(DT_DAYOFMONTH) + " Day 25 minutes after 10.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	mapannounce 'map_name$, "Lona Fresa : Testing the effects of particle acceleration on its surroundings in an open space.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	npctalk "Artemia : Aah... I really don't like this experiment.", 'artemia$;
+	sleep 3000;
+	mapannounce 'map_name$, "Lona Fresa : Starting the experiment. Chief researcher Dr. Federico, Artemia, Silvia, Vincent and assistant researchers.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	npctalk "Artemia : Let us start~", 'artemia$;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	sleep 1800;
+	effect_gen( EF_MAGICALATTHIT, 1,3 );
+	sleep 700;
+	npctalk "Vincent : Starting rotation of generator.", 'vincent$;
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8 );
+	sleep 1500;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4 );
+	npctalk "Federico : Generator rotation fixed at 10000 RPM.", 'federico$;
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6 );
+	sleep 1000;
+	npctalk "Silvia : Voltage is still within the tolerance band.", 'silvia$;
+	sleep 400;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2 );
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7 );
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9 );
+	mapannounce 'map_name$, "Lona Fresa : This experiment is for the creation of new material that hasn't existed before.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,2,3,4,5,6,7,8,9 );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : Recorders make sure to make detailed records of the catalyst bed's reaction when it is installed to the accelerator.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 500;
+	npctalk "Artemia : Contacting catalyst bed number 1.", 'artemia$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1100;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 850;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 850;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 700;
+	npctalk "Silvia : Generator voltage unstable. Still within tolerance band.", 'silvia$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	specialeffect EF_BLASTMINEBOMB, AREA, 'gen_01$;
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 430;
+	npctalk "Silvia : Detecting heat close to the tolerance band between the catalyst bed and the accelerator!", 'silvia$;
+	effect_gen( EF_BLASTMINEBOMB, 1,3 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8 );
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4 );
+	sleep 600;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	npctalk "Vincent : Accelerator is heating.", 'vincent$;
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6 );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7 );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9 );
+	npctalk "Vincent: 320c.", 'vincent$;
+	sleep 300;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 600;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9,5 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 930;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 780;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	npctalk "Vincent : 670c It's heating up too fast!", 'vincent$;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 450;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 330;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	npctalk "Vincent : Broke through 1000c!!!! Dr. Fresa! We have to momentarily stop the device!", 'vincent$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 530;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 650;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : It is fine.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 733;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	npctalk "Silvia : It is not a simple problem. The temperature has far exceeded the predicted numbers!", 'silvia$;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 330;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : This problem was predicted. Maintain current state.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 500;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 600;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 600;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	npctalk "Artemia :  But at least.. I will have chicken later.", 'artemia$;
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 850;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: Receiving changed circumstance through main server. Detecting dimensional distortion between particle accelerator and catalyst.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 710;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 330;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	npctalk "Artemia : Dr. Fresa! It's a dangerous situation of Mother Computer. Shut down the main power!", 'artemia$;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 360;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 530;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 930;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: Alert. New unidentified creature approaching from demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 810;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	npctalk "Vincent : What is going on. Somebody turn off that computer!", 'vincent$;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 380;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 530;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: A new organism will be soon transmitted from the demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 430;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 710;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 730;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 880;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 5 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 4 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 3 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 2 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 1 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 600;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Unidentifiable creature discovered. Temporarily shutting down main power.", bc_map,0xFFFF00,FW_NORMAL,13;
+	callsub S_Spawn,1;
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 750;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	npctalk "Artemia : What... what is that?!", 'artemia$;	// text can stack if OnMyMobDead already called
+	sleep 3000;
+	npctalk "Silvia : It isn't reacting to us. Maybe it can't see us?", 'silvia$;
+	sleep 5000;
+	npctalk "Vincent : But it is hostile to the project assistants! What is that creature!?", 'vincent$;
+	sleep 5000;
+	npctalk "Vincent : I can't move my body! I think space is frozen!", 'vincent$;
+	end;
+
+OnMyMobDead1:
+	mapannounce 'map_name$, "MA-4885: Unidentified creature eliminated. Restarting device.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 2000;
+	npctalk "Artemia: MA-4885!! On who's order are you restarting! Stop!!", 'artemia$;
+	sleep 3000;
+	mapannounce 'map_name$, "MA-4885: Unrecognized command.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 6000;
+	npctalk "Artemia: Dr. Fresa!! We have to stop! This is too dangerous!", 'artemia$;
+	sleep 3000;
+	mapannounce 'map_name$, "Lona Fresa : ......", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 3000;
+	npctalk "Vincent: Fresa! We don't have time! Turn off the computer!!", 'vincent$;
+	sleep 3000;
+	mapannounce 'map_name$, "MA-4885: Restarting particle acceleration procedure.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 3000;
+	npctalk "Silvia : Fresa! Make a decision!", 'silvia$;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	sleep 1800;
+	effect_gen( EF_MAGICALATTHIT, 1,3 );
+	mapannounce 'map_name$, "Lona Fresa : ......", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 1700;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8 );
+	sleep 1500;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4 );
+	sleep 1400;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6 );
+	sleep 1300;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2 );
+	mapannounce 'map_name$, "Lona Fresa : Current time 20 minutes past 11. Momentarily postpone experiment.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7 );
+	sleep 1100;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9 );
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9,5 );
+	sleep 930;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Access denied. Cannot understand command.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 810;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_BLASTMINEBOMB, AREA, 'gen_01$;
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : Mother Comp MA-4885. I am your Chief director Dr. Fresa. Cease current progress.", bc_map,0xFF77,FW_NORMAL,12;
+	effect_gen( EF_BLASTMINEBOMB, 1,3 );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8 );
+	sleep 750;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 700;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Access denied. Cannot understand command.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 380;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6 );
+	sleep 410;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2 );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 450;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9 );
+	npctalk "Federico : Damnit! Something else is coming!!", 'federico$;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9,5 );
+	sleep 600;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: Alert. New unidentified creature approaching from demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 500;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 730;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 430;
+	npctalk "Vincent : Oh... damnit. This is why you shouldn't install the newest CPU.", 'vincent$;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 930;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 400;
+	npctalk "Federico : Ah... my body...can't move. Damn", 'federico$;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 600;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: A new organism will be soon transmitted from the demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 530;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 700;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 5 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 4 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 3 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 2 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: 1 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 600;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	mapannounce 'map_name$, "MA-4885: Unidentifiable creature discovered. Temporarily shutting down main power.", bc_map,0xFFFF00,FW_NORMAL,13;
+	callsub S_Spawn,2;
+	sleep 500;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 600;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 350;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 600;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 350;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	npctalk "Silvia: Same as the last time. It seems to have no interest in us.", 'silvia$;
+	sleep 6000;
+	npctalk "Vincent: Let's completely shut down the mother computer while the main power is temporarily off!", 'vincent$;
+	sleep 4000;
+	mapannounce 'map_name$, "MA-4885: Answering question. This space is currently stuck in a distorted phase.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	mapannounce 'map_name$, "MA-4885: Direct interaction between the demi-plane creature and this world's organisms will be possible after the phase has been balanced.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	mapannounce 'map_name$, "MA-4885: Conducting calculations to restore balance to distorted phase. Please wait a moment.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	npctalk "Artemia: What is that crazy clump of metal saying? It is saying we aren't in the same phase as those monster like things?", 'artemia$;
+	sleep 5000;
+	npctalk "Federico: Aah, I guess we should hope that Mother computer doesn't make the right calculations.", 'federico$;
+	end;
+
+OnMyMobDead2:
+	mapannounce 'map_name$, "MA-4885: Unidentified creature eliminated. Phase adjustment failed. Restarting relevant procedure.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 4000;
+	mapannounce 'map_name$, "Lona Fresa : Mother Computer MA-4885. Looks like you are trying to synchronize the other dimension and this world.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 7000;
+	mapannounce 'map_name$, "MA-4885: That is correct.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	npctalk "Artemia: Dr. Fresa!! This ridiculous event is completely unrelated to our original experiment!", 'artemia$;
+	sleep 7000;
+	mapannounce 'map_name$, "Lona Fresa : I have fully realized that.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 6000;
+	npctalk "Silvia: Can we not shut down main power completely?", 'silvia$;
+	sleep 6000;
+	mapannounce 'map_name$, "MA-4885: Restarting particle acceleration procedure.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	mapannounce 'map_name$, "Lona Fresa : " + gettime(DT_MONTH) + " Month " + gettime(DT_DAYOFMONTH) + " Day. Current time 38 minutes past 11 temporarily terminating particle accelerator project.", bc_map,0xFF77,FW_NORMAL,12;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	sleep 1834;
+	effect_gen( EF_MAGICALATTHIT, 1,3 );
+	sleep 1734;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8 );
+	sleep 1550;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4 );
+	mapannounce 'map_name$, "Lona Fresa : Ending record with reasons of Mother Computer malfunction and overheating of accelerator.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 1400;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6 );
+	sleep 1300;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2 );
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7 );
+	sleep 700;
+	npctalk "Silvia : Alright! Now Dr. Fresa just has to shut down the power.", 'silvia$;
+	sleep 400;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9 );
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9,5 );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : Cutting off power to Mother Computer MA-4885.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	sleep 300;
+	effect_gen( EF_MAGICALATTHIT, 2,3,4,5,6,7,8,9,10 );
+	sleep 700;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Suspending operation of all equipment as per Administrator request.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: .....command... ----!!!  Zizip... ---!! -- following command ----- !! Zizip.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 750;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 750;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 750;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	npctalk "Artemia : Whew... is it over?", 'artemia$;
+	sleep 6000;
+	mapannounce 'map_name$, "Lona Fresa : Completed shut down of Mother computer MA-4885. Confirm equipment suspension", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	npctalk "Silvia: Looks like it's over.", 'silvia$;
+	sleep 4000;
+	npctalk "Federico: Plant initialization is the best.", 'federico$;
+	sleep 4000;
+	mapannounce 'map_name$, "Lona Fresa : Recording all experiment progress and terminating at current point.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	mapannounce 'map_name$, "Lona Fresa : The final experiment failure is unfortunate. But I will promise a more perfect experiment next time.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	mapannounce 'map_name$, "Lona Fresa : Good work everybody.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 5000;
+	npctalk "Artemia: It seems to be over.", 'artemia$;
+	sleep 5000;
+	npctalk "Federico: I thought it was Fresa's dogmatic experiment. But it was a problem with the mother comp.", 'federico$;
+	sleep 5000;
+	npctalk "Silvia: Let's just calm down. And get out of this dreadful laboratory.", 'silvia$;
+	sleep 5000;
+	npctalk "Vincent : By the way... I still can't move so what is going on?", 'vincent$;
+	sleep 5000;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	mapannounce 'map_name$, "MA-4885: CODE NAME - DESCENT", bc_map,0xFF0000,FW_NORMAL,16;
+	sleep 2000;
+	effect_gen( EF_MAGICALATTHIT, 1,3 );
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	sleep 1700;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8 );
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 1500;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4 );
+	sleep 400;
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	sleep 1000;
+	npctalk "Federico : What? Wasn't this the initialization stage?", 'federico$;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6 );
+	sleep 630;
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	sleep 800;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2 );
+	mapannounce 'map_name$, "MA-4885 : Starting final phase transformation.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1200;
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7 );
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9 );
+	sleep 430;
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 480;
+	npctalk "Silvia : It's all over.", 'silvia$;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9,5 );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	sleep 700;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 930;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	sleep 780;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: A new organism will be soon transmitted from the demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 400;
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	sleep 600;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1130;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	sleep 700;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 5 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 4 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 3 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 2 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: 1 seconds remaining", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Temporarily shutting down main power for syntonization with transformed phase.", bc_map,0xFFFF00,FW_NORMAL,13;
+	callsub S_Spawn,3;
+	mapannounce 'map_name$, "MA-4885: Final phase transformation process.", bc_map,0xFFFF00,FW_NORMAL,13;
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	mapannounce 'map_name$, "MA-4885: This world will be summoned to the demi-plane after the phase interference phenomenon with creature fades.", bc_map,"0xFFFF00";
+	end;
+
+OnMyMobDead3:
+	mapannounce 'map_name$, "MA-4885: Phase synchronization completed before creature is eliminated. Starting dimensional travel.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 2500;
+	specialeffect EF_MAGICALATTHIT, AREA, 'gen_01$;
+	sleep 2000;
+	effect_gen( EF_MAGICALATTHIT, 1,3 );
+	sleep 1800;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8 );
+	sleep 1500;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4 );
+	sleep 1400;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6 );
+	sleep 1300;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2 );
+	sleep 1200;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7 );
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9 );
+	mapannounce 'map_name$, "MA-4885: Conducting calculations to restore balance to distorted phase. Please wait a moment.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 1000;
+	effect_gen( EF_MAGICALATTHIT, 1,3,8,4,6,2,7,9,5 );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 810;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	npctalk "Federico : Mother comp is conducting a tremendous experiment going beyond what we thought of.", 'federico$;
+	sleep 710;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 550;
+	npctalk "Vincent : Seems more magnanimous than we are. Fresa!!! Are you listening? Sound the alarm!", 'vincent$;
+	sleep 310;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 500;
+	npctalk "Vincent : We should at least evacuate the people in the other labs.", 'vincent$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 960;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 910;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 730;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Lona Fresa : But ... you.", bc_map,0xFF77,FW_NORMAL,12;
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1110;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 880;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 430;
+	npctalk "Silvia : Gee, I don't know what will happen but I am curious about shifting dimensions. Don't mind me!", 'silvia$;
+	sleep 360;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 880;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 510;
+	npctalk "Artemia : Dimension moving while experimenting on new material production. Got caught up in a different level of an experiment.", 'artemia$;
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 883;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1100;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Alarm System : Alert! Alert! Class 1 alert issued from the Particle Laboratory. All researchers evacuate to the bunker.", bc_map,0xFF0000,FW_NORMAL,13;
+	sleep 850;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 950;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "Alarm System : I repeat. Class 1 alert issued from the Particle Laboratory. All researchers evacuate to the bunker.", bc_map,0xFF0000,FW_NORMAL,13;
+	sleep 600;
+	npctalk "Federico : Is this how it feels to move dimensions. How strange...", 'federico$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1030;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 1000;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 380;
+	specialeffect EF_SUI_EXPLOSION,AREA,'federico$;
+	disablenpc 'federico$;
+	mapannounce 'map_name$, "MA-4885: Dimension move at 20% progress. There could be dimensional interference with certain creatures. Please be aware.", bc_map,0xFFFF00,FW_NORMAL,13;
+	npctalk "Vincent : I wonder if the others evacuated?", 'vincent$;
+	specialeffect EF_BLASTMINEBOMB, AREA, 'gen_01$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 500;
+	effect_gen( EF_BLASTMINEBOMB, 1,3 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 900;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 380;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8 );
+	sleep 550;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 350;
+	specialeffect EF_SUI_EXPLOSION,AREA,'vincent$;
+	disablenpc 'vincent$;
+	npctalk "Silvia : Ah...... I should be seeing this while having chicken and beer...", 'silvia$;
+	sleep 380;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4 );
+	sleep 700;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 730;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 860;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 350;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2 );
+	sleep 360;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	specialeffect EF_SUI_EXPLOSION,AREA,'silvia$;
+	disablenpc 'silvia$;
+	mapannounce 'map_name$, "MA-4885: Dimension move at 78% progress. Most of the dimension encroached by demi-plane.", bc_map,0xFFFF00,FW_NORMAL,13;
+	npctalk "Artemia : Ha... whose going to eat the chicken now?", 'artemia$;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7 );
+	sleep 830;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9 );
+	sleep 350;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 630;
+	effect_gen( EF_BLASTMINEBOMB, 1,3,8,4,6,2,7,9,5 );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 930;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 400;
+	specialeffect EF_SUI_EXPLOSION,AREA,'artemia$;
+	disablenpc 'artemia$;
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	sleep 400;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 934;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	sleep 500;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 630;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 430;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	sleep 360;
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 460;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 430;
+	specialeffect EF_LORD, AREA, 'gen_11$;
+	sleep 400;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	sleep 800;
+	effect_1_10_gen( EF_BLASTMINEBOMB );
+	effect_1_10_gen( EF_MAGICALATTHIT );
+	mapannounce 'map_name$, "MA-4885: Dimension move 100% completed. Welcome to the demi-plane dimension.", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 600;
+	specialeffect EF_LORD, AREA, 'gen_12$;
+	sleep 1800;
+	specialeffect EF_LORD, AREA, 'gen_13$;
+	sleep 2000;
+	specialeffect EF_LORD, AREA, 'gen_14$;
+	mapannounce 'map_name$, "MA-4885: A gateway possible for contact with the demi-plane open at 3 o'clock of the laboratory.", bc_map,0xFFFF00,FW_NORMAL,13;
+	enablenpc instance_npcname("#central_warp_6");
+	sleep 5000;
+	mapannounce 'map_name$, "MA-4885: Cannot guarantee what kind of dimension will be met due to the instability of the gateway...", bc_map,0xFFFF00,FW_NORMAL,13;
+	sleep 5000;
+	mapannounce 'map_name$, "MA-4885: If there are any surviving organisms I wish you luck. I hope to see you again.", bc_map,0xFFFF00,FW_NORMAL,13;
+	end;
+
+S_Spawn:
+	.@round = getarg(0);
+	switch( .@round ) {
+	case 1:
+		setarray .@mob_id[0],
+			1087,	// Orc Hero
+			1147,	// Maya
+			1190,	// Orc Lord
+			1115,	// Eddga
+			1086,	// GTB
+			1038,	// Osiris
+			1159,	// Phreeoni
+			1389,	// Dracula
+			1046,	// Doppelganger
+			1046,	// Doppelganger
+			1059,	// Mistress
+			1150,	// Moonlight
+			1688,	// Lady Tanee
+			1039,	// Baphomet
+			1089,	// Toad
+			1092,	// Vagabond Wolf
+			1088,	// Vocal
+			1096,	// Angeling
+			1093,	// Eclipse
+			1120,	// Ghostring
+			1090;	// Mastering
+		break;
+	case 2:
+		setarray .@mob_id[0],
+			1980,	// Kublin
+			1157,	// Pharaoh
+			1112,	// Drake
+			1251,	// Stormy Knight
+			2068,	// Boitata
+			1373,	// Lord of Death
+			2156,	// Leak
+			1272,	// Dark Lord
+			1518,	// Bacsojin
+			1252,	// Garm
+			1779,	// Ktullanux
+			1708,	// Thanatos
+			1089,	// Toad
+			1092,	// Vagabond Wolf
+			1088,	// Vocal
+			1096,	// Angeling
+			1093,	// Eclipse
+			1120,	// Ghostring
+			1090;	// Mastering
+		break;
+	case 3:
+		setarray .@mob_id[0],
+			1623,	// RSX
+			1418,	// Evil Snake Lord
+			1312,	// Turtle Generals
+			1785,	// Atroce
+			1734,	// Kiel
+			1719,	// Detale
+			1768,	// Gloom Under Night
+			2087,	// Queen Scaraba
+			1751,	// Valkyrie Randgris
+			2253,	// Daehyon
+			2255,	// Kades
+			1832,	// Ifrit
+			1873,	// Beezlebub
+			1089,	// Toad
+			1092,	// Vagabond Wolf
+			1088,	// Vocal
+			1096,	// Angeling
+			1120,	// Ghostring
+			1090,	// Mastering
+			1093;	// Eclipse
+		break;
+	}
+	.@r = rand( getarraysize(.@mob_id) );
+	monster 'map_name$,90,88, "Unidentified creature",.@mob_id[.@r],1, instance_npcname("#wp02") + "::OnMyMobDead" + .@round;
+	return;
+}
+
+1@lab,91,80,5	script	#gen_01	CLEAR_NPC,{ end; }
+1@lab,96,81,5	duplicate(#gen_01)	#gen_02	CLEAR_NPC
+1@lab,99,85,5	duplicate(#gen_01)	#gen_03	CLEAR_NPC
+1@lab,99,91,5	duplicate(#gen_01)	#gen_04	CLEAR_NPC
+1@lab,96,95,5	duplicate(#gen_01)	#gen_05	CLEAR_NPC
+1@lab,91,97,5	duplicate(#gen_01)	#gen_06	CLEAR_NPC
+1@lab,85,96,5	duplicate(#gen_01)	#gen_07	CLEAR_NPC
+1@lab,82,91,5	duplicate(#gen_01)	#gen_08	CLEAR_NPC
+1@lab,82,86,5	duplicate(#gen_01)	#gen_09	CLEAR_NPC
+1@lab,85,81,5	duplicate(#gen_01)	#gen_10	CLEAR_NPC
+1@lab,90,97,5	duplicate(#gen_01)	#gen_11	CLEAR_NPC
+1@lab,82,89,5	duplicate(#gen_01)	#gen_12	CLEAR_NPC
+1@lab,91,80,5	duplicate(#gen_01)	#gen_13	CLEAR_NPC
+1@lab,99,88,5	duplicate(#gen_01)	#gen_14	CLEAR_NPC
+
+1@lab,102,28,0	warp2	#central_warp_1	2,2,1@lab,97,28
+1@lab,80,28,0	warp2	#central_warp_2	2,2,1@lab,75,28
+1@lab,58,28,0	warp2	#central_warp_3	2,2,1@lab,53,28
+1@lab,29,38,0	warp2	#central_warp_4	2,2,1@lab,29,43
+1@lab,48,82,0	warp2	#central_warp_5	2,2,1@lab,58,82
+1@lab,123,88,0	warp2	#central_warp_6	2,2,verus01,152,150

+ 589 - 0
npc/re/instances/LastRoom.txt

@@ -0,0 +1,589 @@
+//===== rAthena Script =======================================
+//= The Last Room
+//===== Description: =========================================
+//= [Walkthrough Conversion]
+//= The Last Room Instance
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+un_myst,163,38,5	script	Mark	4_M_BLUEMAN,{
+	mes "[Mark]";
+	cutin "bu_mark1.bmp",0;
+
+	if (BaseLevel < 150) {
+		mes "It's dangerous here.";
+		mes "It would be better to come back next time when we are stronger.";
+		close3;
+	}
+	if (getcharid(1) < 1) {
+		mes "...It doesn't feel right here.";
+		mes "It may be dangerous alone so it might be better to form a party.";
+		close3;
+	}
+	mes "Unlike the other doors we saw this door has traces of it being blocked from this side.";
+	next;
+	mes "[Mark]";
+	mes "Is there something inside?";
+	next;
+	switch( checkquest(11379,PLAYTIME) ) {
+	case -1:
+		.@party_id = getcharid(1);
+		if (getpartyleader(.@party_id,2) == getcharid(0))
+			.@string$ = "Open door.";
+		.@s = select( .@string$, "Go in.", "Quit." );
+		if (.@s == 1) {
+			mes "[Mark]";
+			mes "I'm opening the door.";
+			mes "Go in when the door is completely open.";
+			instance_create("Last room");
+		}
+		else if (.@s == 2) {
+			mes "[Mark]";
+			switch( instance_enter("Last room") ) {
+			case IE_NOMEMBER:
+			case IE_NOINSTANCE:
+			case IE_OTHER:
+				mes "The door won't open right.";
+				break;
+			case IE_OK:
+				mapannounce "un_myst", strcharinfo(0) + " of the party, " + getpartyname(.@party_id) + ", is entering Last room.",bc_map,"0x00FF99";
+				setquest 11379;// Final Room
+				if (isbegin_quest(11380) == 0)
+					setquest 11380;// Final Room
+				break;
+			}
+		}
+		close3;
+	case 0:
+	case 1:
+		mes "[Mark]";
+		cutin "bu_mark1.bmp",0;
+		mes "...You look tired.";
+		mes "Since you went there you should take a day to rest.";
+		close3;
+	case 2:
+		mes "[Mark]";
+		cutin "bu_mark1.bmp",0;
+		mes "I can't believe you want to enter a place like this again...";
+		erasequest 11379;// Final Room
+		close3;
+	}
+}
+
+// 1st step
+1@uns,139,41,3	script	Mark#room1	4_M_BLUEMAN,{
+	mes "[Mark]";
+	mes "Something doesn't feel right. It is better that we move carefully.";
+	cutin "bu_mark4.bmp",0;
+	close3;
+}
+
+1@uns,145,32,5	script	Alp#room1	4_M_BLACKMAN,{
+	mes "[Alp]";
+	mes "There are suspicious traces everywhere.";
+	mes "Some kind of heavy machine seems to have passed...";
+	cutin "bu_alp1.bmp",2;
+	close3;
+}
+
+1@uns,145,37,3	script	Tamarin#room1	4_M_TAMARIN,{
+	mes "[Tamarin]";
+	mes "Verity, are you alright?";
+	mes "You do not look good...";
+	cutin "ep143_taang.bmp",2;
+	close3;
+}
+
+1@uns,143,38,5	script	Du#room1	4_M_REDMAN,{
+	mes "[Du]";
+	mes "I have a bad feeling about this...";
+	cutin "bu_du1.bmp",2;
+	close3;
+}
+
+1@uns,143,39,5	script	Maggi#room1	4_F_PINKWOMAN,{
+	mes "[Maggi]";
+	mes "Aahh....";
+	cutin "bu_maggi4.bmp",2;
+	close3;
+}
+
+1@uns,144,37,3	script	Verity#room1	4_F_BERRYTEA,{
+	if ('protocole < 2) {
+		mes "[Verity]";
+		mes "Umph...I suddenly have a feeling that's not good.";
+		cutin "EP15_2_brt_6.bmp",2;
+		if (getpartyleader(getcharid(1),2) != getcharid(0)) {
+			mes "I wish to talk with the leader.";
+			close3;
+		}
+		npctalk "Verity: Umph...I suddenly have a feeling that's not good.";
+		next;
+		mes "[Verity]";
+		mes "Something is splitting my head....Ugh....";
+		npctalk "Verity: Something is splitting my head....Ugh....";
+		next;
+		mes "[Verity]";
+		mes "....Ugh....";
+		npctalk "Verity: ....Ugh....";
+		next;
+		mes "[Du]";
+		mes "Sister! Are you alright?!";
+		cutin "bu_du5.bmp",2;
+		npctalk "Du: Sister! Are you alright?!", instance_npcname("Du#room1");
+		next;
+		mes "[Verity]";
+		mes "....Have to go back....";
+		cutin "EP15_2_brt_7.bmp",2;
+		npctalk "Verity: ....Have to go back....";
+		next;
+		mes "[Tamarin]";
+		mes "Verity, are you alright?";
+		mes "Can you walk?";
+		cutin "ep143_tahuk.bmp",2;
+		npctalk "Tamarin: Verity, are you alright? Can you walk?", instance_npcname("Tamarin#room1");
+		next;
+		mes "[Verity]";
+		mes "Ugh...";
+		cutin "EP15_2_brt_6.bmp",2;
+		npctalk "Verity: Ugh...";
+		next;
+		mes "[Du]";
+		mes "" + strcharinfo(0) + "! I think it is better that you go back.";
+		cutin "bu_du5.bmp",2;
+		npctalk "Du: " + strcharinfo(0) + "! I think it is better that you go back.", instance_npcname("Du#room1");
+		next;
+		mes "[Verity]";
+		mes "N...no. I will catch up soon so go on ahead.";
+		cutin "EP15_2_brt_4.bmp",2;
+		npctalk "Verity: N...no. I will catch up soon so go on ahead.";
+		next;
+		mes "[Tamarin]";
+		mes "Then I will stay with Verity until she recovers so you can go on ahead.";
+		cutin "ep143_tahuk.bmp",2;
+		npctalk "Tamarin: Then I will stay with Verity until she recovers so you can go on ahead.";
+		close2;
+		'protocole = 1;
+		cutin "",255;
+	}
+	end;
+}
+
+1@uns,140,45,0	script	#lrdoor2	HIDDEN_WARP_NPC,6,6,{
+	end;
+OnTouch:
+	if ('protocole == 0)
+		warp 'map_name$,142,30;
+	else if ('protocole == 1) {
+		'protocole = 2;
+		disablenpc instance_npcname("#lrdoor2");
+		disablenpc instance_npcname("Mark#room1");
+		disablenpc instance_npcname("Du#room1");
+		disablenpc instance_npcname("Tamarin#room1");
+		disablenpc instance_npcname("Verity#room1");
+		disablenpc instance_npcname("Maggi#room1");
+		disablenpc instance_npcname("Alp#room1");
+		mapannounce 'map_name$, "-----------------Creak---------------------",bc_map,"0xFF0000";
+		sleep 2000;
+		mapannounce 'map_name$, "-----Creak---Wrr--------------------------",bc_map,"0xFF0000";
+		sleep 2000;
+		mapannounce 'map_name$, "--------------Wirrrrrrr-----------------",bc_map,"0xFF0000";
+		sleep 2000;
+		mapannounce 'map_name$, "-----Zizip--------Zizizip------------------",bc_map,"0xFF0000";
+		sleep 2000;
+		mapannounce 'map_name$, "System message : Intruder detected.",bc_map,"0xFF0000";
+		sleep 2000;
+		mapannounce 'map_name$, "System message : Sealing off entrance and eliminating intruder according to designated protocols.",bc_map,"0xFF0000";
+		donpcevent instance_npcname("protocole1") + "::OnStart";
+	}
+	end;
+}
+
+1@uns,1,1,0	script	protocole1	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("protocole1");
+	monster 'map_name$,47,49,"System message",3253,1, instance_npcname("protocole1") + "::OnMyMobDead2";
+	callsub S_Spawn;
+OnTimer300000:
+	mapannounce 'map_name$, "System message : Eliminating intruder.",bc_map,"0xFF0000";
+	callsub S_Spawn;
+S_Spawn:
+	initnpctimer;
+	.@npc_name$ = instance_npcname("protocole1");
+	// don't kill System message
+	killmonster 'map_name$, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$,118,56,131,67, "Machine Component",3251,6, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$, 62,82, 61,67, "Machine Component",3251,6, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$, 46,89, 64,96, "Machine Component",3251,6, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$,118,56,131,67, "Machine Component",3252,6, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$, 62,82, 61,67, "Machine Component",3252,6, .@npc_name$ + "::OnMyMobDead";
+	areamonster 'map_name$, 46,89, 64,96, "Machine Component",3252,6, .@npc_name$ + "::OnMyMobDead";
+	end;
+OnMyMobDead:
+OnMyMobDead2:
+	.@count = mobcount( 'map_name$, instance_npcname("protocole1") + "::OnMyMobDead" ) + mobcount( 'map_name$, instance_npcname("protocole1") + "::OnMyMobDead2" );
+	if (.@count < 1) {
+		mapannounce 'map_name$, "System message : First protocol failed. Commencing next protocol.",bc_map,"0xFF0000";
+		stopnpctimer;
+		enablenpc instance_npcname("Tamarin#room2");
+		disablenpc instance_npcname("protocole1");
+	}
+	end;
+}
+
+1@uns,67,97,3	script	Tamarin#room2	4_M_TAMARIN,{
+	mes "[Tamarin]";
+	mes "Huff huff... Verity suddenly huff huff couldn't even stand straight before huff huff...";
+	cutin "ep143_tahuk.bmp",2;
+	if (getpartyleader(getcharid(1),2) != getcharid(0)) {
+		next;
+		mes "[Tamarin]";
+		mes "I don't think this is a problem we can solve by talking amongst ourselves.";
+		mes "Let's ask the leader's opinion first.";
+		close3;
+	}
+	npctalk "Tamarin: Huff huff... Verity suddenly huff huff couldn't even stand straight before huff huff...";
+	next;
+	mes "[Tamarin]";
+	mes "Ran off so fast huff...huff... to even catch up. Huff huff";
+	npctalk "Tamarin: Ran off so fast huff...huff... to even catch up. Huff huff";
+	next;
+	mapannounce 'map_name$, "System message : An unidentified object is moving fast from Zone 1 to Zone 2.",bc_map,"0xFF0000";
+	mes "[Tamarin]";
+	mes "Uh... Could Verity have gone that far?";
+	npctalk "Tamarin: Uh... Could Verity have gone that far?";
+	next;
+	mapannounce 'map_name$, "System message : Commencing emergency protocol.",bc_map,"0xFF0000";
+	mes "[Tamarin]";
+	mes "We need to find Verity quickly";
+	npctalk "Tamarin: We need to find Verity quickly";
+	next;
+	mes "[Tamarin]";
+	mes "There is only the route going up so go ahead.";
+	npctalk "Tamarin: There is only the route going up so go ahead.";
+	close2;
+	if ('protocole == 2) {
+		'protocole = 3;
+		enablenpc instance_npcname("#lrdoor4");
+		for ( .@i = 1; .@i < 16; ++.@i )
+			enablenpc instance_npcname( "#lrboom" + .@i );
+		enablenpc instance_npcname("Verity#room2");
+		enablenpc instance_npcname("Verity#room3");
+	}
+	cutin "",255;
+	end;
+}
+
+// 2nd step
+1@uns,100,121,0	warp2	#lrdoor4	3,3,1@uns,145,107
+
+1@uns,157,94,0	script	#lrboom1	4_CRACK,2,2,{
+	end;
+OnTouch:
+	.@npc_name$ = instance_npcname( strnpcinfo(0) );
+	areamonster 'map_name$,176,26,196,52, "Machine Component", (3251 + rand(2)), 3, .@npc_name$ + "::OnMyMobDead";
+	mapannounce 'map_name$, "System message : Intruder detected in Zone 2.",bc_map,"0xFF0000";
+	disablenpc .@npc_name$;
+	end;
+OnMyMobDead:
+	end;
+}
+1@uns,164,97,0	duplicate(#lrboom1)	#lrboom2	4_CRACK,2,2
+1@uns,166,92,0	duplicate(#lrboom1)	#lrboom3	4_CRACK,2,2
+1@uns,170,96,0	duplicate(#lrboom1)	#lrboom4	4_CRACK,2,2
+1@uns,175,93,0	duplicate(#lrboom1)	#lrboom5	4_CRACK,2,2
+1@uns,190,97,0	duplicate(#lrboom1)	#lrboom6	4_CRACK,2,2
+1@uns,194,94,0	duplicate(#lrboom1)	#lrboom7	4_CRACK,2,2
+1@uns,199,96,0	duplicate(#lrboom1)	#lrboom8	4_CRACK,2,2
+1@uns,206,93,0	duplicate(#lrboom1)	#lrboom9	4_CRACK,2,2
+1@uns,217,91,0	duplicate(#lrboom1)	#lrboom10	4_CRACK,2,2
+1@uns,224,79,0	duplicate(#lrboom1)	#lrboom11	4_CRACK,2,2
+1@uns,227,73,0	duplicate(#lrboom1)	#lrboom12	4_CRACK,2,2
+1@uns,227,69,0	duplicate(#lrboom1)	#lrboom13	4_CRACK,2,2
+1@uns,220,63,0	duplicate(#lrboom1)	#lrboom14	4_CRACK,2,2
+1@uns,201,60,0	duplicate(#lrboom1)	#lrboom15	4_CRACK,2,2
+
+1@uns,224,29,3	script	Verity#room2	4_F_BERRYTEA,{
+	mes "[Verity]";
+	mes "Ah...Where am I..";
+	mes "What happened?";
+	cutin "EP15_2_brt_6.bmp",2;
+	next;
+	mes "[Verity]";
+	mes "My head...is splitting.";
+	mes "A sound coming from this...door...";
+	next;
+	if (select( "Quit.", "Go inside." ) == 1) {
+		mes "[Verity]";
+		mes "Go back...we have to go back...";
+		cutin "EP15_2_brt_7.bmp",2;
+		close3;
+	}
+	mes "[Verity]";
+	mes "Quickly...we have to go back...";
+	cutin "EP15_2_brt_7.bmp",2;
+	close2;
+	warp 'map_name$,240,255;
+	cutin "",255;
+	end;
+}
+
+// Last step
+1@uns,242,253,3	script	Verity#room3	4_F_BERRYTEA,{
+	mes "[Verity]";
+	mes "Finally.. We came back...";
+	mes "Finally.....";
+	cutin "EP15_2_brt_7.bmp",2;
+	close2;
+	cutin "",255;
+	if ('protocole == 3) {
+		'protocole = 4;
+		disablenpc instance_npcname("Verity#room3");
+		donpcevent instance_npcname("protocole3") + "::OnStart";
+	}
+	end;
+}
+
+1@uns,1,1,0	script	protocole3	-1,{
+	end;
+OnStart:
+	enablenpc instance_npcname("protocole3");
+	initnpctimer;
+	mapannounce 'map_name$, "System message : Intruder detected in Mother Room.",bc_map,"0xFF0000";
+	monster 'map_name$,247,270,"T_W_O",3254,1, instance_npcname("protocole3") + "::OnMyMobDead";
+	end;
+OnTimer2000:
+	mapannounce 'map_name$, "System message : Commencing final protocol.",bc_map,"0xFF0000";
+	end;
+OnTimer4000:
+	mapannounce 'map_name$, "System message : Changing all systems from maintenance mode to combat mode.",bc_map,"0xFF0000";
+	end;
+OnTimer6000:
+	mapannounce 'map_name$, "System message : This is the final protocol to protect... all unrelated personnel please evacuate.",bc_map,"0xFF0000";
+	end;
+OnTimer9000:
+	mapannounce 'map_name$, "T_W_O : Have to go back..... This place isn't it....",bc_map,"0xFF0000";
+	end;
+OnTimer28000:
+	mapannounce 'map_name$, "System message : System damage occurred.",bc_map,"0xFF0000";
+	areamonster 'map_name$,222,250,267,281, "System message",3253,3, instance_npcname("protocole3") + "::OnMyMobDead2";
+	end;
+OnTimer30000:
+	mapannounce 'map_name$, "T_W_O : Who am I? Why am I here?.",bc_map,"0xFF0000";
+	end;
+OnTimer58000:
+	mapannounce 'map_name$, "System message : There may be critical damage within the Zone during system damage so please be careful.",bc_map,"0xFF0000";
+	end;
+OnTimer88000:
+	mapannounce 'map_name$, "System message : System damage occurred.",bc_map,"0xFF0000";
+	areamonster 'map_name$,222,250,267,281, "System message",3253,3, instance_npcname("protocole3") + "::OnMyMobDead2";
+	end;
+OnTimer98000:
+	mapannounce 'map_name$, "T_W_O : There is nothing left....",bc_map,"0xFF0000";
+	end;
+OnTimer108000:
+	mapannounce 'map_name$, "T_W_O : I... Nor them....",bc_map,"0xFF0000";
+	end;
+OnTimer148000:
+	mapannounce 'map_name$, "System message : System damage occurred.",bc_map,"0xFF0000";
+	areamonster 'map_name$,222,250,267,281, "System message",3253,3, instance_npcname("protocole3") + "::OnMyMobDead2";
+	end;
+OnTimer208000:
+	mapannounce 'map_name$, "System message : System damage occurred.",bc_map,"0xFF0000";
+	areamonster 'map_name$,222,250,267,281, "System message",3253,3, instance_npcname("protocole3") + "::OnMyMobDead2";
+	stopnpctimer;
+	end;
+OnMyMobDead:
+	stopnpctimer;
+	killmonster 'map_name$, instance_npcname("protocole3") + "::OnMyMobDead2";
+	mapannounce 'map_name$, "System message : All protocols failed. Locking down area excluding threat element.",bc_map,"0xFF0000";
+	enablenpc instance_npcname("Alp#room4");
+	enablenpc instance_npcname("Tamarin#room4");
+	enablenpc instance_npcname("Maggi#room4");
+	enablenpc instance_npcname("Du#room4");
+	enablenpc instance_npcname("Mark#room4");
+	enablenpc instance_npcname("Verity#room4");
+	disablenpc instance_npcname("protocole3");
+	end;
+OnMyMobDead2:
+	end;
+}
+	
+1@uns,236,258,1	script	Alp#room4	4_M_BLACKMAN,{
+	mes "[Alp]";
+	mes "It's too early to relax...";
+	cutin "bu_alp1.bmp",2;
+	close3;
+}
+
+1@uns,244,257,3	script	Tamarin#room4	4_M_TAMARIN,{
+	mes "[Tamarin]";
+	mes "Verity!!!";
+	mes "Pull yourself together!";
+	cutin "ep143_tahuk.bmp",2;
+	close3;
+}
+
+1@uns,245,254,3	script	Maggi#room4	4_F_PINKWOMAN,{
+	mes "[Maggi]";
+	mes "Verity, are you alright?";
+	cutin "bu_maggi4.bmp",2;
+	close3;
+}
+
+1@uns,244,254,3	script	Du#room4	4_M_REDMAN,{
+	mes "[Du]";
+	mes "Sister!";
+	mes "What happened?!";
+	mes "Are you alright?";
+	cutin "bu_du5.bmp",2;
+	close3;
+}
+
+1@uns,242,255,5	script	Mark#room4	4_M_BLUEMAN,{
+	mes "[Mark]";
+	mes "Everybody out of the way!";
+	mes "I will cast Heal!!!";
+	cutin "bu_mark4.bmp",0;
+	close3;
+}
+
+1@uns,242,253,3	script	Verity#room4	4_F_BERRYTEA,{
+	mes "[Du]";
+	mes "Sister!";
+	mes "What happened?!";
+	mes "Are you alright?";
+	cutin "bu_du5.bmp",2;
+	npctalk "Du: Sister! What happened?! Are you alright?", instance_npcname("Du#room4");
+	next;
+	mes "[Tamarin]";
+	mes "Verity!!!";
+	mes "Pull yourself together!";
+	cutin "ep143_tahuk.bmp",2;
+	npctalk "Tamarin: Verity!!! Pull yourself together!", instance_npcname("Tamarin#room4");
+	next;
+	mes "[Mark]";
+	mes "Everybody out of the way!";
+	mes "I will cast Heal!!!";
+	cutin "bu_mark4.bmp",0;
+	npctalk "Mark: Everybody out of the way! I will cast Heal!!!", instance_npcname("Mark#room4");
+	next;
+	mes "[Verity]";
+	mes "Uh..uhm...";
+	cutin "EP15_2_brt_4.bmp",2;
+	npctalk "Verity: Uh..uhm...";
+	next;
+	mes "[Verity]";
+	mes "Oh...";
+	mes "What is going on.";
+	mes "With serious faces.";
+	cutin "EP15_2_brt_5.bmp",2;
+	npctalk "Verity Oh... What is going on. With serious faces.";
+	next;
+	mes "[Du]";
+	mes "What do you think!";
+	mes "You don't remember?";
+	cutin "bu_du4.bmp",2;
+	npctalk "Du: What do you think! You don't remember?", instance_npcname("Du#room4");
+	next;
+	mes "[Verity]";
+	mes "Remember?";
+	cutin "EP15_2_brt_5.bmp",2;
+	npctalk "Verity: Remember?";
+	next;
+	mes "[Verity]";
+	mes "... Come to think of it where am I?";
+	cutin "EP15_2_brt_3.bmp",2;
+	npctalk "Verity: ... Come to think of it where am I?";
+	next;
+	mes "[Tamarin]";
+	mes "Verity you really don't remember anything?";
+	mes "Before...";
+	cutin "ep143_tahuk.bmp",2;
+	npctalk "Tamarin: Verity you really don't remember anything? Before...", instance_npcname("Tamarin#room4");
+	next;
+	mes "[Verity]";
+	mes "Uhm...";
+	mes "I think my head was splitting since I went underground...";
+	npctalk "Verity: I think my head was splitting since I went underground...";
+	cutin "EP15_2_brt_3.bmp",2;
+	next;
+	mes "[Verity]";
+	mes "I don't remember anything after that.";
+	npctalk "Verity: I don't remember anything after that.";
+	cutin "EP15_2_brt_5.bmp",2;
+	next;
+	mes "[Du]";
+	mes "Just now something tremendous...";
+	cutin "bu_du4.bmp",2;
+	npctalk "Du: Just now something tremendous...", instance_npcname("Du#room4");
+	next;
+	mes "[Alp]";
+	mes "Hey... I don't think this is a situation where we should be chatting right now.";
+	cutin "bu_alp3.bmp",2;
+	npctalk "Alp: Hey... I don't think this is a situation where we should be chatting right now.", instance_npcname("Alp#room4");
+	next;
+	mes "[Du]";
+	mes "You call this chatting?";
+	mes "It was tremendous before okay?";
+	cutin "bu_du4.bmp",2;
+	npctalk "Du: You call this chatting? It was tremendous before okay?", instance_npcname("Du#room4");
+	next;
+	mes "[Alp]";
+	mes "Do you hear this?";
+	mes "Something is coming...";
+	cutin "bu_alp1.bmp",2;
+	npctalk "Alp: Do you hear this? Something is coming...", instance_npcname("Alp#room4");
+	next;
+	mes "[Tamarin]";
+	mes "Now...now that I look the ground is..., shaking a little, right?";
+	cutin "ep143_tahuk.bmp",2;
+	npctalk "Tamarin: Now...now that I look the ground is..., shaking a little, right?", instance_npcname("Tamarin#room4");
+	next;
+	mes "[Du]";
+	mes "What...what's this?";
+	cutin "bu_du4.bmp",2;
+	npctalk "Du: What...what's this?", instance_npcname("Du#room4");
+	next;
+	mes "[Alp]";
+	mes "This is...dangerous.";
+	mes "This is not a level we can handle...";
+	cutin "bu_alp2.bmp",2;
+	npctalk "Alp: This is...dangerous. This is not a level we can handle...", instance_npcname("Alp#room4");
+	next;
+	mes "[Mark]";
+	mes "Qui...quickly outside!!!!!";
+	cutin "bu_mark4.bmp",0;
+	npctalk "Mark: Qui...quickly outside!!!!!", instance_npcname("Mark#room4");
+	close2;
+	warp "un_bunker",299,162;
+	cutin "",255;
+	end;
+
+OnInstanceInit:
+	'map_name$ = instance_mapname("1@uns");
+	'protocole = 0;
+
+	// 1st step
+	disablenpc instance_npcname("protocole1");
+	disablenpc instance_npcname("Tamarin#room2");
+	disablenpc instance_npcname("#lrdoor4");
+
+	// 2nd step
+	disablenpc instance_npcname("Verity#room2");
+	for ( .@i = 1; .@i < 16; ++.@i )
+		disablenpc instance_npcname( "#lrboom" + .@i );
+
+	// Last step
+	disablenpc instance_npcname("Verity#room3");
+	disablenpc instance_npcname("protocole3");
+	disablenpc instance_npcname("Alp#room4");
+	disablenpc instance_npcname("Tamarin#room4");
+	disablenpc instance_npcname("Maggi#room4");
+	disablenpc instance_npcname("Du#room4");
+	disablenpc instance_npcname("Mark#room4");
+	disablenpc instance_npcname("Verity#room4");
+	end;
+}

+ 1418 - 1332
npc/re/instances/OldGlastHeim.txt

@@ -1,1721 +1,1807 @@
-//===== rAthena Script ======================================= 
+//===== rAthena Script =======================================
 //= Old Glast Heim
-//===== By: ================================================== 
-//= Ziu, Heris (translation)
-//===== Current Version: ===================================== 
-//= 1.1
-//===== Compatible With: ===================================== 
-//= rAthena Project
-//===== Description: ========================================= 
+//===== Description: =========================================
 //= Discover the history of events that took place in the
 //= Glast Heim castle and how it ended up in ruins.
-//===== Additional Comments: ================================= 
-//= 1.0 First version. [Euphy]
+//===== Changelogs: =================================
+//= 1.0 First version. [Euphy, Ziu, Heris]
 //=     This is a custom version, and may contain bugs.
 //= 1.1 Bug fixes; removed redundant OnInstanceInit scripts.
-//============================================================ 
+//= 1.2 Add NPC Hugin's Follower [exneval]
+//=     NPC that give access to Glast Heim Nightmare Mode.
+//= 1.3 Add some NPCs placeholder. [exneval]
+//= 1.4 Update to its official text. [exneval]
+//=     Support merchant, enchant, socket features.
+//= 1.5 idAthena merge. Removed Hugin's Follower NPCs. [Secretdataz]
+//=     Changed `set` calls to direct assignments.
+//=     Cleaned up the script.
+//=     TODO: Confirm Hugin NPC's code flow.
+//= 1.6 Cleaned up the dialogue. [Aleos]
+//============================================================
 
-glast_01,204,273,6	script	Hugin#ghinstance	755,{
-	mes "^ff0000This isn't considered a normal progression dungeon. Please note this point.^000000";
-	next;
-	mes "[Hugin]";
-	mes "Huh? You feel like you have seen me in different places? I see. What can I say?";
+glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
+	if (BaseLevel < 130) {
+		mes "[Hugin]";
+		mes "Why don't you come back after becoming stronger?";
+		mes "Maybe, level 130.";
+		close;
+	}
+	if (isbegin_quest(12316) == 0) {
+		mes "[Hugin]";
+		mes "A long time ago, this castle did not look like this.";
+		next;
+		mes "[Hugin]";
+		mes "Ah, I'm sorry. I'm muttering in front of a stranger.";
+		next;
+		mes "[Hugin]";
+		mes "My name is Hugin. I'm studying the dimensional gap between time and space.";
+		next;
+		select("There's something like that here?");
+		mes "[Hugin]";
+		mes "Have you ever wondered about the history of Glast Heim?";
+		next;
+		mes "[Hugin]";
+		mes "There was a King named Shumiche who was known as a tyrant in the history of the Rune-Midgarts Kingdom.";
+		next;
+		mes "[Hugin]";
+		mes "Time will reveal the true answers if we look in the right places.";
+		next;
+		if (select("I don't care about history","That is interesting. Did you find anything?") == 1) {
+			mes "[Hugin]";
+			mes "Really? Hmm, please come back later when you are interested then.";
+			close;
+		}
+		mes "[Hugin]";
+		mes "Actually, dimensional time travel is possible but I'm too afraid to go there.";
+		next;
+		mes "[Hugin]";
+		mes "It might be possible for you!";
+		next;
+		mes "[Hugin]";
+		mes "Do you want to time travel?";
+		next;
+		if (select("No, thanks.","Yes, of course I do!") == 1) {
+			mes "[Hugin]";
+			mes "Really? But, jumping gigawatts, this is such a great opportunity.";
+			close;
+		}
+		mes "[Hugin]";
+		mes "I knew that you would understand what I said. Well, please tell me what you want to do.";
+		setquest 12316;// Meeting Hugin
+		completequest 12316;
+	}
+	else {
+		mes "[Hugin]";
+		mes "Umm? Did you see me at another place? I don't think so. What about this time?";
+		if (isbegin_quest(12322) == 1)
+			erasequest 12322;
+	}
 	next;
-	set .@ghins_time, checkquest(12317,PLAYTIME);
-	if (.@ghins_time == -1) {
+	switch( checkquest(12317,PLAYTIME) ) {
+	case -1:
+		.@party_id = getcharid(1);
+		.@p_name$ = getpartyname(.@party_id);
+		.@md_name$ = "Old Glast Heim";
 
-		set .@party_id,getcharid(1);
-		set .@p_name$,getpartyname(.@party_id);
-		set .@md_name$,"Old Glast Heim";
-
-		if (!instance_check_party(.@party_id,2)) {
-			//custom
+		if (!instance_check_party(.@party_id)) {
 			mes "[Hugin]";
-			mes "Where are your party members?";
+			mes "Why don't you make a party with more than 1 person and talk to me again?";
 			close;
 		}
-
 		if (getcharid(0) == getpartyleader(.@party_id,2))
-			set .@menu$, "Create the time gap.:Enter the Old Glast Heim.:Cancel.";
-		else
-			set .@menu$, ":Enter the Old Glast Heim.:Cancel.";
-		switch(select(.@menu$)) {
+			.@menu$ = "Generate Time Gap";
+		else {
+			mes "[Hugin]";
+			mes "Have we met before? No way. It's my first time seeing you. What do you want?";
+		}
+		if (isbegin_quest(12318) == 0)
+			setquest 12318;// Corrupted Soul Hunt
+		switch( select( .@menu$, "Enter Old Glast Heim", "Cancel" ) ) {
 		case 1:
-			if (instance_create(.@md_name$) < 0) {
-				mes "Party Name: "+.@p_name$;
-				mes "Party Leader: "+strcharinfo(0);
-				mes "^0000ff"+.@md_name$+" ^000000- Reservation Failed!";
+			switch( instance_create(.@md_name$) ) {
+			case -3:
+				dispbottom "Memorial Dungeon, 'Old Glast Heim' is already in progress.",0xFFFFFF;
+				close;
+			case -4:
+			case -2:
+			case -1:
+				mes "Party Name: " + getpartyname( getcharid(1) );
+				mes "Party Leader: " + strcharinfo(0);
+				mes "^0000ff" + .@md_name$ + "^000000 - time gap generation failed.";
 				close;
 			}
 			mes "[Hugin]";
-			mes "The time gap was created. When you're ready, talk to me again.";
+			mes "After the time gap opens, please tell me again.";
 			close;
 		case 2:
-			switch(instance_enter(.@md_name$)) {
+			switch( instance_enter(.@md_name$) ) {
 			case IE_OTHER:
+				mes "[Hugin]";
 				mes "An unknown error has occurred.";
 				close;
 			case IE_NOINSTANCE:
-				mes "The memorial dungeon "+.@md_name$+" does not exist.";
-				mes "The party leader did not generate the dungeon yet.";
+				mes "[Hugin]";
+				mes "The time gap is not yet open.";
 				close;
 			case IE_NOMEMBER:
-				mes "Only the registered members can enter the instance "+.@md_name$+".";
+				mes "[Hugin]";
+				mes "Your body is not fit to enter the time gap. You won't be able to get in if you're not in a party.";
 				close;
 			case IE_OK:
-				mapannounce "glast_01",strcharinfo(0)+", member of the party "+.@p_name$+" entered the instance "+.@md_name$+".",bc_map,"0x00ff99";
-				setquest 12317;
-				setquest 12318;
-				//warp "1@gl_k",150,20;
-				close;
+				mapannounce "glast_01", "" + getpartyname( getcharid(1) ) + " party member " + strcharinfo(0) + " enters the " + .@md_name$ + ".", bc_map,0x00FF99;
+				setquest 12317;// Trace of Time Travel
+				// warp "1@gl_k",150,20;
+				end;
 			}
 		case 3:
 			close;
 		}
-	} else if (.@ghins_time == 0 || .@ghins_time == 1) {
+	case 0:
+	case 1:
 		mes "[Hugin]";
-		mes "Oh, geez.";
-		mes "Your body is still under the effects of time travel. In this state, you will not be able to travel again.";
+		mes "Oh, my...";
+		mes "You still have after-effects of time travel. You can't travel again with this condition.";
 		next;
 		mes "[Hugin]";
-		mes "You should rest and come back later for more.";
+		mes "Staying healthy is important, so please take a break and come back again later.";
 		close;
-	} else {
-		mes "^0000ffOld Glast Heim access trail has been cleared. It is now possible to talk to Hugin.^000000";
+	case 2:
+		mes "^0000ffAll traces of access to Old Glast Heim have been removed. Now you can talk with Hugin again.^000000";
+		if (isbegin_quest(12318) == 0)
+			setquest 12318;// Corrupted Soul Hunt
 		erasequest 12317;
-		if (checkquest(12318) > -1) erasequest 12318;
-		if (checkquest(12319) > -1) erasequest 12319;
 		close;
 	}
 }
 
+// Warps
+1@gl_k,96,80,0	warp	#2Control	2,2,1@gl_k,80,80
+1@gl_k,90,80,0	warp	#2Control2	2,2,1@gl_k,105,80
+1@gl_k,202,79,0	warp	#3Control	2,2,1@gl_k,215,79
+1@gl_k,206,79,0	warp	#3Control2	2,2,1@gl_k,195,79
+1@gl_k,227,216,0	warp	#4Control	2,2,1@gl_k,215,216
+1@gl_k,222,216,0	warp	#4Control2	2,2,1@gl_k,233,216
+1@gl_k,150,284,0	warp	#2F Entrance	2,2,2@gl_k,150,46
+2@gl_k,149,32,0	warp	#1 Control	2,2,1@gl_k,150,270
+2@gl_k,145,123,0	warp	#22 Control	2,2,2@gl_k,126,123
+2@gl_k,136,122,0	warp	#22 Control2	2,2,2@gl_k,150,116
+2@gl_k,154,101,0	warp	#23 Control	2,2,2@gl_k,174,101
+2@gl_k,165,101,0	warp	#23 Control2	2,2,2@gl_k,150,111
+2@gl_k,150,163,0	warp	#24 Control	2,2,2@gl_k,150,179
+2@gl_k,150,167,0	warp	#24 Control2	2,2,2@gl_k,150,149
+1@gl_k,69,168,0	warp	#Secret Room Exit	2,2,1@gl_k,48,168
+
 // Floor 1
 //============================================================
-1@gl_k,149,41,6	script	Varmunt#ghinstance1	654,{
-	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
-		mes "Hey ^0000ffguys^000000, were you sent here to help me?";
-		npctalk "Varmunt : Hey guys, were you sent here to help me?";
-		cutin "gl_barmund1",2;
-		next;
-		select("Oh. Well, about that...");
-		mes "["+strcharinfo(0)+"]";
-		mes "Oh yeah, hahaha, we were told to meet someone called Varmunt.";
-		unittalk getcharid(3), strcharinfo(0) +" : Oh yeah, hahaha, we were told to meet someone called Varmunt.";
-		next;
-		mes "[Varmunt]";
-		mes "We don't have time. We must tell Sir Heinrich about Himmelmez's invasion.";
-		npctalk "Varmunt : We don't have time. We must tell Sir Heinrich about Himmelmez's invasion.";
-		cutin "gl_barmund2",2;
-		next;
-		select("What Himmelmez...");
-		mes "["+strcharinfo(0)+"]";
-		mes "Himmelmez? Who the hell is she?";
-		unittalk getcharid(3), strcharinfo(0) +" : Himmelmez? Who the hell is she?";
-		next;
-		mes "[Varmunt]";
-		mes "Didn't anybody give you the basic informations?";
-		npctalk "Varmunt : Didn't anybody give you the basic informations?";
-		cutin "gl_barmund3",2;
-		next;
-		mes "[Varmunt]";
-		mes "The Valkyrie of the dead. She's after the Ymir's Heart pieces hidden here.";
-		npctalk "Varmunt : The Valkyrie of the dead. She's after the Ymir's Heart pieces hidden here";
-		cutin "gl_barmund2",2;
-		next;
-		mes "[Varmunt]";
-		mes "She's capable of destroying the whole castle for this purpose.";
-		npctalk "Varmunt : She's capable of destroying the whole castle for this purpose.";
-		next;
-		mes "[Varmunt]";
-		mes "Hurry up! Inform Sir Heinrich that Himmelmez is coming. I will briefly explore the enchantments she made to this place!";
-		npctalk "Varmunt : Hurry up! Inform Sir Heinrich that Himmelmez is coming. I will briefly explore the enchantments she made to this place!";
-		close2;
-		cutin "gl_barmund2",255;
-		donpcevent instance_npcname("Varmunt#ghinstance1")+"::OnDisable2";
-		end;
-	} else {
-		mes "[Varmunt]";
-		mes "Where is he? We";
-		mes "need his help.";
+1@gl_k,149,41,5	script	Varmundt#0	4_M_BARMUND,{
+	if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+		mes "[Varmundt]";
+		mes "Where's your leader? I need his help.";
 		cutin "gl_barmund2",2;
-		close2;
-		cutin "gl_barmund2",255;
-		end;
+		close3;
 	}
-OnInstanceInit:
-	donpcevent instance_npcname("Varmunt#ghinstance1")+"::OnEnable";
-	end;
-OnDisable:
-	hideonnpc instance_npcname("Varmunt#ghinstance1");
+	.@account_id = getcharid(3);
+	.@player_name$ = strcharinfo(0);
+	mes "[Varmundt]";
+	mes "Are you the one ^0000ffHerico^000000 sent to help me?";
+	npctalk "Varmundt: Are you the one Herico sent to help me?";
+	cutin "gl_barmund1",2;
+	next;
+	select("Oh. Well I...");
+	mes "[" + .@player_name$ + "]";
+	mes "Ah yes, I am. Herico told me to meet you.";
+	unittalk .@account_id, .@player_name$ + " : Ah yes, I am. Herico told me to meet you.";
+	next;
+	mes "[Varmundt]";
+	mes "We don't have much time. We must report to Sir Heinrich about Himelmez's invasion.";
+	npctalk "Varmundt: We don't have much time. We must report to Sir Heinrich about Himelmez's invasion.";
+	cutin "gl_barmund2",2;
+	next;
+	select("Himelmez...");
+	mes "[" + .@player_name$ + "]";
+	mes "Who is Himelmez?";
+	unittalk .@account_id, .@player_name$ + " : Who is Himelmez?";
+	next;
+	mes "[Varmundt]";
+	mes "Herico didn't tell you?";
+	npctalk "Varmundt: Herico didn't tell you?";
+	cutin "gl_barmund3",2;
+	next;
+	mes "[Varmundt]";
+	mes "She is the Ruler of Death, Dead man's Valkyrie. Himelmez is looking to take the heart of Ymir from us.";
+	npctalk "Varmundt: She is the Ruler of Death, Dead man's Valkyrie. Himelmez is looking to take the heart of Ymir from us.";
+	cutin "gl_barmund2",2;
+	next;
+	mes "[Varmundt]";
+	mes "She might even destroy this whole castle if she wanted to.";
+	npctalk "Varmundt: She might even destroy this whole castle if she wanted to.";
+	next;
+	mes "[Varmundt]";
+	mes "Hurry! Report to Sir. Heinrich about Himelmez. I must check the defense barrier here!";
+	npctalk "Varmundt: Hurry! Report to Sir. Heinrich about Himelmez. I must check the defense barrier here!";
+	close2;
+	cutin "",255;
+	disablenpc instance_npcname("Varmundt#0");
+	enablenpc instance_npcname("Heinrich#1");
+	enablenpc instance_npcname("Varmundt#1");
 	end;
-OnDisable2:
-	hideonnpc instance_npcname("Varmunt#ghinstance1");
+}
 
-	for(set .@i,1; .@i<=20; set .@i,.@i+4) {
-		hideoffnpc instance_npcname("Khalitzburg Crusader#"+.@i);
-		hideoffnpc instance_npcname("Khalitzburg Crusader#"+(.@i+1));
-		hideoffnpc instance_npcname("White Knight#"+(.@i+2));
-		hideoffnpc instance_npcname("White Knight#"+(.@i+3));
-	}
-	hideoffnpc instance_npcname("Khalitzburg Crusader#21");
-	hideoffnpc instance_npcname("Khalitzburg Crusader#22");
+1@gl_k,145,104,6	script	Khalitzburg Knightage#1	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "My work shift will be over soon, but the next crew is not coming.";
+	close;
+}
 
-	hideoffnpc instance_npcname("Heinrich#ghinstance1");
-	hideoffnpc instance_npcname("Varmunt#ghinstance2");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Varmunt#ghinstance1");
-	end;
+1@gl_k,154,104,3	script	Khalitzburg Knightage#2	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "Something you want to tell me?";
+	close;
 }
 
-1@gl_k,145,54,6	script	Khalitzburg Crusader#1	655,{
-	mes "["+strnpcinfo(1)+"]";
-	switch((atoi(strnpcinfo(2)) + 1) / 2) {
-		case 1: mes "Would I be recruited?"; break;
-		case 2: mes "May I help you?"; break;
-		case 3: mes "..."; break;
-		case 4: mes "I do not like to chit-chat during work."; break;
-		case 5: mes "The aura of the castle has changed, don't you think? Something like a presence seemed to appear a little while ago."; break;
-		case 6: mes "I wonder what commandant Varmunt is doing. I heard people are running away..."; break;
-		case 7: mes "Quiet please."; break;
-		case 8: mes "A fuss seems to be near."; break;
-		case 9: mes "A dream last night really bothered me. My mother used to say that these dreams may come true..."; break;
-		case 10: mes "Is Varmunt going with you? The commandant is waiting for you."; break;
-		case 11: mes "Soon it's time to change shifts. I wonder what happened to the other knights."; break;
-	}
+1@gl_k,145,99,6	script	White Knight#3	4_WHITEKNIGHT,{
+	mes "[White Knight]";
+	mes "Are you with Varmundt? Commander is waiting for you.";
 	close;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname(strnpcinfo(0));
-	end;
-OnEnable:
-	hideoffnpc instance_npcname(strnpcinfo(0));
-	end;
 }
-1@gl_k,154,54,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#2	655
-1@gl_k,145,59,6	duplicate(Khalitzburg Crusader#1)	White Knight#3	657
-1@gl_k,154,59,3	duplicate(Khalitzburg Crusader#1)	White Knight#4	657
-1@gl_k,145,64,6	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#5	655
-1@gl_k,154,64,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#6	655
-1@gl_k,145,69,6	duplicate(Khalitzburg Crusader#1)	White Knight#7	657
-1@gl_k,154,69,3	duplicate(Khalitzburg Crusader#1)	White Knight#8	657
-1@gl_k,145,74,6	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#9	655
-1@gl_k,154,74,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#10	655
-1@gl_k,145,79,6	duplicate(Khalitzburg Crusader#1)	White Knight#11	657
-1@gl_k,154,79,3	duplicate(Khalitzburg Crusader#1)	White Knight#12	657
-1@gl_k,145,84,6	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#13	655
-1@gl_k,154,84,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#14	655
-1@gl_k,145,89,6	duplicate(Khalitzburg Crusader#1)	White Knight#15	657
-1@gl_k,154,89,3	duplicate(Khalitzburg Crusader#1)	White Knight#16	657
-1@gl_k,145,94,6	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#17	655
-1@gl_k,154,94,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#18	655
-1@gl_k,145,99,6	duplicate(Khalitzburg Crusader#1)	White Knight#19	657
-1@gl_k,154,99,3	duplicate(Khalitzburg Crusader#1)	White Knight#20	657
-1@gl_k,145,104,6	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#21	655
-1@gl_k,154,104,3	duplicate(Khalitzburg Crusader#1)	Khalitzburg Crusader#22	655
-
-1@gl_k,149,100,6	script	Heinrich#ghinstance1	652,{
-	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
-		cutin "gl_heinrich2",2;
-		select("Heinrich, about the castle...");
-		mes "["+strcharinfo(0)+"]";
-		mes "Do you know what is happening now in the castle, Heinrich?";
-		unittalk getcharid(3), strcharinfo(0) +" : Do you know what is happening now in the castle, Heinrich?";
-		next;
-		mes "[Heinrich]";
-		mes "You are the adventurers who have come with Varmunt, right?";
-		npctalk "Heinrich : You are the adventurers who have come with Varmunt, right?";
-		next;
-		mes "[Heinrich]";
-		mes "What can I do for you? Is there something wrong?";
-		npctalk "Heinrich : What can I do for you? Is there something wrong?";
-		next;
-		select("The Ymir's Heart. Himmelmez...");
-		mes "["+strcharinfo(0)+"]";
-		mes "Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle!";
-		unittalk getcharid(3), strcharinfo(0) +" : Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle!";
-		next;
-		mes "[Heinrich]";
-		mes "Haha. That's a nice joke. Now tell me what brings you here.";
-		npctalk "Heinrich : Haha. That's a nice joke. Now tell me what brings you here.";
-		cutin "gl_heinrich1",2;
-		next;
-		mes "[Varmunt]";
-		mes "I am not joking Heinrich, Sir. Now, if my judgement is correct, she will be here soon.";
-		npctalk "Varmunt : I am not joking Heinrich, Sir. Now, if my judgement is correct, she will be here soon.", instance_npcname("Varmunt#ghinstance2");
-		cutin "gl_barmund2",2;
-		next;
-		mes "[Varmunt]";
-		mes "I trust this guy following me. The Ymir's Heart pieces must be hidden in a safe place before Himmelmez takes them!";
-		npctalk "Varmunt : I trust this guy following me. The Ymir's Heart pieces must be hidden in a safe place before Himmelmez takes them!", instance_npcname("Varmunt#ghinstance2");
-		next;
-		select("Even if you do not believe...");
-		mes "["+strcharinfo(0)+"]";
-		mes "Even if you don't believe it, do something. We do not have much time!";
-		unittalk getcharid(3), strcharinfo(0) +" : Even if you don't believe it, do something. We do not have much time!";
-		cutin "gl_barmund2",255;
-		next;
-		mes "[Heinrich]";
-		mes "I will be glad if you give me two minutes, please. But now the king isn't in his room.";
-		npctalk "Heinrich : I will be glad if you give me two minutes, please. But now the king isn't in his room.";
-		cutin "gl_heinrich1",2;
-		next;
-		mes "[Heinrich]";
-		mes "But I think that with such a busy agenda, he won't be able to take care of this.";
-		npctalk "Heinrich : But I think that with such a busy agenda, he won't be able to take care of this.";
-		donpcevent instance_npcname("Heinrich#ghinstance1")+"::OnDisable";
-		donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnEnable";
-		donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnEnable";
-		donpcevent instance_npcname("#talkinstance1")+"::OnEnable";
-		mapannounce instance_mapname("1@gl_k"), "???? Shout: Ohohohoho~!",bc_map,"0xFFFF00";
-		close2;
-		cutin "gl_heinrich1",255;
-		end;
-	} else {
-		mes "[Heinrich]";
-		mes "Where is your representative?";
-		mes "I need to talk to him.";
-		cutin "gl_heinrich2",2;
-		close2;
-		cutin "gl_heinrich2",255;
-		end;
-	}
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance1");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance1");
-	end;
+
+1@gl_k,154,99,3	duplicate(Khalitzburg Knightage#1)	White Knight#4	4_WHITEKNIGHT
+
+1@gl_k,145,94,6	script	Khalitzburg Knightage#5	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "I had a weird dream last night. My mom was in it... Wonder if she is ok...";
+	close;
 }
 
-1@gl_k,152,97,3	script	Varmunt#ghinstance2	654,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Varmunt#ghinstance2");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Varmunt#ghinstance2");
-	end;
+1@gl_k,154,94,3	duplicate(White Knight#3)	Khalitzburg Knightage#6	4_F_KHALITZBURG
+
+1@gl_k,145,89,6	script	White Knight#7	4_WHITEKNIGHT,{
+	mes "[White Knight]";
+	mes "Please do not make a mess here.";
+	close;
 }
+1@gl_k,154,89,3	duplicate(White Knight#7)	White Knight#8	4_WHITEKNIGHT
 
-1@gl_k,149,97,6	script	Heinrich#ghinstance2	652,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance2");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance2");
-	end;
+1@gl_k,145,84,6	script	Khalitzburg Knightage#9	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "Orders please.";
+	close;
 }
+1@gl_k,154,84,3	duplicate(Khalitzburg Knightage#9)	Khalitzburg Knightage#10	4_F_KHALITZBURG
 
-1@gl_k,149,100,6	script	Heinrich#ghinstance3	652,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance3");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance3");
-	end;
+1@gl_k,145,79,6	script	White Knight#11	4_WHITEKNIGHT,{
+	mes "[White Knight]";
+	mes "How do you know Varmundt? I heard that he's not really a friendly man...";
+	close;
 }
+1@gl_k,154,79,3	duplicate(White Knight#11)	White Knight#12	4_WHITEKNIGHT
 
-1@gl_k,149,89,1	script	Himmelmez#ghinstance1	650,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Himmelmez#ghinstance1");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Himmelmez#ghinstance1");
+1@gl_k,145,74,6	script	Khalitzburg Knightage#13	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "Doesn't this castle seem weird all of a sudden? Something's not quite right.";
+	close;
+}
+1@gl_k,154,74,3	duplicate(Khalitzburg Knightage#13)	Khalitzburg Knightage#14	4_F_KHALITZBURG
+
+1@gl_k,145,69,6	script	White Knight#15	4_WHITEKNIGHT,{
+	mes "[White Knight]";
+	mes "I do not like to chat during work.";
+	close;
+}
+1@gl_k,154,69,3	duplicate(White Knight#15)	White Knight#16	4_WHITEKNIGHT
+
+1@gl_k,145,64,6	script	Khalitzburg Knightage#17	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "...";
+	close;
+}
+1@gl_k,154,64,3	duplicate(Khalitzburg Knightage#17)	Khalitzburg Knightage#18	4_F_KHALITZBURG
+
+1@gl_k,145,59,6	script	White Knight#19	4_WHITEKNIGHT,{
+	mes "[White Knight]";
+	mes "What can I do for you?";
+	close;
+}
+1@gl_k,154,59,3	duplicate(White Knight#19)	White Knight#20	4_WHITEKNIGHT
+
+1@gl_k,145,54,6	script	Khalitzburg Knightage#21	4_F_KHALITZBURG,{
+	mes "[Khalitzburg Knightage]";
+	mes "Is there something you need?";
+	close;
+}
+1@gl_k,154,54,3	duplicate(Khalitzburg Knightage#21)	Khalitzburg Knightage#22	4_F_KHALITZBURG
+
+1@gl_k,149,100,6	script	Heinrich#1	4_M_HEINRICH,{
+	if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+		mes "[Heinrich]";
+		mes "Where is your leader? I must talk to him.";
+		cutin "gl_heinrich2",2;
+		close3;
+	}
+	.@account_id = getcharid(3);
+	.@player_name$ = strcharinfo(0);
+	cutin "gl_heinrich2",2;
+	select("Sir Heinrich. Varmundt...");
+	mes "[" + .@player_name$ + "]";
+	mes "Sir Heinrich. Do you know what is happening in the castle now?";
+	unittalk .@account_id, .@player_name$ + " : Sir Heinrich. Do you know what is happening in the castle now?";
+	next;
+	mes "[Heinrich]";
+	mes "Aren't you the adventurer that came along with Varmundt?";
+	npctalk "Heinrich: Aren't you the adventurer that came along with Varmundt?";
+	next;
+	mes "[Heinrich]";
+	mes "What is it? Something wrong with the castle?";
+	npctalk "Heinrich: What is it? Something wrong with the castle?";
+	next;
+	select("Himelmez's invasion...");
+	mes "[" + .@player_name$ + "]";
+	mes "Dead man's Valkyrie, Himelmez is coming to take the Ymir's Heart piece hidden inside this castle!";
+	unittalk .@account_id, .@player_name$ + " : Dead man's Valkyrie, Himelmez is coming to take the Ymir's Heart piece hidden inside this castle!";
+	next;
+	mes "[Heinrich]";
+	mes "Haha. Funny. Do you really think that is possible?";
+	npctalk "Heinrich: Haha. Funny. Do you really think that is possible?";
+	cutin "gl_heinrich1",2;
+	next;
+	mes "[Varmundt]";
+	mes "I'm not kidding, Sir Heinrich. If I'm correct, then she will be here very soon.";
+	npctalk "Varmundt: I'm not kidding, Sir Heinrich. If I'm correct, then she will be here very soon.", instance_npcname("Varmundt#1");
+	cutin "gl_barmund2",2;
+	next;
+	mes "[Varmundt]";
+	mes "We must hide the heart piece in a safe place before Himelmez's attack starts!";
+	npctalk "Varmundt: We must hide the heart piece in a safe place before Himelmez's attack starts!", instance_npcname("Varmundt#1");
+	next;
+	select("Even if you don't believe me...");
+	mes "[" + .@player_name$ + "]";
+	mes "I can't make you believe me, but there's no time to argue!";
+	unittalk .@account_id, .@player_name$ + " : I can't make you believe me, but there's no time to argue!";
+	cutin "",255;
+	next;
+	mes "[Heinrich]";
+	mes "Thank you for the help. But we don't even have our king with us right now.";
+	npctalk "Heinrich: Thank you for the help. But we don't even have our king with us right now.";
+	cutin "gl_heinrich1",2;
+	next;
+	mes "[Heinrich]";
+	mes "We cannot risk moving the heart just because some stranger says so.";
+	npctalk "Heinrich: We cannot risk moving the heart just because some stranger says so.";
+	close2;
+	disablenpc instance_npcname("Heinrich#1");
+	enablenpc instance_npcname("Heinrich#2");
+	enablenpc instance_npcname("Himelmez#1");
+	donpcevent instance_npcname("#talkinstance1") + "::OnEnable";
+	cutin "",255;
 	end;
 }
 
+1@gl_k,152,97,3	script	Varmundt#1	4_M_BARMUND,{ end; }
+1@gl_k,149,97,5	duplicate(Varmundt#1)	Heinrich#2	4_M_HEINRICH
+1@gl_k,149,100,5	duplicate(Varmundt#1)	Heinrich#3	4_M_HEINRICH
+1@gl_k,149,89,1	duplicate(Varmundt#1)	Himelmez#1	4_F_HIMEL
+
 // Control Timer
 //============================================================
-1@gl_k,0,0,0	script	#talkinstance1	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#talkinstance1");
+1@gl_k,1,1,0	script	#talkinstance1	HIDDEN_WARP_NPC,{
 	end;
 OnEnable:
-	enablenpc instance_npcname("#talkinstance1");
+	mapannounce 'map_name$[0], "????'s: Muahahahaha~!", bc_map,0xFFFF00,FW_NORMAL,18;
 	initnpctimer;
+	'npc_himelmez1$ = instance_npcname("Himelmez#1");
+	'npc_varmundt1$ = instance_npcname("Varmundt#1");
+	'npc_heinrich2$ = instance_npcname("Heinrich#2");
+	'npc_heinrich3$ = instance_npcname("Heinrich#3");
 	end;
-OnTimer5000:
-	npctalk "Heinrich : Who?!", instance_npcname("Heinrich#ghinstance2");
+OnTimer1500:
+	npctalk "Heinrich: Who are you?", 'npc_heinrich2$;
+	end;
+OnTimer4500:
+	npctalk "Himelmez: Well well~ Am I interrupting you? Weren't you expecting me?", 'npc_himelmez1$;
 	end;
 OnTimer10000:
-	npctalk "Himmelmez : This~ Did I interrupt your conversation? The thing is, it's been too long since the last guests saw some sadness spread...", instance_npcname("Himmelmez#ghinstance1");
+	npctalk "Varmundt: Himelmez!! Already!", 'npc_varmundt1$;
 	end;
-OnTimer15000:
-	npctalk "Varmunt : Himmelmez!! Through the cracks!", instance_npcname("Varmunt#ghinstance2");
+OnTimer17500:
+	npctalk "Himelmez: My name is Lisa Kahn Himelmez. Master of Dullahan, Dead man's Valkyrie, that's what they call me.", 'npc_himelmez1$;
 	end;
-OnTimer20000:
-	npctalk "Himmelmez : My name is Lisa Kahn Himmelmez. I am called the Valkyrie of the dead, master of the Dullahan.", instance_npcname("Himmelmez#ghinstance1");
+OnTimer22000:
+	npctalk "Heinrich: Aren't you a little too feminine to be the Ruler of death? We are not afraid of you...", 'npc_heinrich2$;
 	end;
-OnTimer25000:
-	npctalk "Heinrich : That who rules the dead? No doubt, a pretty story. Here, some tea will be served to entertain the ladies. Unfortunately, I do not...", instance_npcname("Heinrich#ghinstance2");
+OnTimer28500:
+	npctalk "Himelmez: Let's see if you can relax like that after you find out where your king is.", 'npc_himelmez1$;
 	end;
-OnTimer30000:
-	npctalk "Himmelmez : There's no need to pretend to be so laid back. Don't bluff about the whereabouts of you Majesty and things will be alright.", instance_npcname("Himmelmez#ghinstance1");
+OnTimer36000:
+	npctalk "Heinrich: What?", 'npc_heinrich2$;
 	end;
-OnTimer35000:
-	npctalk "Heinrich : What did you say?", instance_npcname("Heinrich#ghinstance2");
+OnTimer41000:
+	npctalk "Himelmez: Hmm, now I have your attention do I not?", 'npc_himelmez1$;
 	end;
-OnTimer45000:
-	npctalk "Himmelmez : Hohoho, do you have any questions? You're a really mysterious man.", instance_npcname("Himmelmez#ghinstance1");
-	end;	
-OnTimer50000:
-	npctalk "Himmelmez : Not coveting the king's throne, you're such a stupid man, only waiting for his return. Your innocence is true, I love it.", instance_npcname("Himmelmez#ghinstance1");
+OnTimer47000:
+	npctalk "Himelmez: You don't want the king's position, just wait for him to come back. I like your purity.", 'npc_himelmez1$;
 	end;
-OnTimer55000:
-	npctalk "Himmelmez : You make me wish we hadn't met in this situation. Too bad we did.", instance_npcname("Himmelmez#ghinstance1");
+OnTimer54000:
+	npctalk "Himelmez: It's a pity to meet you in a situation like this.", 'npc_himelmez1$;
 	end;
-OnTimer60000:
-	npctalk "Heinrich : The King responded to the invitation of the Rune Midgard's Royal Family and hasn't come back yet.", instance_npcname("Heinrich#ghinstance2");
+OnTimer59000:
+	npctalk "Heinrich: My king is visiting the Rune-Midgarts royal family. He's not back yet.", 'npc_heinrich2$;
 	end;
-OnTimer65000:
-	npctalk "Heinrich : Just leave before you get in trouble. This is the King's will!", instance_npcname("Heinrich#ghinstance2");
+OnTimer66500:
+	npctalk "Heinrich: And now you are trying to trick me, what has happened to him?!", 'npc_heinrich2$;
 	end;
-OnTimer70000:
-	npctalk "Himmelmez : Well~ Today, with such a busy commandant, I won't be able to talk as much as I'd love for you to contemplate my explanation~", instance_npcname("Himmelmez#ghinstance1");
+OnTimer71500:
+	npctalk "Himelmez: Well~ I would love to sit down and explain for you, but I'm kind of busy today~", 'npc_himelmez1$;
 	end;
-OnTimer75000:
-	npctalk "Himmelmez : I gotta get my job done. Meanwhile why don't you meet my men? Hohoho.", instance_npcname("Himmelmez#ghinstance1");
+OnTimer78000:
+	npctalk "Himelmez: I have business to take care of. My minions will treat you well enough for me~", 'npc_himelmez1$;
 	end;
-OnTimer80000:
-	npctalk "Heinrich : Damn! She has detected the position of the Ymir's Heart pieces.", instance_npcname("Heinrich#ghinstance2");
-	donpcevent instance_npcname("Himmelmez#ghinstance1")+"::OnDisable";
-	end;
-OnTimer85000:
-	npctalk "Heinrich : Now, Khalitzburg Crusaders and White Knights, follow me...", instance_npcname("Heinrich#ghinstance2");
-	hideonnpc instance_npcname("Varmunt#ghinstance1");
-
-	for(set .@i,1; .@i<=20; set .@i,.@i+4) {
-		hideonnpc instance_npcname("Khalitzburg Crusader#"+.@i);
-		hideonnpc instance_npcname("Khalitzburg Crusader#"+(.@i+1));
-		hideonnpc instance_npcname("White Knight#"+(.@i+2));
-		hideonnpc instance_npcname("White Knight#"+(.@i+3));
-	}
-	hideonnpc instance_npcname("Khalitzburg Crusader#21");
-	hideonnpc instance_npcname("Khalitzburg Crusader#22");
-
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#talkinstance1")+"::OnMyMobDead"; 
-	monster .@map$,145,59,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,154,59,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,145,69,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,154,69,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,145,79,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,154,79,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,145,89,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,154,89,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,145,99,"Abyss Knight",2470,1,.@label$;
-	monster .@map$,154,99,"Abyss Knight",2470,1,.@label$;
-
-	for(set .@i,1; .@i<=22; set .@i,.@i+1)
-		hideoffnpc instance_npcname(".#ghinstance"+.@i);
-
-	npctalk ". : I'm so thirsty!", instance_npcname(".#ghinstance22");
-	npctalk ". : Uhh... My body.", instance_npcname(".#ghinstance21");
-	npctalk ". : Who am I...", instance_npcname(".#ghinstance18");
-	npctalk ". : This is so uncomfortable. Eww!", instance_npcname(".#ghinstance17");
-	npctalk ". : Oh... No... I cannot die...", instance_npcname(".#ghinstance14");
-	npctalk ". : I'm thirsty.", instance_npcname(".#ghinstance13");
-	npctalk ". : Ack... Ugh.", instance_npcname(".#ghinstance10");
-	npctalk ". : Heinrich Sir, help!", instance_npcname(".#ghinstance9");
-	npctalk ". : My stomach hurts...", instance_npcname(".#ghinstance6");
-	npctalk ". : Help.", instance_npcname(".#ghinstance5");
-	npctalk ". : Mom...", instance_npcname(".#ghinstance2");
-	npctalk ". : I do not want to die.", instance_npcname(".#ghinstance1");
-	end;
-OnTimer88000:
-	npctalk "Heinrich : Unbelievable. My men are...This kind of thing is not possible!", instance_npcname("Heinrich#ghinstance2");
-
-	for(set .@i,1; .@i<=20; set .@i,.@i+4) {
-		hideonnpc instance_npcname(".#ghinstance"+.@i);
-		hideonnpc instance_npcname(".#ghinstance"+(.@i+1));
-		disablenpc instance_npcname(".#ghinstance"+(.@i+2));
-		disablenpc instance_npcname(".#ghinstance"+(.@i+3));
+OnTimer84500:
+	npctalk "Heinrich: She probably already knows where the Ymir's heart piece is.", 'npc_heinrich2$;
+	disablenpc 'npc_himelmez1$;
+	end;
+OnTimer90500:
+	npctalk "Heinrich: All Khalitzburg and White Knights should follow me now...", 'npc_heinrich2$;
+	end;
+OnTimer92000:
+	for (.@i = 1; .@i <= 20; .@i += 4) {
+		hideonnpc instance_npcname("Khalitzburg Knightage#" + .@i);
+		hideonnpc instance_npcname("Khalitzburg Knightage#" + (.@i+1));
+		hideonnpc instance_npcname("White Knight#" + (.@i+2));
+		hideonnpc instance_npcname("White Knight#" + (.@i+3));
 	}
-	hideonnpc instance_npcname(".#ghinstance21");
-	hideonnpc instance_npcname(".#ghinstance22");
-
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#talkinstance1")+"::OnMyMobDead"; 
-	monster .@map$,145,54,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,54,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,145,64,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,64,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,145,74,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,74,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,145,84,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,84,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,145,94,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,94,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,145,104,"Khalitzburg",2471,1,.@label$;
-	monster .@map$,154,104,"Khalitzburg",2471,1,.@label$;
-	end;
-OnTimer93000:
-	npctalk "Varmunt : Unbelievable. My men are...This kind of thing is not possible!", instance_npcname("Varmunt#ghinstance2");
-	end;
-OnTimer97000:
-	npctalk "Heinrich : I'm sorry...", instance_npcname("Heinrich#ghinstance2");
-	end;
-OnTimer105000:
-	npctalk "Heinrich : I'm sorry, my lord! Do not forgive me!", instance_npcname("Heinrich#ghinstance2");
-	mapannounce instance_mapname("1@gl_k"), "Heinrich's Shout: Dead men, dead men all over the place!",bc_map,"0xFFFF00";
-	end;
-OnTimer107000:
-	mapannounce instance_mapname("1@gl_k"), "Heinrich's Shout: Everybody! Go back!",bc_map,"0xFFFF00";
+	hideonnpc instance_npcname("Khalitzburg Knightage#21");
+	hideonnpc instance_npcname("Khalitzburg Knightage#22");
+
+	.@label$ = instance_npcname("#talkinstance1") + "::OnMyMobDead";
+	monster 'map_name$[0],145,59,"Abysmal Knight",2470,1,.@label$;// MG_KNIGHT_OF_ABYSS
+	monster 'map_name$[0],154,59,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,69,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,69,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,79,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,79,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,89,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,89,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,99,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,99,"Abysmal Knight",2470,1,.@label$;
+
+	monster 'map_name$[0],145,54,"Khalitzburg",2471,1,.@label$;// G_MG_KHALITZBURG
+	unittalk $@mobid[0],"Water... Someone give me water...";
+	monster 'map_name$[0],154,54,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Kkkrrrruughgh...";
+	monster 'map_name$[0],145,64,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Sir Heinrich. Save me...";
+	monster 'map_name$[0],154,64,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I miss my sister...";
+	monster 'map_name$[0],145,74,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Don't leave me alone, help me.";
+	monster 'map_name$[0],154,74,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Aaarrrrrhhhh";
+	monster 'map_name$[0],145,84,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I am so thirsty.";
+	monster 'map_name$[0],154,84,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Oh...No...I can't die yet...";
+	monster 'map_name$[0],145,94,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I feel sick to my stomach urrgg";
+	monster 'map_name$[0],154,94,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Can someone...";
+	monster 'map_name$[0],145,104,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Arrgg... My body";
+	monster 'map_name$[0],154,104,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"My throat is burning!";
+	end;
+OnTimer94000:
+	npctalk "Heinrich: My men... This can't be happening!", 'npc_heinrich2$;
+	end;
+OnTimer96500:
+	npctalk "Varmundt: Sir Heinrich, they're all monsters. You need to give them rest!", 'npc_varmundt1$;
+	end;
+OnTimer100000:
+	npctalk "Heinrich: I'm so sorry...", 'npc_heinrich2$;
+	end;
+OnTimer103000:
+	npctalk "Heinrich: I am sorry, my knights! Forgive me!", 'npc_heinrich2$;
+	end;
+OnTimer106000:
+	mapannounce 'map_name$[0], "Sir Heinrich: Death to all!", bc_map,0xFFFF33,FW_NORMAL,15;
+	end;
+OnTimer109000:
+	mapannounce 'map_name$[0], "Sir Heinrich: Go back to the darkness!", bc_map,0xFFFF33,FW_NORMAL,15;
+	end;
+OnTimer109500:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#1");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#2");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#1");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#2");
 	end;
 OnTimer110000:
-	donpcevent instance_npcname(".#ghinstance22")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance21")+"::OnEffect1";
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#3");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#4");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#5");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#6");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#3");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#4");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#5");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#6");
 	end;
 OnTimer110500:
-	enablenpc instance_npcname(".#ghinstance20");
-	enablenpc instance_npcname(".#ghinstance19");
-	donpcevent instance_npcname(".#ghinstance20")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance19")+"::OnEffect1";
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#7");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#8");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#9");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#10");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#7");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#8");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#9");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#10");
 	end;
 OnTimer111000:
-	donpcevent instance_npcname(".#ghinstance18")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance17")+"::OnEffect1";
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#11");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#12");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#13");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#14");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#11");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#12");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#13");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#14");
 	end;
 OnTimer111500:
-	enablenpc instance_npcname(".#ghinstance16");
-	enablenpc instance_npcname(".#ghinstance15");
-	donpcevent instance_npcname(".#ghinstance16")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance15")+"::OnEffect1";
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#15");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#16");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#17");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#18");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#15");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#16");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#17");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#18");
 	end;
 OnTimer112000:
-	donpcevent instance_npcname(".#ghinstance14")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance13")+"::OnEffect1";
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#19");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#20");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#21");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#22");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#19");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#20");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#21");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#22");
+	disablenpc 'npc_heinrich2$;
+	enablenpc 'npc_heinrich3$;
+	killmonster 'map_name$[0], instance_npcname("#talkinstance1") + "::OnMyMobDead";
 	end;
 OnTimer112500:
-	enablenpc instance_npcname(".#ghinstance12");
-	enablenpc instance_npcname(".#ghinstance11");
-	donpcevent instance_npcname(".#ghinstance12")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance11")+"::OnEffect1";
-	end;
-OnTimer113000:
-	donpcevent instance_npcname(".#ghinstance10")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance9")+"::OnEffect1";
-	end;
-OnTimer113500:
-	enablenpc instance_npcname(".#ghinstance8");
-	enablenpc instance_npcname(".#ghinstance7");
-	donpcevent instance_npcname(".#ghinstance8")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance7")+"::OnEffect1";
-	end;
-OnTimer114000:
-	donpcevent instance_npcname(".#ghinstance6")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance5")+"::OnEffect1";
-	end;
-OnTimer114500:
-	enablenpc instance_npcname(".#ghinstance4");
-	enablenpc instance_npcname(".#ghinstance3");
-	donpcevent instance_npcname(".#ghinstance4")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance3")+"::OnEffect1";
-	end;
-OnTimer114750: //custom time
-	disablenpc instance_npcname(".#ghinstance3");
-	disablenpc instance_npcname(".#ghinstance4");
-	disablenpc instance_npcname(".#ghinstance7");
-	disablenpc instance_npcname(".#ghinstance8");
-	disablenpc instance_npcname(".#ghinstance11");
-	disablenpc instance_npcname(".#ghinstance12");
-	disablenpc instance_npcname(".#ghinstance15");
-	disablenpc instance_npcname(".#ghinstance16");
-	disablenpc instance_npcname(".#ghinstance19");
-	disablenpc instance_npcname(".#ghinstance20");
-	end;
-OnTimer115000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnEnable";
-	donpcevent instance_npcname("Heinrich#ghinstance2")+"::OnDisable";
-	npctalk "Heinrich : I cannot believe I killed my men with my own hands!", instance_npcname("Heinrich#ghinstance3");
-	donpcevent instance_npcname(".#ghinstance2")+"::OnEffect1";
-	donpcevent instance_npcname(".#ghinstance1")+"::OnEffect1";
-	killmonster instance_mapname("1@gl_k"),instance_npcname("#talkinstance1")+"::OnMyMobDead";
-	end;
-OnTimer120000:
-	npctalk "Varmunt : Heinrich, Sir! I need a quick decision.", instance_npcname("Varmunt#ghinstance2");
-	end;
-OnTimer125000:
-	npctalk "Varmunt : To prevent other attacks, go chase her!", instance_npcname("Varmunt#ghinstance2");
-	end;
-OnTimer130000:
-	npctalk "Heinrich : Varmunt is right about that. Now is not the time to regret.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer135000:
-	npctalk "Heinrich : People, gather around and follow my orders.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer140000:
-	npctalk "Heinrich : Himmelmez is turning into monsters all the people she put to sleep.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer145000:
-	npctalk "Heinrich : I don't know if there are survivors around here yet.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer150000:
-	npctalk "Heinrich : If there are survivors from this evil thing, please rescue them.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer155000:
-	npctalk "Heinrich : With Varmunt by my side, I'm going to chase Himmelmez down.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer160000:
-	npctalk "Varmunt : Now, your help is desperately needed. I hopefully ask you.", instance_npcname("Varmunt#ghinstance2");
-	end;
-OnTimer165000:
-	npctalk "Heinrich : Hurry up Varmunt, let's chase her down.", instance_npcname("Heinrich#ghinstance3");
-	end;
-OnTimer167000:
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnDisable";
-	end;
-OnTimer168000:
-	donpcevent instance_npcname("Varmunt#ghinstance2")+"::OnDisable";
-	donpcevent instance_npcname("Heinrich#ghinstance3")+"::OnDisable";
-	stopnpctimer;
-	donpcevent instance_npcname("#ghinstancewarp1")+"::OnEnable";
-	donpcevent instance_npcname("#ghinstancewarp2")+"::OnEnable";
-	mapannounce instance_mapname("1@gl_k"), "9 o'clock warp leading to zone 2 is now open.",bc_map,"0xFFFF00";
-	donpcevent instance_npcname("#talkinstance1")+"::OnDisable";
-	donpcevent instance_npcname("#ghmemorialmob01")+"::OnEnable";
-	end;
-OnMyMobDead:
+	npctalk "Heinrich: I killed my own men...", 'npc_heinrich3$;
 	end;
-}
-
-1@gl_k,145,54,6	script	.#ghinstance1	2471,{
+OnTimer115500:
+	npctalk "Varmundt: Sir Heinrich! We don't have much time!", 'npc_varmundt1$;
 	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname(strnpcinfo(0));
+OnTimer118500:
+	npctalk "Varmundt: If you hurry now, there's a chance!", 'npc_varmundt1$;
 	end;
-OnEnable:
-	hideoffnpc instance_npcname(strnpcinfo(0));
+OnTimer121500:
+	npctalk "Heinrich: Varmundt is right. Now is not the time for mourning.", 'npc_heinrich3$;
 	end;
-OnEffect1:
-	specialeffect EF_GRANDCROSS;
-	specialeffect EF_LEXAETERNA;
+OnTimer124500:
+	npctalk "Heinrich: I have a request to you followers.", 'npc_heinrich3$;
 	end;
-}
-1@gl_k,154,54,3	duplicate(.#ghinstance1)	.#ghinstance2	2471
-1@gl_k,145,64,6	duplicate(.#ghinstance1)	.#ghinstance5	2471
-1@gl_k,154,64,3	duplicate(.#ghinstance1)	.#ghinstance6	2471
-1@gl_k,145,74,6	duplicate(.#ghinstance1)	.#ghinstance9	2471
-1@gl_k,154,74,3	duplicate(.#ghinstance1)	.#ghinstance10	2471
-1@gl_k,145,84,6	duplicate(.#ghinstance1)	.#ghinstance13	2471
-1@gl_k,154,84,3	duplicate(.#ghinstance1)	.#ghinstance14	2471
-1@gl_k,145,94,6	duplicate(.#ghinstance1)	.#ghinstance17	2471
-1@gl_k,154,94,3	duplicate(.#ghinstance1)	.#ghinstance18	2471
-1@gl_k,145,104,6	duplicate(.#ghinstance1)	.#ghinstance21	2471
-1@gl_k,154,104,3	duplicate(.#ghinstance1)	.#ghinstance22	2471
-
-1@gl_k,145,59,6	script	.#ghinstance3	111,{
+OnTimer127500:
+	npctalk "Heinrich: Himelmez can turn living beings into monsters.", 'npc_heinrich3$;
 	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname(strnpcinfo(0));
+OnTimer130500:
+	npctalk "Heinrich: But, there might still be survivors here.", 'npc_heinrich3$;
 	end;
-OnEnable:
-	hideoffnpc instance_npcname(strnpcinfo(0));
+OnTimer134500:
+	npctalk "Heinrich: Destroy the monsters and find any survivors.", 'npc_heinrich3$;
 	end;
-OnEffect1:
-	specialeffect EF_GRANDCROSS;
-	specialeffect EF_LEXAETERNA;
+OnTimer138500:
+	npctalk "Heinrich: Varmundt and I will chase Himelmez.", 'npc_heinrich3$;
 	end;
-}
-1@gl_k,154,59,3	duplicate(.#ghinstance3)	.#ghinstance4	111
-1@gl_k,145,69,6	duplicate(.#ghinstance3)	.#ghinstance7	111
-1@gl_k,154,69,3	duplicate(.#ghinstance3)	.#ghinstance8	111
-1@gl_k,145,79,6	duplicate(.#ghinstance3)	.#ghinstance11	111
-1@gl_k,154,79,3	duplicate(.#ghinstance3)	.#ghinstance12	111
-1@gl_k,145,89,6	duplicate(.#ghinstance3)	.#ghinstance15	111
-1@gl_k,154,89,3	duplicate(.#ghinstance3)	.#ghinstance16	111
-1@gl_k,145,99,6	duplicate(.#ghinstance3)	.#ghinstance19	111
-1@gl_k,154,99,3	duplicate(.#ghinstance3)	.#ghinstance20	111
-
-1@gl_k,96,80,0	script	#ghinstancewarp1	45,1,2,{
+OnTimer143500:
+	npctalk "Heinrich: Very well, Varmundt. Let's find Himelmez.", 'npc_heinrich3$;
 	end;
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname(strnpcinfo(0));
+OnTimer147500:
+	disablenpc 'npc_heinrich3$;
 	end;
-OnEnable:
-	enablenpc instance_npcname(strnpcinfo(0));
+OnTimer148500:
+	stopnpctimer;
+	donpcevent instance_npcname("#ghmemorialmob01") + "::OnStart";
+
+	disablenpc 'npc_varmundt1$;
+	disablenpc instance_npcname("#talkinstance1");
+	'npc_himelmez1$ = 'npc_varmundt1$ = 'npc_heinrich2$ = 'npc_heinrich3$ = "";
 	end;
-OnTouch_:
-	set .@map1$, instance_mapname("1@gl_k");
-	set .@map2$, instance_mapname("2@gl_k");
-	switch(atoi(replacestr(strnpcinfo(2),"ghinstancewarp",""))) {
-		case 1: warp .@map1$,80,80; break;
-		case 2: warp .@map1$,105,80; break;
-		case 3: warp .@map1$,215,79; break;
-		case 4: warp .@map1$,195,79; break;
-		case 5: warp .@map1$,215,216; break;
-		case 6: warp .@map1$,235,216; break;
-		case 7: warp .@map2$,150,46; break;
-		case 8: warp .@map2$,126,123; break;
-		case 9: warp .@map2$,150,116; break;
-		case 10: warp .@map2$,174,101; break;
-		case 11: warp .@map2$,150,110; break;
-		case 12: warp .@map2$,150,179; break;
-	}
+OnMyMobDead:
 	end;
 }
-1@gl_k,90,80,0	duplicate(#ghinstancewarp1)	#ghinstancewarp2	45,1,2
-1@gl_k,202,79,0	duplicate(#ghinstancewarp1)	#ghinstancewarp3	45,1,2
-1@gl_k,206,79,0	duplicate(#ghinstancewarp1)	#ghinstancewarp4	45,1,2
-1@gl_k,228,216,0	duplicate(#ghinstancewarp1)	#ghinstancewarp5	45,1,2
-1@gl_k,222,216,0	duplicate(#ghinstancewarp1)	#ghinstancewarp6	45,1,2
-1@gl_k,150,284,0	duplicate(#ghinstancewarp1)	#ghinstancewarp7	45,1,2
-2@gl_k,145,123,0	duplicate(#ghinstancewarp1)	#ghinstancewarp8	45,1,2
-2@gl_k,136,122,0	duplicate(#ghinstancewarp1)	#ghinstancewarp9	45,1,2
-2@gl_k,154,101,0	duplicate(#ghinstancewarp1)	#ghinstancewarp10	45,1,2
-2@gl_k,165,101,0	duplicate(#ghinstancewarp1)	#ghinstancewarp11	45,1,2
-2@gl_k,150,163,0	duplicate(#ghinstancewarp1)	#ghinstancewarp12	45,1,2
-
 
 // Sector 1 Mobs
 //============================================================
-1@gl_k,0,0,0	script	#ghmemorialmob01	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob01");
+1@gl_k,1,1,0	script	#ghmemorialmob01	HIDDEN_WARP_NPC,{
 	end;
-OnEnable:
+OnStart:
 	enablenpc instance_npcname("#ghmemorialmob01");
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob01")+"::OnMyMobDead";
-	areamonster .@map$,76,99,87,10,"Suffering Chamberlain",2466,15,.@label$;
-	areamonster .@map$,67,39,12,6,"Fallen Monk",2465,20,.@label$;
-	areamonster .@map$,67,39,12,6,"Suffering Chamberlain",2466,3,.@label$;
-	areamonster .@map$,32,75,51,58,"Decayed Butler",2464,6,.@label$;
-	areamonster .@map$,45,84,6,137,"Decayed Butler",2464,12,.@label$;
+	enablenpc instance_npcname("#2Control");
+	enablenpc instance_npcname("#2Control2");
+	mapannounce 'map_name$[0], "A portal has opened to the west.", bc_map,0xFFFF00;
+
+	// note: x17 MG_GHOUL / x17 MG_ZOMBIE / x17 MG_WRAITH
+	.@label$ = instance_npcname("#ghmemorialmob01") + "::OnMyMobDead";
+	areamonster 'map_name$[0],76,99,87,10,"Grand Chamberlain in pain",2466,14,.@label$;
+	areamonster 'map_name$[0],67,39,12, 6,"Corrupted Monk",2465,17,.@label$;
+	areamonster 'map_name$[0],67,39,12, 6,"Grand Chamberlain in pain",2466,3,.@label$;
+	areamonster 'map_name$[0],32,75,51,58,"Corrupted Steward",2464,5,.@label$;
+	areamonster 'map_name$[0],45,84,6,137,"Corrupted Steward",2464,12,.@label$;
 	end;
 OnMyMobDead:
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob01")+"::OnMyMobDead";
-	set .@mob_dead_num, 56 - mobcount(.@map$,.@label$);
+	.@label$ = instance_npcname("#ghmemorialmob01") + "::OnMyMobDead";
+	.@mob_dead_num = 51 - mobcount('map_name$[0],.@label$);
 	if (.@mob_dead_num > 35) {
-		mapannounce .@map$, "Seems like Himmelmez drains the dead's souls. They must be destroyed.",bc_map,"0xFFFFFF";
-		killmonster .@map$,.@label$;
-		donpcevent instance_npcname("Aspiring Butcher#clearGH")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob01")+"::OnDisable";
+		mapannounce 'map_name$[0], "Himelmez's curse is getting weaker. Find any survivors!", bc_map,0xFFFFFF;
+		killmonster 'map_name$[0], .@label$;
+		enablenpc instance_npcname("Altar boy Domun#1");
+		disablenpc instance_npcname("#ghmemorialmob01");
 	}
 	end;
 }
 
-1@gl_k,17,51,3	script	Aspiring Butcher#clearGH	706,{
-	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
-		mes "[Aspiring Butcher]";
-		mes "Help me! Help me!!!";
-		next;
-		select("Hey, wake up! Are there any other survivors?");
-		mes "["+strcharinfo(0)+"]";
-		mes "Hey, wake up! Are you alone?";
-		unittalk getcharid(3), strcharinfo(0) +" : Hey, wake up! Are you alone?";
-		next;
-		mes "[Aspiring Butcher]";
-		mes "The Chamberlain... the Monk... They've become monsters. I couldn't do anything.";
-		npctalk "Aspiring Butcher : The Chamberlain... the Monk... They've become monsters. I couldn't do anything.";
-		next;
-		mes "[Aspiring Butcher]";
-		mes "I just stood still... Nothing, I couldn't do anything...";
-		npctalk "Aspiring Butcher : I just stood still... Nothing, I couldn't do anything...";
-		next;
-		select("Wake up!");
-		mes "["+strcharinfo(0)+"]";
-		mes "Wake up kid! Go east along the central passage to the outside! The path is safe!";
-		unittalk getcharid(3), strcharinfo(0) +" : Wake up kid! Go east along the central passage to the outside! The path is safe!";
-		next;
-		mes "[Aspiring Butcher]";
-		mes "East passage? Alone? How?";
-		npctalk "Aspiring Butcher : East passage? Alone? How?";
-		next;
-		select("I can guide you through the path.");
-		mes "["+strcharinfo(0)+"]";
-		mes "I will guide you, perhaps that will help. If you want to close your eyes try not to hit anything.";
-		unittalk getcharid(3), strcharinfo(0) +" : I will guide you, perhaps that will help. If you want to close your eyes try not to hit anything.";
-		next;
-		mes "[Aspiring Butcher]";
-		mes "Aspiring Butcher: I know, I... I'm trying to.";
-		npctalk "Aspiring Butcher : Aspiring Butcher: I know, I... I'm trying to.";
-		donpcevent instance_npcname("Aspiring Butcher#clearGH")+"::OnDisable";
-		donpcevent instance_npcname("#ghmemorialmob02")+"::OnEnable";
-		close;
-	} else {
-		mes "[Aspiring Butcher]";
-		mes "Somebody help me, somebody help me, please.";
+1@gl_k,17,51,3	script	Altar boy Domun#1	4_M_KID1,{
+	if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+		mes "[Altar boy Domun]";
+		mes "Save me, save me, please...";
 		close;
 	}
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Aspiring Butcher#clearGH");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Aspiring Butcher#clearGH");
-	end;
+	.@account_id = getcharid(3);
+	.@player_name$ = strcharinfo(0);
+	mes "[Altar boy Domun]";
+	mes "Save me! Save me!!!";
+	npctalk "Save me! Save me!!!";
+	next;
+	select("Hold on! Are you the only survivor?");
+	mes "[" + .@player_name$ + "]";
+	mes "Hold on! Are you the only survivor?";
+	unittalk .@account_id, .@player_name$ + " : Hold on! Are you the only survivor?";
+	next;
+	mes "[Altar boy Domun]";
+	mes "Chamberlains... monks... They all turned into monsters. I couldn't do anything.";
+	npctalk "Altar boy Domun: Chamberlains... monks... They all turned into monsters. I couldn't do anything.";
+	next;
+	mes "[Altar boy Domun]";
+	mes "All I could do was... Just hide in here... Nothing, nothing I could do...";
+	npctalk "Altar boy Domun: All I could do was... Just hide in here... Nothing, nothing I could do...";
+	next;
+	select("Pull it together!");
+	mes "[" + .@player_name$ + "]";
+	mes "Wake up kid! Go east and find the middle passage to the outside! It is safe there!";
+	unittalk .@account_id, .@player_name$ + " : Wake up kid! Go east and find the middle passage to the outside! It is safe there!";
+	next;
+	mes "[Altar boy Domun]";
+	mes "To the east passage? Alone? How?";
+	npctalk "Altar boy Domun: To the east passage? Alone? How?";
+	next;
+	select("I will give you a weapon.");
+	mes "[" + .@player_name$ + "]";
+	mes "Here's a weapon. Just close your eye and swing for those monsters.";
+	unittalk .@account_id, .@player_name$ + " : Here's a weapon. Just close your eye and swing for those monsters.";
+	next;
+	mes "[Altar boy Domun]";
+	mes "Ok, I... I'll try.";
+	npctalk "Altar boy Domun: Ok, I... I'll try.";
+	disablenpc instance_npcname("Altar boy Domun#1");
+	donpcevent instance_npcname("#ghmemorialmob02") + "::OnStart";
+	close;
 }
 
 // Sector 2 Mobs
 //============================================================
-1@gl_k,291,145,3	script	Hollgrehenn Destroyer	726,{
-	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
-		mes "[Hollgrehenn Destroyer]";
-		mes "Yaaa!! Die!!!";
-		npctalk "Hollgrehenn Destroyer : Yaaa!! Die!!!";
-		specialeffect EF_CRASHEARTH;
-		next;
-		select("Don't worry!");
-		mes "["+strcharinfo(0)+"]";
-		mes "Don't worry! Mam. Are you alone? No other survivors?";
-		unittalk getcharid(3), strcharinfo(0) +" : Don't worry! Mam. Are you alone? No other survivors?";
-		next;
-		mes "[Hollgrehenn Destroyer]";
-		mes "I'm the only survivor left";
-		npctalk "Hollgrehenn Destroyer : I'm the only survivor left";
-		next;
-		select("This is a very dangerous place.");
-		mes "["+strcharinfo(0)+"]";
-		mes "This is a very dangerous place. You know the central passage? Do you think you can move... and get to a safer place?";
-		unittalk getcharid(3), strcharinfo(0) +" : This is a very dangerous place. You know the central passage? Do you think you can move... and get to a safer place?";
-		next;
-		mes "[Hollgrehenn Destroyer]";
-		mes "Yes, I am able to move. I'll move for my baby's sake.";
-		npctalk "Hollgrehenn Destroyer : Yes, I am able to move. I'll move for my baby's sake.";
-		next;
-		select("Survive the road...");
-		mes "["+strcharinfo(0)+"]";
-		mes "You and your baby will get out of here safely. But I'm sorry I can't help you more.";
-		unittalk getcharid(3), strcharinfo(0) +" : You and your baby will get out of here safely. But I'm sorry I can't help you more.";
-		next;
-		mes "[Hollgrehenn Destroyer]";
-		mes "That's ok. Thank you for helping us. I'm good to go alone. Ah and good luck also.";
-		npctalk "Hollgrehenn Destroyer : That's ok. Thank you for helping us. I'm good to go alone. Ah and good luck also.";
-		donpcevent instance_npcname("Hollgrehenn Destroyer")+"::OnDisable";
-		donpcevent instance_npcname("#ghmemorialmob03")+"::OnEnable";
-		close;
-	} else {
-		mes "[Hollgrehenn Destroyer]";
-		mes "Somebody help me, somebody help me, please";
-		close;
-	}
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Hollgrehenn Destroyer");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Hollgrehenn Destroyer");
+1@gl_k,1,1,0	script	#ghmemorialmob02	HIDDEN_WARP_NPC,{
 	end;
-}
-
-1@gl_k,0,0,0	script	#ghmemorialmob02	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob02");
-	end;
-OnEnable:
+OnStart:
 	enablenpc instance_npcname("#ghmemorialmob02");
-	donpcevent instance_npcname("#ghinstancewarp3")+"::OnEnable";
-	donpcevent instance_npcname("#ghinstancewarp4")+"::OnEnable";
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob02")+"::OnMyMobDead";
-	mapannounce .@map$,"3 o'clock warp leading to zone 3 is now open.",bc_map,"0xFFFF00";
-	areamonster .@map$,241,113,291,19,"Suffering Chamberlain",2466,12,.@label$;
-	areamonster .@map$,241,113,291,19,"Decayed Monk",2464,12,.@label$;
-	areamonster .@map$,227,217,291,135,"Suffering Chamberlain",2466,12,.@label$;
-	areamonster .@map$,227,217,291,135,"Decayed Monk",2464,12,.@label$;
+	enablenpc instance_npcname("#3Control");
+	enablenpc instance_npcname("#3Control2");
+	for ( .@i = 1; .@i <= 26; .@i++ )
+		enablenpc instance_npcname("A dead man#" + .@i);
+	mapannounce 'map_name$[0], "A portal has opened to the east.", bc_map,0xFFFF00;
+
+	// note: x34 MG_ZOMBIE / x35 MG_GHOUL
+	.@label$ = instance_npcname("#ghmemorialmob02") + "::OnMyMobDead";
+	areamonster 'map_name$[0],236,12,288,52,"Outraged Refiner",2466,18,.@label$;// MG_GHOUL
+	areamonster 'map_name$[0],236,12,288,52,"Decomposed Blacksmith",2464,17,.@label$;// MG_ZOMBIE
+	areamonster 'map_name$[0],242,71,286,145,"Outraged Refiner",2466,17,.@label$;
+	areamonster 'map_name$[0],242,71,286,145,"Decomposed Blacksmith",2464,17,.@label$;
 	end;
 OnMyMobDead:
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob02")+"::OnMyMobDead";
-	set .@mob_dead_num, 48 - mobcount(.@map$,.@label$);
-	if (.@mob_dead_num > 28) {
-		mapannounce .@map$, "Seems like Himmelmez drains the dead's souls. They must be destroyed.",bc_map,"0xFFFFFF";
-		killmonster .@map$,.@label$;
-		donpcevent instance_npcname("Hollgrehenn Destroyer")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob02")+"::OnDisable";
+	.@label$ = instance_npcname("#ghmemorialmob02") + "::OnMyMobDead";
+	.@mob_dead_num = 69 - mobcount('map_name$[0],.@label$);
+	if (.@mob_dead_num > 56) {
+		mapannounce 'map_name$[0], "Himelmez's curse is getting weaker. Find any survivors!", bc_map,0xFFFFFF;
+		killmonster 'map_name$[0],.@label$;
+		enablenpc instance_npcname("Holgren the Destroyer#1");
+		disablenpc instance_npcname("#ghmemorialmob02");
 	}
 	end;
 }
 
+1@gl_k,291,145,3	script	Holgren the Destroyer#1	4_F_JOB_BLACKSMITH,{
+	if (getcharid(0) != getpartyleader(getcharid(1),2)) {
+		mes "[Holgren the Destroyer]";
+		mes "You human?";
+		close;
+	}
+	.@account_id = getcharid(3);
+	.@player_name$ = strcharinfo(0);
+	mes "[Holgren the Destroyer]";
+	mes "Die!! You shall die!!!";
+	npctalk "Holgren the Destroyer: Die!! You shall die!!!";
+	specialeffect EF_CRASHEARTH;
+	next;
+	select("Relax! I'm not a monster!");
+	mes "[" + .@player_name$ + "]";
+	mes "Relax! I am Human. Are you alone? Is anyone else here?";
+	unittalk .@account_id, .@player_name$ + " : Relax! I am Human. Are you alone? Is anyone else here?";
+	next;
+	mes "[Holgren the Destroyer]";
+	mes "It's only me.";
+	npctalk "Holgren the Destroyer: It's only me.";
+	next;
+	select("It's dangerous here...");
+	mes "[" + .@player_name$ + "]";
+	mes "It's dangerous here. You know the way to the middle passage? Can you move?";
+	unittalk .@account_id, .@player_name$ + " : It's dangerous here. You know the way to the middle passage? Can you move?";
+	next;
+	mes "[Holgren the Destroyer]";
+	mes "Yes, I can move. I need to get out of here.";
+	npctalk "Holgren the Destroyer: Yes, I can move. I need to get out of here.";
+	next;
+	select("Be safe...");
+	mes "[" + .@player_name$ + "]";
+	mes "Sorry, I can't go with you.";
+	unittalk .@account_id, .@player_name$ + " : Sorry, I can't go with you.";
+	next;
+	mes "[Holgren the Destroyer]";
+	mes "It's ok. You've already done enough. I can help myself. Good luck to you too.";
+	npctalk "Holgren the Destroyer: It's ok. You've already done enough. I can help myself. Good luck to you too.";
+	disablenpc instance_npcname("Holgren the Destroyer#1");
+	donpcevent instance_npcname("#ghmemorialmob03") + "::OnEnable";
+	close;
+}
+
 // Tramp Mobs
 //============================================================
-1@gl_k,221,82,3	script	Breathless Man#GHtramp1	849,4,4,{
+1@gl_k,221,82,3	script	A dead man#1	4_M_DIEMAN,5,5,{
 	end;
 OnTouch_:
-	set .@i, rand(1,10);
-	if (.@i == 1) set .@mobs,3;
-	else if (.@i == 2) set .@mobs,4;
-	else if (.@i == 3) set .@mobs,5;
-	else if (.@i < 7) set .@mobs,6;
-	else set .@mobs,7;
-	getmapxy(.@map$,.@x,.@y,UNITTYPE_NPC);
+	.@i = rand(1,10);
+	if (.@i == 1) .@mobs = 3;
+	else if (.@i == 2) .@mobs = 4;
+	else if (.@i == 3) .@mobs = 5;
+	else if (.@i < 7) .@mobs = 6;
+	else .@mobs = 7;
+	getmapxy .@map$,.@x,.@y, UNITTYPE_NPC;
 	specialeffect EF_VENOMDUST;
-	monster .@map$,.@x,.@y,"Muck Worm",2467,.@mobs,instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
-	disablenpc instance_npcname(strnpcinfo(0));
-	end;
-OnMyMobDead:
-	end;
-OnInstanceInit:
-OnEnable:
-	enablenpc instance_npcname(strnpcinfo(0));
-	end;
-OnDisable:
-	disablenpc instance_npcname(strnpcinfo(0));
+	monster .@map$,.@x,.@y,"Maggot",2467,.@mobs;
+	disablenpc instance_npcname( strnpcinfo(0) );
 	end;
 }
-1@gl_k,213,63,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp2	849,4,4
-1@gl_k,230,50,2	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp3	849,4,4
-1@gl_k,222,39,2	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp4	849,4,4
-1@gl_k,214,27,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp5	849,4,4
-1@gl_k,223,17,2	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp6	849,4,4
-1@gl_k,235,16,4	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp7	849,4,4
-1@gl_k,251,20,5	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp8	849,4,4
-1@gl_k,240,43,5	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp9	849,4,4
-1@gl_k,271,19,1	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp10	849,4,4
-1@gl_k,246,62,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp11	849,4,4
-1@gl_k,282,48,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp12	849,4,4
-1@gl_k,285,81,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp13	849,4,4
-1@gl_k,241,86,5	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp14	849,4,4
-1@gl_k,249,101,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp15	849,4,4
-1@gl_k,276,106,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp16	849,4,4
-1@gl_k,252,120,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp17	849,4,4
-1@gl_k,258,150,1	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp18	849,4,4
-1@gl_k,255,157,6	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp19	849,4,4
-1@gl_k,261,164,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp20	849,4,4
-1@gl_k,269,173,7	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp21	849,4,4
-1@gl_k,280,167,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp22	849,4,4
-1@gl_k,293,161,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp23	849,4,4
-1@gl_k,226,96,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp24	849,4,4
-1@gl_k,222,119,5	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp25	849,4,4
-1@gl_k,233,123,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp26	849,4,4
-2@gl_k,147,203,5	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp27	849,4,4
-2@gl_k,141,222,1	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp28	849,4,4
-2@gl_k,167,225,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp29	849,4,4
-2@gl_k,145,236,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp30	849,4,4
-2@gl_k,143,260,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp31	849,4,4
-2@gl_k,173,258,3	duplicate(Breathless Man#GHtramp1)	Breathless Man#GHtramp32	849,4,4
+1@gl_k,233,123,4	duplicate(A dead man#1)	A dead man#2	4_M_DIEMAN,5,5
+1@gl_k,258,150,2	duplicate(A dead man#1)	A dead man#3	4_M_DIEMAN,5,5
+1@gl_k,255,157,5	duplicate(A dead man#1)	A dead man#4	4_M_DIEMAN,5,5
+1@gl_k,280,167,4	duplicate(A dead man#1)	A dead man#5	4_M_DIEMAN,5,5
+1@gl_k,293,161,2	duplicate(A dead man#1)	A dead man#6	4_M_DIEMAN,5,5
+1@gl_k,249,101,3	duplicate(A dead man#1)	A dead man#7	4_M_DIEMAN,5,5
+1@gl_k,241,86,6	duplicate(A dead man#1)	A dead man#8	4_M_DIEMAN,5,5
+1@gl_k,246,62,0	duplicate(A dead man#1)	A dead man#9	4_M_DIEMAN,5,5
+1@gl_k,240,43,7	duplicate(A dead man#1)	A dead man#10	4_M_DIEMAN,5,5
+1@gl_k,271,19,1	duplicate(A dead man#1)	A dead man#11	4_M_DIEMAN,5,5
+1@gl_k,282,48,5	duplicate(A dead man#1)	A dead man#12	4_M_DIEMAN,5,5
+1@gl_k,285,81,7	duplicate(A dead man#1)	A dead man#13	4_M_DIEMAN,5,5
+1@gl_k,276,106,0	duplicate(A dead man#1)	A dead man#14	4_M_DIEMAN,5,5
+1@gl_k,261,164,0	duplicate(A dead man#1)	A dead man#15	4_M_DIEMAN,5,5
+1@gl_k,269,173,0	duplicate(A dead man#1)	A dead man#16	4_M_DIEMAN,5,5
+1@gl_k,252,120,0	duplicate(A dead man#1)	A dead man#17	4_M_DIEMAN,5,5
+1@gl_k,213,63,0	duplicate(A dead man#1)	A dead man#18	4_M_DIEMAN,5,5
+1@gl_k,222,39,0	duplicate(A dead man#1)	A dead man#19	4_M_DIEMAN,5,5
+1@gl_k,214,27,0	duplicate(A dead man#1)	A dead man#20	4_M_DIEMAN,5,5
+1@gl_k,223,17,1	duplicate(A dead man#1)	A dead man#21	4_M_DIEMAN,5,5
+1@gl_k,230,50,2	duplicate(A dead man#1)	A dead man#22	4_M_DIEMAN,5,5
+1@gl_k,235,16,3	duplicate(A dead man#1)	A dead man#23	4_M_DIEMAN,5,5
+1@gl_k,226,96,4	duplicate(A dead man#1)	A dead man#24	4_M_DIEMAN,5,5
+1@gl_k,222,119,5	duplicate(A dead man#1)	A dead man#25	4_M_DIEMAN,5,5
+1@gl_k,251,20,6	duplicate(A dead man#1)	A dead man#26	4_M_DIEMAN,5,5
 
 // Sector 3 Mobs
 //============================================================
-1@gl_k,0,0,0	script	#ghmemorialmob03	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob03");
+1@gl_k,1,1,0	script	#ghmemorialmob03	HIDDEN_WARP_NPC,{
 	end;
 OnEnable:
 	enablenpc instance_npcname("#ghmemorialmob03");
-	donpcevent instance_npcname("#ghinstancewarp5")+"::OnEnable";
-	donpcevent instance_npcname("#ghinstancewarp6")+"::OnEnable";
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob03")+"::OnMyMobDead";
-	mapannounce .@map$,"12 o'clock warp leading to the zone 4 was opened.",bc_map,"0xFFFF00";
-	areamonster .@map$,17,259,53,180,"Decayed Guard",2468,11,.@label$;
-	areamonster .@map$,17,259,53,180,"Sharpshooter Ranger",2469,14,.@label$;
-	areamonster .@map$,62,281,73,186,"Decayed Guard",2468,11,.@label$;
-	areamonster .@map$,62,281,73,186,"Sharpshooter Ranger",2469,14,.@label$;
-	areamonster .@map$,74,251,109,224,"Decayed Guard",2468,11,.@label$;
-	areamonster .@map$,74,251,109,224,"Sharpshooter Ranger",2469,14,.@label$;
-	areamonster .@map$,108,281,231,234,"Decayed Guard",2468,11,.@label$;
-	areamonster .@map$,108,281,231,234,"Sharpshooter Ranger",2469,14,.@label$;
+	enablenpc instance_npcname("#4Control");
+	enablenpc instance_npcname("#4Control2");
+	mapannounce 'map_name$[0], "A portal has appeared to the northwest.", bc_map,0xFFFF00;
+
+	// note: x50 MG_RAYDRIC / x50 MG_RAYDRIC_ARCHER
+	.@label$ = instance_npcname("#ghmemorialmob03") + "::OnMyMobDead";
+	areamonster 'map_name$[0],16,186,43,280,"Outraged Archer",2469,25,.@label$;
+	areamonster 'map_name$[0],44,191,89,225,"Hungry Palace Guard",2468,25,.@label$;
+	areamonster 'map_name$[0],115,215,188,273,"Corrupted Palace Guard",2468,20,.@label$;
+	areamonster 'map_name$[0],108,232,193,281,"Corrupted Palace Guard",2468,5,.@label$;
+	areamonster 'map_name$[0],158,236,230,250,"Wandering Archer",2469,12,.@label$;
+	areamonster 'map_name$[0],65,231,155,256,"Wandering Archer",2469,13,.@label$;
 	end;
 OnMyMobDead:
-	set .@map$, instance_mapname("1@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob03")+"::OnMyMobDead";
-	set .@mob_dead_num, 100 - mobcount(.@map$,.@label$);
+	.@label$ = instance_npcname("#ghmemorialmob03") + "::OnMyMobDead";
+	.@mob_dead_num = 100 - mobcount('map_name$[0],.@label$);
 	if (.@mob_dead_num > 85) {
-		mapannounce .@map$,"Himmelmez: Nice parry. I thought you were going to die slowly surrounded by the dead I summoned~",bc_map,"0xFFFFFF";
-		killmonster .@map$,.@label$;
-		donpcevent instance_npcname("#GHMclear3")+"::OnEnable";
-		donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnEnable";
-		donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnEnable";
-		donpcevent instance_npcname("Varmunt#ghinstance3")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob03")+"::OnDisable";
+		killmonster 'map_name$[0],.@label$;
+		enablenpc instance_npcname("#Mimelon");
+		enablenpc instance_npcname("Himelmez#2");
+		enablenpc instance_npcname("Varmundt#2");
+		enablenpc instance_npcname("Heinrich#4");
+		disablenpc instance_npcname("#ghmemorialmob03");
+		mapannounce 'map_name$[0], "Himelmez: Not bad. Thought you would be dead by now by my creatures~", bc_map,0xFFFFFF;
+		initnpctimer;
 	}
 	end;
+OnTimer5000:
+	mapannounce 'map_name$[0], "Himelmez: I'll wait for you at the north of the castle. I want to see how lucky you are.", bc_map,0xFFFFFF;
+	stopnpctimer;
+	end;
 }
 
 // 1st MVP
 //============================================================
-1@gl_k,0,0,0	script	#ghmemorialmob04	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob04");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob04");
-	monster instance_mapname("1@gl_k"),150,258,"Root of Corruption",2475,1,instance_npcname("#ghmemorialmob04")+"::OnMyMobDead";
-	end;
-OnMyMobDead:
-	set .@map$, instance_mapname("1@gl_k");
-	if (mobcount(.@map$,instance_npcname("#ghmemorialmob04")+"::OnMyMobDead") < 1) {
-		mapannounce .@map$, "12 o'clock warp leading to the Chivalry's Second Floor is now open.",bc_map,"0xFFFF00";
-		donpcevent instance_npcname("#ghinstancewarp7")+"::OnEnable";
-		npctalk "Varmunt : From the monster I picked up some great stuff. People who are interested, talk to me.", instance_npcname("Varmunt#ghinstance3");
-		donpcevent instance_npcname("#effectGH01")+"::OnEnable";
-		donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnEnable";
-		donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob04")+"::OnDisable";
+1@gl_k,144,258,6	script	Heinrich#4	4_M_HEINRICH,{
+	mes "[Heinrich]";
+	mes "Himelmez... I will never forget what you've done to my men.";
+	cutin "gl_heinrich1",2;
+	close3;
+}
+
+// note: never hidden
+1@gl_k,156,258,3	script	Varmundt#2	4_M_BARMUND,{
+	cutin "gl_barmund1",2;
+	mes "[Varmundt]";
+	if (checkquest(12318,HUNTING) != 2) {
+		mes "I guess this is it. Is it impossible to stop the time traveler's will?!";
+		mes "A portal seems to have appeared to the north.";
+		close3;
 	}
-	end;
+	erasequest 12318;
+	if (isbegin_quest(12319) == 0)
+		setquest 12319;// Amdarais Hunt
+	if (isbegin_quest(12320) == 0) {
+		setquest 12320;// Time Traveler
+		completequest 12320;
+		getexp 250000,250000;
+	}
+	mes "This item has an extraordinary aura with it. Can be very useful for someone special.";
+	getitem 6607,1;// Temporal_Crystal
+	getitem 6608,1;// Coagulated_Spell
+	close3;
 }
 
-1@gl_k,150,257,3	script	#GHMclear3	111,9,9,{
-	end;
-OnTouch_:
-	donpcevent instance_npcname("#controlGH3")+"::OnEnable";
-	specialeffect EF_BASH;
-	donpcevent instance_npcname("#GHMclear3")+"::OnDisable";
-	end;
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#GHMclear3");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#GHMclear3");
-	initnpctimer;
-	end;
-OnTimer2000:
-	mapannounce instance_mapname("1@gl_k"), "Himmelmez: You got me tempted to go to the 2nd floor, come to the entrance. I'm curious about how far your luck goes.",bc_map,"0xFFFFFF";
-	stopnpctimer;
-	end;
+1@gl_k,150,257,3	script	Himelmez#2	4_F_HIMEL,{
+	cutin "gl_himel2",2;
+	mes "[Himelmez]";
+	mes "Don't look at me nervous like that. It will be over soon...";
+	close3;
 }
 
-1@gl_k,0,0,0	script	#controlGH3	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#controlGH3");
+1@gl_k,150,257,0	script	#Mimelon	HIDDEN_WARP_NPC,7,7,{
 	end;
-OnEnable:
-	enablenpc instance_npcname("#controlGH3");
+OnTouch_:
+	disablenpc instance_npcname("#Mimelon");
 	initnpctimer;
+	'npc_himelmez2$ = instance_npcname("Himelmez#2");
+	'npc_heinrich4$ = instance_npcname("Heinrich#4");
 	end;
 OnTimer3000:
-	npctalk "Himmelmez : What an awfully lucky, I flew all the way over here and just one of them is really powerful.", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: Guess you are either lucky or powerful to make it this far.", 'npc_himelmez2$;
 	end;
 OnTimer6000:
-	npctalk "Himmelmez : But it doesn't matter to me.", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: But it doesn't matter.", 'npc_himelmez2$;
 	end;
 OnTimer9000:
-	npctalk "Himmelmez : Now, all of you will die.", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: You will all die here.", 'npc_himelmez2$;
 	end;
 OnTimer12000:
-	npctalk "Heinrich : Himmelmez! I won't let you take even a single more step here.", instance_npcname("Heinrich#ghinstance4");
+	npctalk "Heinrich: Himelmez! We will not let you get away from us!", 'npc_heinrich4$;
 	end;
 OnTimer15000:
-	npctalk "Himmelmez : Hahaha, so you guys thought I would come alone?", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: Ha ha ha, worry about yourself. You think I am alone here?", 'npc_himelmez2$;
 	end;
 OnTimer18000:
-	npctalk "Varmunt : Heinrich Sir! Something unknown holds an inexplicably powerful force!", instance_npcname("Varmunt#ghinstance3");
+	npctalk "Varmundt: Sir Heinrich! I sense something strange and strong coming!", instance_npcname("Varmundt#2");
 	end;
 OnTimer21000:
-	npctalk "Heinrich : What... is this?!", instance_npcname("Heinrich#ghinstance4");
+	npctalk "Heinrich: What... These are!", 'npc_heinrich4$;
 	end;
 OnTimer24000:
-	npctalk "Himmelmez : This is my new toy to keep you at my feet. Why don't you guys play while I entertain?", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: I will go on my way while my new toy entertains you.", 'npc_himelmez2$;
 	end;
 OnTimer27000:
-	npctalk "Himmelmez : Sincerely~, If I am given the opportunity I'd like to meet you again, Heinrich.", instance_npcname("Himmelmez#ghinstance2");
+	npctalk "Himelmez: Fare well~, hope to see you again sometime, Heinrich.", 'npc_himelmez2$;
 	end;
 OnTimer28000:
-	donpcevent instance_npcname("Himmelmez#ghinstance2")+"::OnDisable";
+	disablenpc 'npc_himelmez2$;
 	end;
 OnTimer31000:
-	npctalk "Heinrich : Varmunt Sir! Help the adventurers and I'll chase Himmelmez!", instance_npcname("Heinrich#ghinstance4");
+	npctalk "Heinrich: Sir Varmundt! Help those adventurers. I will go after Himelmez!", 'npc_heinrich4$;
 	end;
 OnTimer32000:
-	donpcevent instance_npcname("Heinrich#ghinstance4")+"::OnDisable";
+	disablenpc 'npc_heinrich4$;
 	end;
 OnTimer35000:
-	mapannounce instance_mapname("1@gl_k"), "An eerie echo from the depths can be heard as you get closer.",bc_map,"0xFFFFFF";
+	mapannounce 'map_name$[0], "An echoing comes from deep inside of the knight's shrine.", bc_map,0xFFFFFF;
 	end;
 OnTimer38000:
-	donpcevent instance_npcname("#ghmemorialmob04")+"::OnEnable";
+	donpcevent instance_npcname("#ghmemorialmob04") + "::OnStart";
 	stopnpctimer;
-	donpcevent instance_npcname("#controlGH3")+"::OnDisable";
-	end;
-}
-
-1@gl_k,144,258,6	script	Heinrich#ghinstance4	652,{
-	mes "[Heinrich]";
-	mes "Himmelmez... You made my men get killed and I will never forget that.";
-	cutin "gl_heinrich1",2;
-	close2;
-	cutin "gl_heinrich1",255;
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance4");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance4");
-	end;
-}
-
-1@gl_k,150,257,3	script	Himmelmez#ghinstance2	650,{
-	mes "[Himmelmez]";
-	mes "No need to stare at me with so insecure eyes. Soon they'll become relaxed...";
-	cutin "gl_himel2",2;
-	close2;
-	cutin "gl_himel2",255;
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Himmelmez#ghinstance2");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Himmelmez#ghinstance2");
+	'npc_himelmez2$ = 'npc_heinrich4$ = "";
 	end;
 }
 
-1@gl_k,156,259,3	script	Varmunt#ghinstance3	654,{
-	if (checkquest(12318,HUNTING) == 2) {
-		if (checkquest(12319,HUNTING) == -1) {
-			mes "[Varmunt]";
-			mes "There's something unusual about this thing's aura. Maybe someday we will be able to understand what is behind all of this.";
-			cutin "gl_barmund1",2;
-			erasequest 12318;
-			if (checkquest(12319,HUNTING) == -1)
-				setquest 12319;
-			setquest 12320;
-			erasequest 12320;
-			getitem 6607,1; //Temporal_Crystal
-			getitem 6608,1; //Coagulated_Spell
-			close2;
-			cutin "gl_barmund1",255;
-			end;
-		}
-	}
-	mes "[Varmunt]";
-	mes "Even after all this time, it is impossible to prevent from the will of the Transcendent.";
-	cutin "gl_barmund1",2;
-	close2;
-	cutin "gl_barmund2",255;
+1@gl_k,1,1,0	script	#ghmemorialmob04	HIDDEN_WARP_NPC,{
 	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Varmunt#ghinstance3");
+OnStart:
+	enablenpc instance_npcname("#ghmemorialmob04");
+	monster 'map_name$[0],150,259,"Corrupted Soul",2475,1, instance_npcname("#ghmemorialmob04") + "::OnMyMobDead";// MG_CORRUPTION_ROOT
+	unittalk $@mobid[0],"Grrrrrrhh~~~";
 	end;
-OnEnable:
-	hideoffnpc instance_npcname("Varmunt#ghinstance3");
+OnMyMobDead:
+	if (mobcount('map_name$[0], instance_npcname("#ghmemorialmob04") + "::OnMyMobDead") < 1) {
+		mapannounce 'map_name$[0], "Opening 2nd floor entrance towards 12 O'clock direction.", bc_map,0xFFFF00;
+		npctalk "Varmundt: I collected some items dropped from its body. You can take it from me.", instance_npcname("Varmundt#2");
+
+		enablenpc instance_npcname("#2F Entrance");
+		enablenpc instance_npcname("#1 Control");
+		enablenpc instance_npcname("#22 Control");
+		enablenpc instance_npcname("#22 Control2");
+		enablenpc instance_npcname("#Servanton");
+		enablenpc instance_npcname("Heinrich#21");
+		enablenpc instance_npcname("Varmundt#21");
+		donpcevent instance_npcname("#ghmemorialmob05") + "::OnStart";
+		disablenpc instance_npcname("#ghmemorialmob04");
+	}
 	end;
 }
 
 // Floor 2
 //============================================================
-2@gl_k,148,67,1	script	Heinrich#ghinstance5	652,{
+2@gl_k,148,67,1	script	Heinrich#21	4_M_HEINRICH,{
 	mes "[Heinrich]";
-	mes "Himmelmez's blocking spells";
-	mes "are everywhere around here...";
+	mes "Himelmez's closed space covers everywhere...";
 	cutin "gl_heinrich1",2;
-	close2;
-	cutin "gl_heinrich1",255;
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance5");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance5");
-	end;
+	close3;
 }
 
-2@gl_k,151,71,7	script	Varmunt#ghinstance4	654,{
-	mes "[Varmunt]";
-	mes "Why am I doing this again? Doesn't seem like the first time. I've seen this place repeatedly dozens of times in my dreams. This feeling...";
-	cutin "gl_barmund1",2;
-	close2;
-	cutin "gl_barmund1",255;
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Varmunt#ghinstance4");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Varmunt#ghinstance4");
-	end;
+2@gl_k,151,71,7	script	Varmundt#21	4_M_BARMUND,{
+	mes "[Varmundt]";
+	mes "How many times have I done this job? In my dream, I did it over and over again...";
+	cutin "gl_barmund2",2;
+	close3;
 }
 
-2@gl_k,150,67,0	script	#effectGH01	111,10,10,{
-	end;
-OnTouch_:
-	if (.touch) {
-		set .touch,0;
-		specialeffect EF_BASH;
-		donpcevent instance_npcname("#controlGH4")+"::OnEnable";
-	}
+2@gl_k,150,66,0	script	#Servanton_effect	HIDDEN_WARP_NPC,{
 	end;
 OnEffect:
 	specialeffect EF_LORD;
 	end;
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#effectGH01");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#effectGH01");
-	set .touch,1;	// only activate OnTouch once
-	end;
 }
 
-2@gl_k,0,0,0	script	#controlGH4	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#controlGH4");
+// note: this part can be skipped
+2@gl_k,150,66,0	script	#Servanton	HIDDEN_WARP_NPC,7,7,{
 	end;
-OnEnable:
-	enablenpc instance_npcname("#controlGH4");
+OnTouch_:
+	disablenpc instance_npcname("#Servanton");
 	initnpctimer;
+	'npc_heinrich$ = instance_npcname("Heinrich#21");
+	'npc_varmundt$ = instance_npcname("Varmundt#21");
 	end;
 OnTimer3000:
-	npctalk "Heinrich : These things have never been in the castle!", instance_npcname("Heinrich#ghinstance5");
-	donpcevent instance_npcname("#ghmemorialmob05")+"::OnEnable";
+	npctalk "Heinrich: This structure was not in the castle before!", 'npc_heinrich$;
 	end;
 OnTimer6000:
-	npctalk "Varmunt : Himmelmez's enchantment has completely blocked the passage to each section.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: This is Himelmez's closed space. We blocked each area and aisle.", 'npc_varmundt$;
 	end;
 OnTimer9000:
-	npctalk "Heinrich : Trying to break this power with common weapons doesn't work. I tried it.", instance_npcname("Heinrich#ghinstance5");
+	npctalk "Heinrich: We tried to break it down but it's really strong.", 'npc_heinrich$;
 	end;
 OnTimer12000:
-	npctalk "Varmunt : Get out of the way for a moment. I'll try to somehow break the spell with magical powers.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Step back. Let me try to dispel the magic.", 'npc_varmundt$;
 	end;
 OnTimer15000:
-	donpcevent instance_npcname("#effectGH01")+"::OnEffect";
+	specialeffect EF_LORD,AREA, instance_npcname("#Servanton_effect");
+	disablenpc instance_npcname("#Servanton_effect");
 	end;
 OnTimer18000:
-	donpcevent instance_npcname("#effectGH01")+"::OnDisable";
-	npctalk "Varmunt : The enchantment seems to be broken.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: I think that part of closed space is broken down.", 'npc_varmundt$;
 	end;
 OnTimer21000:
-	npctalk "Varmunt : I've never seen this spell before.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: I have never seen this closed space.", 'npc_varmundt$;
 	end;
 OnTimer24000:
-	npctalk "Varmunt : Himmelmez doesn't use a seal on a person's body to turn it into an undead.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Himelmez hides stone chains in undead people's body.", 'npc_varmundt$;
 	end;
 OnTimer27000:
-	npctalk "Varmunt : She uses enchantment stones.This way, the spell is probably maintained.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Maybe this closed space is maintained with these stone chains.", 'npc_varmundt$;
 	end;
 OnTimer30000:
-	npctalk "Varmunt : We should kill the people who have the enchantment stones to break the spell.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: If you want to break it, you have to kill one of those who have a stone chain.", 'npc_varmundt$;
 	end;
 OnTimer33000:
-	npctalk "Varmunt : However, we can't identify them. The purification can only be done randomly.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: But we can't recognize who has a stone chain so we have to purify everything.", 'npc_varmundt$;
 	end;
 OnTimer36000:
-	npctalk "Heinrich : It is really unforgivable.", instance_npcname("Heinrich#ghinstance5");
+	npctalk "Heinrich: It is inexcusable behavior.", 'npc_heinrich$;
 	end;
 OnTimer39000:
-	npctalk "Heinrich : I, who already was a subordinate of genocide. How much more in the future...", instance_npcname("Heinrich#ghinstance5");
+	npctalk "Heinrich: I already exterminated all my soldiers and maybe more...", 'npc_heinrich$;
 	end;
 OnTimer42000:
-	npctalk "Varmunt : Commandant...", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Commander...", 'npc_varmundt$;
 	end;
 OnTimer45000:
-	npctalk "Varmunt : Commandant, it seems too loose.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Commander! You need to be strong.", 'npc_varmundt$;
 	end;
 OnTimer48000:
-	npctalk "Varmunt : We are related to all these people, not just a few.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Our enemy is not human.", 'npc_varmundt$;
 	end;
 OnTimer51000:
-	npctalk "Varmunt : We can't deny that it's not their fault for what is going on.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Even though you deny it, they'll never turn back to human.", 'npc_varmundt$;
 	end;
 OnTimer54000:
-	npctalk "Heinrich : ...", instance_npcname("Heinrich#ghinstance5");
+	npctalk "Heinrich: ...", 'npc_heinrich$;
 	end;
 OnTimer57000:
-	npctalk "Varmunt : Well, let's do it then.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Well, let's go then.", 'npc_varmundt$;
 	end;
 OnTimer60000:
-	npctalk "Varmunt : You guys are of a great help. Try to follow us.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: And you guys, just take a break and follow us.", 'npc_varmundt$;
 	end;
 OnTimer63000:
-	npctalk "Varmunt : There can be a tough fight. Hold on, and it would be nice to eat something.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: It could be hard fighting so stay strong.", 'npc_varmundt$;
 	end;
 OnTimer66000:
-	npctalk "Varmunt : Guys. It is time to depart, Heinrich Sir.", instance_npcname("Varmunt#ghinstance4");
+	npctalk "Varmundt: Ok, it's time to begin Heinrich.", 'npc_varmundt$;
 	end;
 OnTimer69000:
-	mapannounce instance_mapname("2@gl_k"), "9 o'clock positioned warp leading to the 1st zone has been opened. Move from the central hallway. A being with an evil aura seems to be appearing in this region.",bc_map,"0xFFFF00";
-	donpcevent instance_npcname("#ghinstancewarp8")+"::OnEnable";
-	donpcevent instance_npcname("#ghinstancewarp9")+"::OnEnable";
-	donpcevent instance_npcname("#ghmemorialmob06")+"::OnEnable";
-	donpcevent instance_npcname("Varmunt#ghinstance4")+"::OnDisable";
-	donpcevent instance_npcname("Heinrich#ghinstance5")+"::OnDisable";
-	end;
-OnTimer70000:
+	mapannounce 'map_name$[1], "A portal to the west has opened in the central hallway.", bc_map,0xFFFF00;
+	disablenpc 'npc_varmundt$;
+	disablenpc 'npc_heinrich$;
 	stopnpctimer;
-	donpcevent instance_npcname("#controlGH4")+"::OnDisable";
-	end;
-}
-
-2@gl_k,0,0,0	script	#ghmemorialmob05	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob05");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob05");
-	set .@map$, instance_mapname("2@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob05")+"::OnMyMobDead";
-	areamonster .@map$,124,20,31,162,"Decayed Guard",2468,8,.@label$;
-	areamonster .@map$,124,20,31,162,"Sharpshooter Ranger",2469,8,.@label$;
-	areamonster .@map$,124,20,31,162,"Fallen Abyss Knight",2470,8,.@label$;
-	areamonster .@map$,124,20,31,162,"Suffering Khalitzburg",2471,8,.@label$;
-	areamonster .@map$,124,20,31,162,"Swollen Knight",2472,8,.@label$;
-	set 'MyMobs,80;
-	end;
-OnMyMobDead:
-	set .@map$, instance_mapname("2@gl_k");
-	set 'MyMobs, 'MyMobs-1;
-	if ('MyMobs == 0) {
-		mapannounce .@map$, "A being with an evil aura seems to be appearing in this region.",bc_map,"0xFFFF00";
-		donpcevent instance_npcname("#ghmemorialmob06")+"::OnDisable2";
-		donpcevent instance_npcname("#ghmemorialmob07")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob05")+"::OnDisable";
-	} else {
-		set .@label$, instance_npcname("#ghmemorialmob05")+"::OnMyMobDead";
-		switch(rand(5)) {
-		case 0:
-			areamonster .@map$,124,20,31,162,"Decayed Guard",2468,1,.@label$;
-			break;
-		case 1:
-			areamonster .@map$,124,20,31,162,"Sharpshooter Ranger",2469,1,.@label$;
-			break;
-		case 2:
-			areamonster .@map$,124,20,31,162,"Fallen Abyss Knight",2470,1,.@label$;
-			break;
-		case 3:
-			areamonster .@map$,124,20,31,162,"Suffering Khalitzburg",2471,1,.@label$;
-			break;
-		case 4:
-			areamonster .@map$,124,20,31,162,"Swollen Knight",2472,1,.@label$;
-			break;
-		}
-	}
+	'npc_varmundt$ = 'npc_heinrich$ = "";
 	end;
 }
 
-2@gl_k,0,0,0	script	#ghmemorialmob06	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob06");
-	end;
-OnDisable2:
-	stopnpctimer;
-	disablenpc instance_npcname("#ghmemorialmob06");
+// Spots
+// Note: timer is the only condition for them to respawn
+2@gl_k,118,141,0	script	#ogh_2-1	HIDDEN_WARP_NPC,20,20,{
 	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob06");
-	donpcevent instance_npcname("#ghmemorialmob06")+"::OnSpawn";
-	end;
-OnSpawn:
+OnTouch_:
+	disablenpc instance_npcname( strnpcinfo(0) );
+	.@hidden_name$ = strnpcinfo(2);
+	.@event_type = atoi( charat(.@hidden_name$,4) );
+	if (.@event_type == 2)
+		.@label$ = instance_npcname("#ghmemorialmob05") + "::OnMyMobDead";
+	else
+		.@label$ = instance_npcname("#ghmemorialmob06") + "::OnMyMobDead";
+	getmapxy .@map$,.@x,.@y, UNITTYPE_NPC;
+	monster .@map$,.@x,.@y, "Corrupted Palace Guard", 2468,1, .@label$;
+	monster .@map$,.@x,.@y, "Archer of Death", 2469,1, .@label$;
+	monster .@map$,.@x,.@y, "Corrupted Abysmal Knight", 2470,1, .@label$;
+	monster .@map$,.@x,.@y, "Suffered Khalitzburg", 2471,1, .@label$;
+	monster .@map$,.@x,.@y, "Bloody Knight", 2472,1, .@label$;
 	initnpctimer;
 	end;
-OnTimer90000:
-	set .@map$, instance_mapname("2@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob05")+"::OnMyMobDead";
-	setarray .@c[0],
-		114,141,118,139,
-		128,83,131,78,
-		88,53,93,48,
-		54,47,61,40,
-		58,83,63,78,
-		69,138,80,127,
-		34,143,39,138;
-	for(set .@i,0; .@i<getarraysize(.@c); set .@i,.@i+4) {
-		areamonster .@map$,.@c[.@i],.@c[.@i+1],.@c[.@i+2],.@c[.@i+3],"Decayed Guard",2468,1,.@label$;
-		areamonster .@map$,.@c[.@i],.@c[.@i+1],.@c[.@i+2],.@c[.@i+3],"Sharpshooter Ranger",2469,1,.@label$;
-		areamonster .@map$,.@c[.@i],.@c[.@i+1],.@c[.@i+2],.@c[.@i+3],"Fallen Abyss Knight",2470,1,.@label$;
-		areamonster .@map$,.@c[.@i],.@c[.@i+1],.@c[.@i+2],.@c[.@i+3],"Suffering Khalitzburg",2471,1,.@label$;
-		areamonster .@map$,.@c[.@i],.@c[.@i+1],.@c[.@i+2],.@c[.@i+3],"Swollen Knight",2472,1,.@label$;
-	}
+OnTimer30000:
+	enablenpc instance_npcname( strnpcinfo(0) );
+	stopnpctimer;
 	end;
-OnTimer92000:
+OnStop:
+	disablenpc instance_npcname( strnpcinfo(0) );
 	stopnpctimer;
-	donpcevent instance_npcname("#ghmemorialmob06")+"::OnSpawn";
 	end;
 }
+2@gl_k,128,81,0	duplicate(#ogh_2-1)	#ogh_2-2	HIDDEN_WARP_NPC,20,20
+2@gl_k,131,54,0	duplicate(#ogh_2-1)	#ogh_2-3	HIDDEN_WARP_NPC,20,20
+2@gl_k,89,48,0	duplicate(#ogh_2-1)	#ogh_2-4	HIDDEN_WARP_NPC,20,20
+2@gl_k,64,117,0	duplicate(#ogh_2-1)	#ogh_2-5	HIDDEN_WARP_NPC,20,20
+2@gl_k,62,82,0	duplicate(#ogh_2-1)	#ogh_2-6	HIDDEN_WARP_NPC,20,20
+2@gl_k,38,138,0	duplicate(#ogh_2-1)	#ogh_2-7	HIDDEN_WARP_NPC,20,20
 
-2@gl_k,0,0,0	script	#ghmemorialmob07	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob07");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob07");
-	areamonster instance_mapname("2@gl_k"),124,20,31,162,"The Destruction of the First Captain",2473,1,instance_npcname("#ghmemorialmob07")+"::OnMyMobDead";
-	end;
-OnMyMobDead:
-	set .@map$, instance_mapname("2@gl_k");
-	if (mobcount(.@map$,instance_npcname("#ghmemorialmob07")+"::OnMyMobDead") < 1) {
-		mapannounce .@map$, "3 o'clock positioned warp leading to the 2nd zone has been opened. Use the central hallway to get there.",bc_map,"0xFFFF00";
-		donpcevent instance_npcname("#ghinstancewarp10")+"::OnEnable";
-		donpcevent instance_npcname("#ghinstancewarp11")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob08")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob07")+"::OnDisable";
-	}
-	end;
-}
+2@gl_k,171,120,0	duplicate(#ogh_2-1)	#ogh_3-1	HIDDEN_WARP_NPC,20,20
+2@gl_k,232,133,0	duplicate(#ogh_2-1)	#ogh_3-2	HIDDEN_WARP_NPC,20,20
+2@gl_k,256,149,0	duplicate(#ogh_2-1)	#ogh_3-3	HIDDEN_WARP_NPC,20,20
+2@gl_k,212,106,0	duplicate(#ogh_2-1)	#ogh_3-4	HIDDEN_WARP_NPC,20,20
+2@gl_k,243,73,0	duplicate(#ogh_2-1)	#ogh_3-5	HIDDEN_WARP_NPC,20,20
+2@gl_k,229,26,0	duplicate(#ogh_2-1)	#ogh_3-6	HIDDEN_WARP_NPC,20,20
+2@gl_k,181,34,0	duplicate(#ogh_2-1)	#ogh_3-7	HIDDEN_WARP_NPC,20,20
 
-2@gl_k,0,0,0	script	#ghmemorialmob08	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob08");
+// Commander 1
+2@gl_k,1,1,0	script	#ghmemorialmob05	HIDDEN_WARP_NPC,{
 	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob08");
-	set .@map$, instance_mapname("2@gl_k");
-	set .@label$, instance_npcname("#ghmemorialmob08")+"::OnMyMobDead";
-	areamonster .@map$,175,163,265,18,"Decayed Guard",2468,7,.@label$;
-	areamonster .@map$,175,163,265,18,"Sharpshooter Ranger",2469,7,.@label$;
-	areamonster .@map$,175,163,265,18,"Fallen Abyss Knight",2470,7,.@label$;
-	areamonster .@map$,175,163,265,18,"Suffering Khalitzburg",2471,7,.@label$;
-	areamonster .@map$,175,163,265,18,"Swollen Knight",2472,7,.@label$;
-	set 'MyMobs,35;
+OnStart:
+	enablenpc instance_npcname("#ghmemorialmob05");
+	for ( .@i = 1; .@i <= 7; .@i++ )
+		enablenpc instance_npcname("#ogh_2-" + .@i);
 	end;
+
 OnMyMobDead:
-	set .@map$, instance_mapname("2@gl_k");
-	set 'MyMobs, 'MyMobs-1;
-	if ('MyMobs == 0) {
-		mapannounce .@map$, "A being with an evil aura seems to be appearing in this region.",bc_map,"0xFFFF00";
-		donpcevent instance_npcname("#ghmemorialmob09")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob08")+"::OnDisable";
-	} else {
-		set .@label$, instance_npcname("#ghmemorialmob08")+"::OnMyMobDead";
-		switch(rand(5)) {
-		case 0:
-			areamonster .@map$,175,163,265,18,"Decayed Guard",2468,1,.@label$;
-			break;
-		case 1:
-			areamonster .@map$,175,163,265,18,"Sharpshooter Ranger",2469,1,.@label$;
-			break;
-		case 2:
-			areamonster .@map$,175,163,265,18,"Fallen Abyss Knight",2470,1,.@label$;
-			break;
-		case 3:
-			areamonster .@map$,175,163,265,18,"Suffering Khalitzburg",2471,1,.@label$;
-			break;
-		case 4:
-			areamonster .@map$,175,163,265,18,"Swollen Knight",2472,1,.@label$;
-			break;
-		}
+	if (rand(50) == 0) {// can re-spawn
+		mapannounce 'map_name$[1], "Evil Forces are appearing in this area.", bc_map,0xFFFF44,FW_NORMAL,15;
+		killmonster 'map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnBossDead";
+
+		.@r = rand(4) * 2;
+		setarray .@coord[0], 41,146, 58,44, 122,148, 131,64;
+		monster 'map_name$[1],.@coord[.@r],.@coord[.@r+1], "1st Commander of Destruction",2473,1, instance_npcname("#ghmemorialmob05") + "::OnBossDead";
 	}
 	end;
-}
 
-2@gl_k,0,0,0	script	#ghmemorialmob09	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob09");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob09");
-	areamonster instance_mapname("2@gl_k"),175,163,265,18,"The Destruction of the Second Captain",2474,1,instance_npcname("#ghmemorialmob09")+"::OnMyMobDead";
-	end;
-OnMyMobDead:
-	set .@map$, instance_mapname("2@gl_k");
-	if (mobcount(.@map$,instance_npcname("#ghmemorialmob09")+"::OnMyMobDead") < 1) {
-		mapannounce .@map$, "12 o'clock positioned warp leading to the 3rd zone has been opened. Use the central hallway to get there.",bc_map,"0xFFFF00";
-		donpcevent instance_npcname("#ghinstancewarp12")+"::OnEnable";
-		donpcevent instance_npcname("#controlGH6")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob08")+"::OnDisable";
-		donpcevent instance_npcname("#ghmemorialmob09")+"::OnDisable";
-	}
+OnBossDead:
+	mapannounce 'map_name$[1], "A portal has opened to the east in the central hallway.", bc_map,0xFFFF00;
+	enablenpc instance_npcname("#23 Control");
+	enablenpc instance_npcname("#23 Control2");
+	donpcevent instance_npcname("#ghmemorialmob06") + "::OnStart";
+
+	disablenpc instance_npcname("#ghmemorialmob05");
+	for ( .@i = 1; .@i <= 7; .@i++ )
+		donpcevent instance_npcname("#ogh_2-" + .@i) + "::OnStop";
 	end;
 }
 
-2@gl_k,0,0,0	script	#ghmemorialmob10	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#ghmemorialmob10");
+// Commander 2
+2@gl_k,1,1,0	script	#ghmemorialmob06	HIDDEN_WARP_NPC,{
 	end;
-OnEnable:
-	enablenpc instance_npcname("#ghmemorialmob10");
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnDisable";
-	monster instance_mapname("2@gl_k"),158,255,"Amdarias",2476,1,instance_npcname("#ghmemorialmob10")+"::OnMyMobDead";
+OnStart:
+	enablenpc instance_npcname("#ghmemorialmob06");
+	for ( .@i = 1; .@i <= 7; .@i++ )
+		enablenpc instance_npcname("#ogh_3-" + .@i);
+
+	// Fix spawn
+	.@label$ = instance_npcname("#ghmemorialmob06") + "::OnMyMobDead";
+	monster 'map_name$[1],252, 75, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],253, 76, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],247, 77, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],248, 80, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],236,100, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],240,100, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],242,100, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],244,100, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],199,111, "Corrupted Palace Guard",2468,1, .@label$;
+	monster 'map_name$[1],181,107, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],177,110, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],236, 27, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],242, 27, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],252, 26, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],172,130, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],171,127, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],173,127, "Wandering Archer",2469,1, .@label$;
+	monster 'map_name$[1],177, 69, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],186, 66, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],189, 67, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],190, 68, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],257,157, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],246,159, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],237,158, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],206,159, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],172,120, "Corrupted Abysmal Knight",2470,1, .@label$;
+	monster 'map_name$[1],226, 30, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],226, 38, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],228, 29, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],226, 63, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],268,137, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],263,138, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],259,138, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],259,138, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],187,121, "Suffered Khalitzburg",2471,1, .@label$;
+	monster 'map_name$[1],265, 52, "Bloody Knight",2472,1, .@label$;
+	monster 'map_name$[1],265, 55, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],264, 79, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],225, 92, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],237, 92, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],249, 92, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],256, 93, "Bloody Knight",2472,1, .@label$; 
+	monster 'map_name$[1],264,100, "Bloody Knight",2472,1, .@label$;
+	monster 'map_name$[1],181,120, "Bloody Knight",2472,1, .@label$;
 	end;
+
 OnMyMobDead:
-	if (mobcount(instance_mapname("2@gl_k"),instance_npcname("#ghmemorialmob10")+"::OnMyMobDead") < 1) {
-		donpcevent instance_npcname("Hugin#ghinstance1")+"::OnEnable";
-		donpcevent instance_npcname("#ghmemorialmob10")+"::OnDisable";
+	if (rand(50) == 0) {// can re-spawn
+		mapannounce 'map_name$[1], "An evil presence has teleported into this area.", bc_map,0xFFFF44,FW_NORMAL,15;
+		killmonster 'map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnBossDead";
+
+		.@r = rand(4) * 2;
+		setarray .@coord[0], 166,119, 211,45, 227,139, 245,74;
+		monster 'map_name$[1],.@coord[.@r],.@coord[.@r+1], "2nd Commander of Destruction",2474,1, instance_npcname("#ghmemorialmob06") + "::OnBossDead";
 	}
 	end;
-}
 
-2@gl_k,155,250,7	script	Heinrich#ghinstance6	652,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Heinrich#ghinstance6");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Heinrich#ghinstance6");
-	end;
-}
+OnBossDead:
+	mapannounce 'map_name$[1], "A new portal has appeared at the end of the central corridor.", bc_map,0xFFFF00;
+	enablenpc instance_npcname("#24 Control");
+	enablenpc instance_npcname("#24 Control2");
+	enablenpc instance_npcname("#Geron");
+	for ( .@i = 1; .@i <= 35; .@i++ )
+		enablenpc instance_npcname("Decomposed body#" + .@i);
 
-2@gl_k,162,250,1	script	Varmunt#ghinstance5	654,{
-	mes "[Varmunt]";
-	mes "We can't escape this";
-	mes "eternal confinement...";
-	cutin "gl_barmund2",2;
-	close2;
-	cutin "gl_barmund2",255;
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Varmunt#ghinstance5");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Varmunt#ghinstance5");
-	end;
-}
+	disablenpc instance_npcname("#ghmemorialmob06");
+	for ( .@i = 1; .@i <= 7; .@i++ )
+		donpcevent instance_npcname("#ogh_3-" + .@i) + "::OnStop";
 
-2@gl_k,158,252,3	script	Himmelmez#ghinstance4	650,4,4,{
-	end;	
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Himmelmez#ghinstance4");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Himmelmez#ghinstance4");
+	// Hidden mobs
+	setarray .@coord[0],
+		 37,265, 57,265, 77,265, 97,265, 117,265, 188,264, 208,264,
+		 50,172, 70,172, 90,172, 110,172, 170,172, 210,172, 230,172,
+		 88,214, 108,214, 128,214, 180,219, 200,219, 220,219, 240,219;
+	.@size = getarraysize(.@coord);
+	for ( .@i = 0; .@i < .@size; .@i += 2 )
+		monster 'map_name$[1], .@coord[.@i], .@coord[.@i+1], "Flame of destruction",2337,1;// HIDDEN_MOB
 	end;
 }
 
-2@gl_k,150,179,0	script	#controlGH6	111,2,2,{
+// Amdarais Room Entrance
+2@gl_k,150,180,0	script	#Geron	HIDDEN_WARP_NPC,7,7,{
 	end;
 OnTouch_:
-	mapannounce instance_mapname("2@gl_k"), "???: Do not come! There are traps everywhere here... Aaaaack!!!!",bc_map,"0xFF0000";
-	specialeffect EF_BASH;
-	donpcevent instance_npcname("Himmelmez#ghinstance3")+"::OnEnable";
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnEnable";
-	donpcevent instance_npcname("Varmunt#ghinstance5")+"::OnEnable";
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEnable";
-	donpcevent instance_npcname("#controlGH6")+"::OnDisable";
-	end;
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#controlGH6");
-	end;
-OnEnable:
-	enablenpc instance_npcname("#controlGH6");
+	disablenpc instance_npcname("#Geron");
+	mapannounce 'map_name$[1], "???: Do not come here! It's a trap... Kkkkah!!!", bc_map,0xFF7777,FW_NORMAL,15;
+	enablenpc instance_npcname("Himelmez#22");
+	enablenpc instance_npcname("Varmundt#23");
+	enablenpc instance_npcname("Heinrich#23");
+	enablenpc instance_npcname("Gerhalt#23");
 	end;
 }
 
-2@gl_k,158,252,1	script	Himmelmez#ghinstance3	650,7,7,{
+2@gl_k,143,260,4	script	Decomposed body#1	4_M_DIEMAN,5,5,{
 	end;
 OnTouch_:
-	specialeffect EF_BASH;
-	donpcevent instance_npcname("#controlGH5")+"::OnEnable";
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnEnable";
-	donpcevent instance_npcname("Himmelmez#ghinstance3")+"::OnDisable";
-	end;
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("Himmelmez#ghinstance3");
+	disablenpc instance_npcname( strnpcinfo(0) );
+	.@i = rand(1,10);
+	if (.@i == 1) .@mobs = 3;
+	else if (.@i == 2) .@mobs = 4;
+	else if (.@i == 3) .@mobs = 5;
+	else if (.@i < 7) .@mobs = 6;
+	else .@mobs = 7;
+	getmapxy .@map$,.@x,.@y, UNITTYPE_NPC;
+	specialeffect EF_VENOMDUST;
+	monster .@map$,.@x,.@y,"Maggot",2467,.@mobs;
+	initnpctimer;
 	end;
-OnEnable:
-	enablenpc instance_npcname("Himmelmez#ghinstance3");
+OnTimer45000:
+	enablenpc instance_npcname( strnpcinfo(0) );
+	stopnpctimer;
 	end;
 }
+2@gl_k,145,236,4	duplicate(Decomposed body#1)	Decomposed body#2	4_M_DIEMAN,5,5
+2@gl_k,141,222,2	duplicate(Decomposed body#1)	Decomposed body#3	4_M_DIEMAN,5,5
+2@gl_k,147,203,5	duplicate(Decomposed body#1)	Decomposed body#4	4_M_DIEMAN,5,5
+2@gl_k,167,225,4	duplicate(Decomposed body#1)	Decomposed body#5	4_M_DIEMAN,5,5
+2@gl_k,172,233,2	duplicate(Decomposed body#1)	Decomposed body#6	4_M_DIEMAN,5,5
+2@gl_k,176,244,3	duplicate(Decomposed body#1)	Decomposed body#7	4_M_DIEMAN,5,5
+2@gl_k,184,248,6	duplicate(Decomposed body#1)	Decomposed body#8	4_M_DIEMAN,5,5
+2@gl_k,193,228,0	duplicate(Decomposed body#1)	Decomposed body#9	4_M_DIEMAN,5,5
+2@gl_k,206,250,7	duplicate(Decomposed body#1)	Decomposed body#10	4_M_DIEMAN,5,5
+2@gl_k,130,249,1	duplicate(Decomposed body#1)	Decomposed body#11	4_M_DIEMAN,5,5
+2@gl_k,122,236,5	duplicate(Decomposed body#1)	Decomposed body#12	4_M_DIEMAN,5,5
+2@gl_k,130,228,7	duplicate(Decomposed body#1)	Decomposed body#13	4_M_DIEMAN,5,5
+2@gl_k,106,226,0	duplicate(Decomposed body#1)	Decomposed body#14	4_M_DIEMAN,5,5
+2@gl_k,104,245,0	duplicate(Decomposed body#1)	Decomposed body#15	4_M_DIEMAN,5,5
+2@gl_k,131,187,0	duplicate(Decomposed body#1)	Decomposed body#16	4_M_DIEMAN,5,5
+2@gl_k,121,197,0	duplicate(Decomposed body#1)	Decomposed body#17	4_M_DIEMAN,5,5
+2@gl_k,107,194,0	duplicate(Decomposed body#1)	Decomposed body#18	4_M_DIEMAN,5,5
+2@gl_k,92,187,0	duplicate(Decomposed body#1)	Decomposed body#19	4_M_DIEMAN,5,5
+2@gl_k,153,214,3	duplicate(Decomposed body#1)	Decomposed body#20	4_M_DIEMAN,5,5
+2@gl_k,155,195,4	duplicate(Decomposed body#1)	Decomposed body#21	4_M_DIEMAN,5,5
+2@gl_k,154,188,2	duplicate(Decomposed body#1)	Decomposed body#22	4_M_DIEMAN,5,5
+2@gl_k,143,195,5	duplicate(Decomposed body#1)	Decomposed body#23	4_M_DIEMAN,5,5
+2@gl_k,132,214,4	duplicate(Decomposed body#1)	Decomposed body#24	4_M_DIEMAN,5,5
+2@gl_k,125,208,2	duplicate(Decomposed body#1)	Decomposed body#25	4_M_DIEMAN,5,5
+2@gl_k,114,210,3	duplicate(Decomposed body#1)	Decomposed body#26	4_M_DIEMAN,5,5
+2@gl_k,137,182,6	duplicate(Decomposed body#1)	Decomposed body#27	4_M_DIEMAN,5,5
+2@gl_k,138,246,0	duplicate(Decomposed body#1)	Decomposed body#28	4_M_DIEMAN,5,5
+2@gl_k,132,260,7	duplicate(Decomposed body#1)	Decomposed body#29	4_M_DIEMAN,5,5
+2@gl_k,128,251,1	duplicate(Decomposed body#1)	Decomposed body#30	4_M_DIEMAN,5,5
+2@gl_k,179,260,3	duplicate(Decomposed body#1)	Decomposed body#31	4_M_DIEMAN,5,5
+2@gl_k,170,261,4	duplicate(Decomposed body#1)	Decomposed body#32	4_M_DIEMAN,5,5
+2@gl_k,177,219,2	duplicate(Decomposed body#1)	Decomposed body#33	4_M_DIEMAN,5,5
+2@gl_k,190,214,5	duplicate(Decomposed body#1)	Decomposed body#34	4_M_DIEMAN,5,5
+2@gl_k,201,214,4	duplicate(Decomposed body#1)	Decomposed body#35	4_M_DIEMAN,5,5
 
-2@gl_k,158,255,3	script	Gerhard#ghinstance1	651,{
-	end;
-OnInstanceInit:
-OnDisable:
-	hideonnpc instance_npcname("Gerhard#ghinstance1");
-	end;
-OnEnable:
-	hideoffnpc instance_npcname("Gerhard#ghinstance1");
-	end;
-OnEffect1:
-	specialeffect EF_BARRIER;
-	end;
-OnEffect2:
-	specialeffect EF_CHAINCOMBO;
-	end;
-OnEffect3:
-	specialeffect EF_MAPPILLAR2;
-	end;
-OnEffect4:
-	specialeffect EF_MAPPILLAR;
-	end;
-OnEffect5:
-	specialeffect EF_LORD;
-	end;
+// Amdarais Spawn
+2@gl_k,153,250,8	script	Heinrich#23	4_M_HEINRICH,{
+	cutin "gl_heinrich1",2;
+	mes "[Heinrich]";
+	mes "What are you putting on Himelmez!";
+	close3;
 }
 
-2@gl_k,0,0,0	script	#controlGH5	-1,{
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("#controlGH5");
+2@gl_k,162,250,1	script	Varmundt#23	4_M_BARMUND,{
+	mes "[Varmundt]";
+	mes "Can't take off this bridle...";
+	cutin "gl_barmund2",2;
+	close3;
+}
+
+2@gl_k,158,255,1	script	Gerhalt#23	4_LEVITATEMAN,{
+	mes "[Gerhalt]";
+	mes "Uuuuu... Khhhah! Just run away with the commander.";
+	close;
+}
+
+2@gl_k,158,252,1	script	Himelmez#22	4_F_HIMEL,3,3,{
+	cutin "gl_himel2",2;
+	mes "[Himelmez]";
+	mes "That is amazing ~ you made it all the way here. May I say thank you?";
+	close3;
+
+OnTouch:
 	end;
-OnEnable:
-	enablenpc instance_npcname("#controlGH5");
+OnTouch_:
+	disablenpc instance_npcname("Himelmez#22");
+	enablenpc instance_npcname("Himelmez#23");
 	initnpctimer;
+	'npc_himelmez$ = instance_npcname("Himelmez#23");
+	'npc_gerhalt$ = instance_npcname("Gerhalt#23");
+	'npc_heinrich$ = instance_npcname("Heinrich#23");
+	'npc_varmundt$ = instance_npcname("Varmundt#23");
 	end;
 OnTimer3000:
-	npctalk "Himmelmez : Great~ I thought you wouldn't come near the end...", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Amazing~ I thought that you were not even close to getting here...", 'npc_himelmez$;
 	end;
 OnTimer6000:
-	npctalk "Gerhard : Damn it! Run away! I can't withstand anymore!", instance_npcname("Gerhard#ghinstance1");
+	npctalk "Gerhalt: Kkkkah! Run away! I can't endure anymore!", 'npc_gerhalt$;
 	end;
 OnTimer9000:
-	npctalk "Heinrich : Gerhard!", instance_npcname("Heinrich#ghinstance6");
-	end;
-OnTimer12000:
-	npctalk "Gerhard : Commandant... Come on, you need to run away from here... Ugh.", instance_npcname("Gerhard#ghinstance1");
+	npctalk "Heinrich: Gerhalt!", 'npc_heinrich$;
 	end;
 OnTimer15000:
-	npctalk "Heinrich : What are you doing to my men, Himmelmez?!", instance_npcname("Heinrich#ghinstance6");
+	npctalk "Heinrich: What are you doing to my soldier Himelmez!", 'npc_heinrich$;
 	end;
 OnTimer18000:
-	npctalk "Himmelmez : Huhu, I have already found a piece of Ymir's Heart, Heinrich.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Hoo hoo, I already found a piece of Ymir's heart, Heinrich.", 'npc_himelmez$;
 	end;
 OnTimer21000:
-	npctalk "Himmelmez : It would've been faster if there were no distractions.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: If he did not bother me it would have been faster.", 'npc_himelmez$;
 	end;
 OnTimer24000:
-	npctalk "Gerhard : Even if you defile my body, I won't let you take my soul, Himmelmez!", instance_npcname("Gerhard#ghinstance1");
+	npctalk "Gerhalt: Commandant... Come on, you need to run away from here... Ugh.", 'npc_gerhalt$;
 	end;
 OnTimer27000:
-	npctalk "Himmelmez : What do you think? Making it look like an accidental disease infected the king and the people around...", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Really? What makes you think so?", 'npc_himelmez$;
 	end;
 OnTimer30000:
-	npctalk "Heinrich : Himmelmez! You don't need to make any more sacrifices!", instance_npcname("Heinrich#ghinstance6");
+	npctalk "Heinrich: Himelmez! You already made what you wanted so there is no more need for a sacrifice!", 'npc_heinrich$;
 	end;
 OnTimer33000:
-	npctalk "Heinrich : Let him go! I don't want one more sacrifice!", instance_npcname("Heinrich#ghinstance6");
+	npctalk "Heinrich: Let him go! I don't need to see anyone else suffer!", 'npc_heinrich$;
 	end;
 OnTimer36000:
-	npctalk "Himmelmez : You want that?", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Let him go? I think... No...", 'npc_himelmez$;
 	end;
 OnTimer39000:
-	npctalk "Himmelmez : This one is your final blow, Heinrich.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Besides, this is your last surviving soldier, Heinrich.", 'npc_himelmez$;
 	end;
 OnTimer42000:
-	npctalk "Himmelmez : It is said that stopping me requires a skillfull person.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: He made life difficult for me.", 'npc_himelmez$;
 	end;
 OnTimer45000:
-	npctalk "Himmelmez : Seems like a perfect scenario to make my new monster, Amdarias.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: He is perfectly fit for my new creation Amdarais.", 'npc_himelmez$;
 	end;
 OnTimer48000:
-	npctalk "Heinrich : I will not forgive you.", instance_npcname("Heinrich#ghinstance6");
+	npctalk "Heinrich: I'll never forgive you.", 'npc_heinrich$;
 	end;
 OnTimer51000:
-	npctalk "Himmelmez : Booh~ I'm scared.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Uh uh~ I'm so scared.", 'npc_himelmez$;
 	end;
 OnTimer54000:
-	npctalk "Himmelmez : Anyway, it was nice talking to you. Maybe we'll have the chance to meet again in the next story.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: Anyway, we will have a chance to see because we need to talk more.", 'npc_himelmez$;
 	end;
 OnTimer57000:
-	npctalk "Himmelmez : Well, make sure you will come back again.", instance_npcname("Himmelmez#ghinstance4");
+	npctalk "Himelmez: So long boys.", 'npc_himelmez$;
 	end;
 OnTimer60000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect1";
+	specialeffect EF_BARRIER, AREA, 'npc_gerhalt$;
 	end;
 OnTimer63000:
-	donpcevent instance_npcname("Himmelmez#ghinstance4")+"::OnDisable";
+	disablenpc 'npc_himelmez$;
 	end;
 OnTimer65000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect3";
+	npctalk "Gerhalt: You can make my body but you can't take my soul, Himelmez!", 'npc_gerhalt$;
 	end;
 OnTimer66000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect2";
+	specialeffect EF_CHAINCOMBO, AREA, 'npc_gerhalt$;
 	end;
 OnTimer67000:
-	npctalk "Heinrich : Just leave us alone, Himmelmez!!", instance_npcname("Heinrich#ghinstance6");
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect4";
+	npctalk "Heinrich: I'll never let you get away Himelmez!!", 'npc_heinrich$;
+	specialeffect EF_MAPPILLAR, AREA, 'npc_gerhalt$;
 	end;
 OnTimer70000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect3";
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect4";
-	donpcevent instance_npcname("Heinrich#ghinstance6")+"::OnDisable";
-	npctalk "Varmunt : What? This cannot be. We must prevent Amdarias's attacks!", instance_npcname("Varmunt#ghinstance5");
+	specialeffect EF_MAPPILLAR2, AREA, 'npc_gerhalt$;
+	specialeffect EF_MAPPILLAR, AREA, 'npc_gerhalt$;
+	disablenpc 'npc_heinrich$;
+	npctalk "Varmundt: We have no choice. We have to fight against Amdarais!", 'npc_varmundt$;
 	end;
 OnTimer73000:
-	mapannounce instance_mapname("2@gl_k"), "Leads toward Gerhard's body.",bc_map,"0xFFFFFF";
+	mapannounce 'map_name$[1], "Gerhalt's body is changing.", bc_map,0xFFFFFF;
 	end;
 OnTimer76000:
-	donpcevent instance_npcname("Gerhard#ghinstance1")+"::OnEffect5";
+	specialeffect EF_LORD, AREA, 'npc_gerhalt$;
+	disablenpc 'npc_varmundt$;
+	mapannounce 'map_name$[1], "Varmundt: Let me help this battle with my illusion. Just follow the illusion's orders.", bc_map,0xFFFF00;
 	end;
 OnTimer80000:
-	donpcevent instance_npcname("#ghmemorialmob10")+"::OnEnable";
+	disablenpc 'npc_gerhalt$;
+	donpcevent instance_npcname("#ghmemorialmob07") + "::OnStart";
+	stopnpctimer;
+	'npc_himelmez$ = 'npc_gerhalt$ = 'npc_heinrich$ = 'npc_varmundt$ = "";
+	end;
+}
+
+2@gl_k,158,252,4	script	Himelmez#23	4_F_HIMEL,{
+	cutin "gl_himel2",2;
+	mes "[Himelmez]";
+	mes "That is amazing ~ you made it all the way here. May I say thank you?";
+	close3;
+}
+
+2@gl_k,1,1,0	script	#ghmemorialmob07	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#ghmemorialmob07");
+	monster 'map_name$[1],158,255,"Amdarais",2476,1,instance_npcname("#ghmemorialmob07") + "::OnMyMobDead";// MG_AMDARAIS
+	'boss_id = $@mobid[0];
+	unittalk 'boss_id, "Run away... run away from me...";
+	initnpctimer;
+	end;
+OnTimer5000:
+	unittalk 'boss_id, "I don't want... I don't want to kill anyone. Uhuuuuuh";
+	end;
+OnTimer10000:
+	unittalk 'boss_id, "Please kill me! Please!";
+	end;
+OnTimer16000:
+	unittalk 'boss_id, "Eeeeee...eee...die... die...";
+	end;
+OnTimer22000:
+	unittalk 'boss_id, "Demolition... Death!...";
+	end;
+OnTimer55000:
+	donpcevent instance_npcname("#ghmemorialmob08") + "::OnStart";// Varmundt buffs and additionnal monsters
+	stopnpctimer;
+	end;
+
+OnMyMobDead:
+	if (mobcount('map_name$[1], instance_npcname("#ghmemorialmob07") + "::OnMyMobDead") < 1) {
+		stopnpctimer;
+		enablenpc instance_npcname("Hugin#21");
+		enablenpc instance_npcname("#Secret Room Exit");
+
+		stopnpctimer;
+		disablenpc instance_npcname("#ghmemorialmob07");
+		// note: monsters from #ghmemorialmob08 still alive on Amdarais's dead
+	}
+	end;
+}
+
+// Varmundt Buffs
+2@gl_k,1,1,0	script	#ghmemorialmob08	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#ghmemorialmob08");
+	initnpctimer;
+	end;
+OnTimer5000:
+	if (unitexists('boss_id) == 0) {
+		disablenpc instance_npcname("#ghmemorialmob08");
+		stopnpctimer;
+		end;
+	}
+	getunitdata 'boss_id, .@data;
+	.@percent_hp = (.@data[UMOB_HP] * 100) / .@data[UMOB_MAXHP];
+	mapannounce 'map_name$[1], "Amdarais HP " + .@percent_hp + "% reach!", bc_map,0x70DBDB;
+
+	// event type every 10%
+	switch( .@percent_hp / 10 ) {
+	case 10:
+		break;
+	case 9:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff2") + "::OnEvent";
+		break;
+	case 8:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Suffered Khalitzburg",2471,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 7:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Abysmal Knight",2470,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 6:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Bloody Knight",2472,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 5:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff2") + "::OnEvent";
+		break;
+	case 4:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Wandering Archer",2469,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 3:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff1") + "::OnEvent";
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Bloody Knight",2472,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 2:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff1") + "::OnEvent";
+		donpcevent instance_npcname("Varmundt's Ghost#Buff3") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Abysmal Knight",2470,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	case 1:
+	case 0:
+		donpcevent instance_npcname("Varmundt's Ghost#Buff1") + "::OnEvent";
+		donpcevent instance_npcname("Varmundt's Ghost#Buff4") + "::OnEvent";
+		areamonster 'map_name$[1],140,220,175,255,"Wandering Archer",2469,6, instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+		break;
+	}
+	end;
+OnTimer30000:
+	killmonster 'map_name$[1], instance_npcname("#ghmemorialmob08") + "::OnMobDead";
+	initnpctimer;
+	end;
+OnMobDead:
+	end;
+}
+
+2@gl_k,150,247,5	script	Varmundt's Ghost#Buff1	4_M_BARMUND,2,2,{
+	end;
+OnTouch:
+	specialeffect2 EF_ENHANCE;
+	// buff
+	// .@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
+	// if (.@num == 1)
+	// else if (.@num == 2)
+	// else if (.@num == 3)
+	// else
+	end;
+OnEvent:
+	initnpctimer;
+	enablenpc instance_npcname( strnpcinfo(0) );
+	.@num = atoi( replacestr(strnpcinfo(2), "Buff", "") );
+	if (.@num == 1)
+		npctalk "Varmundt's Ghost: Amdarais may use a strong magic shield! Stay close to me and I'll protect you!";
+	else if (.@num == 2)
+		npctalk "Varmundt's Ghost: Now's a chance to attack! Come closer to me and strike!";
+	else if (.@num == 3)
+		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais' zombie, come to me and get more power!";
+	else
+		npctalk "Varmundt's Ghost: If you don't want to be attacked by Amdarais's power, come to me and get more power! ";
+	end;
+OnTimer10000:
 	stopnpctimer;
-	donpcevent instance_npcname("#controlGH5")+"::OnDisable";
+	disablenpc instance_npcname( strnpcinfo(0) );
 	end;
 }
+2@gl_k,165,247,3	duplicate(Varmundt's Ghost#Buff1)	Varmundt's Ghost#Buff2	4_M_BARMUND,2,2
+2@gl_k,150,232,8	duplicate(Varmundt's Ghost#Buff1)	Varmundt's Ghost#Buff3	4_M_BARMUND,2,2
+2@gl_k,165,232,2	duplicate(Varmundt's Ghost#Buff1)	Varmundt's Ghost#Buff4	4_M_BARMUND,2,2
 
-2@gl_k,158,241,1	script	Hugin#ghinstance1	755,{
-	if (checkquest(12319,HUNTING) == 2) {
+
+2@gl_k,158,241,1	script	Hugin#21	4_M_SAGE_C,{
+	if (checkquest(12319,HUNTING) == 2) {// note: complete hunting 'Corrupted Soul Hunt' prerequis
 		mes "[Hugin]";
-		mes "Well, you are pretty ridiculous. Beginners shouldn't get the loot Amdarias drops.";
+		mes "Hm, you are very well. First of all, let me give you some loot from Amdarais.";
 		erasequest 12319;
-		setquest 12321;
-		setquest 12322;
-		erasequest 12321;
-		if (gh_instance) {
-			getitem 6607,1; //Temporal_Crystal
-			getitem 6608,1; //Coagulated_Spell
-		} else {
-			getitem 6607,5; //Temporal_Crystal
-			getitem 6608,5; //Coagulated_Spell
-			gh_instance = 1;
+		setquest 12322;// Space Distortion
+		if (isbegin_quest(12321) == 0) {
+			setquest 12321;// Time Conqueror
+			completequest 12321;
+			getitem 6607,5;// Temporal_Crystal
+			getitem 6608,5;// Coagulated_Spell
+			getexp 350000,350000;
+		}
+		else {
+			getitem 6607,1;// Temporal_Crystal
+			getitem 6608,1;// Coagulated_Spell
 		}
 		next;
 		mes "[Hugin]";
-		mes "Varmunt, I have arbitrarily stopped time. And soon, the time gap will be gone.";
+		mes "Varmundt's time is stopped by me.";
+		mes "And your time will be distorted soon.";
 		specialeffect2 EF_BLIND;
 		soundeffect "_blind.wav",0;
 		next;
 		mes "[Hugin]";
-		mes "Poor time travelers.";
-		mes "They will endlessly retry to prevent the tragedy that affected this city.";
+		mes "Maybe this poor time traveler will try to stop Glast Heim's tragedy from happening.";
 		next;
 		mes "[Hugin]";
-		mes "But the beggining of these time travels won't redempt your actions.";
-		mes "This will continue forever...";
+		mes "However, we will never overlook his behavior now and forever...";
 		next;
 		mes "[Hugin]";
-		mes "Now, I may erase your memory again. Perhaps you will have a different fate next time.";
+		mes "Now let me remove your memory. If you see me again it will be someone new.";
 		specialeffect2 EF_FREEZE;
 		close2;
-		getmapxy(.@map$,.@x,.@y,UNITTYPE_PC);
-		warp .@map$,.@x,.@y;
+		warp 'map_name$[1],158,244;
 		end;
-	} else {
-		mes "[Hugin]";
-		mes "The gap of time is almost distorted.";
-		mes "Done. There you go. Come!";
-		mes "I have to get out!";
-		next;
-		select("Bah... Soon after you...");
+	}
+	mes "[Hugin]";
+	mes "Oops. I almost distorted the time gap. Come over here. We need to go out!";
+	next;
+	select("You were just with me...");
+	mes "[Hugin]";
+	mes "What did you say just before?";
+	mes "Anyway, that is not important. The gap of time will be closed so we need to get out of here.";
+	next;
+	if (select("Let me look around more:Please let me out") == 1) {
 		mes "[Hugin]";
-		mes "Soon after me? Anyways...";
-		mes "Doesn't matter, soon the gap of time will be closed, I have to get out of here.";
-		next;
-		switch(select("Since I'm here, let's explore more.:Please, send me out.")) {
-		case 1:
-			mes "[Hugin]";
-			mes "..................";
-			close;
-		case 2:
-			close2;
-			warp "glast_01",204,270;
-			end;
-		}
+		mes "Really? This place will be break down soon. Please look around quickly.";
+		close;
 	}
-OnInstanceInit:
-OnDisable:
-	disablenpc instance_npcname("Hugin#ghinstance1");
+	close2;
+	warp "glast_01",204,270;
 	end;
-OnEnable:
-	enablenpc instance_npcname("Hugin#ghinstance1");
+}
+
+// Treasure Room
+//============================================================
+1@gl_k,165,136,3	script	Strange crack#2	CLEAR_NPC,{
+	if (isbegin_quest(12322) == 0) {// Space Distortion
+		mes "The crack looks suspicious but nothing more to check.";
+		close;
+	}
+	specialeffect EF_SPELLBREAKER;
+
+	.@random = rand(1,4);
+	switch( atoi(strnpcinfo(2)) ) {
+	case 2:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 719,1,"this",165,138;
+		makeitem 6608,1,"this",165,138;
+		break;
+	case 3:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 720,1,"this",159,138;
+		if (rand(1,4) == 4)
+			makeitem2 15066,1,"this",159,138,0,0,0,0,0,0,0;
+		makeitem 6608,1,"this",159,138;
+		makeitem 7229,1,"this",159,138;
+		break;
+	case 4:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 721,1,"this",153,138;
+		if (rand(1,4) == 4)
+			makeitem2 13086,1,"this",153,138,0,0,0,0,0,0,0;
+		makeitem 6608,1,"this",153,138;
+		makeitem 7230,1,"this",153,138;
+		break;
+	case 5:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 722,1,"this",147,138;
+		if (rand(1,4) == 4)
+			makeitem2 2949,1,"this",147,138,0,0,0,0,0,0,0;
+		makeitem 6612,1,"this",147,138;
+		makeitem 6613,1,"this",147,138;
+		makeitem 6608,1,"this",147,138;
+		break;
+	case 6:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 725,1,"this",141,138;
+		makeitem 7228,1,"this",141,138;
+		if (rand(1,4) == 4)
+			makeitem2 13440,1,"this",141,138,0,0,0,0,0,0,0;
+		makeitem 6608,1,"this",141,138;
+		break;
+	case 7:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 726,1,"this",135,138;
+		if (rand(1,4) == 4)
+			makeitem2 2022,1,"this",135,138,0,0,0,0,0,0,0;
+		makeitem 6608,1,"this",135,138;
+		break;
+	case 8:
+		for ( .@i = 1; .@i <= .@random; ++.@i )
+			makeitem 727,1,"this",129,138;
+		if (rand(1,4) == 4)
+			makeitem2 21007,1,"this",129,138,0,0,0,0,0,0,0;
+		makeitem 6608,1,"this",129,138;
+		break;
+	}
+	disablenpc instance_npcname( strnpcinfo(0) );
+	end;
+}
+1@gl_k,159,136,3	duplicate(Strange crack#2)	Strange crack#3	CLEAR_NPC
+1@gl_k,153,136,3	duplicate(Strange crack#2)	Strange crack#4	CLEAR_NPC
+1@gl_k,147,136,3	duplicate(Strange crack#2)	Strange crack#5	CLEAR_NPC
+1@gl_k,141,136,3	duplicate(Strange crack#2)	Strange crack#6	CLEAR_NPC
+1@gl_k,135,136,3	duplicate(Strange crack#2)	Strange crack#7	CLEAR_NPC
+1@gl_k,129,136,3	duplicate(Strange crack#2)	Strange crack#8	CLEAR_NPC
+
+1@gl_k,269,267,3	script	Strange crack#1	CLEAR_NPC,{
+	if (isbegin_quest(12322) == 0) {// Space Distortion
+		mes "The crack looks suspicious but nothing more to check.";
+		close;
+	}
+	warp 'map_name$[0],149,198;
+	end;
+
+OnInstanceInit:
+	'map_name$[0] = instance_mapname("1@gl_k");
+	'map_name$[1] = instance_mapname("2@gl_k");
+
+	// Entrance
+	disablenpc instance_npcname("Himelmez#1");
+	disablenpc instance_npcname("Varmundt#1");
+	disablenpc instance_npcname("Heinrich#1");
+	disablenpc instance_npcname("Heinrich#2");
+	disablenpc instance_npcname("Heinrich#3");
+
+	// Rescue 1
+	disablenpc instance_npcname("#ghmemorialmob01");
+	disablenpc instance_npcname("Altar boy Domun#1");
+
+	// Rescue 2
+	disablenpc instance_npcname("#ghmemorialmob02");
+	disablenpc instance_npcname("Holgren the Destroyer#1");
+	for ( .@i = 1; .@i <= 26; .@i++ )
+		disablenpc instance_npcname("A dead man#" + .@i);
+
+	// Sector 3
+	disablenpc instance_npcname("#ghmemorialmob03");
+
+	// Root of Corruption
+	disablenpc instance_npcname("Himelmez#2");
+	disablenpc instance_npcname("Varmundt#2");
+	disablenpc instance_npcname("Heinrich#4");
+	disablenpc instance_npcname("#Mimelon");
+	disablenpc instance_npcname("#ghmemorialmob04");
+
+	// Entrance 2nd map
+	disablenpc instance_npcname("Varmundt#21");
+	disablenpc instance_npcname("Heinrich#21");
+	disablenpc instance_npcname("#Servanton");
+	hideonnpc instance_npcname("#Servanton_effect");
+
+	// Commanders
+	disablenpc instance_npcname("#ghmemorialmob05");
+	disablenpc instance_npcname("#ghmemorialmob06");
+	for ( .@i = 1; .@i <= 7; .@i++ ) {
+		disablenpc instance_npcname("#ogh_2-" + .@i);
+		disablenpc instance_npcname("#ogh_3-" + .@i);
+	}
+
+	// Amdarais Room Entrance
+	disablenpc instance_npcname("#Geron");
+	for ( .@i = 1; .@i <= 35; .@i++ )
+		disablenpc instance_npcname("Decomposed body#" + .@i);
+
+	// Amdarais Spawn
+	disablenpc instance_npcname("Gerhalt#23");
+	disablenpc instance_npcname("Himelmez#22");
+	disablenpc instance_npcname("Himelmez#23");
+	disablenpc instance_npcname("Varmundt#23");
+	disablenpc instance_npcname("Heinrich#23");
+	disablenpc instance_npcname("#ghmemorialmob07");
+
+	// Varmundt Buffs
+	disablenpc instance_npcname("#ghmemorialmob08");
+	disablenpc instance_npcname("Varmundt's Ghost#Buff1");
+	disablenpc instance_npcname("Varmundt's Ghost#Buff2");
+	disablenpc instance_npcname("Varmundt's Ghost#Buff3");
+	disablenpc instance_npcname("Varmundt's Ghost#Buff4");
+	disablenpc instance_npcname("Hugin#21");
+
+	// Warps
+	disablenpc instance_npcname("#2Control");
+	disablenpc instance_npcname("#2Control2");
+	disablenpc instance_npcname("#3Control");
+	disablenpc instance_npcname("#3Control2");
+	disablenpc instance_npcname("#4Control");
+	disablenpc instance_npcname("#4Control2");
+	disablenpc instance_npcname("#2F Entrance");
+	disablenpc instance_npcname("#1 Control");
+	disablenpc instance_npcname("#22 Control");
+	disablenpc instance_npcname("#22 Control2");
+	disablenpc instance_npcname("#23 Control");
+	disablenpc instance_npcname("#23 Control2");
+	disablenpc instance_npcname("#24 Control");
+	disablenpc instance_npcname("#24 Control2");
+	disablenpc instance_npcname("#Secret Room Exit");
 	end;
 }

+ 1 - 1
npc/re/kafras/kafras.txt

@@ -47,7 +47,7 @@ dewata,202,184,6	script	Kafra Employee::kaf_dewata	117,{
 
 // Glastheim
 //============================================================
-glast_01,200,275,5	script	Kafra Employee::kaf_glast	115,{
+glast_01,200,275,0	script	Kafra Employee::kaf_glast	4_F_KAFRA3,{
 	cutin "kafra_03",2;
 	callfunc "F_Kafra",0,3,2,500,700;
 	savepoint "glast_01",200,272,1,1;

+ 4 - 0
npc/re/mapflag/nobranch.txt

@@ -146,3 +146,7 @@ te_aldecas2	mapflag	nobranch
 te_aldecas3	mapflag	nobranch
 te_aldecas4	mapflag	nobranch
 te_aldecas5	mapflag	nobranch
+
+// Episode 15
+1@lab	mapflag	nobranch
+1@uns	mapflag	nobranch

+ 4 - 0
npc/re/mapflag/noicewall.txt

@@ -79,3 +79,7 @@ te_aldecas2	mapflag	noicewall
 te_aldecas3	mapflag	noicewall
 te_aldecas4	mapflag	noicewall
 te_aldecas5	mapflag	noicewall
+
+// Episode 15
+1@lab	mapflag	noicewall
+1@uns	mapflag	noicewall

+ 6 - 0
npc/re/mapflag/nomemo.txt

@@ -147,3 +147,9 @@ te_aldecas4	mapflag	nomemo
 te_aldecas5	mapflag	nomemo
 teg_dun01	mapflag	nomemo
 teg_dun02	mapflag	nomemo
+
+// Episode 15
+1@lab	mapflag	nomemo
+1@uns	mapflag	nomemo
+un_bk_q	mapflag	nomemo
+un_myst	mapflag	nomemo

+ 10 - 0
npc/re/mapflag/noteleport.txt

@@ -183,3 +183,13 @@ te_aldecas2	mapflag	monster_noteleport
 te_aldecas3	mapflag	monster_noteleport
 te_aldecas4	mapflag	monster_noteleport
 te_aldecas5	mapflag	monster_noteleport
+
+// Episode 15
+1@lab	mapflag	noteleport
+1@uns	mapflag	noteleport
+un_bk_q	mapflag	noteleport
+un_myst	mapflag	noteleport
+verus04	mapflag	noteleport
+1@lab	mapflag	monster_noteleport
+1@uns	mapflag	monster_noteleport
+un_bk_q	mapflag	monster_noteleport

+ 6 - 0
npc/re/mapflag/nowarp.txt

@@ -23,4 +23,10 @@ te_aldecas3	mapflag	nowarp
 te_aldecas4	mapflag	nowarp
 te_aldecas5	mapflag	nowarp
 
+// Episode 15
+1@lab	mapflag	nowarp
+1@uns	mapflag	nowarp
+un_bk_q	mapflag	nowarp
+un_myst	mapflag	nowarp
+
 job_gun	mapflag	nowarp

+ 6 - 0
npc/re/mapflag/nowarpto.txt

@@ -111,4 +111,10 @@ te_aldecas3	mapflag	nowarpto
 te_aldecas4	mapflag	nowarpto
 te_aldecas5	mapflag	nowarpto
 
+// Episode 15
+1@lab	mapflag	nowarpto
+1@uns	mapflag	nowarpto
+un_bk_q	mapflag	nowarpto
+un_myst	mapflag	nowarpto
+
 job_gun	mapflag	nowarpto

+ 4 - 0
npc/re/mapflag/partylock.txt

@@ -56,3 +56,7 @@
 
 // Horror Toy Factory
 1@xm_d	mapflag	partylock
+
+// Central Laboratory Memorial ====
+1@lab	mapflag	partylock
+1@uns	mapflag	partylock

+ 327 - 0
npc/re/merchants/OldGlastHeim_merchants.txt

@@ -0,0 +1,327 @@
+//===== rAthena Script =======================================
+//= Enchants NPCs.
+//===== Description: =========================================
+//= Temporal Boots enchants NPCs.
+//===== Changelogs: ==========================================
+//= 1.0 First Version merged from idathena.
+//=     Credit exneval. [Capuche]
+//============================================================
+
+// Merchant
+//============================================================
+glast_01,210,273,5	script	Hugin's butler#pa0829	1_F_04,{
+	disable_items;
+	if (MaxWeight - Weight < 1000) {
+		mes "Your bag is too heavy. Reduce some weight and come back.";
+		close;
+	}
+	mes "[Hugin's Buttler]";
+	mes "Bring Temporal Crystal items for various Temporal boots items. Pick something you want.";
+	next;
+	switch( select( "Cancel", "Buy Temporal Boots (Need 1 Temporal Crystal)", "Upgrade Temporal Boots (Need 5 Temporal Crystals)", "Upgrade Modified Boots (Need 5 Time Crystals)" ) ) {
+	case 1:
+		mes "[Hugin's Buttler]";
+		mes "Come back whenever you want.";
+		close;
+	case 2:
+		if (countitem(6607) > 0) {
+			mes "[Hugin's Buttler]";
+			mes "Take these Temporal Boots. We can upgrade your Temporal Boots with 5 Temporal Crystals.";
+			delitem 6607,1;// Temporal_Crystal
+			getitem 2499,1;// Temporal_Boots
+			close;
+		}
+		mes "[Hugin's Buttler]";
+		mes "You need more Temporal Crystals. Come back when you get some more Temporal Crystals during your travel through Old Glast Heim.";
+		close;
+	case 3:
+		setarray .@equip_type[0],
+			22000,	// Temporal_STR_Boots
+			22001,	// Temporal_INT_Boots
+			22002,	// Temporal_AGI_Boots
+			22003,	// Temporal_VIT_Boots
+			22004,	// Temporal_DEX_Boots
+			22005;	// Temporal_LUK_Boots
+		break;
+	case 4:
+		setarray .@equip_type[0],
+			22107,	// Modified_STR_Boots
+			22108,	// Modified_INT_Boots
+			22109,	// Modified_AGI_Boots
+			22110,	// Modified_VIT_Boots
+			22111,	// Modified_DEX_Boots
+			22112;	// Modified_LUK_Boots
+		break;
+	}
+	if (!getequipisequiped(EQI_SHOES)) {
+		mes "[Hugin's Buttler]";
+		mes "Only the item you are wearing can be upgraded.";
+		mes "Wear the ^0000FFTemporal Boots^000000 you want to upgrade, and then talk to me once again.";
+		close;
+	}
+	if (getequipid(EQI_SHOES) != 2499) {
+		mes "[Hugin's Buttler]";
+		mes "You are not wearing the Temporal Boots. Talk to me once you're wearing them.";
+		close;
+	}
+	if (countitem(6607) < 5) {
+		mes "[Hugin's Buttler]";
+		mes "Not enough Temporal Crystals. You need 5 Temporal Crystals to upgrade your item.";
+		close;
+	}
+	mes "[Hugin's Buttler]";
+	mes "You can trade ^0000FF1 Temporal Boots and 5 Temporal Crystals^000000 for 1 of the following items. ^FF0000Previous refine rate will not be retained with these new ones^000000.";
+	next;
+	.@s = select( "Cancel", "Str Boots", "Int Boots", "Agi Boots", "Vit Boots", "Dex Boots", "Luk Boots" ) - 2;
+	if (.@s == -1) {
+		mes "[Hugin's Buttler]";
+		mes "Come back anytime you want.";
+		close;
+	}
+	setarray .@type$[0], "Strength", "Intelligence", "Agility", "Vitality", "Dexterity", "Lucky";
+	mes "[Hugin's Buttler]";
+	mes "Are you sure about buying Temporal ^FF0000" + .@type$[.@s] + "^000000 Boots? There's no refunds.";
+	next;
+	if (select( "Think again", "Yes, I am sure." ) == 1) {
+		mes "[Hugin's Buttler]";
+		mes "Ok, come back again when you are sure.";
+		close;
+	}
+	mes "[Hugin's Buttler]";
+	mes "The boots have been upgraded as you want.";
+	delequip EQI_SHOES;
+	delitem 6607,5;// Temporal_Crystal
+	getitem .@equip_type[.@s],1;
+	close;
+}
+
+// Enchant and Socket NPC
+//============================================================
+glast_01,212,273,4	script	Hugin's magic master#pa0829	1_F_01,{
+	disable_items;
+	if (MaxWeight - Weight < 1000) {
+		mes "Your bag is too heavy. Reduce some weight and come back.";
+		close;
+	}
+	mes "[Hugin's Magic Master]";
+	mes "So you came to enchant the Temporal Boots. Be aware that Boots with sockets cannot be enchanted, and this upgrade is only possible for the boots you are wearing.";
+	next;
+	if (select( "How does the enchanting work?", "Give effect to my Temporal Boots" ) == 1) {
+		mes "[Hugin's Magic Master]";
+		mes "You can keep obtain ^0000FFCoagulated Spell^000000 through your travel times.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "I can enchant your Temporal Boots items depands on the amount of that item. ^0000FFNot normal type boots^000000. Only possible for those 6 expanded version boots.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "But, once you put a socket into the item, you cannot enchant it. Make sure to remember that.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "I don't give out effect randomly. You can pick which effect you want for the item.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "Of course it is for 4th slot only. You can have small effect at the start, and then the effect gets stronger.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "To get to the final option upgrade, it will require way more Coagulated Spell items. Don't forget that.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "Once the 4th slot completes the best option, you get to have a random bonus effect to the 3rd slot. With.. certain payment~";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "Also, you don't lose the item even if the enchant fails, we also guarantee keeping card and refine rate. But we can't initialize enchanting.";
+		next;
+		mes "[Hugin's Magic Master]";
+		mes "Phew...";
+		mes "Anyways, that's all for basic enchant information. Now you should see for yourself.";
+		close;
+	}
+	if (!getequipisequiped(EQI_SHOES)) {
+		mes "[Hugin's Magic Master]";
+		mes "Are you wearing the item?";
+		close;
+	}
+	.@equip_id = getequipid(EQI_SHOES);
+
+	setarray .@enchant_1[0],4808,4832,4814,4741,4869,4752;// Fighting_Spirit4	Expert_Archer1	Spell2	Vitality2	DelayafterAttack1Lv	Luck3
+	setarray .@enchant_2[0],4820,4833,4813,4742,4872,4753;// Fighting_Spirit5	Expert_Archer2	Spell3	Vitality3	DelayafterAttack2Lv	Luck4
+	setarray .@enchant_3[0],4821,4834,4812,4861,4873,4754;// Fighting_Spirit6	Expert_Archer3	Spell4	MHP1		DelayafterAttack3Lv	Luck5
+	setarray .@enchant_4[0],4822,4835,4826,4862,4881,4755;// Fighting_Spirit7	Expert_Archer4	Spell5	MHP2		DelayafterAttack4Lv	Luck6
+	setarray .@enchant_cost[0],1,4,15,30,10;
+
+	switch(.@equip_id) {
+	case 22000:	// Temporal_STR_Boots
+	case 22001:	// Temporal_INT_Boots
+	case 22002:	// Temporal_AGI_Boots
+	case 22003:	// Temporal_VIT_Boots
+	case 22004:	// Temporal_DEX_Boots
+	case 22005:	// Temporal_LUK_Boots
+
+	case 22107:	// Modified_STR_Boots
+	case 22108:	// Modified_INT_Boots
+	case 22109:	// Modified_AGI_Boots
+	case 22110:	// Modified_VIT_Boots
+	case 22111:	// Modified_DEX_Boots
+	case 22112:	// Modified_LUK_Boots
+		.@equip_name$ = getequipname(EQI_SHOES);
+		.@card2 = getequipcardid(EQI_SHOES,2);
+		.@card3 = getequipcardid(EQI_SHOES,3);
+		.@equip_refine = getequiprefinerycnt(EQI_SHOES);
+
+		if (.@card2 > 0) {
+			mes "[Hugin's Magic master]";
+			mes "These boots have already passed the enchanting limit. We can't enchant them any more.";
+			close;
+		}
+		if (.@card3 == 0) {// 4th slot 1st try enchanting
+			.@cost = .@enchant_cost[0];
+			mes "[Hugin's Magic Master]";
+			mes "Want to enchant ^0000FF" + .@equip_name$ + "^000000?";
+			mes "For the 1st enchanting, you need ^0000FF" + .@cost + "^000000 Coagulated Spell items.";
+			next;
+			.@s = select( "Quit", "Fighting Spirit", "Archery", "Spell", "Vitality", "Attack Speed", "Lucky" ) - 2;
+			if (.@s == -1) {
+				mes "[Hugin's Magic Master]";
+				mes "Ok, come back when you are ready.";
+				close;
+			}
+			.@card3 = .@enchant_1[.@s];
+			.@string$ = "enchant number ^6300001^000000.";
+		}
+		else {
+			for ( .@enchant_num = 1; .@enchant_num < 5; .@enchant_num++ ) {
+				for ( .@enchant_type = 0; .@enchant_type < 6 && .@card3 != getd( ".@enchant_" + .@enchant_num + "[" + .@enchant_type + "]" ); .@enchant_type++ )
+					continue;
+				if (.@enchant_type < 6)
+					break;
+			}
+			if (.@enchant_num == 5) {
+				mes "[Hugin's Magic Master]";
+				mes "Something wrong happened.";
+				close;
+			}
+			.@cost = .@enchant_cost[.@enchant_num];
+
+			mes "[Hugin's Magic Master]";
+			if (.@enchant_num == 4) {
+				.@card2 = callfunc("F_Rand",4875,4876,4877,4878,4879,4880);// Bear's_Power, Runaway_Magic, Speed_Of_Light, Muscle_Fool, Hawkeye, Lucky_Day
+				.@string$ = "^990000Bonus effect ^000000 upgrade.";
+				mes "4th slot is already upgraded to the final option. Would you like a random bonus effect for the 3rd slot? You need ^0000ff" + .@cost + "^000000 Coagulated Spell items.";
+			}
+			else {
+				.@number = .@enchant_num + 1;
+				.@card3 = getd( ".@enchant_" + (.@enchant_num+1) + "[" + .@enchant_type + "]" );
+				.@string$ = "enchant number ^630000" + .@number + "^000000.";
+				mes "Enchanting ^0000FF" + .@equip_name$ + "^000000's 4th slot as ^0000FF" + .@number + "^000000 level effect. Requires ^0000FF" + .@cost + "^000000 Coagulated Spell items.";
+			}
+			next;
+			if (select("Quit","Effect Upgrade!") == 1) {
+				mes "[Hugin's Magic Master]";
+				mes "Ok, come back when you are ready.";
+				close;
+			}
+		}
+		if (countitem(6608) < .@cost) {
+			mes "[Hugin's Magic Master]";
+			mes "Hmm, you are missing " + (.@cost - countitem(6608)) + " Coagulated Spell items. Go get more, and then we can talk about more enchants.";
+			close;
+		}
+		specialeffect2 EF_REPAIRWEAPON;
+		delitem 6608,.@cost;// Coagulated_Spell
+		delequip EQI_SHOES;
+		mes "[Hugin's Magic Master]";
+		mes "Trying for " + .@string$;
+		getitem2 .@equip_id,1,1,.@equip_refine,0,0,0,.@card2,.@card3;
+		close;
+	default:
+		mes "[Hugin's Magic Master]";
+		mes "This is not the right item for this enchant.";
+		mes "Remember, only those 6 types of Temporal Boots are available for enchanting.";
+		close;
+	}
+}
+
+glast_01,210,270,0	script	Hugin's Craftsman#pa0829	4_F_JOB_BLACKSMITH,{
+	disable_items;
+	if (MaxWeight - Weight < 1000) {
+		mes "Your bag is too heavy. Reduce some weight and come back.";
+		close;
+	}
+	mes "[Hugin's Craftsman]";
+	mes "That Magic Master always says that enchanting Temporal Boots is the best. But, I think quite different.";
+	next;
+	mes "[Hugin's Craftsman]";
+	mes "I think putting a slot into the item would be the best. Even with some risk of failing.";
+	next;
+	mes "[Hugin's Craftsman]";
+	mes "Bring me ^0000FF5 Temporal Crystals^000000, and I will try to put a slot into your advanced Temporal Boots. But, it's possible to ^FF0000fail and break the item^000000. Is that ok?";
+	next;
+	if (select( "Cancel", "Take the risk and try to add a slot" ) == 1) {
+		mes "[Hugin's Craftsman]";
+		mes "Ok, come back anytime you want.";
+		close;
+	}
+	if (!getequipisequiped(EQI_SHOES)) {
+		mes "[Hugin's Craftsman]";
+		mes "Are you sure you are wearing the item?";
+		close;
+	}
+	.@equip_id = getequipid(EQI_SHOES);
+	switch(.@equip_id) {
+	case 22000:	callsub( S_Slot,22006 );	// Temporal_STR_Boots
+	case 22001:	callsub( S_Slot,22009 );	// Temporal_INT_Boots
+	case 22002:	callsub( S_Slot,22010 );	// Temporal_AGI_Boots
+	case 22003:	callsub( S_Slot,22007 );	// Temporal_VIT_Boots
+	case 22004:	callsub( S_Slot,22008 );	// Temporal_DEX_Boots
+	case 22005:	callsub( S_Slot,22011 );	// Temporal_LUK_Boots
+
+	case 22107:	callsub( S_Slot,22113 );	// Modified_STR_Boots
+	case 22108:	callsub( S_Slot,22114 );	// Modified_INT_Boots
+	case 22109:	callsub( S_Slot,22115 );	// Modified_AGI_Boots
+	case 22110:	callsub( S_Slot,22116 );	// Modified_VIT_Boots
+	case 22111:	callsub( S_Slot,22117 );	// Modified_DEX_Boots
+	case 22112:	callsub( S_Slot,22118 );	// Modified_LUK_Boots
+	default:
+		mes "[Hugin's Craftsman]";
+		mes "This is not it! We need ^0000FFAdvanced Temporal Boots^000000 items! The item ^0000FFwith a stat effect and without a slot^000000!";
+		close;
+	}
+
+S_Slot:
+	mes "[Hugin's Craftsman]";
+	mes "And ^FF0000all enchant or refine rates will be lost if you fail this.^000000";
+	mes "Still want to risk it?";
+	next;
+	if (select( "Cancel", "I am ok with it!" ) == 1) {
+		mes "[Hugin's Craftsman]";
+		mes "Ok, come back anytime you want.";
+		close;
+	}
+	mes "[Hugin's Craftsman]";
+	mes "Once again, ^FF0000That Magic Master won't enchant any item with a slot.^000000";
+	mes "Still want to proceed?";
+	next;
+	if (select( "Cancel", "I understand. Try to slot it." ) == 1) {
+		mes "[Hugin's Craftsman]";
+		mes "Ok, come back anytime you want.";
+		close;
+	}
+	if (countitem(6607) < 5) {
+		mes "[Hugin's Craftsman]";
+		mes "You must bring ^0000FF5 Temporal Crystal items^000000. Nothing is free you know...";
+		close;
+	}
+	delitem 6607,5;// Temporal_Crystal
+	delequip EQI_SHOES;
+	if (rand(1,100) < 50) {
+		mes "[Hugin's Craftsman]";
+		mes "Arrggg, we failed. Better luck next time.";
+		specialeffect2 EF_PHARMACY_FAIL;
+		close;
+	}
+	mes "[Hugin's Craftsman]";
+	mes "Successful! Here you go.";
+	specialeffect2 EF_MAXPOWER;
+	getitem getarg(0),1;
+	close;
+}

+ 1 - 1
npc/re/mobs/dungeons/yggdrasil.txt

@@ -7,7 +7,7 @@
 //===== Compatible With: =====================================
 //= rAthena Project
 //===== Additional Comments: =================================
-//= 1.0 Splitted from Nifflheim fields [DracoRPG]
+//= 1.0 Splitted from Niflheim fields [DracoRPG]
 //= 1.1 Official kRO 10.1 spawns [Playtester]
 //============================================================
 

+ 2 - 2
npc/re/mobs/fields/niflheim.txt

@@ -17,7 +17,7 @@
 //============================================================
 
 //==================================================
-// niflheim - Nifflheim, Realm of the Dead
+// niflheim - Niflheim, Realm of the Dead
 //==================================================
 niflheim,0,0	monster	Lude	1509,20,5000
 niflheim,0,0	monster	Quve	1508,20,5000
@@ -26,7 +26,7 @@ niflheim,0,0	monster	Heirozoist	1510,10,5000
 niflheim,0,0	monster	Dullahan	1504,5,5000
 
 //==================================================
-// nif_fild01 - Skellington, a Solitary Village in Nifflheim
+// nif_fild01 - Skellington, a Solitary Village in Niflheim
 //==================================================
 nif_fild01,0,0	monster	Disguise	1506,50,5000
 nif_fild01,0,0	monster	Quve	1508,30,5000

+ 34 - 0
npc/re/mobs/verus.txt

@@ -0,0 +1,34 @@
+//===== rAthena Script =======================================
+//= Verus Monster Spawn Script
+//===== Description: =========================================
+//= Spawns monsters around Verus.
+//===== Additional Comments: =================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+// ver_eju
+ver_eju,0,0,0,0	monster	Recon Robot	3154,80,0,0,0
+ver_eju,0,0,0,0	monster	Excavator Robot	3153,25,0,0,0
+// ver_tunn
+ver_tunn,0,0,0,0	monster	Recon Robot	3154,5,0,0,0
+// verus01
+verus01,0,0,0,0	monster	Green Cenere	3247,30,0,0,0
+verus01,0,0,0,0	monster	Explorer Robot Turbo	3249,10,0,0,0
+verus01,0,0,0,0	monster	Repair Robot Turbo	3248,10,0,0,0
+// verus02
+verus02,0,0,0,0	monster	Repair Robot Turbo	3248,90,0,0,0
+verus02,0,0,0,0	monster	Explorer Robot Turbo	3249,90,0,0,0
+// verus03
+verus03,0,0,0,0	monster	Illegal Promotion	3159,40,0,0,0
+verus03,0,0,0,0	monster	Explorer Robot	3156,80,0,0,0
+verus03,0,0,0,0	monster	Repair Robot	3155,45,0,0,0
+verus03,0,0,0,0	monster	Ruin Grace Believer	3158,10,0,0,0
+// un_bunker
+un_bunker,0,0,0,0	monster	Thief Bug	1051,6,0,0,0
+un_bunker,0,0,0,0	monster	Smelly Ghoul	3255,68,0,0,0
+un_bunker,0,0,0,0	monster	Smelly Zombie	3256,80,0,0,0
+un_bunker,0,0,0,0	monster	Machine Component	3250,28,0,0,0
+un_bunker,0,0,0,0	monster	DR815	3252,14,0,0,0
+un_bunker,0,0,0,0	monster	GC109	3251,10,0,0,0
+un_bunker,0,0,0,0	monster	Black Mushroom	1084,1,0,0,0
+un_bunker,0,0,0,0	monster	Chonchon	1011,2,0,0,0

+ 1 - 1
npc/re/quests/eden/91-99.txt

@@ -154,7 +154,7 @@ moc_para01,48,177,3	script	91-99 Mission Board	857,{
 			case 2: callsub L_Quest,4193,"Mineral",138000,"미네랄","There is a monster only found in ^8B4513Einbech Dungeon^000000.";
 			case 3: callsub L_Quest,4194,"Kaho",118000,"카호카드","There is a monster found in ^8B4513Nogg Road Magma 1^000000.";
 			case 4: callsub L_Quest,4195,"Neraid",96000,"네레이드카드","There is a monster only found in ^8B4513Comodo Dungeon^000000.";
-			case 5: callsub L_Quest,4196,"Disguise",134000,"디스가이즈카드","There is a monster only found in ^8B4513Nifflheim^000000.";
+			case 5: callsub L_Quest,4196,"Disguise",134000,"디스가이즈카드","There is a monster only found in ^8B4513Niflheim^000000.";
 		}
 	}
 	end;

+ 3 - 3
npc/re/quests/eden/eden_100_111.txt

@@ -521,7 +521,7 @@ moc_para01,37,95,5	script	Gelkah#1	4_F_GELKA,{
 				case 5:
 					mes "Here is a list of other requests from all over Rune Midgard.";
 					next;
-					switch( select( "Loli Ruri Hunting - Nifflheim", "Medusa Hunting - Comodo", "Anubis Hunting - Sphinx" ) ) {
+					switch( select( "Loli Ruri Hunting - Niflheim", "Medusa Hunting - Comodo", "Anubis Hunting - Sphinx" ) ) {
 						mes "[Gelkah]";
 					case 1:
 						if (checkquest(13041,PLAYTIME) == 0)
@@ -534,7 +534,7 @@ moc_para01,37,95,5	script	Gelkah#1	4_F_GELKA,{
 							mes "I wonder why they are scheming this kind of ^FF0000nonsense^000000... makes me wonder if they even know anything about adventuring.";
 							next;
 							mes "[Gelkah]";
-							mes "We should accept this simple request before we start getting even more nonsense ones. Please clear ^FF000030 Loli Ruri^000000 in Nifflheim.";
+							mes "We should accept this simple request before we start getting even more nonsense ones. Please clear ^FF000030 Loli Ruri^000000 in Niflheim.";
 							next;
 							cutin "gelca02",2;
 							mes "[Gelkah]";
@@ -553,7 +553,7 @@ moc_para01,37,95,5	script	Gelkah#1	4_F_GELKA,{
 							mes "They said that they would heal Eden Group adventurers who are exhausted in exchange for the request but we're not sure they'll follow through.";
 							next;
 							mes "[Gelkah]";
-							mes "We should accept the simple request anyways. Please clear ^FF000030 Loli Ruri^000000 in Nifflheim.";
+							mes "We should accept the simple request anyways. Please clear ^FF000030 Loli Ruri^000000 in Niflheim.";
 							callsub S_Quest,13041,13040;
 						}
 						break;

+ 3 - 1
npc/re/quests/eden/eden_common.txt

@@ -25,7 +25,7 @@
 
 // Common NPCs :: lv_tre
 //============================================================
-moc_para01,27,35,5	script	Secretary Lime Evenor	952,{
+moc_para01,27,35,5	script	Secretary Lime Evenor	4_F_EDEN_OFFICER,{
 	if (checkweight(1201,1) == 0 || (MaxWeight - Weight) < 2000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -274,6 +274,7 @@ izlude_c,131,148,4	duplicate(eto)	Eden Teleport Officer#30::eto_iz_c	729
 izlude_d,131,148,4	duplicate(eto)	Eden Teleport Officer#30::eto_iz_d	729
 umbala,105,158,3	duplicate(eto)	Eden Teleport Officer#31	729
 malaya,238,206,6	duplicate(eto)	Eden Teleport Officer#32	729
+verus04,116,243,0	duplicate(eto)	Eden Teleport Officer#33	729
 
 moc_para01,30,10,0	script	#eden_out	45,1,1,{
 OnTouch:
@@ -310,6 +311,7 @@ OnTouch:
 		case 30: warp "izlude",134,118; end;	// Old coordinates: (127,142)
 		case 31: warp "umbala",94,154; end;
 		case 32: warp "malaya",234,199; end;
+		case 33: warp "verus04",115,243; end;
 		default: warp "prontera",116,72; end;
 	}
 	end;

+ 9070 - 0
npc/re/quests/quests_15_1.txt

@@ -0,0 +1,9070 @@
+//===== rAthena Script =======================================
+//= Phantasmagorika Quests.
+//===== Description: =========================================
+//= [Walkthrough Conversion]
+//--- Quests list:
+//- Phantasmagorika Main Quests
+//- Wandering Bard Quest
+//- Police Quests
+//- New Power Source
+//- Krotzel's Request
+//- To Phantasmagorika!
+//- Looking for the Traces
+//- Vestige
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+prontera,121,77,3	script	Phantasmagorika Spokesperson	4_F_ZONDAGIRL,{
+	mes "[Spokesperson]";
+	mes "Good day.";
+	mes "Rekenber is recruiting adventurers for an excavation project that takes place in Phantasmagorika, the newly discovered ruins in Juperos.";
+	next;
+	mes "[Spokesperson]";
+	mes "If you're interested, just come as you are.";
+	mes "Everything you need for the excavation will be provided by Rekenber.";
+	next;
+	mes "[Spokesperson]";
+	mes "Join us for adventure at the newly discovered ruins in Juperos,";
+	mes "an ancient city whose scientific knowledge has fueled the development of modern civilization.";
+	next;
+	mes "[Spokesperson]";
+	mes "If you'd like to join, then form an excavation team and fill out your application.";
+	next;
+	switch( select( "Excavation team? Application?", "Phantasmagorika?", "Bye." ) ) {
+	case 1:
+		mes "[Spokesperson]";
+		mes "We're recruiting teams of excavators for the research of Phantasmagorika, the newly discovered ruins.";
+		mes "This project requires expertise in various fields, so we've decided to recruit";
+		mes "teams of excavators instead of individuals.";
+		next;
+		mes "[Spokesperson]";
+		mes "You can register for the excavation project,";
+		mes "and help us however you can.";
+		mes "Registered excavators receive special benefits and commodities";
+		next;
+		mes "[Spokesperson]";
+		mes "in exchange for information that they discover in the ruins. We'll use the information to research the ruins.";
+		mes "Even if you fail to find useful information, we'll reward you just for your participation.";
+		next;
+		mes "[Spokesperson]";
+		mes "If you want to join the project, please go submit your application to the Eden Group.";
+		close;
+	case 2:
+		mes "[Spokesperson]";
+		mes "An ancient site was just discovered in Juperos.";
+		mes "It was hidden at the end of a long tunnel.";
+		next;
+		mes "[Spokesperson]";
+		mes "Rekenber has named the site ^4d4dffPhantasmagorika^000000";
+		mes "and commenced an excavation.";
+		next;
+		mes "[Spokesperson]";
+		mes "We're hoping to find more advanced magic gears and a higher level of scientific knowledge than what was ever discovered in the Juperos region.";
+		close;
+	case 3:
+		mes "[Spokesperson]";
+		mes "Rekenber is looking for talented adventurers for the excavation of Phantasmagorika.";
+		mes "Feel free to join us anytime!";
+		mes "We need you!";
+		close;
+	}
+
+OnInit:
+	questinfo 7610, QTYPE_QUEST, 1;
+	setquestinfo_level 7610, 140,175;
+	end;
+}
+geffen,135,64,3	duplicate(Phantasmagorika Spokesperson)	Phantasmagorika Spokesperson#2	4_F_ZONDAGIRL
+
+moc_para01,31,14,0	script	#atnevt01	HIDDEN_WARP_NPC,2,2,{
+	end;
+OnTouch:
+	if (VER_MAIN == 0 && BaseLevel >= 140) {
+		cutin "laime_evenor01.bmp",2;
+		mes "[Secretary Lime Evenor]";
+		mes "Welcome back,";
+		mes "" + strcharinfo(0) + ". I don't know how we can survive without you.";
+		next;
+		mes "[Secretary Lime Evenor]";
+		mes "Have you heard?";
+		mes "An ancient site was just discovered in Juperos.";
+		mes "Rekenber is recruiting adventurers for the excavation of the place,";
+		next;
+		mes "[Secretary Lime Evenor]";
+		mes "and we've decided to join it.";
+		mes "The Captain wants to see you about that.";
+		next;
+		select("I didn't know you had a captain.");
+		cutin "laime_evenor02.bmp",2;
+		mes "[Secretary Lime Eveno]";
+		mes "What, did you think I was running this gig alone?";
+		mes "The Mistre--I mean, the Captain is rarely excited about anything, and this is one of those rare occasions. You should meet her.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Secretary Lime Eveno]";
+		mes "Her office is to the far left on the second floor.";
+		VER_MAIN = 1;
+		setquest 7607;// Eden Group Leader
+		close2;
+		cutin "",255;
+	}
+	end;
+}
+
+moc_para01,38,175,5	script	Lime Eveno#evtat01	4_F_EDEN_OFFICER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	mes "[Secretary Lime Evenor]";
+	if (BaseLevel < 140) {
+		cutin "laime_evenor01.bmp",2;
+		mes "I also come up here sometimes to attend some business.";
+		mes "Actually the central room is mine.";
+		close3;
+	}
+	switch(VER_MAIN) {
+	case 0:
+		cutin "laime_evenor01.bmp",2;
+		mes "Welcome back,";
+		mes "" + strcharinfo(0) + ". I don't know how we can survive without you.";
+		next;
+		mes "[Secretary Lime Evenor]";
+		mes "Have you heard?";
+		mes "An ancient site was just discovered in Juperos.";
+		mes "Rekenber is recruiting adventurers for the excavation of the place,";
+		next;
+		mes "[Secretary Lime Evenor]";
+		mes "and we've decided to join it.";
+		mes "The Captain wants to see you about that.";
+		next;
+		select("I didn't know you had a captain.");
+		cutin "laime_evenor02.bmp",2;
+		mes "[Secretary Lime Eveno]";
+		mes "What, did you think I was running this gig alone?";
+		mes "The Mistre--I mean, the Captain is rarely excited about anything, and this is one of those rare occasions. You should meet her.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Secretary Lime Eveno]";
+		mes "Her office is to the far left on the second floor.";
+		VER_MAIN = 1;
+		setquest 7607;// Eden Group Leader
+		close3;
+	case 1:
+	case 2:
+		cutin "laime_evenor03.bmp",2;
+		mes "The Captain is waiting for you.";
+		mes "Her office is to the far left from here.";
+		mes "I'll see you again later.";
+		close3;
+	case 3:
+		cutin "laime_evenor03.bmp",2;
+		mes "It seems everything went smoothly with the Captain.";
+		mes "Let's move to the central room, shall we?";
+		mes "We have a guest waiting";
+		mes "to talk us about something.";
+		close3;
+	case 4:
+		cutin "laime_evenor01.bmp",2;
+		mes "I'll be here rooting for you.";
+		mes "Don't worry about support.";
+		mes "I'll see that you get everything you need.";
+		close3;
+	default:
+		cutin "laime_evenor01.bmp",2;
+		mes "The excavation seems to be going well so far.";
+		mes "The item Dr. Atnard was interested in is also on Rekenber's radar; it should be appraised highly.";
+		next;
+		mes "[Secretary Lime Evenor]";
+		mes "Thank you for helping the doctors focus on their work.";
+		mes "Keep up the good work.";
+		close3;
+	}
+
+OnInit:
+	questinfo 7607, QTYPE_QUEST, 1;
+	setquestinfo_level 7607,140,175;
+	end;
+}
+
+moc_para01,174,165,3	script	Lime Evenor#atnd02	4_F_EDEN_OFFICER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	mes "[Lime]";
+	switch(VER_MAIN) {
+	case 0:
+		cutin "laime_evenor01.bmp",2;
+		mes "This room is for employees only.";
+		mes "If you need a place to rest, please use the next room.";
+		break;
+	case 1:
+	case 2:
+		cutin "laime_evenor01.bmp",2;
+		mes "The Captain is in the next room.";
+		mes "It's to the left.";
+		mes "Please talk to the Captain first.";
+		break;
+	case 3:
+		cutin "laime_evenor01.bmp",2;
+		mes "" + strcharinfo(0) + ". Please come this way.";
+		mes "Let me introduce you to";
+		mes "Archaeologist Aures of the Atnad Excavation Team.";
+		next;
+		mes "[Lime]";
+		mes "Dr. Aures, this is " + strcharinfo(0) + ", who will assist you in Phantasmagorika.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Nice to meet you. My name is Aures.";
+		mes "Every member of my team is old and feeble. We really can use some young blood like you.";
+		mes "Welcome to the team.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Lime]";
+		mes "It seems everything went smoothly with the Captain.";
+		mes "Your job is simple:";
+		mes "just help Dr. Aures and his Atnad Excavation Team.";
+		next;
+		mes "[Lime]";
+		mes "I expect you'll spend most of your time running errands";
+		mes "and doing things that require physical stamina since all the members of the team are past their prime.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "That's right. All of us retired a long time ago.";
+		mes "This excavation will probably be the last excavation we do before we die.";
+		next;
+		mes "[Aures]";
+		mes "If Lime didn't help us, we would have changed our minds at the entrance to that place.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Lime]";
+		mes "Please don't say that.";
+		mes "You're the most experienced archaeologists I've met.";
+		mes "By the way, how's Dr. Atnad?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Arnard? Don't get me started.";
+		mes "He's as stubborn as his daughter, if not more.";
+		mes "She liquidated her inheritance and left when she couldn't hear from her father.";
+		next;
+		mes "[Aures]";
+		mes "He didn't keep touch with his family for years. When he found out his house was sold,";
+		mes "he lashed out and went off the grid,";
+		mes "and he's still angry at her.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Lime]";
+		mes "And we're stuck in the middle of their mind game.";
+		next;
+		switch( select( "Who are they?", "Cut to the chase, please." ) ) {
+		case 1:
+			cutin "verus_aures.bmp",0;
+			mes "[Aures]";
+			mes "Let me tell you. When Lime came to us,";
+			mes "we all wondered why a famous company like Eden Group would support a ragtag bunch of old men like us.";
+			mes "Then we found out they're father and daughter.";
+			next;
+			select("Father and daughter? Who?");
+			cutin "laime_evenor03.bmp",2;
+			mes "[Lime]";
+			mes "Oh, didn't the Captain tell you?";
+			mes "Her father is the leader of the Atnad Excavation Team.";
+			next;
+			mes "[Lime]";
+			mes "When I first suggested we should join the project,";
+			mes "she wanted to support the Arnard Excavation Team.";
+			mes "At first I was thinking more along the lines of merging the team.";
+			next;
+			mes "[Lime]";
+			mes "Rekenber takes care of the financial aspects of the project, while we handle the manpower.";
+			mes "Then I realized the leader of the team is the father of my boss's.";
+			next;
+			cutin "laime_evenor04.bmp",2;
+			mes "[Lime]";
+			mes "I want to support the team to the best of my ability,";
+			mes "but their rocky relationship is getting in the way.";
+			next;
+			cutin "verus_aures.bmp",0;
+			mes "[Aureth]";
+			mes "Ian, I mean the old Arnard, welcomed your proposal with open arms.";
+			mes "Then he hit the roof when he realized your captain was his daughter.";
+			next;
+			mes "[Aureth]";
+			mes "I don't understand the hangup.";
+			mes "I mean she's his daughter, for the goodness's sake.";
+			mes "I think you should mediate between the two.";
+			next;
+			cutin "laime_evenor01.bmp",2;
+			mes "[Lime]";
+			mes "I hope this collaboration will be a chance for them to reconcile with each other.";
+			mes "Well, we should move to the site now.";
+			break;
+		case 2:
+			cutin "laime_evenor03.bmp",2;
+			mes "[Lime]";
+			mes "Indeed. Before we go, let's talk about what we can expect at the site.";
+			break;
+		}
+		next;
+		cutin "laime_evenor03.bmp",2;
+		mes "[Lime]";
+		mes "Aures, Luke will come with you.";
+		mes "" + strcharinfo(0) + ", you can go to Phantasmagorika whenever you're ready.";
+		next;
+		mes "[Lime]";
+		mes "It's accessible through Juperos,";
+		mes "so move to Juno first, then get to the entrance to Juperos from there.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Rekenber has been promoting this project across the continent,";
+		mes "and has succeeded in bringing in more people than you can imagine.";
+		mes "Just look for a big crowd, and you won't miss the place. See you when you get there.";
+		next;
+		cutin "laime_evenor01.bmp",2;
+		mes "[Lime]";
+		mes "Everything should be easy enough for you,";
+		mes "though you'll have to register with Rekenber for the excavation.";
+		mes "You can register as an individual excavator, but I'd prefer if you do it as a member of the Arnard Excavation Team instead.";
+		next;
+		mes "[Lime]";
+		mes "Once your registration goes through, you can start working for the Arnard Excavation Team,";
+		mes "and everything else will take care of itself.";
+		mes "Thank you for doing this.";
+		erasequest 7608;// Artnard Excavation Team 1
+		setquest 7609;// Artnard Excavation Team 2
+		VER_MAIN = 4;
+		break;
+	case 4:
+		cutin "laime_evenor01.bmp",2;
+		mes "The excavation site is connected to Juperos,";
+		mes "so you should move to Juperos first.";
+		mes "The excavation project has been promoted widely, so you won't have a problem finding the representative.";
+		break;
+	default:
+		cutin "laime_evenor02.bmp", 2;
+		mes "How's the situation at the excavation site?";
+		mes "Sigh, why can't Ian just forgive his daughter?";
+		break;
+	}
+	close3;
+}
+
+moc_para01,172,164,5	script	Archaeologist Aureth#atnd02	4_M_OLDSCHOLAR,{
+	if (VER_MAIN < 4) {
+		cutin "laime_evenor01.bmp",2;
+		mes "[Lime]";
+		mes "I'm sorry, but he's our guest.";
+		mes "And this office is for Eden Group employees only.";
+		mes "The dormitory is the next room.";;
+	}
+	else if (VER_MAIN == 4) {
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "I'll see you again at the excavation site, yeah?";
+		mes "The Eden Group has hired an escort for me, so I'll be traveling with him.";
+		mes "See you at the site.";
+	}
+	else {
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Oh, you came.";
+		mes "I came here often.";
+		mes "I feel sorry for Luke, for he has to travel so often because of me.";
+		next;
+		mes "[Aures]";
+		mes "It's great to have a place where I can come anytime I want. It's been years since I had a place I could call home.";
+		mes "Hah hah hah!";
+		mes "I'll see you at the excavation site.";
+	}
+	close3;
+}
+
+moc_para01,178,167,3	script	Luke Lapez#atnd03	4_M_EDEN_GUARDER,{
+	mes "[Luke]";
+	if (VER_MAIN < 4) {
+		cutin "looke_rapez02.bmp",0;
+		mes "Hey, Lime.";
+		mes "We have a guest.";
+		mes "...";
+	}
+	else if (VER_MAIN == 4) {
+		cutin "looke_rapez02.bmp",0;
+		mes "...";
+		mes "I've got nothing to say to you.";
+	}
+	else {
+		cutin "looke_rapez03.bmp",0;
+		mes "Hmm...";
+	}
+	close3;
+}
+
+moc_para01,133,170,4	script	Commander Arquien#e152a1	4_F_EDEN_MASTER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- Cannot progress quest because you have too many items in your possession. -";
+		close;
+	}
+	switch(VER_MAIN) {
+	case 0:
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "[Commander Arquien]";
+		mes "Huh? I don't know who you are but don't come in here without asking.";
+		mes "I would like it if you left immediately.";
+		break;
+	case 1:
+	case 2:
+		if (VER_MAIN == 1) {
+			mes "[Commander Arquien]";
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "Oh, you're that famous " + strcharinfo(0) + "?";
+			mes "I should offer you some tea or something but I don't have any tea.";
+			mes "Sorry about that.";
+			next;
+			mes "[Commander Arquien]";
+			mes "I will introduce myself first. I am the founder of the Paradise Squad and its Commander Arquien Nile Atnad.";
+			mes "My name is complicated so you can just call me Nile.";
+			next;
+			switch( select( "What brings you to see me?", "Your middle name?" ) ) {
+			case 1:
+				cutin "Arquien_n_atnad03.bmp",2;
+				mes "[Nile]";
+				mes "Huh, right to the point?";
+				mes "I welcome it.";
+				mes "You know what is the biggest rumor going around town these days?";
+				break;
+			case 2:
+				mes "[Nile]";
+				mes "It's childhood name my mother gave me when I was young..";
+				mes "It feels better to hear than the name given to me by my damn father, okay?";
+				next;
+				mes "[Nile]";
+				mes "Instead of being entertained by other people's personal life, why don't you focus on something else?";
+				mes "They are talking about it a lot these days.";
+				break;
+			}
+			next;
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "[Nile]";
+			mes "Right. About the extended excavation of juperos.";
+			mes "They already excavated as much as they could..";
+			mes "Hasn't it been awhile since people have been turning it over claiming it as some kind of unknown mechanical civilization, a product of scientific power?";
+			next;
+			mes "[Nile]";
+			mes "So.. Why are they promoting and recruiting for the excavation now?";
+			mes "Didn't you see the recruitment notice posted on the squad office?";
+			next;
+			mes "[Nile]";
+			mes "First this is the information we have.";
+			mes "A new passage is discovered in the juperos area.";
+			mes "So we thought it was another area of juperos...";
+			next;
+			mes "[Nile]";
+			mes "Surprisingly the newly discovered area is connected to juperos but it is another site with a different form.";
+			mes "This excavation's goal is that newly discovered area.";
+			next;
+			cutin "Arquien_n_atnad04.bmp",2;
+			mes "[Nile]";
+			mes "What.. was.. the name. Ah.. I don't know.";
+			mes "It is commonly being referred to as the 'Fantasmagorica' plan.";
+			mes "Rekenber of Lighthalzen is the sponser of the excavation recruitment and support.";
+			next;
+			select("So?");
+			mes "[Nile]";
+			mes "Huh? Not that interesting?";
+			mes "Should I stop here?";
+			mes "I was prepared because Rahim recommended you.";
+			next;
+			if (select( "Please continue.", "Please stop." ) == 2) {
+				cutin "Arquien_n_atnad02.bmp",2;
+				mes "[Nile]";
+				mes "Well, I'm not interested in telling more to somebody who's not interested either.";
+				mes "You're not the only one registered with the Paradise Squad.";
+				next;
+				mes "[Nile]";
+				mes "I should ask Rahim to recommend me someone else.";
+				mes "I get it so go on along now.";
+				VER_MAIN = 2;
+				break;
+			}
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "[Nile]";
+			mes "Sure. We also wanted to participate in the Fantasmagorica.";
+		}
+		else {
+			cutin "Arquien_n_atnad02.bmp",2;
+			mes "[Nile]";
+			mes "... What, you're interested again now?";
+			next;
+			if (select("Yes","No.") == 2) {
+				cutin "Arquien_n_atnad01.bmp",2;
+				mes "[Nile]";
+				mes "As you wish.";
+				break;
+			}
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "[Nile]";
+			mes "Should I continue talking?";
+			mes "We also wanted to participate in the Fantasmagorica.";
+		}
+		mes "Of course under the name of Paradise Squad.";
+		next;
+		mes "[Nile]";
+		mes "Although we operated mostly as a broker between clients and implementers";
+		mes "we can't be stuck with Morroc forever.";
+		next;
+		mes "[Nile]";
+		mes "Rahim argued that we can advance further by using this as an opportunity.";
+		mes "Through this work we have during that time become acquainted and networked with many adventurers and strong warriors like you..";
+		next;
+		cutin "Arquien_n_atnad03.bmp",2;
+		mes "[Nile]";
+		mes "I'm saying we want to use your manpower. Aren't we pros at introducing human resources? Ahahahahaha~";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Truthfully the infamously haughty Rekenber requested us.";
+		mes "They are in need to a lot of manpower so they need us to broker.";
+		next;
+		mes "[Nile]";
+		mes "Not a bad proposition. Honestly it's a good opportunity.";
+		mes "We introduce people and get paid, you work and get paid.";
+		next;
+		select("Wanting to participate in Fantasmagorica?");
+		mes "[Nile]";
+		mes "It can be summarized as such.";
+		mes "Basically you're participating in the site excavation work but";
+		mes "you can help with a personal favor as well.";
+		next;
+		mes "[Nile]";
+		mes "If you participate in the excavation team can you confirm something for me?";
+		mes "You will hear more details from Rahim..";
+		next;
+		mes "[Nile]";
+		mes "I want one thing.";
+		mes "There are several excavation teams and organizations currently participating in the Fantasmagorica excavation.";
+		mes "I would like you to work in an excavation team Rahim introduces.";
+		next;
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "[Nile]";
+		mes "And, as your working with the excavation team ^4d4dffask about the Last Exploration.^000000";
+		mes "Rahim will give you the details.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "It's the next room so you can get the details there.";
+		mes "Also, if you find out anything let me know. You don't need to tell anybody else.";
+		mes "Come right back here. Got it?";
+		completequest 7607;// Eden Group Leader
+		setquest 7608;// Artnard Excavation Team 1
+		VER_MAIN = 3;
+		break;
+	case 3:
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Nile]";
+		mes "Rahim is waiting in the next room.";
+		mes "He is the one who started this work first so get the details from him.";
+		break;
+	case 4:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Hey, are you beginning in earnest now?";
+		mes "Then what are you doing here? Run off now!";
+		next;
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Nile]";
+		mes "Run off and look at that stuck-up doctor for me.";
+		mes "Ah....He's not starving and being weak is he? Huh?";
+		mes "Observe and tell me.";
+		next;
+		mes "[Nile]";
+		mes "Now-! Go now!";
+		break;
+	case 21:
+		cutin "Arquien_n_atnad03.bmp",2;
+		mes "[Nile]";
+		mes "Huh? What's going on?";
+		mes "If it's about reports, I am getting them through Looke.";
+		mes "I heard you are working pretty hard?";
+		next;
+		mes "[Nile]";
+		mes "Thanks to that your position with the Atnad excavator and Paradise Squad are getting better so it is great.";
+		mes "... It would better if it wasn't for my damn father.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Anyway, why did you come?";
+		mes "Did you find out about the Last Exploration?";
+		next;
+		mes "[Nile]";
+		mes "He told you to being something back?";
+		mes "What, is that?";
+		next;
+		input .@string$;
+		while(.@string$ != "Record Player") {
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "[Nile]";
+			mes "I am not sure what you're talking about but..";
+			mes "He told you to bring it back?";
+			mes "Why would I?";
+			next;
+			mes "[Nile]";
+			mes "Tell me exactly what it is you have to take back.";
+			next;
+			input .@string$;
+		}
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "[Nile]";
+		mes "Hum...Record Player?";
+		mes "He actually remembers there was something like that in the house?";
+		next;
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Nile]";
+		mes "I don't know how this will affect your position but...";
+		mes "I don't think so?";
+		mes "Reject!";
+		VER_MAIN = 22;
+		break;
+	case 22:
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "[Nile]";
+		mes "......";
+		next;
+		mes "[Nile]";
+		mes "......";
+		mes "........";
+		next;
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Nile]";
+		mes "Darn it.";
+		mes "Okay. I got it.";
+		mes "I have the record player.";
+		mes "Give me Memory Records if you have them!";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Hm.. is this it?";
+		mes "Looks like it will fit.";
+		mes "You mean this came out of that place?";
+		mes "But this might be a bit tough.";
+		next;
+		mes "[Nile]";
+		mes "My stupid father didn't care about the things in the house because he was too busy outside.";
+		mes "Can't he didn't notice something like this.";
+		next;
+		mes "[Nile]";
+		mes "Humph. Unfortunately I think somebody took this Memory Record apart on purpose.";
+		mes "It won't run with just one piece.";
+		mes "I need at least five.";
+		next;
+		mes "[Nile]";
+		mes "Hm..";
+		mes "Okay. Then let's do this.";
+		mes "I will go to the excavation site with the record player.";
+		next;
+		mes "[Nile]";
+		mes "You collect the remaining Memory Records during that time.";
+		mes "Somebody probably did it on purpose so pieces will be scattered around.";
+		next;
+		mes "[Nile]";
+		mes "You understood, what I said?";
+		mes "Then let's see each other in Verus.";
+		erasequest 7644;// Record Player
+		setquest 7645;// Piece of Memory Record
+		VER_MAIN = 23;
+		break;
+	case 23:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Collect ^4d4dff5 things like memory records^000000.";
+		mes "They will be hidden in places around Verus somewhere, so good luck.";
+		next;
+		mes "[Nile]";
+		mes "..You.. Me going to the excavation site..";
+		mes "Keep it a secret from my father..";
+		mes "..Hm..";
+		mes "Well, no special reason to keep it a secret.";
+		mes "Do as you wish.";
+		break;
+	default:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		if (VER_MAIN < 21) {
+			mes "How is work on the excavation team?";
+			mes "..Rahim is doing well right?";
+			next;
+			cutin "Arquien_n_atnad02.bmp",2;
+			mes "[Nile]";
+			mes "... The old man. He's doing well? What? Is he? Maybe it's funny and childish to be like this at this point.";
+			mes "Darn! I don't know. Get out!";
+		}
+		else {
+			mes "I'm not going there myself because of curiosity.";
+			mes "I am a busy person myself.";
+		}
+		break;
+	}
+	close3;
+}
+
+ver_eju,114,40,4	script	Manager Michelle#atnd05	4_M_LGTGUARD,{
+	mes "[Manager Michelle]";
+	if (VER_MAIN < 4) {
+		mes "Wait. Which excavation team are you from?";
+		mes "...You're independent.";
+		mes "Did you register independently? Do you have a referral?";
+		next;
+		mes "[Manager Michelle]";
+		mes "I didn't think so.";
+		mes "I'm sorry, but you have to have a referral or belong to an excavation team.";
+		mes "All sorts of people came looking for a job at the excavation site.";
+		next;
+		mes "[Manager Michelle]";
+		mes "Oh, yes. The ^4d4dffEden Group^000000 is the easiest place to get a referral.";
+		mes "If you're qualified, then the Group will recommend you to us for the excavation project.";
+		next;
+		mes "[Manager Michelle]";
+		mes "Now, please step back for your safety.";
+		close;
+	}
+	if (VER_MAIN == 4) {
+		if (checkquest(7611,HUNTING) == -1) {
+			mes "Wait.";
+			mes "Are you a participant of the Phantasmagorika excavation project?";
+			next;
+			select("Yes.");
+			mes "[Manager Michelle]";
+			mes "Let me check the roster.";
+			mes "Your name is... " + strcharinfo(0) + ". Ah, there you are.";
+			mes "You're from the Eden Group, all right.";
+			next;
+			mes "[Manager Michelle]";
+			mes "The excavation site is at the other end of this tunnel.";
+			mes "Once you're in, you're required to formally register yourself at the Central Command Center.";
+			next;
+			mes "[Manager Michelle]";
+			mes "Oh, and do me a favor.";
+			mes "Monsters from Juperos Ruins have migrated into the tunnel,";
+			mes "and they're getting out of hand.";
+			next;
+			mes "[Manager Michelle]";
+			mes "Could you help us take care of them? Including the ones around here.";
+			mes "I'll write a letter of recommendation for you, so you can claim your rewards at the Central Command Center.";
+			setquest 7611;// Passage Cleaning
+			close;
+		}
+		mes "Just clear the tunnel of monsters,";
+		mes "and report to the Central Command Center.";
+		mes "Thank you for your help.";
+		close;
+	}
+	switch( checkquest(7612,PLAYTIME) ) {
+	case -1:
+		switch( checkquest(7611,HUNTING) ) {
+		case -1:
+			mes "Can you help me again?";
+			mes "You know, exterminate monsters in the tunnel and around this area.";
+			mes "This time, you can just report back to me instead of making a trip to the Central Command Center.";
+			mes "Thank you for your help.";
+			setquest 7611;// Passage Cleaning
+			close;
+		case 0:
+		case 1:
+			mes "Just get rid of some in the tunnel and around here.";
+			mes "I'm glad you like the job.";
+			next;
+			mes "[Manager Michelle]";
+			mes "When you're done, you can report back to me,";
+			mes "or go to Louis at the Central Command Center.";
+			mes "Thank you for your help.";
+			close;
+		case 2:
+			mes "Oh, good job wiping out monsters.";
+			mes "Our soldiers will be grateful for your help.";
+			mes "Please take this small token of appreciation.";
+			mes "I hope it'll be useful for you.";
+			erasequest 7611;// Passage Cleaning
+			setquest 7612;// Passage Cleaning - Down
+			getexp 1500000,1000000;
+			close;
+		}
+	case 0:
+	case 1:
+		mes "Thank you for clearing the tunnel of monsters.";
+		mes "I'll appreciate it if you can keep doing it.";
+		close;
+	case 2:
+		mes "Are you looking for a new job?";
+		mes "If you prefer physical labor,";
+		mes "you can always exterminate monsters for me.";
+		close;
+	}
+
+OnInit:
+	questinfo 7611,QTYPE_QUEST,1;
+	setquestinfo_req 7611,7612,0;
+	// questinfo 7612,QTYPE_QUEST,1;
+	// setquestinfo_req 7612,7611,2;// todo : display when HUNTING completed
+	end;
+}
+
+verus04,182,168,5	script	Receptionist Nara#atnd06	4_F_HUWOMAN,{
+	mes "[Nara]";
+	if (VER_MAIN < 4) {
+		mes "Hello.";
+		mes "Thank you for using the Phantasmagorika excavation reception desk.";
+		mes "Do you have a referral? Or are you a member of an excavation team?";
+		next;
+		mes "[Nara]";
+		mes "Oh, neither.";
+		mes "I'm sorry, but I can't let you register.";
+		mes "We do need excavators, but we have standards.";
+		next;
+		switch( select( "I want to register now.", "I'll come back later." ) ) {
+		case 1:
+			mes "[Nara]";
+			mes "Come back with an official excavation team, or bring a referral.";
+			close;
+		case 2:
+			mes "[Nara]";
+			mes "Hm...";
+			mes "I'm sorry, but my hands are tied.";
+			mes "This place is too dangerous for you at this moment.";
+			next;
+			mes "[Nara]";
+			mes "Please come back when you become more experienced.";
+			mes "You must be at least Level 140 to register with us.";
+			mes "This is necessary, or we'll just have a ragtag bunch of novices for the excavators.";
+			mes "Sorry.";
+			close;
+		}
+	}
+	if (VER_MAIN == 4) {
+		mes "Hello.";
+		mes "Thank you for using the Phantasmagorika excavation reception desk.";
+		mes "Do you have a referral? Or are you a member of an excavation team?";
+		next;
+		select("I'm from the Eden Group.");
+		mes "[Nara]";
+		mes "From the Eden Group, got it.";
+		mes "May I have your name? " + strcharinfo(0) + "...";
+		mes "Ah, there you are.";
+		next;
+		mes "[Nara]";
+		mes "You're a member of a separate excavation team.";
+		mes "Which excavation team do you belong?";
+		next;
+		input .@string$;
+		mes "[Nara]";
+		if (.@string$ != "Atnad") {
+			mes "..." + .@string$ + "...?";
+			mes "Are you sure that's correct?";
+			mes "Because I can't find that name on the list.";
+			next;
+			mes "[Nara]";
+			mes "Please check again.";
+			close;
+		}
+		mes "Atnad... Atnad...";
+		mes "Oh, I've found it.";
+		mes "With you " + strcharinfo(0) + ", the team barely passed the minimum member requirement.";
+		mes "Oh, we don't discriminate against small groups. Don't worry.";
+		next;
+		mes "[Nara]";
+		mes "While following the command of your excavation team leader,";
+		mes "you can also take on tasks available at the Central Command Center.";
+		next;
+		mes "[Nara]";
+		mes "We'll inform you in case of special events.";
+		mes "If you're wounded or exhausted, you can always use healers on standby at the Command Center.";
+		next;
+		mes "[Nara]";
+		mes "Rekenber provides you with everything you need while working at the excavation site.";
+		mes "In return, we expect you to focus on uncovering secrets buried within Phantasmagorika.";
+		mes "Good luck with your excavation.";
+		erasequest 7609;// Artnard Excavation Team 2
+		setquest 7610;// Registered Excavator
+		completequest 7610;// Registered Excavator
+		VER_MAIN = 5;
+		getexp 300000,300000;
+		close;
+	}
+	if (VER_MAIN == 5) {
+		mes "Now you have unlimited access to this area.";
+		mes "Feel free to let us know if you experience problems excavating or exploring.";
+		next;
+		mes "[Nara]";
+		mes "Your registration has been processed. If you need help or instructions, please talk to Commander Louis.";
+		mes "He'll also have some monster subjugation tasks available for you.";
+		next;
+		mes "[Nara]";
+		mes "Good luck!";
+		close;
+	}
+	mes "How are you today?";
+	mes "Keep up the good work.";
+	close;
+
+OnInit:
+	questinfo 7610, QTYPE_QUEST, 1;
+	setquestinfo_level 7610,140,175;
+	end;
+}
+
+verus04,179,165,5	script	Commander Louis#atnd07	4_M_LGTGUARD,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	mes "[Louis]";
+	if (VER_MAIN < 5) {
+		mes "Register yourself as an official excavator, or you'll be escorted off the premises.";
+		mes "You can register at the Reception Desk.";
+		close;
+	}
+	mes "You're in the Arnard Excavation Team.";
+	mes "How may I help you?";
+	next;
+	switch( select( "Report excavation results.", "About cleaning the tunnel.", "About monster subjugation.", "Nothing." ) ) {
+	case 1:
+		mes "[Louis]";
+		if (VER_MAIN == 12) {
+			mes "Ah, the excavation results of your team.";
+			mes "I can see your team has been focusing on the Core.";
+			next;
+			mes "[Louis]";
+			mes "The Chairman has taken a special interest in your team.";
+			mes "Keep up the good work, and you'll hear from him.";
+			next;
+			mes "[Louis]";
+			mes "Thank you for your hard work today.";
+			mes "See you tomorrow.";
+			next;
+			mes "[Louis]";
+			mes "Oh, wait.";
+			mes "Your team is on the radio.";
+			mes "Let me put you on the line.";
+			next;
+			mes "[Ian Atnad's Voice]";
+			mes "*Crackle* Hey... *Crackle* rookie...";
+			mes "*Crackle* What's wrong... with this...";
+			mes "*Crackle* I can't hear...";
+			mes "Rookie... *Crackle* Get your butt over here... *Crackle*";
+			mes "Hmpf! *Beep*";
+			next;
+			mes "[Louis]";
+			mes "I'm sorry, the signals aren't usually so bad.";
+			mes "I guess the doctor is looking for you.";
+			mes "You should go.";
+			delitem 6748,1;// Daily_Report_He_And_His_Team
+			erasequest 7617;// Turning In Excavation Report
+			setquest 7623;// Artnard's Summon
+			VER_MAIN = 13;
+			getexp 300000,300000;
+		}
+		else if (VER_MAIN == 13) {
+			mes "It was a brief investigation, yet your team has accomplished so much.";
+			next;
+			mes "[Louis]";
+			mes "While other scholars and excavators were only able to make superficial observations,";
+			mes "your team made some technical discoveries.";
+			next;
+			mes "[Louis]";
+			mes "I'll report this to the Chairman, and see that your team will receive special benefits.";
+			mes "I'll look forward to your next report.";
+		}
+		else if (VER_MAIN == 33) {
+			mes "Ah, the excavation results of your team.";
+			mes "I can see your team has been focusing on the Core.";
+			next;
+			mes "[Louis]";
+			mes "The Chairman has taken a special interest in your team.";
+			mes "Keep up the good work, and you'll hear from him.";
+			next;
+			mes "[Louis]";
+			mes "Thank you for your hard work today.";
+			mes "See you tomorrow.";
+			delitem 6748,1;// Daily_Report_He_And_His_Team
+			erasequest 7617;// Turning In Excavation Report
+			setquest 7618;// Reporting the Results - Down
+			getexp 300000,300000;
+			VER_MAIN = 34;
+		}
+		else if (VER_MAIN == 34) {
+			mes "The upper management is interested in";
+			mes "hearing more about your findings.";
+			mes "I hope you'll continue to surprise us.";
+		}
+		else {
+			mes "Are you here to report your daily results?";
+			mes "Please bring me a report with your leader's signature on it.";
+			next;
+			mes "[Louis]";
+			mes "It's always safe to leave a record.";
+			mes "Bring your report as soon as it's ready.";
+			mes "It always excites me to read your report.";
+		}
+		close;
+	case 2:
+		mes "[Louis]";
+		switch( checkquest(7612,PLAYTIME) ) {
+		case -1:
+			switch( checkquest(7611,HUNTING) ) {
+			case -1:
+				mes "Ah, you came at the right time.";
+				mes "Monsters are growing more numerous in the tunnel and the ruins.";
+				mes "The mercenaries have requested reinforcements.";
+				next;
+				if (select( "I'll go.", "Decline." ) == 2) {
+					mes "[Louis]";
+					mes "Of course, your priority is the excavation.";
+					mes "I'll look for someone else.";
+					close;
+				}
+				mes "[Louis]";
+				mes "Good.";
+				mes "Thank you in advance.";
+				mes "When you're done, you can report the results to Manager Michell in the eastern ruins.";
+				mes "Happy hunting.";
+				setquest 7611;// Passage Cleaning
+				close;
+			case 0:
+			case 1:
+				mes "Thank you.";
+				mes "Move through the tunnel and get rid of monsters in there.";
+				mes "When you're done, please report the results to Manager Michell in the eastern ruins.";
+				close;
+			case 2:
+				mes "Did you take care of monsters in the tunnel and the ruins?";
+				mes "Our mercenaries will be happy.";
+				mes "They've been demanding reinforcements for a while now. Hah hah!";
+				next;
+				mes "[Louis]";
+				mes "Thank you for your hard work.";
+				mes "Please go rest, so that you can get back on the excavation task.";
+				erasequest 7611;// Passage Cleaning
+				setquest 7612;// Passage Cleaning - Down
+				getexp 1500000,1000000;
+				close;
+			}
+		case 0:
+		case 1:
+			mes "Our mercenaries can take care of monsters in the tunnel and the ruins.";
+			mes "But thank you for your concern for the safety of the site.";
+			close;
+		case 2:
+			erasequest 7612;// Passage Cleaning - Down
+			mes "Are you concerned about monsters in the tunnel and the ruins?";
+			mes "If you're fully rested, then I can put you on the subjugation task.";
+			next;
+			mes "[Louis]";
+			mes "If you're planning to go outside, you might as well take the task, killing two birds with one stone.";
+			mes "And you can report the results to Manager Michell in the eastern ruins.";
+			close;
+		}
+	case 3:
+		mes "[Louis]";
+		switch( checkquest(7614,PLAYTIME) ) {
+		case -1:
+			switch( checkquest(7613,HUNTING) ) {
+			case -1:
+				mes "Ah, you came at the right time.";
+				mes "Threatening machines have appeared at the Plaza.";
+				mes "The workers have requested a combat unit.";
+				next;
+				if (select( "I'll go.", "Decline." ) == 2) {
+					mes "[Louis]";
+					mes "Of course, your priority is the excavation.";
+					mes "I'll look for someone else.";
+					close;
+				}
+				mes "[Louis]";
+				mes "Good.";
+				mes "Thank you in advance.";
+				mes "Please be careful!";
+				setquest 7613;// Eliminating Risks
+				close;
+			case 0:
+			case 1:
+				mes "Thank you.";
+				mes "The Plaza is where most of the excavation work is being done.";
+				mes "It'll be great if you can find something from machines you destroy.";
+				close;
+			case 2:
+				mes "Things seems to have settled.";
+				mes "The workers will resume their work soon.";
+				mes "They're not fighters, so they're usually passive in times like this.";
+				next;
+				mes "[Louis]";
+				mes "Thank you for your hard work.";
+				mes "Our workers will be grateful to you for keeping them safe.";
+				erasequest 7613;// Eliminating Risks
+				setquest 7614;// Eliminating Risks - Down
+				getexp 1500000,1000000;
+				close;
+			}
+		case 0:
+		case 1:
+			mes "I have other volunteers to take care of monsters at the Plaza, the main excavation point.";
+			mes "You should rest.";
+			close;
+		case 2:
+			erasequest 7614;// Eliminating Risks - Down
+			mes "Are you concerned about the machines at the main excavation point?";
+			mes "It's true that some of them are hypersensitive and aggressive,";
+			mes "and I agree they are threatening to our work.";
+			next;
+			mes "[Louis]";
+			mes "If you can take care of them, then I can officially put you on the task,";
+			mes "so you'll be rewarded accordingly. Rekenber never takes your service for granted.";
+			close;
+		}
+	case 4:
+		mes "[Louis]";
+		mes "Is that so?";
+		mes "Let me know if you notice anything peculiar.";
+		close;
+	}
+
+OnInit:
+	questinfo 7611,QTYPE_QUEST,1;
+	setquestinfo_req 7611,7612,0;
+	// questinfo 7612,QTYPE_QUEST,1;
+	// setquestinfo_req 7612,7611,2;// todo : display when HUNTING completed
+
+	questinfo 7613,QTYPE_QUEST,1;
+	setquestinfo_req 7613,7614,0;
+	// questinfo 7614,QTYPE_QUEST,1;
+	// setquestinfo_req 7614,7613,2;// todo : display when HUNTING completed
+	end;
+}
+
+verus04,176,161,5	script	Healer Miyo#atnd08	4_F_ACOLYTE,{
+	mes "[Miyo]";
+	mes "Please come in.";
+	mes "Where do you hurt?";
+	next;
+	.@s = select( "HP/SP full recovery 5,000 z", "HP/SP half recovery 2,000 z" );
+	if (VER_MAIN > 4)
+		setarray .@cost[1],4500,1800;
+	else
+		setarray .@cost[1],5000,2000;
+	Zeny = Zeny - .@cost[.@s];
+	percentheal (100 / .@s), (100 / .@s);
+	mes "[Miyo]";
+	mes "Oh, you're exhausted.";
+	mes "Let me restore " + ( .@s == 1 ? "your full" : "some of your" ) + " energy.";
+	mes "I'm offering a 10% discount to the official excavators.";
+	mes "Smile, and you'll feel better.";
+	close;
+}
+
+verus04,172,149,3	script	Commander Arquien#e152v0	4_F_EDEN_MASTER,{
+	mes "[Nile]";
+	if (VER_MAIN < 23) {
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "I just.. Don't want to let it be known I am there..";
+		mes "If you have business, let's meet officially in the Squad office.";
+		close3;
+	}
+	switch(VER_MAIN) {
+	case 23:
+		if (countitem(6757) < 5) {// The_Memory_Recorder
+			cutin "Arquien_n_atnad04.bmp",2;
+			mes "Do you not remember what I told you at the office?";
+			mes "I said if you want to play it, you need at least five.";
+			next;
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "[Nile]";
+			mes "The other pieces should be at the place you first found the 'Memory Record.'";
+			mes "So go there and thoroughly search the area.";
+		}
+		else {
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "Did you bring it?";
+			mes "Good. Put them together like this...";
+			mes "Put it here...";
+			next;
+			mes "[Nile]";
+			mes "Alright, all ready.";
+			mes "You push the play switch youself.";
+			delitem 6757,5;// The_Memory_Recorder
+			erasequest 7645;// Piece of Memory Record
+			setquest 7646;// Play Memory Record
+			VER_MAIN = 24;
+			emotion ET_SURPRISE, getnpcid(0,"Record player#e152a01");
+		}
+		break;
+	case 24:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "It's the table right here.";
+		mes "I set it up so you can operate it.";
+		mes "You just have to play it.";
+		break;
+	case 25:
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "...The content is not a big deal.";
+		mes "Why.. is the name Atnad mentioned?";
+		mes "Does the old man know too?";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "No, no. He probably doesn't know.";
+		mes "Still feels like there is something to this.";
+		mes "..Ah thinking like this isn't my thing.";
+		next;
+		mes "[Nile]";
+		mes "You go and tell him about the content.";
+		mes "And this Memory Record.. Oh..?";
+		specialeffect EF_SPELLBREAKER,AREA,"Record player#e152a01";
+		next;
+		select("What just happened..");
+		mes "[Nile]";
+		mes "What is this..? Is it static?";
+		mes "The content won't be erased, right?";
+		mes "What do you call this type. Was it physical record.";
+		mes "I am not sure but the content itself should be fine.";
+		mes "It would be problematic if this much disappears.";
+		next;
+		mes "[Nile]";
+		mes "Recite the general idea to the old man, and ask him why the name Atnad is mentioned.";
+		erasequest 7646;// Play Memory Record
+		setquest 7647;// Report Memory Record
+		VER_MAIN = 26;
+		getexp 750000,500000;
+		break;
+	case 26:
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "You remember the gist right?";
+		mes "Just go and report it.";
+		mes "Tell him I will collect the items myself.";
+		mes "He will probably have no problem.";
+		mes "Since the old man is soooooo superior.";
+		break;
+	case 27:
+		if (countitem(6824) < 5) {// // Experimental_Dong_Memory_Record
+			cutin "Arquien_n_atnad04.bmp",2;
+			mes "Ha. That old man..";
+			mes "He will never come here himself, will he?";
+			mes "So this time it's the laboratories Memory Records?";
+			next;
+			cutin "Arquien_n_atnad03.bmp",2;
+			mes "[Nile]";
+			mes "I can press the record player switch for you.";
+			mes "Am I not generous?";
+			next;
+			mes "[Nile]";
+			mes "Bring back the Memory Records of the laboratories you want to play.";
+			mes "You know 5 have to be collected, right?";
+		}
+		else {
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "So it's these things.";
+			mes "Okay.";
+			mes "I don't feel that great but work is work.";
+			next;
+			mes "[Nile]";
+			mes "It's done.";
+			mes "You'll get what you want just by playing it.";
+			mes "Record the message properly and pass it along to the doctor. Got it?";
+			delitem 6824,5;// Experimental_Dong_Memory_Record
+			VER_MAIN = 28;
+		}
+		break;
+	case 28:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "The record player is next to me.";
+		mes "Listen to it yourself, record the messages yourself.";
+		break;
+	case 29:
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "So that crunching noise, wasn't static but the sound of the connecting part cracking?";
+		mes "You can play it if you connect them into 5 again, the content will be preserved...";
+		mes "Anyway...";
+		next;
+		mes "[Nile]";
+		mes "..The content this time again is peculiar.";
+		mes "The experimental work, is it talking about the experiment that turned this place like this?";
+		mes "I mean the laboratories Memory Records.";
+		next;
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Nile]";
+		mes "It may perhaps play a big role in revealing the secrets of this area?";
+		mes "Although some of these findings are repeating the same content.";
+		next;
+		select("Show piece.");
+		cutin "Arquien_n_atnad02.bmp",2;
+		mes "[Nile]";
+		mes "Ho..this is interesting.";
+		mes "Was there an empty space in the middle of the record?";
+		mes "This part was breaking.";
+		mes "I feel a great evil design from this piece.";
+		mes "Make sure to handle this carefully.";
+		mes "You don't know what can happen.";
+		next;
+		cutin "Arquien_n_atnad03.bmp",2;
+		mes "[Nile]";
+		mes "Talking about these Memory Records.";
+		mes "It is interesting to listen to.";
+		mes "I'm going to participate so bring the Memory Records to me next time.";
+		next;
+		mes "[Nile]";
+		mes "You understand what I am saying?";
+		mes "Then, go to the old man and report this news.";
+		erasequest 7648;// Memory Records of the Laboratories
+		setquest 7649;// Report Memory Record Content
+		VER_MAIN = 30;
+		getexp 750000,500000;
+		next;
+		mes "^4d4dffYou can now receive daily quests for collecting Memory Records through Arquien Nile Atnad.^000000";
+		break;
+	default:
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "What's going on?";
+		next;
+		switch( select( "Research facilities Memory Records", "Laboratories Memory Records", "Converse", "I just stopped by." ) ) {
+		case 1:
+			mes "[Nile]";
+			switch( checkquest(7651,PLAYTIME) ) {
+			case -1:
+				if (isbegin_quest(7650) > 0) {
+					if (countitem(6757) < 5) {
+						mes "5 Research facilities Memory Records.";
+						mes "I'm looking forward to hear about my ancestors again.";
+						close3;
+					}
+					mes "You obtained all the Memory Records.";
+					mes "I wonder how many Memory Records are out there with this content?";
+					next;
+					mes "[Nile]";
+					mes "I guess we have no choice to gather as much information as possible?";
+					mes "Preparations for playing the record is finished.";
+					mes "Just have to play it now.";
+					delitem 6757,5;// The_Memory_Recorder
+					if (isbegin_quest(7654) == 0)
+						setquest 7654;// Play Research facilities Memory Records
+					close3;
+				}
+				mes "Are you here to collect Research facilities Memory Records?";
+				mes "Let's do what we have been doing.";
+				mes "Collecting 5 Research facilities Memory Records.";
+				next;
+				mes "[Nile]";
+				mes "In the meantime I will be preparing the record player to play it right away.";
+				mes "I wonder what the content will be this time.";
+				next;
+				if (select( "Accept.","Reject." ) == 2) {
+					mes "[Nile]";
+					mes "Well, what can I do.";
+					mes "You are probably busy too from everybody you have to answer to.";
+					mes "Then see you later.";
+					close3;
+				}
+				mes "[Nile]";
+				mes "I knew you'd say that.";
+				mes "You're curious about the content too, right?";
+				mes "I will be looking forward to it as well.";
+				setquest 7650;// Collect Memory Records of Research facilities
+				close3;
+			case 0:
+			case 1:
+				mes "As for collecting the Research Facilities Memory Records, we decided to do it only once a day, right?";
+				mes "Should we drive the old man into anxiety by working slowly and roughly?";
+				next;
+				mes "[Nile]";
+				mes "So, come back if the time I suggested is passed.";
+				mes "And you will be tired as well.";
+				mes "I am not the type to shove people around.";
+				close3;
+			case 2:
+				erasequest 7651;// One Memory a Day
+				mes "Hm.. Should we start to gather Memory Records again?";
+				mes "Let me know if you want to.";
+				mes "I will be tuning the record player in the meanwhile.";
+				close3;
+			}
+		case 2:
+			mes "[Nile]";
+			switch( checkquest(7653,PLAYTIME) ) {
+			case -1:
+				if (isbegin_quest(7652) > 0) {
+					if (countitem(6824) < 5) {
+						mes "5 laboratories area's Memory Records.";
+						mes "I wonder what that Dorothy lady will talk about this time.";
+						close3;
+					}
+					mes "I see you have obtained all the laboratories Memory Records.";
+					mes "I wonder how many Memory Records are out there with this content?";
+					next;
+					mes "[Nile]";
+					mes "I guess we have no choice to gather as much information as possible?";
+					mes "Preparations for playing the record is finished.";
+					mes "Just have to play it now.";
+					delitem 6824,5;// Experimental_Dong_Memory_Record
+					if (isbegin_quest(7655) == 0)
+						setquest 7655;// Play Laboratories Memory Records
+					close3;
+				}
+				mes "Are you here to collect Research facilities Memory Records?";
+				mes "Let's do what we have been doing.";
+				mes "I mean ^4d4dffcollecting 5 laboratories Memory Records in the underground facility of laboratories^000000.";
+				next;
+				mes "[Nile]";
+				mes "In the meantime I will be preparing the record player to play it right away.";
+				mes "I wonder what the content will be this time.";
+				next;
+				if (select( "Accept.", "Reject." ) == 2) {
+					mes "[Nile]";
+					mes "Well, what can I do.";
+					mes "You are probably busy too from everybody you have to answer to.";
+					mes "Then see you later.";
+					close3;
+				}
+				mes "[Nile]";
+				mes "I knew you'd say that.";
+				mes "You're curious about the content too, right?";
+				mes "I will be looking forward to it as well.";
+				setquest 7652;// Collect Memory Records of Laboratories
+				close3;
+			case 0:
+			case 1:
+				cutin "Arquien_n_atnad01.bmp",2;
+				mes "As for collecting the laboratories Memory Records, we decided to do it only once a day, right?";
+				mes "Should we drive the old man into anxiety by working slowly and roughly?";
+				next;
+				mes "[Nile]";
+				mes "So, come back if the time I suggested is passed.";
+				mes "And you will be tired as well.";
+				mes "I am not the type to shove people around.";
+				close3;
+			case 2:
+				erasequest 7653;// One Memory a Day 2
+				mes "Hm.. Should we start to gather Memory Records again?";
+				mes "Let me know if you want to.";
+				mes "I will be tuning the record player in the meanwhile.";
+				close3;
+			}
+		case 3:
+			mes "[Nile]";
+			if (VER_MAIN >= 37) {
+				cutin "Arquien_n_atnad02.bmp",2;
+				mes "The truth is I didn't really have hard feelings forward my father.";
+				mes "I just wanted to hear one apology...";
+				close3;
+			}
+			if (VER_MAIN == 36) {
+				mes "Wait, something is going on?";
+				mes "That tent there is where the excavation team is, right?";
+				mes "It seems someone is visiting?";
+				mes "Go along now!";
+				cutin "",255;
+				close;
+			}
+			mes "What do you want to say?";
+			next;
+			select("About the Last Exploration");
+			mes "[Nile]";
+			mes "Ah, that..?";
+			mes "Forget about that.";
+			mes "Now that I think about it I need to hear it from him directly.";
+			next;
+			mes "[Nile]";
+			mes "According to Aures he blindly clung onto juperos..";
+			mes "I think I might know why he did that now.";
+			next;
+			select("Perhaps for the contents in the Memory Records?");
+			mes "[Nile]";
+			mes "That's right.";
+			mes "The old man. My father probably vaguely knows as well.";
+			mes "He's looking for his roots.";
+			mes "Although it is my childhood memories, the grandfathers had a lot of secrets.";
+			next;
+			cutin "Arquien_n_atnad03.bmp",2;
+			mes "[Nile]";
+			mes "Even so... haha. Can I really be a descendant of this area of Verus?";
+			mes "It's probably just the same name. Hahaha...";
+			close3;
+		case 4:
+			mes "[Nile]";
+			cutin "Arquien_n_atnad01.bmp",2;
+			mes "Hey. I don't have that much time to spare okay?";
+			close3;
+		}
+	}
+}
+
+// Note : 2 players can use the npc at the same time
+verus04,170,150,3	script	Record player#e152a01	CLEAR_NPC,{
+	if (VER_MAIN == 24) {
+		mes "Playing audible information of the Memory Record.";
+		sleep2 1000;
+		npctalk "Whirr------ Zizip---";
+		sleep2 3000;
+		npctalk "Zizip-- Hey! What are you doing? Hey, are you listening?";
+		sleep2 3000;
+		npctalk "I'm listening. Zerter. .. Ah! You. Your voice got in this!";
+		sleep2 3000;
+		npctalk "What? You were recording? For what?";
+		sleep2 3000;
+		npctalk "For.. Zizizip--- Installing. Ah.. It's going to -zizizip.";
+		sleep2 3000;
+		npctalk "Hahahahaha that's what you are thinking? No one is like you Atnad. Aren't you --zizzip.";
+		sleep2 1000;
+		npctalk "..Atnad?";
+		sleep2 3000;
+		npctalk "Zizizip-- zizip..It's going to..criing---.. Bzz----";
+		sleep2 3000;
+		next;
+		VER_MAIN = 25;
+		mes "All audible information in the Memory Record has been played.";
+		close;
+	}
+	if (VER_MAIN == 28) {
+		mes "Playing audible information of the Memory Record.";
+		sleep2 1000;
+		npctalk "I am Dorothy Florence. I picked up a Memory Record in the Monitoring room today.";
+		sleep2 4000;
+		npctalk "It could be a black box recorded on the day of the experiment. I will play it!";
+		sleep2 4000;
+		npctalk "Zizip-- Ah.. static noise first... Ah. There it is.";
+		sleep2 4000;
+		npctalk "Goodluck..";
+		sleep2 4000;
+		npctalk "(Female Voice) Ha.. I regret never having dated.";
+		sleep2 4000;
+		npctalk "(Another Female Voice) Ah...... I should be seeing this while having chicken and beer.... zizizip--";
+		sleep2 4000;
+		npctalk "Huh? Is this all? But this voice. Ahhhhhh Artemia who checked her laundry!";
+		sleep2 4000;
+		npctalk "..Hum.. I see. That day. This is what happened.....";
+		sleep2 4000;
+		npctalk "Click";
+		sleep2 3000;
+		next;
+		mes "All audible information in the Memory Record has been played.";
+		getitem 22691,1;// Record_Fragment1
+		setquest 7653;// One Memory a Day 2
+		VER_MAIN = 29;
+		next;
+		mes "As you try to eject the Memory Record, the connecting part breaks with a cracking sound and returns to it's disassembled form.";
+		close;
+	}
+	.@quest_7654 = isbegin_quest(7654);// Play Research facilities Memory Records
+	.@quest_7655 = isbegin_quest(7655);// Play Laboratories Memory Records
+
+	if (.@quest_7654 > 0 || .@quest_7655 > 0) {
+		mes "Playing audible information of the Memory Record.";
+		sleep2 1000;
+		if (.@quest_7654 > 0) {
+			switch( rand(1,13) ) {// inaccurate (maybe more texts)
+			case 1:
+				npctalk "printf(Hello, World!)";
+				sleep2 4000;
+				npctalk "return 0";
+				sleep2 4000;
+				npctalk "Finished coding up to this point and shot 10 arrows.";
+				sleep2 4000;
+				npctalk "Ferdinando";
+				break;
+			case 2:
+				npctalk "Hello, Tatio";
+				sleep2 4000;
+				npctalk "I don't know how many years it has been.";
+				sleep2 4000;
+				npctalk "I guess I did a good thing by giving you eternal life.";
+				sleep2 4000;
+				npctalk "I guess you know the results of the outside exploration team? I am going to live outside.";
+				sleep2 4000;
+				npctalk "In this land where scientific civilization is a myth, I am going to live like primal man.";
+				sleep2 4000;
+				npctalk "Should I quit science and learn this thing called magic? Hahahahaha";
+				sleep2 4000;
+				npctalk "Smack! Stop saying stupid stuff!";
+				sleep2 4000;
+				npctalk "Ah.. Got hit again. My..zizizip.. hurts... zizizip";
+				break;
+			case 3:
+				npctalk "Hello, Tatio. Can you collect these and pick them up?";
+				sleep2 4000;
+				npctalk "I am playing around for you left alone in the city.";
+				sleep2 4000;
+				npctalk "Sorry for dumping all our hope and despair on you.";
+				sleep2 4000;
+				npctalk "How long do you have to stay in this grave of a city in solitude?";
+				sleep2 4000;
+				npctalk "I've decided to hide Memory Records for you.";
+				sleep2 4000;
+				npctalk "Of course I didn't even forget about the tiny parcels~!";
+				sleep2 4000;
+				npctalk "I was hoping to find the luxury to find and listen to these.";
+				sleep2 4000;
+				npctalk "...Your companion forever. Lasse Atnad.";
+				break;
+			case 4:
+				npctalk "Ah test test.. oh.. it works?";
+				sleep2 4000;
+				npctalk "Hello I am software engineer Sukurita.";
+				sleep2 4000;
+				npctalk "Today I am here to inform you of the points to note on Sukuta language used in the Sukuta engine.";
+				sleep2 4000;
+				npctalk "Skuta language can use both global and local variables..";
+				sleep2 4000;
+				npctalk "The global variable is like the devil and if you fall for the sweet allurement of";
+				sleep2 4000;
+				npctalk "the global variable you will suffer a heart palpitating and";
+				sleep2 4000;
+				npctalk "cold sweat inducing epilepsy over 1 byte of space or special syntax.";
+				sleep2 4000;
+				npctalk "Next time I will explain the alternative to Skuta language mhm mhm";
+				sleep2 4000;
+				npctalk "Sukurita language invented by I, Sukurita. Heeheeheehee";
+				break;
+			case 5:
+				npctalk "Click-zizip don't stop me Puhahaha I will leave this on record!";
+				sleep2 4000;
+				npctalk "Puhahahahahahahahaha";
+				sleep2 4000;
+				npctalk "I am not crazy, this is funny! It's because it's funny.";
+				sleep2 4000;
+				npctalk "This is a time to be laughing?";
+				sleep2 4000;
+				npctalk "Ah, of course not. It's not but hehehehe";
+				sleep2 4000;
+				npctalk "...Then should I cry? Huh? Hasn't this given you hope?";
+				sleep2 4000;
+				npctalk "Our hope!";
+				sleep2 4000;
+				npctalk "Clack-! Ah... this.. this smashing is Ze..Zerte.....";
+				sleep2 4000;
+				npctalk "Ugh. Blimey. You're a lot to handle.";
+				sleep2 4000;
+				npctalk "Huh? This was still recording?";
+				break;
+			case 6:
+				npctalk "Today is the last experiment and 4885th project of Verus city.";
+				sleep2 4000;
+				npctalk "Everybody wished to see the experiment succeed and went to the laboratories to observe.";
+				sleep2 4000;
+				npctalk "Except for me who is on shift in the Research facilities. Hahahaha";
+				sleep2 4000;
+				npctalk "Aha. Now I think Tatio is also not a member of the main project so is here with me in the Research facilities.";
+				sleep2 4000;
+				npctalk "It is lonely work.... Only if something good happened..";
+				sleep2 4000;
+				npctalk "Didn't something just flash? Hey!";
+				sleep2 4000;
+				npctalk "Booom! Zizizizip";
+				break;
+			case 7:
+				npctalk "Measurements for the survivors in the panic room are no longer being shown on the disaster system screen.";
+				sleep2 4000;
+				npctalk "What in the world happened?";
+				sleep2 4000;
+				npctalk "What is going on? Is it a system error?";
+				sleep2 4000;
+				npctalk "Tatio says Dr. Fresa is still alive.";
+				sleep2 4000;
+				npctalk "I pray that his heart is okay...";
+				break;
+			case 8:
+				npctalk "Hello, I am Lasse Atnad. I am on Research facility night duty again today.";
+				sleep2 4000;
+				npctalk "Huh? What is this? What are you doing now Atnad?";
+				sleep2 4000;
+				npctalk "Ey, can't you tell? I am voice recording!";
+				sleep2 4000;
+				npctalk "You're using an outdated recorder in this day and age? Record video. Video.";
+				sleep2 4000;
+				npctalk "That's my choice! Please don't disrupt me. Argh You attacked my weak spot Ahahaha";
+				sleep2 4000;
+				npctalk "...Zizip..click";
+				break;
+			case 9:
+				npctalk "Hey, Lasse. I am curious about something. Can you answer?";
+				sleep2 4000;
+				npctalk "What is it? What is it that you're pushing my recorder into my face?";
+				sleep2 4000;
+				npctalk "Since this is an interview. I am Zete, striving to reach the pinnacle of bioengineering..";
+				sleep2 4000;
+				npctalk "Enough with bragging. What are you curious about? What is it?";
+				sleep2 4000;
+				npctalk "It's just about Tatio, but he is mostly metameres. I heard that is Dr. Fresa's work, right?";
+				sleep2 4000;
+				npctalk "Yes. Dr. Fresa did research on mechanical substitution for the nervous system before coming to Verus city...";
+				sleep2 4000;
+				npctalk "Oh lala, then that couple came to meet because of that work?";
+				sleep2 4000;
+				npctalk "That's probably right? Tatio himself agreed to the human experiment without hesitation, so it was meant to be.";
+				sleep2 4000;
+				npctalk "Mhm.. So was it the fruit of an one-sided crush?";
+				sleep2 4000;
+				npctalk "Eh? What are you talking about? How did you conclude that? Others' personal life at that...";
+				sleep2 4000;
+				npctalk "Noo look. Fresa who distinguishes people into those useful for research, and to those useless..";
+				sleep2 4000;
+				npctalk "Then one day brings a husband so you know how surprised I was?!?!?!";
+				sleep2 4000;
+				npctalk "So, what you were interested in wasn't biotechnology but Dr. Fresa's love life. Ugh..";
+				sleep2 4000;
+				npctalk "Right! The Fresa! That stone of a woman has a lover..!! Can you believe it?";
+				sleep2 4000;
+				npctalk "I am sorry but. Isn't that enough?";
+				sleep2 4000;
+				npctalk "Heeek! Tatio, when. Did. You come hahahahaha !!! This. This isn't anything!";
+				sleep2 4000;
+				npctalk "Crash---! Click!";
+				break;
+			case 10:
+				npctalk "Explosion Day 32, voice record Lasse Atnad.";
+				sleep2 4000;
+				npctalk "The explosions inside the laboratories are not stopping.";
+				sleep2 4000;
+				npctalk "The condition of the researchers participating or observing the experiment is unknown";
+				sleep2 4000;
+				npctalk "except through the system vitals connected to the panic room.";
+				sleep2 4000;
+				npctalk "The plaza and research facilities have only been partially damaged by the explosion aftermath.";
+				sleep2 4000;
+				npctalk "However.. Some of the researchers and citizens have been killed by an unknown shock wave..";
+				sleep2 4000;
+				npctalk "We are currently assembling an exploration robot using the research facilities.";
+				sleep2 4000;
+				npctalk "Verus city main power source has stopped so minimal facilities are being powered by a secondary energy cube.";
+				sleep2 4000;
+				npctalk "Energy storms are still making accessing pass the laboratories partition impossible.";
+				sleep2 4000;
+				npctalk "The majority of the researchers are sick of being isolated in the city and are arguing for research on Time Sleep.";
+				sleep2 4000;
+				npctalk "..Within this grave we can't escape, we dream of going back in time.";
+				break;
+			case 11:
+				npctalk "Which side, I am on the side of being useful to research.";
+				sleep2 4000;
+				npctalk "That is the worth of my existence when it comes to her. This a fact I knew well.";
+				sleep2 4000;
+				npctalk "The reason I could not refuse, the reason I could not help but follow her as if I was lured by a mirage...";
+				sleep2 4000;
+				npctalk "Because she already was the owner of my heart...";
+				sleep2 4000;
+				npctalk "Rustle";
+				sleep2 4000;
+				npctalk "Hurk.. You. So it was true. It was a one way crush as ever.";
+				sleep2 4000;
+				npctalk "Huh? What are you looking at.. Urk isn't that Tatio's diary?";
+				sleep2 4000;
+				npctalk "Be quiet! Idiot! What if we get caught!";
+				sleep2 4000;
+				npctalk "What, you are reading this while recording it?!?!?!?!";
+				break;
+			case 12:
+				npctalk "Hello, Tatio.";
+				sleep2 4000;
+				npctalk "Most of the people are dead.";
+				sleep2 4000;
+				npctalk "I do not feel guilt even though I turned all those people into dust in order to survive.";
+				sleep2 4000;
+				npctalk "Above all I worry about you being left alone.";
+				sleep2 4000;
+				npctalk "So I have decided to stop despairing.";
+				sleep2 4000;
+				npctalk "It is tomorrow. The day all of us leave this place with you here...";
+				sleep2 4000;
+				npctalk "Until we can see each other again, good bye.";
+				break;
+			case 13:
+				npctalk "Hello. This is Silvia Loren.";
+				sleep2 4000;
+				npctalk "My hobby is chicken. I like beer~.";
+				sleep2 4000;
+				npctalk "Eh... Kind of went overboard by taking on a project today.";
+				sleep2 4000;
+				npctalk "Honestly it isn't a subject I was interested in.";
+				sleep2 4000;
+				npctalk "Vincent was participating in it.";
+				sleep2 4000;
+				npctalk "Ah.......";
+				sleep2 4000;
+				npctalk "No wait wait. I didn't mean to explain that. Oh now!! Cancel it!! - Zizipzizip";
+				break;
+			}
+			sleep2 3000;
+			next;
+			mes "All audible information in the Memory Record has been played.";
+			erasequest 7650;// Collect Memory Records of Research facilities
+			erasequest 7654;// Play Research facilities Memory Records
+			setquest 7651;// One Memory a Day
+			if (VERUS_DAILY_QUEST < 10) {// inaccurate
+				if (VER_MAIN != 32)
+					VERUS_DAILY_QUEST++;
+				if (VER_MAIN == 35 && VERUS_DAILY_QUEST == 10)
+					VER_MAIN = 36;
+				else if (VER_MAIN == 31 && VERUS_DAILY_QUEST > 4)
+					VER_MAIN = 32;
+			}
+		}
+		else {
+			switch( rand(1,14) ) {
+			case 1:
+				npctalk "This is Dorothy Florence. Dorothy who only knows how to do laundry.";
+				sleep2 4000;
+				npctalk "I want to save the remains of the people with the only things I have.";
+				sleep2 4000;
+				npctalk "This place has a lot of people. They are still alive.";
+				sleep2 4000;
+				npctalk "I hope to save as many stories of the people as I can.";
+				sleep2 4000;
+				npctalk "As I hope somebody will remember how we were instead.";
+				sleep2 4000;
+				npctalk "Okay.. then.. who should I interview first?";
+				break;
+			case 2:
+				npctalk "This is Dorothy Florence.";
+				sleep2 4000;
+				npctalk "Individual assignments have been established under Dr. Fresa's command.";
+				sleep2 4000;
+				npctalk "We have to survive here until the energy storm outside stops.";
+				sleep2 4000;
+				npctalk "We have decided to consult the former cafeteria owner Yangsang on the food problem.";
+				sleep2 4000;
+				npctalk "They say we can last about 40 days.";
+				sleep2 4000;
+				npctalk "This panic room is amazing.";
+				break;
+			case 3:
+				npctalk "This is Dorothy Florence.";
+				sleep2 4000;
+				npctalk "We had a small party today";
+				sleep2 4000;
+				npctalk "We had the first harvest of the plants being cultivated!";
+				sleep2 4000;
+				npctalk "According to the biotechnology managers harvest is possible at least once every 2 weeks";
+				sleep2 4000;
+				npctalk "due to a growth acceleration technology.";
+				sleep2 4000;
+				npctalk "I can taste fresh grapes again today.";
+				break;
+			case 4:
+				npctalk "This is Dorothy Florence. This is the 3rd night.";
+				sleep2 4000;
+				npctalk "People are looking to Dr. Fresa as the leader of this current situation and rendering yesterday's criticism meaningless.";
+				sleep2 4000;
+				npctalk "Biotechnology engineers, mechanical engineers, facility managers.. we have everybody we need.";
+				sleep2 4000;
+				npctalk "There are also lowly kitchen maids like myself as well.";
+				sleep2 4000;
+				npctalk "I was here just to deliver some laundry.";
+				sleep2 4000;
+				npctalk "How did I get caught up in something like this?";
+				break;
+			case 5:
+				npctalk "I am Dorothy Florence. I picked up a Memory Record in the Monitoring room today.";
+				sleep2 4000;
+				npctalk "It could be a black box recorded on the day of the experiment. I will play it!";
+				sleep2 4000;
+				npctalk "Zizip-- Ah.. static noise first... Ah. There it is.";
+				sleep2 4000;
+				npctalk "Goodluck..";
+				sleep2 4000;
+				npctalk "(Female Voice) Ha.. I regret never having dated.";
+				sleep2 4000;
+				npctalk "(Another Female Voice) Ah...... I should be seeing this while having chicken and beer.... zizizip--";
+				sleep2 4000;
+				npctalk "Huh? Is this all? But this voice. Ahhhhhh Artemia who checked her laundry!";
+				sleep2 4000;
+				npctalk "..Hum.. I see. That day. This is what happened.....";
+				sleep2 4000;
+				npctalk "Click";
+				break;
+			case 6:
+				npctalk "This is Dorothy Florence.";
+				sleep2 4000;
+				npctalk "The plants cultivated by the biologist have sprouted shoots one day.";
+				sleep2 4000;
+				npctalk "Should I be happy?";
+				sleep2 4000;
+				npctalk "It is something to be happy about but, there is still no contact with the outside world.";
+				sleep2 4000;
+				npctalk "A week has passed, and the only joy of the people in the panic room...";
+				sleep2 4000;
+				npctalk "Is watching the germination of the plants.";
+				break;
+			case 7:
+				npctalk "This is Dorothy Florence. It has been a month of panic room life.";
+				sleep2 4000;
+				npctalk "People were busy since the morning due to the Air cleaner being broken.";
+				sleep2 4000;
+				npctalk "I can only watch on since the only thing I know how to do is wash clothes.";
+				sleep2 4000;
+				npctalk "Fortunately the machine manias have already made a new air cleaner";
+				sleep2 4000;
+				npctalk "so there will be no problem breathing.";
+				sleep2 4000;
+				npctalk "What a relief, isn't it?";
+				break;
+			case 8:
+				npctalk "This is Dorothy. This is the last recording.";
+				sleep2 4000;
+				npctalk ".I don't want to die. Whimper..";
+				sleep2 4000;
+				npctalk "I don't want to be like them!!";
+				sleep2 4000;
+				npctalk "...I want to live...";
+				break;
+			case 9:
+				npctalk "This is Dorothy Florence. I am recording this";
+				sleep2 4000;
+				npctalk "because someone has to leave behind the memories of this terrible accident.";
+				sleep2 4000;
+				npctalk "The outside has been completely cut off from the explosion that occurred with the experiment.";
+				sleep2 4000;
+				npctalk "Most of the people have currently evacuated to the panic room.";
+				sleep2 4000;
+				npctalk "There is no contact with the outside world.";
+				sleep2 4000;
+				npctalk "Going out side will be difficult for the time being.";
+				break;
+			case 10:
+				npctalk "Hello, I am Ate. The assistant engineer of Verus city.";
+				sleep2 4000;
+				npctalk "Haha.. isn't this awkward?";
+				sleep2 4000;
+				npctalk "I.. fermented alcohol a while ago with the grapes in the bunker.";
+				sleep2 4000;
+				npctalk "Life in the bunker is becoming more impoverished the more we lose life on the surface.";
+				sleep2 4000;
+				npctalk "I didn't share that much but the guy next to me must be drunk because he keeps clinging on to me.";
+				sleep2 4000;
+				npctalk "Doesn't this guy have something better to do than to cling onto me.";
+				sleep2 4000;
+				npctalk "I'm kind of on the popular side. Haha.";
+				sleep2 4000;
+				npctalk "But, seeing that clingy guy reminded me of the kid somehow.";
+				sleep2 4000;
+				npctalk "Long black braided hair and face full of freckles...";
+				sleep2 4000;
+				npctalk "..Ate! Can you check this for a minute?";
+				sleep2 4000;
+				npctalk "Ah.. sorry. I have to go to work. I will do more when I have the chance.";
+				sleep2 4000;
+				npctalk "Eh, Ate's interview will be continued next time! This has been Dorothy!";
+				break;
+			case 11:
+				npctalk "This is Dorothy Florence. Day 50 of the explosion.";
+				sleep2 4000;
+				npctalk "After a long discussion, the research staff of Dr. Fresa seem to have decided to";
+				sleep2 4000;
+				npctalk "go through part of the partition where these is no energy storm.";
+				sleep2 4000;
+				npctalk "They are leaving by digging an underground tunnel.. !";
+				sleep2 4000;
+				npctalk "I thought we were trapped by the protective wall?";
+				break;
+			case 12:
+				npctalk "Hello! Ate! Do you have time?";
+				sleep2 4000;
+				npctalk "Hello, Dorothy. Is this that thing last time? Did I really have to continue?";
+				sleep2 4000;
+				npctalk "I did promise. No choice. Where was I?";
+				sleep2 4000;
+				npctalk "The kid with long black braided hair and face full of freckles!";
+				sleep2 4000;
+				npctalk "Ah, yes. That kid. He would follow me around annoyingly.";
+				sleep2 4000;
+				npctalk "A time when he was a even more of a kid. .. Haa..";
+				sleep2 4000;
+				npctalk "I was relieved to think I was finally rid of him in Verus city.";
+				sleep2 4000;
+				npctalk "Until I ran into him at the laboratories. Haha, isn't he quite the kid?";
+				sleep2 4000;
+				npctalk "Always honest in his feelings, unchanging....";
+				sleep2 4000;
+				npctalk "But the kid, never told me he liked me because his stubbornness.";
+				sleep2 4000;
+				npctalk "Even though it was written on his face.";
+				sleep2 4000;
+				npctalk "Chasing me around like a stalker. Humph... Hahaha";
+				sleep2 4000;
+				npctalk "But today I am missing you kid. .. Hoho.";
+				sleep2 4000;
+				npctalk ".....But that day you probably, hm.. that day....";
+				sleep2 4000;
+				npctalk ".................Dorothy . ..Let's stop.";
+				break;
+			case 13:
+				npctalk "This is Dorothy Florence. A month and a week has passed.";
+				sleep2 4000;
+				npctalk "There is bad news today.";
+				sleep2 4000;
+				npctalk "The people who went outside the multiplex protective wall to measure the atmosphere have not come back.";
+				sleep2 4000;
+				npctalk "Maybe.. They were swallowed up by the energy storm.";
+				sleep2 4000;
+				npctalk "I hope they find freedom again.";
+				break;
+			case 14:
+				npctalk "This is Dorothy Florence. Day 44 of the explosion.";
+				sleep2 4000;
+				npctalk "I hear a portion of the people within the protective wall have changed strangely.";
+				sleep2 4000;
+				npctalk "Apparently it is related to having gone outside.";
+				sleep2 4000;
+				npctalk "People are scrambling to check the wall.";
+				sleep2 4000;
+				npctalk "What is going to happen to us...?";
+				break;
+			case 15:
+				npctalk "--------Bang-----";
+				sleep2 4000;
+				npctalk "Urk..";
+				sleep2 4000;
+				npctalk "Sob sob...";
+				sleep2 4000;
+				npctalk "Why! Why did it happen like this!!!";
+				sleep2 4000;
+				npctalk "Sob sob..";
+				sleep2 4000;
+				npctalk "-------Baang-----";
+				sleep2 4000;
+				npctalk "--Zizip-Ah --doctor --before --zizizip-- he zizip- look zizip--for..";
+				sleep2 4000;
+				npctalk "--Zizizip--here.";
+				sleep2 4000;
+				npctalk "-Click-";
+				sleep2 4000;
+				npctalk "Hm. The doctor looks very tired as well.";
+				sleep2 4000;
+				npctalk "Ah! This was on? I'm going to get in trouble for leaving it on too long..";
+				sleep2 4000;
+				npctalk "Umph! Hm! This is Vanilla Luide. I am tired a lot these days for some reason.";
+				sleep2 4000;
+				npctalk "I guess looking at the situation it's not a shock to see everybody's state.";
+				sleep2 4000;
+				npctalk "Hoo...";
+				sleep2 4000;
+				npctalk "Bzz..";
+				break;
+			}
+			sleep2 3000;
+			next;
+			mes "All audible information in the Memory Record has been played.";
+			erasequest 7652;// Collect Memory Records of Laboratories
+			erasequest 7655;// Play Laboratories Memory Records
+			setquest 7653;// One Memory a Day 2
+			// memory record daily quests
+			if (countitem(22691) < 1 && countitem(22692) < 1 && countitem(22693) < 1 && countitem(22694) < 1 && countitem(22695) < 1)
+				getitem rand(22691,22695),1;// Record_Fragment
+		}
+		getexp 1500000,1000000;
+		next;
+		specialeffect EF_SPELLBREAKER;
+		mes "As you try to eject the Memory Record, the connecting part breaks with a cracking sound and returns to it's disassembled form.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Darn. There's only one content but it annoyingly breaks every time it doesn't play.";
+		mes "I'm starting to think it's made like this on purpose.";
+		mes "Annoying to clean up..";
+		next;
+		mes "[Nile]";
+		mes "Why make things like this with all that science and talent and whatnot?";
+		mes "Not to mention there is the occasional overlap..";
+		mes "It feels like someone is coaxing us to find out about the past no matter what.";
+		next;
+		mes "[Nile]";
+		mes "Anyway I will record this content separately and deliver it to the old man.";
+		mes "Good work today.";
+		next;
+		mes "[Nile]";
+		if (VERUS_DAILY_QUEST < 10)
+			mes "Then come back tomorrow.";
+		else {
+			mes "Wait, something is going on?";
+			mes "That tent there is where the excavation team is, right?";
+			mes "It seems someone is visiting?";
+			mes "Go along now!";
+		}
+		close3;
+	}
+	if (VER_MAIN < 30) {
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "[Nile]";
+		mes "Can you, not touch things without asking?";
+		close3;
+	}
+	mes "There are no more Memory Records to play.";
+	close;
+}
+
+verus04,141,193,5	script	Archaeologist Aureth#atnd09	4_M_OLDSCHOLAR,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	switch(VER_MAIN) {
+	case 0:
+	case 1:
+	case 2:
+	case 3:
+		mes "The old archaeologist has his back toward you, working on something.";
+		mes "You shouldn't disturb him.";
+		close;
+	case 4:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Ah, welcome.";
+		mes "I've been waiting for you.";
+		mes "First things first: you should go register with the Central Command Center.";
+		next;
+		mes "[Aureth]";
+		mes "Your name is already on the list. Just go check in with the center.";
+		mes "Or you won't have full access to this area.";
+		next;
+		mes "[Aureth]";
+		mes "Come back when you're done. I'll introduce you to the other members.";
+		mes "Go on.";
+		close3;
+	case 5:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Ah, you're back.";
+		mes "Say hello to our leader, Ian Atnad.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...Rookie.";
+		mes "I don't have time for rookies. Send them back!";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "You're doing it again.";
+		mes "We're old now. We need help!";
+		mes "Stop being so stubborn.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...Hey, rookie.";
+		mes "Did my daughter send you to spy on me?";
+		mes "Tell me!";
+		next;
+		if (select( "I came to help.", "I don't know what you're talking about." ) == 2) {
+			cutin "verus_ian02.bmp",2;
+			mes "[Ian Atnad]";
+			mes "Hm? Don't you know who my daughter is?";
+			mes "Well, we should leave it that way.";
+		}
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "That means you know who my daughter is.";
+		mes "Do you really think you can work with me?";
+		mes "Knowing who I am?";
+		next;
+		mes "[Ian Atnad]";
+		mes "Well, fine.";
+		mes "Let's get to work.";
+		mes "I want to know if you can follow my orders.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Ian, you're helpless.";
+		mes "Well, welcome to the team, young adventurer.";
+		mes "Some of the things we're planning are physically challenging, not to mention dangerous.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Enough. Rookie, come over here.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "I'm sorry.";
+		mes "You'd better go.";
+		mes "Don't let him get on your nerves.";
+		VER_MAIN = 6;
+		close3;
+	case 6:
+	case 7:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Thank you for your patience with Ian.";
+		mes "He wasn't always like that.";
+		mes "He's doing it on purpose.";
+		close3;
+	case 8:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "If you're done with him, I can use your help.";
+		mes "We have one more member in the team.";
+		next;
+		mes "[Aureth]";
+		mes "He went to the Plaza to investigate the remains.";
+		mes "He's a young fellow named ^4d4dffLloyd^000000.";
+		mes "I sent Luke with him to keep him safe,";
+		next;
+		mes "[Aureth]";
+		mes "but I want to know how much progress Lloyd has made with his investigation.";
+		mes "Could you go check up on him?";
+		mes "Thank you.";
+		erasequest 7619;// Assisting the Excavation Team
+		setquest 7620;// Young Blood?
+		VER_MAIN = 9;
+		close3;
+	case 9:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Lloyd must be somewhere in the Verus Central Plaza.";
+		mes "Look for Luke. He should be near Lloyd.";
+		next;
+		mes "[Aureth]";
+		mes "He's the only young member aside from you.";
+		mes "The rest of the members of our team are as old as me, and couldn't make the trip.";
+		next;
+		mes "[Aureth]";
+		mes "Please take good care of";
+		mes "Lloyd.";
+		close3;
+	case 10:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "How's Lloyd doing?";
+		mes "Ah, so you're helping him.";
+		next;
+		mes "[Aureth]";
+		mes "Thank you";
+		mes "for your hard work.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "They're here to work for us.";
+		mes "Stop thanking them.";
+		mes "They're spoiled as it is.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Sigh, would you stop?";
+		mes "*Shaking his head*";
+		close3;
+	case 11:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Ah, you're back.";
+		mes "How's Lloyd doing?";
+		mes "He wants to camp there.";
+		mes "Wouldn't it be too dangerous? I guess Luke can keep him safe.";
+		next;
+		mes "[Aureth]";
+		mes "Please come this way.";
+		mes "I wrote a report while waiting for you.";
+		mes "I want you to take it to Commander Louis at the Central Command Center.";
+		next;
+		mes "[Aureth]";
+		mes "This may be a simple errand,";
+		mes "but it gives you an opportunity to get acquainted with the Commander.";
+		next;
+		mes "[Aureth]";
+		mes "We're old, so we don't care about fame. You're different.";
+		mes "Winning favor with Rekenber";
+		mes "can go a long way.";
+		erasequest 7622;// Good News!
+		setquest 7617;// Turning In Excavation Report
+		VER_MAIN = 12;
+		getitem 6748,1;// Daily_Report_He_And_His_Team
+		close3;
+	case 12:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Please take that report to Commander Louis.";
+		mes "Writing a report every day is a chore, but an important chore nonetheless.";
+		next;
+		mes "[Aureth]";
+		mes "I've noticed Louis has been watching us. I hope that's a good sign.";
+		close3;
+	case 13:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Did you deliver the report?";
+		mes "Good.";
+		mes "You can take a break now.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "No, you can't!";
+		mes "You've got work to do!";
+		mes "Come over here, now!";
+		close3;
+	case 14:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "I don't understand him sometimes.";
+		mes "I feel sorry for you.";
+		mes "I wish I could help.";
+		next;
+		mes "[Aureth]";
+		mes "Maybe the other youngsters can give you better advice.";
+		mes "^4d4dffWhy don't you consult Lloyd or Luke?^000000";
+		next;
+		mes "[Aureth]";
+		mes "Sigh, he's as stubborn as a mule.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I heard that.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Then stop it";
+		mes "and stop harassing them.";
+		mes "The Eden Group won't be happy if it knows about this.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "The Eden Group? *Snort* Who cares?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "You're helpless.";
+		mes "I'm really, really sorry about him.";
+		mes "You really should talk to those two.";
+		close3;
+	case 15:
+	case 16:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "So you've found some clues, eh?";
+		mes "Hm, even I'm excited.";
+		close3;
+	case 32:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "You came back at the right time.";
+		mes "I've made some progress with my research with the Power Control Devices you brought.";
+		next;
+		mes "[Aureth]";
+		mes "I just finished writing a report about it";
+		mes "along with the energy source that Lloyd is studying.";
+		next;
+		mes "[Aureth]";
+		mes "Here's the report.";
+		mes "Please ^4d4dffbring it to Louis";
+		mes "at the Command Center^000000.";
+		setquest 7617;// Turning In Excavation Report
+		getitem 6748,1;// Daily_Report_He_And_His_Team
+		VER_MAIN = 33;
+		close3;
+	case 33:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Please take that report to Commander Louis.";
+		mes "Writing a report every day is a chore, but an important chore nonetheless.";
+		next;
+		mes "[Aureth]";
+		mes "I've noticed Louis has been watching us. I hope that's a good sign.";
+		close3;
+	case 34:
+		if (checkquest(7618,PLAYTIME) == 2) {
+			erasequest 7618;// Reporting the Results - Down
+			VER_MAIN = 35;
+			mes "[Aureth]";
+			mes "It's time we write another report.";
+			mes "I'll do it after I'm done studying Power Control Devices.";
+			close3;
+		}
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Did you deliver the report?";
+		mes "It may be a simple errand,";
+		mes "but it gives you an opportunity to get acquainted with the Commander.";
+		next;
+		mes "[Aureth]";
+		mes "We're old, so we don't care about fame. You're different.";
+		mes "Winning favor with Rekenber can go a long way.";
+		next;
+		mes "[Aureth]";
+		mes "So let's have you submit reports from now on.";
+		close3;
+	default:
+		cutin "verus_aures.bmp",0;
+		mes "[Aureth]";
+		mes "Ian is working on Power Control Devices.";
+		mes "Lloyd is working on the power supply for the devices.";
+		next;
+		mes "[Aureth]";
+		mes "Well, that leaves me with the menial task of organizing documents.";
+		mes "Could you help those two?";
+		next;
+		mes "[Aureth]";
+		mes "The quicker we gather research materials, the quicker we can report.";
+		close3;
+	}
+
+OnInit:
+	questinfo 7615,QTYPE_QUEST,1;// inaccurate
+	end;
+}
+
+verus04,144,193,3	script	Ian Atnad#ep152	4_M_IAN,{
+	if (checkweight(1301,1) == 0) {
+		mes "- Cannot progress quest because you have too many items in your possession. -";
+		close;
+	}
+	mes "[Ian Atnad]";
+	switch(VER_MAIN) {
+	case 0:
+	case 1:
+	case 2:
+	case 3:
+	case 4:
+		cutin "verus_ian01.bmp",2;
+		mes "...that's distracting.";
+		close3;
+	case 5:
+		cutin "verus_ian01.bmp",2;
+		mes "What have you been loafing around for?";
+		mes "Who the hell is this?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Ian, why are you like this?";
+		mes "This young adventurer was dispatched here from the paradise squad.";
+		mes "He is here to help us.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "..Hm... Rookie.";
+		mes "I do not need such favors, send them back!";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "I see he is acting like this again..";
+		mes "Do you think a bunch of old men can do this task easily?";
+		mes "Stop being so stubborn for a change.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "..Hey, Rookie.";
+		mes "Are you here to monitor me on my daughter's orders?";
+		mes "Is that it?";
+		next;
+		if (select( "Just here to help.", "That is news to me." ) == 2) {
+			cutin "verus_ian02.bmp",2;
+			mes "[Ian Atnad]";
+			mes "Hum? You did not hear about my daughter?";
+			mes "Then I don't need to bring up such idle talk.";
+		}
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...so you know about my relationship with my daughter?";
+		mes "So are you trying to stay silent and just do your work?";
+		mes "You are trying not to involve yourself?";
+		next;
+		mes "[Ian Atnad]";
+		mes "Good.";
+		mes "Then I will order you to do something you really need right away.";
+		mes "Let's see how well you can follow my instructions.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "This fellow.. He is like this to the end.";
+		mes "Anyway, since we are here, I am at your service as well.";
+		mes "I'm afraid the work we want to do is a bit dangerous.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Stop talking nonsense and come here, Rookie.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Sorry for this.";
+		mes "Let's us go first.";
+		mes "I have your back.";
+		VER_MAIN = 6;
+		close3;
+	case 6:
+		cutin "verus_ian01.bmp",2;
+		mes "So, you said you will help us with our work?";
+		mes "Then let's see how well you do.";
+		mes "There is a plaza if you leave this area and go further inside.";
+		next;
+		mes "[Ian Atnad]";
+		mes "There will be machines from a highly advanced civilization.";
+		mes "There is an essential device to make the machines run.";
+		next;
+		mes "[Ian Atnad]";
+		mes "For now, there is something temporarily called the ^4d4dffOperation Control Device^000000 because it is still under investigation.";
+		mes "Investigate the machine and collect 20 of the Operation Control Devices.";
+		next;
+		mes "[Ian Atnad]";
+		mes "I will see how well you work.";
+		setquest 7615;// Core Collection
+		VER_MAIN = 7;
+		close3;
+	case 7:
+		if (countitem(6749) < 20) {// Operation_Control_Device
+			cutin "verus_ian01.bmp",2;
+			mes "20 Power Control Devices.";
+			mes "Should be no problem for one who is recommended by that supposedly great person, should it?";
+			mes "Hm.";
+			close3;
+		}
+		cutin "verus_ian02.bmp",2;
+		mes ".. Hm..";
+		mes "Don't get smug because of this!";
+		mes "We will use that for research.";
+		mes "Hand over everything you have.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Haha.. This guy is stiff as always.";
+		mes "Is it that hard to say one word of thanks for a job well done?";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Away with you!";
+		mes "Why do you keep interfering.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "It is one of the few joys this old man has, so what can you do.";
+		mes "I will thank you instead.";
+		mes "Anyway, thanks for your trouble.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "You will probably focus on this kind of work in the future.";
+		mes "We wanted to study these operation devices butwe didn't know how terrifying those machines were.";
+		next;
+		mes "[Aures]";
+		mes "I will write the report soon so I will ask for you help then as well.";
+		delitem 6749, countitem(6749);// Operation_Control_Device
+		erasequest 7615;// Core Collection
+		setquest 7619;// Assisting the Excavation Team
+		getexp 750000,500000;
+		VER_MAIN = 8;
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "You two are getting along well.";
+		mes "Go away!";
+		close3;
+	case 8:
+		cutin "verus_ian01.bmp",2;
+		mes "...I still don't trust you.";
+		mes "There's a thing called a contract so I'd like it you just quietly keep working.";
+		next;
+		mes "[Ian Atnad]";
+		mes "You're expecting a word of thanks to come out of me...";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Hey. Leave that stubborn fellow and come here for a minute!";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...... huh.. what are you doing? Go!";
+		close3;
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+		cutin "verus_ian01.bmp",2;
+		mes "....you..";
+		mes "Why don't you go find something to work on instead of playing around?";
+		next;
+		mes "[Ian Atnad]";
+		mes "I am saying this once more,";
+		mes "I don't think you are here just to help us.";
+		mes "I am sure Arquien is up to something.";
+		next;
+		mes "[Ian Atnad]";
+		mes ".....hm.";
+		mes "Quickly come back to me after you are done with what you are doing.";
+		close3;
+	case 13:
+		cutin "verus_ian01.bmp",2;
+		mes "Are you coming back from sending the report?";
+		mes "Good timing.";
+		mes "Bring me something to snack on.";
+		next;
+		mes "[Ian Atnad]";
+		mes "Not the rations supplies here.. what is that?";
+		mes "Find some delicacy to stimulate my appetite since it's hot and stuffy.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Hey buddy. What kind of delicacy are you looking for here?";
+		mes "Just take what Louis brought.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Ah, you stay out of this.";
+		mes "This is for the rookie to handle by themself.";
+		mes "Find me a ^4d4dffdelicacy that is simple to eat yet juicy and refreshing and has a neat finish^000000!";
+		next;
+		mes "[Ian Atnad]";
+		mes "If you find what I want then I will listen to one wish of yours.";
+		mes "Are you not here in hopes of getting something?";
+		next;
+		cutin "",255;
+		mes "In order to ask Ian Atnad about the ^4d4dffLast Exploration^000000";
+		mes "it seems a ^4d4dffdelicacy that is simple to eat yet juicy and refreshing and has a neat finish^000000 has to be found.";
+		erasequest 7623;// Artnard's Summon
+		setquest 7624;// In Search of a Delicacy
+		VER_MAIN = 14;
+		close;
+	case 14:
+	case 15:
+		cutin "verus_ian03.bmp",2;
+		mes "Are you going to make me repeat myself?";
+		mes "Find me a ^4d4dffdelicacy that is simple to eat yet juicy and refreshing and has a neat finish^000000";
+		mes "and I will grant you what you want.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "If it's hard for you find it with that dimwitted head of yours then try to ask others at least!";
+		mes "Something that will suit my taste.";
+		close3;
+	case 16:
+		cutin "verus_ian01.bmp",2;
+		if (countitem(11519) < 1) {// Beef_Toast
+			mes "..Hm.";
+			mes "Giving up?";
+			mes "Are you really?";
+			mes "I didn't see you as someone who would give up so easily..?";
+			next;
+			mes "[Ian Atnad]";
+			mes "If what I requested is that difficult I will take it back.";
+			mes "However, you must leave this excavation team.";
+			next;
+			cutin "",255;
+			mes "I must find the lost Beef Toast somewhere.";
+			close;
+		}
+		mes "Hm.. is this it?";
+		mes "......Can I indeed eat this conveniently during work without separate silverware.";
+		mes "..Smells of freshly cooked meat.";
+		next;
+		mes "Ian wipes his hands and slowly starts to eat the Beef Toast.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Um...";
+		mes ".....!";
+		mes "This... this flavor!";
+		mes "Packed with the juiciness of finely ground beef!";
+		mes "I can taste the flavor of direct fire..!";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Exotic fruit and vegetables reel in the subtle greasiness of the oil!";
+		mes "...!";
+		next;
+		select("Try the leaves that are wrapped around the outside.");
+		cutin "verus_ian04.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Indeed.. this can be consumed as well.";
+		mes "Rich juiciness and fresh salad.. sweet fruit..";
+		mes "A fresh finishing flavor to wrap all of it up..!";
+		next;
+		mes "[Ian Atnad]";
+		mes "...Kid..";
+		mes "Not bad.";
+		mes "You have satisfied all the conditions I have laid out.";
+		next;
+		mes "[Ian Atnad]";
+		mes "I have no choice.";
+		mes "Alright. I predicted there was something you wanted.";
+		mes "A promise is a promise. What do you want from me?";
+		next;
+		select("To know about the Last Exploration");
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "... so that was it.";
+		mes "I see....";
+		mes "To talk about that..give me some time to think.";
+		mes "....";
+		next;
+		mes "[Ian Atnad]";
+		mes "I need time to organize it as well.";
+		mes ".......";
+		mes "Come back later.";
+		mes "Please.";
+		delitem 11519,1;// Beef_Toast
+		erasequest 7626;// Delicacy for Him
+		setquest 7627;// Last Exploration
+		VER_MAIN = 17;
+		close3;
+	case 17:
+	case 18:
+	case 19:
+		cutin "verus_ian01.bmp",2;
+		mes "Have you arrived?";
+		mes "Have you adjusted to the excavation site?";
+		mes "So what is it this time.";
+		next;
+		switch( select( "About the excavation project", "Converse", "Cancel" ) ) {
+		case 1:
+			callsub S_Daily, 0;
+			close3;
+		case 2:
+			cutin "verus_ian04.bmp",2;
+			mes "[Ian Atnad]";
+			if (VER_MAIN == 17) {
+				mes "It's good that you're here.";
+				mes "The access permit for the Laboratories and Research facilities dropped apparently.";
+				mes "So we plan to expand the investigation area..";
+				next;
+				select("What about the Last Exploration!");
+				cutin "verus_ian01.bmp",2;
+				mes "[Ian Atnad]";
+				mes "..the Last Exploration, it wasn't much.";
+				mes "The exploration site was Juperos.";
+				mes "There were various goals but..";
+				next;
+				mes "[Ian Atnad]";
+				mes "I know well that it was a major turning point for my life.";
+				mes "I feel like there is fog in my head.";
+				mes "And I think I will find another turning point here.";
+				next;
+				mes "[Ian Atnad]";
+				mes "It is just a feeling though.";
+				mes "I don't think the place I've been looking for and this place are related.";
+				next;
+				mes "[Ian Atnad]";
+				mes "So won't you help me for the time being?";
+				mes "....";
+				next;
+				select("I have no choice.");
+				mes "[Ian Atnad]";
+				mes "Yes, this is the last task.";
+				mes "Arquien has to know, too.";
+				mes "We will start soon so come back when you're ready.";
+				VER_MAIN = 18;
+				close3;
+			}
+			if (VER_MAIN == 18) {
+				cutin "verus_ian01.bmp",2;
+				mes "The position of our excavation team has improved quite a bit due to your actions.";
+				mes "Thanks to you we received permission to explore closed areas.";
+				next;
+				mes "[Ian Atnad]";
+				mes "So we are trying to expand the investigating area.";
+				mes "But it seems there was a reason it was shut down.";
+				next;
+				mes "[Ian Atnad]";
+				mes "It seems there are a lot of machines in that area that react sensitively to organisms.";
+				mes "Furthermore there was a veil of peculiar energy..";
+				next;
+				mes "[Ian Atnad]";
+				mes "Check out the Research facilities area first.";
+				mes "Let me know if there is anything peculiar.";
+				completequest 7627;// Last Exploration
+				setquest 7641;// Access Permitted
+				setquest 7642;// Explore Research facilities
+				VER_MAIN = 19;
+				close3;
+			}
+			cutin "verus_ian01.bmp",2;
+			mes "They say the Research facilities area is connected to the road going up from the right side of the plaza.";
+			mes "Well, if you get up there the corporate bastards will be there restricting access.";
+			next;
+			mes "[Ian Atnad]";
+			mes "If you find something worth risking danger for come back right away and tell me!";
+			close3;
+		case 3:
+			cutin "verus_ian01.bmp",2;
+			mes "[Ian Atnad]";
+			mes "Let's look around as well instead of just working.";
+			mes "These kind of opportunities are rare.";
+			close3;
+		}
+	case 20:
+		cutin "verus_ian01.bmp",2;
+		mes "You're finally here.";
+		mes "So, did you get any results?";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Hm...? Wh..what. What is that in your hand?!";
+		mes "How...can this be.";
+		mes "I didn't imagine I would see this here...?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Huh? What is it?";
+		mes "It looks like your eyes are going to pop out.";
+		mes "Let me share in the surprise.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "This..this is.";
+		mes "Is a Memory Record.. Didn't you talk about this to me once?";
+		next;
+		mes "[Ian Atnad]";
+		mes "My great-grandparents had something that looked like this...";
+		mes "It is a type of recording medium that records voices and sounds.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Ooh... Is it magic?";
+		mes "I know a bit of picture magic that can preserve images seen by the eye..";
+		mes "Is it something similar?";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "No. This is not an application of magic.";
+		mes "This is purely a product of science. I've seen my great-grandparents use this to listen to songs or record voices.";
+		next;
+		mes "[Ian Atnad]";
+		mes "In my youth I thought it was merely a toy-like invention of my great-grandparents....";
+		mes "Now I wonder why they did not announce that technology.";
+		next;
+		mes "[Ian Atnad]";
+		mes "It is a memory when I was very young but it looks just like this.";
+		mes "..can we know the contents of the Memory Record with that.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I need that! I see!";
+		mes "That..";
+		mes "...Ah....";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Hey, there. Are you okay?";
+		mes "Isn't the device that can decipher it in your house?";
+		next;
+		mes "[Aures]";
+		mes "You.. ah...";
+		mes "I see. Ahahahahaha..";
+		mes "This guy. You don't know where your house is?";
+		mes "Ahahahahaha!";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes ".... Didn't you say Arquien disposed of the house..?";
+		mes "We can easily figure it out if only we had the record player.";
+		next;
+		select("..What? Why are you looking at me?");
+		mes "[Ian Atnad]";
+		mes "You're that child's informant!";
+		mes "So go there and bring back the ^4d4dffrecord player^000000.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "I see. The one who can easily talk to her right now is you.";
+		mes "If it's okay we would like to ask you to do so.";
+		erasequest 7643;// Mysterious Piece
+		setquest 7644;// Record Player
+		VER_MAIN = 21;
+		close3;
+	case 21:
+		cutin "verus_ian01.bmp",2;
+		mes "Find that child Arquien, and bring back the record player.";
+		mes "She must give me at least that much.";
+		close3;
+	case 22:
+	case 23:
+	case 24:
+	case 25:
+		cutin "verus_ian03.bmp",2;
+		mes "I cannot tell what that child is up to.";
+		mes "If she has a problem with me tell her to come and say it to me directly!";
+		next;
+		mes "[Ian Atnad]";
+		mes "...Why in the world is she not going to give it!";
+		mes "Then are you going to go and listen to it every time?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Well, that's not bad either.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Yeah, not bad.";
+		mes "Not!";
+		mes "Anyway.. Since it turned out like this you make sure to bring it. Okay?";
+		close3;
+	case 26:
+		cutin "verus_ian01.bmp",2;
+		mes "Did you see some results this time?";
+		next;
+		select("Tell him the contents of the Memory Record.");
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...Any chance you misheard it?";
+		mes "Why is Atnad mentioned there?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "You never know.";
+		mes "Since you had the record thing in your house, could it be you are a descendant of this city?";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I am... a descendant of this city..Verus?";
+		mes "Then why has this place been uncovered now?";
+		mes "Shouldn't we have known of this place much sooner?";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "No no. It was strange.";
+		mes "That's why Juperos.. That's why Juperos wasn't unfamiliar to me so I latched on.";
+		next;
+		mes "[Ian Atnad]";
+		mes "If my ancestors are of this city.. why did they keep it a secret?";
+		next;
+		select("That we don't know.");
+		mes "[Ian Atnad]";
+		mes "Yes.. yes. Of course we do not know.";
+		mes "It seems we will have to find more of those Memory Records to know more.";
+		next;
+		mes "[Ian Atnad]";
+		mes "I am sorry, but.. you went to the Research facilities, right?";
+		mes "Do you know of the enormous underground facility discovered near the laboratories?";
+		next;
+		mes "[Ian Atnad]";
+		mes "First time hearing of it?";
+		mes ".. It seems things like Memory Records are being found in that underground facility as well.";
+		next;
+		mes "[Ian Atnad]";
+		mes "Let's take the initiative before the others start to get interested.";
+		mes "The others can't decipher the messages anyway.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "And, if we gather enough Memory Records.....";
+		mes "Go to Arquien and find out the... ugh... contents.";
+		mes "Do you understand?";
+		erasequest 7647;// Report Memory Record
+		setquest 7648;// Memory Records of the Laboratories
+		VER_MAIN = 27;
+		close3;
+	case 27:
+		cutin "verus_ian01.bmp",2;
+		mes "You will find the restricted area if you go to the connected path North-west of the plaza area.";
+		mes "We have an excavation permit so you can enter.";
+		next;
+		mes "[Ian Atnad]";
+		mes "But I hear there are strange robots that are acting aggressively so be careful.";
+		next;
+		mes "[Ian Atnad]";
+		mes "Come back after you find the entry path to the underground facility there.";
+		mes "Remember ^4d4dffcollecting Memory Records from the laboratories is the goal^000000.";
+		next;
+		mes "[Ian Atnad]";
+		mes "At least five? We need five to decipher it right?";
+		mes "Collect them and go to Arquien.";
+		close3;
+	case 28:
+	case 29:
+		cutin "verus_ian03.bmp",2;
+		mes "This time too!";
+		mes "Why.. why is that child acting like this!";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "What? She wants to participate in this project too?";
+		mes "She will regularly decipher the Memory Records and send the results..?";
+		next;
+		mes "[Ian Atnad]";
+		mes "...Why is she doing this. And so suddenly..?";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "It seems she's become aware of something as well.";
+		mes "Is this not a good thing?";
+		mes "Father and daughter can get along and figure out their ancestors' past.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "...Is it?. Is there no other way?";
+		mes "Anyway, you go and see the results.";
+		mes "You have to check if Arquien is doing it correctly.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "We need somebody to collect the Memory Records as well?";
+		mes "Ahahahahaha";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Well, that's not untrue...";
+		mes "Anyway go along.";
+		close3;
+	case 36:
+		cutin "verus_ian01.bmp",2;
+		mes "Have you arrived?";
+		mes "In fact I have been waiting.";
+		next;
+		select("Is there something wrong?");
+		mes "[Ian Atnad]";
+		mes "Something wrong? Something is wrong.";
+		mes "Something is very wrong.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Rekenber Chief secretary]";
+		mes "Hello?";
+		mes "I am the Chief Secretary of Rekenber's Secretariat, W.H.";
+		mes "I have been waiting.";
+		next;
+		select("Chairman Rekenber's secretary?");
+		mes "[Rekenber Chief secretary]";
+		mes "That is right.";
+		mes "I serve Chairman Rekenber.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "So, what's the mighty Chairman's secretary doing in a place like this?";
+		mes "I thought there were reports on the excavation being separately sent?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Rekenber Chief secretary]";
+		mes "The chairman wants to meet all of you.";
+		mes "Come and visit the headquarters in Rihrtarzen anytime.";
+		next;
+		mes "[Rekenber Chief secretary]";
+		mes "It would be better if you could visit as soon as possible..";
+		mes "We request the Memory Record content be left undisclosed for the time being.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Why is that?";
+		mes "Why should we do that?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Rekenber Chief secretary]";
+		mes "Hm.. I think I know what you are going to say but...";
+		mes "Let's just say the time is not right yet.";
+		next;
+		mes "[Rekenber Chief secretary]";
+		mes "We invited you to discuss the details of that issue as well.";
+		mes "So it would better to visit soon, would it not?";
+		mes "We will be waiting.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "What..is.. going on here..";
+		mes "Hey Ian, did you get on the wrong side of the corporation?";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I don't know!";
+		mes "We should go anyway since they told us to.";
+		mes "Hey you.";
+		next;
+		select("Me?");
+		mes "[Ian Atnad]";
+		mes "Yes. You.";
+		mes "They say you have to accompany us.";
+		mes "Let's meet at the Rekenber Corporation Headquarters.";
+		mes "It's better to take care of things like this at once.";
+		VER_MAIN = 37;
+		close3;
+	case 37:
+	case 38:
+	case 39:
+		cutin "verus_ian01.bmp",2;
+		mes "What are you doing? Hurry up.";
+		mes "^4d4dffRekenber Headquarters is in Lighthalzen^000000.";
+		mes "You go on ahead. Let's meet there.";
+		close3;
+	default:
+		cutin "verus_ian01.bmp",2;
+		if (VER_MAIN < 36) {
+			mes "I will leave deciphering the Memory Records up to you and Arquien for the time being.";
+			mes "Since you say you won't ask about the Last Exploration any more..";
+			.@string$ = "About the Memory Records";
+			.@daily_variable = 1;
+		}
+		else {
+			mes "You can never know what will happen.";
+			mes "I guess I should be happy with exclusive rights to the Memory Records.";
+		}
+		mes "What is it today?";
+		next;
+		if (select( "About the excavation project", .@string$ ) == 1)
+			callsub S_Daily, .@daily_variable;
+		else {
+			mes "[Ian Atnad]";
+			if (VER_MAIN >= 31) {
+				cutin "verus_ian01.bmp",2;
+				mes "If I think about it this kind of structure isn't bad either.";
+				mes "The content recorded in the Memory Records is what is important.";
+				next;
+				mes "[Ian Atnad]";
+				mes "Since I am getting results without moving a finger..";
+				mes "......Good.. I will think positively. Yeah.";
+				close3;
+			}
+			cutin "verus_ian01.bmp",2;
+			mes "I cannot figure out what Arquien is thinking.";
+			mes "It would be so much better for me to bring back the Record player.";
+			next;
+			cutin "verus_ian02.bmp",2;
+			mes "[Ian Atnad]";
+			mes "What? She wants to participate in this project too?";
+			mes "She will regularly decipher the Memory Records and send the results..?";
+			next;
+			mes "[Ian Atnad]";
+			mes "It's odd she's like this now when she used to hate even dreaming of working.";
+			next;
+			cutin "verus_aures.bmp",0;
+			mes "[Aures]";
+			mes "It seems she's become aware of something as well.";
+			mes "Is this not a good thing?";
+			mes "Father and daughter can get along and figure out their ancestors' past.";
+			next;
+			cutin "verus_ian01.bmp",2;
+			mes "[Ian Atnad]";
+			mes "...Is that so? Is there no other way?";
+			mes "Anyway, it seems we need your help.";
+			mes "You have to check if Arquien is doing it correctly.";
+			next;
+			cutin "verus_aures.bmp",0;
+			mes "[Aures]";
+			mes "We need somebody to collect the Memory Records as well?";
+			mes "Ahahahahaha";
+			next;
+			cutin "verus_ian01.bmp",2;
+			mes "[Ian Atnad]";
+			mes "Well, that's not untrue...";
+			mes "^4d4dffWork with Arquien for the time being.^000000";
+			completequest 7649;// Report Memory Record Content
+			VER_MAIN = 31;
+		}
+		close3;
+	}
+
+S_Daily:
+	mes "[Ian Atnad]";
+	mes "The excavation project?";
+	mes ".. do you mean the Power Control Device?";
+	next;
+	mes "[Ian Atnad]";
+	switch( checkquest(7616,PLAYTIME) ) {// Core Collection - Down
+	case -1:
+		if (isbegin_quest(7615) == 0) {// Core Collection
+			cutin "verus_ian01.bmp",2;
+			mes "Are you talking about today's work?";
+			mes "It may be obvious but it is to look for Power Control Devices.";
+			mes "...";
+			mes "..You don't have to do it if you don't want to.";
+			next;
+			if (select( "I will look for Power Control Devices.", "It is too hard." ) == 1) {
+				mes "[Ian Atnad]";
+				mes "You? You definitely said you will find them yourself?";
+				mes "I have no reason to reject this offer.";
+				mes "Since you said you will do it yourself.";
+				next;
+				mes "[Ian Atnad]";
+				mes "Collect 20 Power Control Devices this time as well.";
+				mes "If we can unravel the secret of Power Control Devices...";
+				mes "We should be able to fix the broken ones and use them ourselves, right?";
+				mes "It will be fun.";
+				next;
+				mes "[Ian Atnad]";
+				mes "... And.. I feel like I've seen it.. feels like I will know it.";
+				mes "Like I will remember. If I research and research until it is stuck in my brain I am sure something will come of it.";
+				setquest 7615;// Core Collection
+				return;
+			}
+			mes "[Ian Atnad]";
+			mes "If you aren't here to work then go away.";
+			mes "You're distracting me.";
+			return;
+		}
+		if (countitem(6749) < 20) {// Operation_Control_Device
+			mes "It's always the same.";
+			mes "It's ^4d4dff20 Power Control Devices^000000.";
+			mes "Since we're already here, I want to do this right so try not to mess up.";
+			return;
+		}
+		mes "You got it right again.";
+		mes "....";
+		mes "What are you looking at?";
+		mes "Drop what you brought and leave.";
+		next;
+		mes "[Ian Atnad]";
+		mes "......This time I will use it well without breaking it.";
+		mes "Let's slowly get into restoration as well.";
+		delitem 6749, countitem(6749);// Operation_Control_Device
+		erasequest 7615;// Core Collection
+		setquest 7616;// Core Collection - Down
+		getexp 1500000,1000000;
+		if (getarg(0) && VERUS_DAILY_QUEST < 10) {// inaccurate
+			if (VER_MAIN != 32)
+				VERUS_DAILY_QUEST++;
+			if (VER_MAIN == 35 && VERUS_DAILY_QUEST == 10)
+				VER_MAIN = 36;
+			else if (VER_MAIN == 31 && VERUS_DAILY_QUEST >= 4)
+				VER_MAIN = 32;
+		}
+		return;
+	case 0:
+	case 1:
+		mes "We are researching it now.";
+		mes "It's possible we will render it useless from the experiments.";
+		mes "Anyway I am busy now so leave me alone.";
+		return;
+	case 2:
+		erasequest 7616;// Core Collection - Down
+		mes "The Power Control Devices we recovered in the past are all broken.";
+		mes "They couldn't withstand all the experiments.";
+		mes "Just like the ones now.";
+		next;
+		cutin "verus_ian04.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Arquien is like that too.";
+		mes "......Because she couldn't withstand it... ..";
+		mes "...Hoo..";
+		return;
+	}
+
+OnInit:
+	questinfo 7615,QTYPE_QUEST,1;// inaccurate
+	setquestinfo_req 7615,7616,0;
+	end;
+}
+
+verus03,167,257,5	script	Access Controller Damhw#atnd	4_M_LGTGUARD,{
+	.@visible_name$ = strnpcinfo(1);
+	if (.@visible_name$ == "Access Controller Damhw")
+		.@npc_name$ = "Damhwa";
+	else if (.@visible_name$ == "Access Controller Geuma")
+		.@npc_name$ = "Geuman";
+	else
+		.@npc_name$ = "Gyuhwa";
+
+	mes "[" + .@npc_name$ + "]";
+	if (VER_MAIN < 19) {
+		mes "I am sorry, only permitted excavation team members are permitted access.";
+		mes "If you work hard with your current excavation team the permit will come.";
+		close;
+	}
+	if (isbegin_quest(7641) == 2) {
+		mes "How is the research and investigation going?";
+		mes "The machines in the restricted area are quite dangerous so please be careful.";
+		close;
+	}
+	mes "This place can only be accessed by permitted members.";
+	mes "Where are you coming from?";
+	next;
+	if (select("I am coming from the atnad excavation", "Why am I prohibited?") == 1) {
+		mes "[" + .@npc_name$ + "]";
+		mes "Ah. You are a member of the Atnad excavation team.";
+		mes "Yes I have confirmed you on the list.";
+		mes "Atnad excavators are permitted access.";
+		next;
+		select("Why is access prohibited?");
+	}
+	mes "[" + .@npc_name$ + "]";
+	mes "Verus City is divided into four large sections.";
+	mes "Did you know?";
+	next;
+	mes "[" + .@npc_name$ + "]";
+	mes "The area currently open are the town and plaza.";
+	mes "While the reason is unknown this place has been closed off and prohibited.";
+	next;
+	mes "[" + .@npc_name$ + "]";
+	mes "During independent corporate investigations before excavator recruitment,";
+	mes "we found that there was a large explosion here and to check the safety of the area,";
+	mes "an inspection period was needed.";
+	next;
+	mes "[" + .@npc_name$ + "]";
+	mes "This is place currently not seen as a great risk other than the dangerous terrain and possibility of";
+	mes "being attacked by machines like the plaza, so access is limited only to the excavation team.";
+	next;
+	mes "[" + .@npc_name$ + "]";
+	mes "Please note that the permit also includes the zone connected in the West.";
+	next;
+	mes "[" + .@npc_name$ + "]";
+	mes "Anyway, since you are permitted you may enter freely from now on.";
+	mes "Then I expect there to be good results!";
+	completequest 7641;// Access Permitted (note : player can enter in verus01 without this quest)
+	close;
+}
+verus03,172,257,3	duplicate(Access Controller Damhw#atnd)	Access Controller Gyuhw#atnd	4_M_LGTGUARD
+verus03,52,250,5	duplicate(Access Controller Damhw#atnd)	Access Controller Geuma#atnd	4_M_LGTGUARD
+
+verus03,52,254,0	script	verus03_to_verus01	WARPNPC,1,1,{
+	if (VER_MAIN < 19) {
+		mes "[Access Controller]";
+		mes "I am sorry but only permitted members can enter from this point.";
+		close;
+	}
+	warp "verus01",243,62;
+	end;
+}
+
+verus03,169,259,0	script	verus03_to_verus02	WARPNPC,1,1,{
+	if (VER_MAIN < 19) {
+		mes "[Access Controller]";
+		mes "I am sorry but only permitted members can enter from this point.";
+		close;
+	}
+	warp "verus02",72,19;
+	end;
+}
+
+
+verus02,60,30,1	script	Strewn paper#e152a01	4_ENERGY_BLUE,{
+	if (checkweight(1301,1) == 0) {
+		mes "- Cannot progress quest because you have too many items in your possession. -";
+		close;
+	}
+	if (VER_MAIN == 20) {
+		mes "Decided to deliver the 'Memory Record' found in the heap to Dr. Ian Atnad.";
+		mes "Right now a piece of paper hard to read is left.";
+		close;
+	}
+	if (isbegin_quest(7645) == 0 && isbegin_quest(7650) == 0 && VER_MAIN != 19) {
+		mes "Nothing special is found.";
+		close;
+	}
+	if (countitem(6757) > 4) {
+		mes "Enough Memory Records are collected.";
+		mes "No more need to go through the heap of garbage.";
+		close;
+	}
+	if (VER_MAIN == 19) {
+		mes "All sorts of documents and office supplies are piled up in a heap.";
+		mes "Most of the writing is damaged and hard to read.";
+	}
+	else
+		mes "Something may come out by a search.";
+	next;
+	if (select("Check adequately.", "Quit.") == 2) {
+		mes "Decided to investigate something else.";
+		close;
+	}
+	progressbar "00ff00",3;
+	hideonnpc strnpcinfo(0);
+	getitem 6757,1;// The_Memory_Recorder
+	if (VER_MAIN == 19) {
+		mes "You find a object never seen before as you go through the clutter of documents and office supplies.";
+		mes "^4d4dffThis needs to be checked if it has enough research value to be brought back to Dr. Ian Atnad.^000000";
+		erasequest 7642;// Explore Research facilities
+		setquest 7643;// Mysterious Piece
+		VER_MAIN = 20;
+	}
+	else {
+		mes "Found a Memory Record between the piles of documents.";
+		mes "Seems like someone hid it there on purpose.";
+	}
+	initnpctimer;
+	close;
+
+OnTimer60000:
+	hideoffnpc strnpcinfo(0);
+	end;
+}
+verus02,178,32,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a02	4_ENERGY_BLUE
+verus02,102,135,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a03	4_ENERGY_BLUE
+verus02,42,37,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a04	4_ENERGY_BLUE
+verus02,155,64,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a05	4_ENERGY_BLUE
+verus02,80,129,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a06	4_ENERGY_BLUE
+verus02,29,129,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a07	4_ENERGY_BLUE
+verus02,125,85,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a08	4_ENERGY_BLUE
+verus02,51,237,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a09	4_ENERGY_BLUE
+verus02,160,150,3	duplicate(Strewn paper#e152a01)	Strewn paper#e152a10	4_ENERGY_BLUE
+
+verus01,123,181,3	script	Verity#Warper	4_F_BERRYTEA,{
+	mes "[Verity]";
+	mes "Hello.";
+	mes "Are you here for the underground bunker investigation?";
+	cutin "EP15_2_brt_2.bmp", 2;
+	next;
+	switch( select( "Yes", "No.", "Use gravity safety device" ) ) {
+	case 1:
+		mes "[Verity]";
+		mes "It seems very dangerous below so please be careful.";
+		cutin "EP15_2_brt_1.bmp",2;
+		next;
+		mes "[Verity]";
+		mes "If you consider the appearance of monsters not seen in other areas, something is...";
+		cutin "EP15_2_brt_3.bmp",2;
+		close2;
+		warp "un_bunker",98,91;
+		end;
+	case 2:
+		break;
+	case 3:
+		mes "[Verity]";
+		mes "You can easily reach the entrance of the last room by using the gravity safety device.";
+		cutin "EP15_2_brt_1.bmp",2;
+		next;
+		if (select( "Use.", "Quit." ) == 1) {
+			mes "[Verity]";
+			if (countitem(6828) < 1) {
+				mes "I see you do not have the gravity safety device with you.";
+				close2;
+				cutin "",255;
+				end;
+			}
+			delitem 6828,1;// Gravity_Safety_Device
+			close2;
+			warp "un_myst",142,38;
+			@weird_piece = 0;
+			end;
+		}
+		break;
+	}
+	mes "[Verity]";
+	mes "Is that so?";
+	mes "Hm...";
+	cutin "EP15_2_brt_1.bmp",2;
+	close3;
+}
+
+un_bunker,382,335,3	script	Box#e152p00	4_ENERGY_BLUE,{
+	if (checkweight(1301,1) == 0) {
+		mes "- Cannot progress quest because you have too many items in your possession. -";
+		close;
+	}
+	if (VER_MAIN == 27 || isbegin_quest(7652) > 0) {// Collect Memory Records of Laboratories
+		if (countitem(6824) < 5) {
+			mes "Enough Memory Records are collected.";
+			mes "No need to keep on crawling and searching.";
+			close;
+		}
+		if (VER_MAIN == 27)
+			mes "Something shiny is seen under the desk.";
+		else
+			mes "Something may come out by a search.";
+		next;
+		if (select( "Check below.", "Quit." ) == 1) {
+			progressbar "00ff00",3;
+			mes "Found a Memory Record under the desk.";
+			hideonnpc strnpcinfo(0);
+			getitem 6824,1;// Experimental_Dong_Memory_Record
+		}
+		close;
+	}
+	mes "Nothing special is found.";
+	close;
+}
+un_bunker,87,167,3	duplicate(Box#e152p00)	Under desk#e152p01	4_ENERGY_BLUE
+un_bunker,316,243,3	duplicate(Box#e152p00)	Under desk#e152p02	4_ENERGY_BLUE
+un_bunker,103,175,3	duplicate(Box#e152p00)	Under desk#e152p03	4_ENERGY_BLUE
+un_bunker,50,292,3	duplicate(Box#e152p00)	Machine Remains#e152p04	4_ENERGY_BLUE
+un_bunker,57,314,3	duplicate(Box#e152p00)	Machine Remains#e152p05	4_ENERGY_BLUE
+un_bunker,128,314,3	duplicate(Box#e152p00)	Machine Remains#e152p06	4_ENERGY_BLUE
+un_bunker,143,308,3	duplicate(Box#e152p00)	Machine Remains#e152p07	4_ENERGY_BLUE
+un_bunker,147,287,3	duplicate(Box#e152p00)	Machine Remains#e152p08	4_ENERGY_BLUE
+un_bunker,245,360,3	duplicate(Box#e152p00)	Thicket#e152p09	4_ENERGY_BLUE
+un_bunker,286,348,3	duplicate(Box#e152p00)	Thicket#e152p10	4_ENERGY_BLUE
+un_bunker,331,375,3	duplicate(Box#e152p00)	Thicket#e152p11	4_ENERGY_BLUE
+un_bunker,288,263,3	duplicate(Box#e152p00)	Document pile#e152p14	4_ENERGY_BLUE
+un_bunker,280,243,3	duplicate(Box#e152p00)	Document pile#e152p15	4_ENERGY_BLUE
+un_bunker,287,304,3	duplicate(Box#e152p00)	Organized food tray#e15	4_ENERGY_BLUE
+un_bunker,321,305,3	duplicate(Box#e152p00)	Organized food tray#e152	4_ENERGY_BLUE
+
+un_bunker,103,95,4	script	Mysterious Device#EP15.?_1	2_BOARD2,{
+	end;
+}
+un_bunker,102,161,4	duplicate(Mysterious Device#EP15.?_1)	Mysterious Device#EP15.?_2	2_BOARD2
+un_bunker,51,272,4	duplicate(Mysterious Device#EP15.?_1)	Mysterious Device#EP15.?_3	2_BOARD2
+un_bunker,295,234,4	duplicate(Mysterious Device#EP15.?_1)	Mysterious Device#EP15.?_4	2_BOARD2
+un_bunker,279,297,4	duplicate(Mysterious Device#EP15.?_1)	Mysterious Device#EP15.?_5	2_BOARD2
+
+//- Wandering Bard Quest
+verus03,129,21,5	script	Wandering Bard#ep15	1_M_BARD,{
+function checkstatusquest;
+
+	mes "[Wandering Bard]";
+	if (isbegin_quest(4295) == 2) {// Wandering Bard
+		mes "I've told you";
+		mes "everything I wanted to tell you.";
+		mes "I hope we'll meet again someplace else.";
+		next;
+		mes "[Wandering Bard]";
+		mes "Until then,";
+		mes "stay safe.";
+		mes "I'm leaving for someplace else";
+		mes "in search of new stories to tell.";
+		mes "You'll be on your way, I'll be on my.";
+		close;
+	}
+
+	switch( checkquest(4296,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "I don't have a story to tell you at this moment.";
+		mes "I'm trying to rest my mind.";
+		mes "Why don't you go";
+		mes "rest for a while?";
+		close;
+	case 2:
+		erasequest 4296;
+		break;
+	}
+
+	setarray .@quest_id[0],
+		4297,	// Bard's Story: Some Corporation
+		4298,	// Bard's Story: The President
+		4299,	// Bard's Story: a Scholar in Juno
+		4300,	// Bard's Story: a Mad Scientist
+		4301,	// Bard's Story: Hugel
+		4302;	// Bard's Story: Odin Temple
+	.@size_quest_id = getarraysize(.@quest_id);
+
+	for ( .@i = 0; .@i < .@size_quest_id; .@i++ ) {
+		switch( isbegin_quest(.@quest_id[.@i]) ) {
+		case 0:
+			.@quest_undone[.@size_undone] = .@quest_id[.@i];
+			.@size_undone++;
+			continue;
+		case 1:
+			break;
+		case 2:
+			.@total += 2;
+			continue;
+		}
+		break;
+	}
+
+	if (.@i < .@size_quest_id) {
+		mes "Adventurer,";
+		mes "what story";
+		mes "did you bring me?";
+		next;
+		if (checkstatusquest(.@quest_id[.@i]) == 0) {
+			mes "^ff0000You have not yet met the requirements to complete the quest.^000000";
+			next;
+			if (select( "Return the quest.", "End conversation." ) == 2) {
+				mes "[Wandering Bard]";
+				mes "Please be safe.";
+				close;
+			}
+			mes "[Wandering Bard]";
+			mes "Maybe you're not ready";
+			mes "for that task just yet.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Come back later,";
+			mes "and I'll have a new story ready for you.";
+			mes "Bye for now.";
+			erasequest .@quest_id[.@i];
+			wandering_bard_quest++;
+			if (wandering_bard_quest >= 2) {
+				setquest 4296;// Take a Break
+				wandering_bard_quest = 0;
+			}
+			close;
+		}
+		mes "- Tell your story. -";
+		next;
+		mes "[Wandering Bard]";
+		switch( .@quest_id[.@i] ) {
+		case 4297:
+			mes "Maybe there's";
+			mes "more to it than that,";
+			mes "but we wouldn't know";
+			mes "because it's too late.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Your story dampens my mood,";
+			mes "and I wasn't in a good mood to begin with.";
+			mes "Well, at least I'm glad to see you back in one piece.";
+			break;
+		case 4298:
+			mes "Schwarzwald seems to be";
+			mes "split into";
+			mes "various political factions.";
+			mes "Political intrigues don't mean much";
+			mes "to wandering artists like me.";
+			next;
+			mes "[Wandering Bard]";
+			mes "I'm proud of you, though:";
+			mes "you've become acquainted with the president";
+			mes "and carried out a secret mission for him.";
+			mes "And I'm also glad to see you back in one piece.";
+			break;
+		case 4299:
+			mes "Scholars are such a strange kind.";
+			mes "I can't fathom what joy they'd feel";
+			mes "in studying such a thing.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Of course, to some people";
+			mes "my search for new stories";
+			mes "sounds meaningless.";
+			mes "I don't care, so long as I have";
+			mes "curious adventurers like you with whom to pass the time.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Welcome back.";
+			mes "I really enjoyed this story of yours.";
+			break;
+		case 4300:
+			mes "Only the gods know";
+			mes "who's right";
+			mes "and who's wrong.";
+			mes "I believe that applies to those scientists as well.";
+			next;
+			mes "[Wandering Bard]";
+			mes "If you ask me,";
+			mes "I can't say which side is right or wrong.";
+			mes "Can you?";
+			next;
+			mes "[Wandering Bard]";
+			mes "Welcome back.";
+			mes "I really enjoyed this story of yours.";
+			break;
+		case 4301:
+			mes "The advancement of technology doesn't always mean";
+			mes "the destruction of the old.";
+			mes "Technology cannot advance by itself.";
+			mes "Neither can medical science";
+			mes "and life research.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Um,";
+			mes "at least that's what I've heard.";
+			mes "...Just forget I said that.";
+			next;
+			mes "[Wandering Bard]";
+			mes "The general populace";
+			mes "only likes to hear about happy endings,";
+			mes "so let's focus on";
+			mes "the positive aspects of the story,";
+			next;
+			mes "[Wandering Bard]";
+			mes "Welcome back.";
+			mes "instead of";
+			mes "the dark,";
+			mes "depressing ones.";
+			break;
+		case 4302:
+			mes "I'm not sure if the same thing";
+			mes "won't happen";
+			mes "in this excavation site";
+			mes "because even I can sense a dangerous shadow looming over it.";
+			next;
+			mes "[Wandering Bard]";
+			mes "And about the last person you've met,";
+			mes "um...";
+			next;
+			mes "[Wandering Bard]";
+			mes "Never mind. I shouldn't even have said that.";
+			next;
+			mes "[Wandering Bard]";
+			mes "We can only watch";
+			mes "the factions conspire against each other";
+			mes "and hope for";
+			mes "the best.";
+			mes "As a bard, my duty is simply to spread the word to the public.";
+			next;
+			mes "[Wandering Bard]";
+			mes "I'm glad to see you back in one piece.";
+			mes "And thank you";
+			mes "for such a valuable story.";
+			break;
+		}
+		next;
+		mes "[Wandering Bard]";
+		if (.@total == 10) {
+			mes "Sigh, I hate to say this,";
+			mes "but this will have to be the last time";
+			mes "we share stories with each other.";
+			mes "Thank you for telling me all those interesting tales.";
+			next;
+			mes "[Wandering Bard]";
+			mes "Please take this.";
+			mes "I hope";
+			mes "it'll be useful for you.";
+			mes "I hope we'll meet again someplace else.";
+			completequest .@quest_id[.@i];
+			setquest 4295;// Wandering Bard
+			completequest 4295;
+			getitem 12263,5;// Comp_Battle_Manual
+			wandering_bard_quest = 0;
+			next;
+			mes "[Wandering Bard]";
+			mes "I have to leave";
+			mes "in search of new stories.";
+			mes "You'll be on your way, I'll be on my.";
+			mes "Be safe.";
+			close;
+		}
+		completequest .@quest_id[.@i];
+		setquest 4296;// Take a Break
+		wandering_bard_quest = 0;
+		mes "Please give me some time.";
+		mes "I want to make a new song";
+		mes "based on the story you've just told me.";
+		next;
+		mes "[Wandering Bard]";
+		mes "You should rest and regroup in the meantime.";
+		close;
+	}
+	.@r = rand(.@size_undone);
+	setquest .@quest_undone[.@r];
+	mes "Listen to my story.";
+	next;
+	mes "[Wandering Bard]";
+	switch( .@quest_undone[.@r] ) {
+	case 4297:
+		mes "In the Republic of Schwarzwald,";
+		mes "where science prevails over magic,";
+		mes "a giant corporation of men";
+		next;
+		mes "[Wandering Bard]";
+		mes "is rumored to conduct research";
+		mes "whose purpose is noble and questionable at the same time.";
+		mes "Do you know";
+		mes "what's going on behind the closed doors of the corporation?";
+		next;
+		mes "[Wandering Bard]";
+		mes "You should";
+		mes "look further into what that corporation is doing.";
+		mes "Please be careful.";
+		close;
+	case 4298:
+		mes "Do you know the president of";
+		mes "the Republic of Schwarzwald?";
+		mes "Usually, commoners like you and me";
+		mes "could never dream of meeting such a prominent figure,";
+		next;
+		mes "[Wandering Bard]";
+		mes "but rumor has it you can";
+		mes "if you can find his contact in Lighthalzen.";
+		mes "Not only can you meet the president,";
+		mes "but you can unlock some new adventure.";
+		next;
+		mes "[Wandering Bard]";
+		mes "Look for his contact,";
+		mes "and everything else will take care of itself.";
+		mes "Who knows?";
+		mes "The adventure of your life might await you.";
+		close;
+	case 4299:
+		mes "I wonder where all these researchers";
+		mes "have come from.";
+		mes "They must be";
+		mes "from all over the globe,";
+		mes "seeking the thrills of discovering the unknown.";
+		next;
+		mes "[Wandering Bard]";
+		mes "I think the most daring kind of people are";
+		mes "scholars and researchers,";
+		mes "like those at the Juno Library...";
+		next;
+		mes "[Wandering Bard]";
+		mes "Oh, speaking of the Juno Library,";
+		mes "I know there's a scholar";
+		mes "who does the same kind of research,";
+		mes "you know,";
+		mes "looking at odd-looking things all day.";
+		next;
+		mes "[Wandering Bard]";
+		mes "You should";
+		mes "talk to that scholar.";
+		mes "He may open your eyes to a whole new world.";
+		close;
+	case 4300:
+		mes "Are these people";
+		mes "helping each other?";
+		next;
+		mes "[Wandering Bard]";
+		mes "Rumor has it there's a mad scientist";
+		mes "in Juno, and a group of people are";
+		mes "trying to thwart his dangerous research.";
+		next;
+		mes "[Wandering Bard]";
+		mes "I'd say the statement is biased.";
+		mes "Maybe the scientist is sound,";
+		mes "and those people are dangerous.";
+		mes "Who knows? I would steer clear of both of them, though, if I were you.";
+		close;
+	case 4301:
+		mes "Scholars. Where do they draw the line at their research?";
+		mes "Drifters like you and me";
+		mes "have no care for the world, and I'm glad for that.";
+		next;
+		mes "[Wandering Bard]";
+		mes "In Hugel, there's a scholar";
+		mes "who's rumored to be obsessed with a dangerous experiment.";
+		mes "I want you to go find out";
+		mes "what it is he's after:";
+		mes "happiness or hollow ambition.";
+		close;
+	case 4302:
+		mes "I've seen the same scenery";
+		mes "a long time ago,";
+		mes "when Odin Temple";
+		mes "was first discovered.";
+		next;
+		mes "[Wandering Bard]";
+		mes "Oh, that reminds me";
+		mes "of the story about";
+		mes "the two--no, three people related to Odin Temple.";
+		next;
+		mes "[Wandering Bard]";
+		mes "I wonder if Hugel still has the signboard";
+		mes "to recruit excavators.";
+		mes "Would you go check it out?";
+		mes "I want to hear the story behind those excavators when you get back.";
+		close;
+	}
+
+function checkstatusquest {
+	switch( getarg(0) ) {
+	case 4297:
+		if (lhz_curse >= 31)// Cursed Spirit Quest
+			return true;
+		break;
+	case 4298:
+		if (lhz_boss >= 43)// President Quest
+			return true;
+		break;
+	case 4299:
+		if (yuno_hist >= 10)// Juperos Ruins History Quest
+			return true;
+		break;
+	case 4300:
+		if (metto_q >= 9)// Metto Quest
+			return true;
+		break;
+	case 4301:
+		if (hg_bio >= 9)// Biological Weapon Quest
+			return true;
+		break;
+	case 4302:
+		if (hg_odin >= 60)// Odin Temple Excavation Quest
+			return true;
+		break;
+	}
+	return false;
+}
+}
+
+//- Police Quests
+verus04,133,212,4	script	Police Chief Kesler#EP15_1	2_M_SWORDMASTER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@playtime_5318 = checkquest(5318,PLAYTIME);
+	.@quest_5309 = isbegin_quest(5309);
+	mes "[Police Chief Kesler]";
+	if (VER_MAIN < 5 || .@playtime_5318 == 2) {
+		emotion ET_DELIGHT;
+		mes "Nice to meet you. I'm Kesler, chief of the Phantasmagorika Police.";
+	}
+	else {
+		emotion ET_PROFUSELY_SWEAT;
+		mes "Welcome to the Phantasmagorika Police.";
+	}
+	if (.@playtime_5318 == 2)
+		erasequest 5318;
+	next;
+	if (countitem(6753) > 0)// Token_Of_Destruction
+		.@string$ = "I brought Doom Tokens.";
+	else
+		.@string$ = "What should I beware while in Phantasmagorika";
+	switch( select( "The Phantasmagorika Police?", "Is there anything I can do to help?", .@string$, "Nothing." ) ) {
+	case 1:
+		emotion ET_SCRATCH;
+		mes "[Police Chief Kesler]";
+		mes "Oh, do you want to know about us at the ^4E9867Phantasmagorika Police^000000? Why, thank you. Not many people are interested in what we do.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "You may wonder why such a fresh site needs a policing unit. Well, there's a valid reason.";
+		next;
+		select("What's that?");
+		mes "[Police Chief Kesler]";
+		mes "Have you heard of the ^F8081EDoom Prayers^000000?";
+		next;
+		emotion ET_FRET;
+		mes "[Police Chief Kesler]";
+		mes "They're a cult group propagating the end of the world. They vandalize in the name of their god.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "It's only recent that they appeared in Phantasmagorika, but they've done so much damage already that scholars and mercenaries have organized this policing unit.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "The ^F8081EDoom Prayers^000000 are mainly sighted around the ^82ABE9Verus Central Plaza^000000. If you encounter them, feel free to teach them a lesson or two.";
+		next;
+		emotion ET_SMILE;
+		mes "[Police Chief Kesler]";
+		mes "Hah hah, we're short-staffed.";
+		close;
+	case 2:
+		mes "[Police Chief Kesler]";
+		if (BaseLevel < 140) {
+			mes "I understand your enthusiasm, but you should focus on your training for now.";
+			next;
+			emotion ET_SORRY;
+			mes "[Police Chief Kesler]";
+			mes "Phantasmagorika is more dangerous than you think.";
+			close;
+		}
+		if (.@playtime_5318 == 0 || .@playtime_5318 == 1) {
+			mes "Thank you for offering to help, but we can manage on our own.";
+			close;
+		}
+		if (.@quest_5309 != 1) {
+			if (.@quest_5309 == 0) {
+				emotion ET_HUK;
+				mes "I'm sorry, what did you say?";
+				next;
+				select("Is there anything I can do to help?");
+			}
+			mes "[Police Chief Kesler]";
+			mes "Wow, you're the first person to ever offer help. We're spread thin, dealing with the Doom Prayers and everything else at the same time.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "I haven't had time to hear about the work-related difficulties trat the members of my unit may be experiencing.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Could you make a tour around Phantasmagorika and talk to the police officers?";
+			next;
+			if (select( "Sure.", "Maybe later." ) == 2) {
+				emotion ET_CRY;
+				mes "[Police Chief Kesler]";
+				mes "Oh, I thought you wanted to help.";
+				close;
+			}
+			if (.@quest_5309 == 2)
+				erasequest 5309;
+			setquest 5309;
+			mes "[Police Chief Kesler]";
+			mes "Thank you.";
+			close;
+		}
+		if (isbegin_quest(5310) == 0 || isbegin_quest(5311) == 0 || isbegin_quest(5312) == 0 || isbegin_quest(5313) == 0) {
+			emotion ET_QUESTION;
+			mes "You haven't met with all the members.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Please come back when you have.";
+			close;
+		}
+		mes "You've met with all my members. Thank you.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "I'm glad none of them--Salgran, Gerev, Seiden, and Piffs--are having problems.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "Please take this small token of my appreciation.";
+		next;
+		completequest 5309;
+		for ( .@quest_id = 5310; .@quest_id <= 5313; .@quest_id++ )
+			erasequest .@quest_id;
+		for ( .@quest_id = 5314; .@quest_id <= 5317; .@quest_id++ ) {
+			if (isbegin_quest(.@quest_id) == 2) {
+				erasequest .@quest_id;
+				.@success++;
+			}
+		}
+		setquest 5318;// Come Back Tomorrow
+		getexp 200000 + (200000 * .@success),0;
+		mes "[Police Chief Kesler]";
+		mes "If you are not busy tomorrow, could you come back and help me again?";
+		close;
+	case 3:
+		if (isbegin_quest(5304) == 2) {
+			mes "[Police Chief Kesler]";
+			mes "Oh, didn't you bring some Doom Tokens a while ago?";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "I guess you haven't left? You must like being here. So do I. Hah hah hah!";
+			while(1) {
+				next;
+				switch( select( "What can I get in exchange for Doom", "Give Doom Tokens.", "Nothing." ) ) {
+				case 1:
+					mes "[Police Chief Kesler]";
+					mes "I remember telling you this when you first brought Doom Tokens, but all right, I don't mind telling you again.";
+					next;
+					mes "[Police Chief Kesler]";
+					mes "Doom Tokens are exchangeable with Packing Envelope that is often found in the excavation site.";
+					next;
+					mes "[Police Chief Kesler]";
+					mes "Scholars have found out the envelop activates various effects when opened.";
+					next;
+					mes "[Police Chief Kesler]";
+					mes "The duration of the effects is short, but it's still better than nothing.";
+					continue;
+				case 2:
+					.@amount = countitem(6753);// Token_Of_Destruction
+					delitem 6753, .@amount;
+					getitem 22611, .@amount;// Packed_Envelope
+					mes "[Police Chief Kesler]";
+					mes "You've brought " + .@amount + " Doom Tokens. I can give you " + .@amount + " Packing Envelopes.";
+					next;
+					mes "[Police Chief Kesler]";
+					mes "Thank you, and keep up the good work.";
+					close;
+				case 3:
+					emotion ET_SCRATCH;
+					mes "[Police Chief Kesler]";
+					mes "Um, didn't you say you had Doom Tokens?";
+					close;
+				}
+			}
+		}
+		if (countitem(6753) > 0) {// Token_Of_Destruction
+			emotion ET_HUK;
+			mes "[Police Chief Kesler]";
+			mes "Oh, the Doom Prayers carry this ^F8081EDoom Token^000000.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Where did you find this?";
+			next;
+			select("Tell him where you found it.");
+			emotion ET_THANKS;
+			mes "[Police Chief Kesler]";
+			mes "Thank you so much for helping us to maintain public peace.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "You deserve a reward, but I can't think of anything good.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Hm...";
+			next;
+			emotion ET_SURPRISE;
+			mes "[Police Chief Kesler]";
+			mes "Oh, I've got an idea! Bring me ^F8081EDoom Tokens^000000, and I'll exchange them with ^4E9867Packing Envelope^000000.";
+			next;
+			select("Packing Envelope?");
+			mes "[Police Chief Kesler]";
+			mes "It's an envelope often discovered in the excavation site.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Scholars have found out the envelope activates various effects when opened.";
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Would you like to exchange your Doom Tokens with Packing Envelope now? Or you can do it later.";
+			next;
+			if (select( "Exchange now.", "Do it later." ) == 2) {
+				mes "[Police Chief Kesler]";
+				mes "Sure, no problem. It's not like Doom Tokens have an expiration date.";
+			}
+			else {
+				.@amount = countitem(6753);// Token_Of_Destruction
+				delitem 6753, .@amount;
+				getitem 22611, .@amount;// Packed_Envelope
+				mes "[Police Chief Kesler]";
+				mes "In exchange for your " + .@amount + " Doom Tokens, I've given you " + .@amount + " Packing Envelopes.";
+			}
+			setquest 5304;// Police Chief Kesler
+			completequest 5304;
+			next;
+			mes "[Police Chief Kesler]";
+			mes "Thank you for your continue support in the subjugation of the Doom Prayers.";
+			close;
+		}
+		emotion ET_HUK;
+		mes "[Police Chief Kesler]";
+		mes "Oh, is this your first time in Phantasmagorika?";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "This site was only recently discovered, and therefore fairly safe. I can't think of anything you should be worried about...";
+		next;
+		emotion ET_HUK;
+		mes "[Police Chief Kesler]";
+		mes "Oh, strike that--there's one thing.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "This ^82ABE9Verus Excavation Site^000000 is safe, but if you're planning to move to the ^82ABE9Verus Central Plaza^000000, then make sure you're prepared for the worst.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "By the way the excavation of this site just has begun, and everything in it must be kept in place until the excavation is over.";
+		next;
+		emotion ET_FRET;
+		mes "[Police Chief Kesler]";
+		mes "But those Doom Payers are making it impossible. Bah! %$#@#$#@";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "I'm going bald, worrying over them so much. I didn't have much hair to begin with.";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "...";
+		next;
+		mes "[Police Chief Kesler]";
+		mes "Um, didn't mean to rant about my hair.";
+		next;
+		emotion ET_OK;
+		mes "[Police Chief Kesler]";
+		mes "Just be careful not to break anything that has been discovered in this site.";
+		close;
+	case 4:
+		emotion ET_STARE_ABOUT;
+		mes "[Police Chief Kesler]";
+		mes "This is the first thing I tell every new visitor: if you see the ^F8081EDoom Prayers^000000, don't hesitate to report to the nearest police station.";
+		close;
+	}
+}
+
+verus03,36,113,4	script	Police Officer Salgran#EP15	2_M_THIEFMASTER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@quest_5305 = isbegin_quest(5305);// Police Officer Salgran
+	.@quest_5309 = isbegin_quest(5309);// Police Chief's Request
+	.@quest_5310 = isbegin_quest(5310);// Salgran's Problem
+	.@quest_5314 = isbegin_quest(5314);// Salgran's Request
+	.@quest_5315 = isbegin_quest(5315);// Gerev's Request
+	.@quest_5316 = isbegin_quest(5316);// Seiden's Request
+	.@quest_5317 = isbegin_quest(5317);// Piffs's Request
+	.@playtime_5318 = checkquest(5318,PLAYTIME);
+
+	if (.@quest_5309 != 1) {
+		specialeffect EF_SLEEPATTACK;
+		mes "[Police Officer Salgran]";
+		mes "Zzz... Zzz...";
+		next;
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Police Officer Salgran]";
+		mes "Ch-Chief, I'm sorry!";
+		next;
+		mes "He's talking in his sleep.";
+		close;
+	}
+	if (.@quest_5315 == 1 || .@quest_5316 == 1 || .@quest_5317 == 1) {
+		mes "[Police Officer Salgran]";
+		mes "You're working a different sector at this moment. Come back when you're done there.";
+		close;
+	}
+	if (.@quest_5310 == 0 && .@playtime_5318 < 2) {
+		switch(.@quest_5314) {
+		case 0:
+			if (.@quest_5305 == 0) {
+				specialeffect EF_SLEEPATTACK;
+				select("Excuse me.");
+				emotion ET_HUK;
+				mes "[Police Officer Salgran]";
+				mes "Ch-Chief Kesler! I-I wasn't dozing off!";
+				next;
+				emotion ET_THINK;
+				mes "[Police Officer Salgran]";
+				mes "...";
+				next;
+				mes "[Police Officer Salgran]";
+				mes "Whew, you're not the Chief. Who are you?";
+				next;
+				mes "[" + strcharinfo(0) + "]";
+				mes "Your chief in the middle of Phantasmagorika sent me.";
+				next;
+				emotion ET_SEXY;
+				mes "[Police Officer Salgran]";
+				mes "Thank goodness, he didn't come himself. He must be busy, eh? Welcome. Could you help me out with something?";
+				next;
+				if (select( "Help.", "Maybe next time." ) == 2) {
+					emotion ET_OHNO;
+					if (isbegin_quest(5305) == 0) {
+						setquest 5305;// Police Officer Salgran
+						completequest 5305;// Police Officer Salgran
+					}
+					setquest 5310;// Salgran's Problem
+					mes "[Police Officer Salgran]";
+					mes "You must be busy. All right, then tell the Chief that everything's good in my sector.";
+					close;
+				}
+				mes "[Police Officer Salgran]";
+				mes "Thanks! I've been saddled with some tiresome duties, and I could use your help.";
+				next;
+				mes "[Police Officer Salgran]";
+				mes "You know the Doom Prayers are in our midst, don't you?";
+				next;
+				mes "[Police Officer Salgran]";
+				mes "They've been leaving illegal promotional leaflets all over the place, and whatever paper they used, it sticks to the ground like gum.";
+				next;
+				mes "[Police Officer Salgran]";
+				mes "I need to get rid of the leaflets before they permanently glue themselves.";
+				next;
+				mes "[Police Officer Salgran]";
+				mes "Could you get rid of them if you see them in the site? They're giving me a headache.";
+				next;
+				if (select( "OK", "Maybe next time." ) == 2) {
+					// inaccurate
+					emotion ET_OHNO;
+					if (isbegin_quest(5305) == 0) {
+						setquest 5305;// Police Officer Salgran
+						completequest 5305;// Police Officer Salgran
+					}
+					setquest 5310;// Salgran's Problem
+					mes "[Police Officer Salgran]";
+					mes "You must be busy. All right, then tell the Chief that everything's good in my sector.";
+					close;
+				}
+				setquest 5314;
+				mes "[Police Officer Salgran]";
+				mes "Thank you. Come back when you get rid of 10 Illegal Leaflets.";
+				close;
+			}
+			emotion ET_WRAP;
+			mes "[Police Officer Salgran]";
+			mes "Welcome back. Did the Chief send you again?";
+			next;
+			emotion ET_QUESTION;
+			mes "[Police Officer Salgran]";
+			mes "Great, can you help me again to get rid of those illegal leaflets?";
+			next;
+			if (select( "Help.", "Maybe next time." ) == 1) {
+				setquest 5314;
+				mes "[Police Officer Salgran]";
+				mes "Thank you. Come back when you get rid of 10 Illegal Leaflets.";
+				close;
+			}
+			setquest 5310;// Salgran's Problem
+			mes "[Police Officer Salgran]";
+			mes "You must be busy. All right, then tell the Chief that everything's good in my sector.";
+			close;
+		case 1:
+			mes "[Police Officer Salgran]";
+			mes "Wow, I thought you left a minute ago, and you're already back. Did you get rid of the Illegal Leaflets?";
+			next;
+			switch( select( "I did.", "Where can I find them?", "Can I not do this?", "Never mind." ) ) {
+			case 1:
+				mes "[Police Officer Salgran]";
+				if (checkquest(5314,HUNTING) == 2) {
+					mes "Oh, good job! The Chief never forgets a favor. He might reward you more handsomely depending on his mood.";
+					completequest 5314;
+					setquest 5310;
+					close;
+				}
+				emotion ET_OHNO;
+				mes "Hmpf, of course no one can be so quick. I asked you to get rid of at least 10 Illegal Leaflets.";
+				close;
+			case 2:
+				emotion ET_HUK;
+				mes "[Police Officer Salgran]";
+				mes "They're everywhere in Phantasmagorika. You can't not see them.";
+				next;
+				emotion ET_SCRATCH;
+				mes "[Police Officer Salgran]";
+				mes "Do you have some sort of vision problem? There's no way you can miss them.";
+				close;
+			case 3:
+				erasequest 5314;
+				if (isbegin_quest(5305) == 0) {
+					setquest 5305;
+					completequest 5305;
+				}
+				setquest 5310;
+				mes "[Police Officer Salgran]";
+				mes "I want to say no, but I can't force you. Just go tell the Chief that everything's good in my sector.";
+				close;
+			case 4:
+				emotion ET_SCRATCH;
+				mes "[Police Officer Salgran]";
+				mes "You're silly.";
+				close;
+			}
+		case 2:
+			break;
+		}
+	}
+	mes "[Police Officer Salgran]";
+	mes "Haven't you reported to the Captain yet? I told you everything's fine in my sector.";
+	close;
+}
+
+
+verus03,116,36,6	script	Police Officer Gerev#EP15_1D	4_M_ALCHE_A,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@quest_5306 = isbegin_quest(5306);// Police Officer Gerev
+	.@quest_5309 = isbegin_quest(5309);// Police Chief's Request
+	.@quest_5311 = isbegin_quest(5311);// Gerev's Problem
+	.@quest_5314 = isbegin_quest(5314);// Salgran's Request
+	.@quest_5315 = isbegin_quest(5315);// Gerev's Request
+	.@quest_5316 = isbegin_quest(5316);// Seiden's Request
+	.@quest_5317 = isbegin_quest(5317);// Piffs's Request
+	.@playtime_5318 = checkquest(5318,PLAYTIME);
+
+	mes "[Police Officer Gerev]";
+	if (.@quest_5309 != 1) {
+		emotion ET_OTL;
+		mes "Ugh, I can feel the stress building up inside... Argh, this place is giving me an ulcer!";
+		next;
+		mes "He's pulling his hair in agony.";
+		close;
+	}
+	if (.@quest_5314 == 1 || .@quest_5316 == 1 || .@quest_5317 == 1) {
+		emotion ET_PROFUSELY_SWEAT;
+		mes "Ugh, I'm having stomach cramps. Come back when you're done with your current assignment.";
+		close;
+	}
+	if (.@quest_5311 == 0 && .@playtime_5318 < 2) {
+		switch(.@quest_5315) {
+		case 0:
+			if (.@quest_5306 == 0) {
+				emotion ET_CONFUSE;
+				mes "Argh, where's my pen? I had it when I left the station. Did those robots steal it from me?";
+				next;
+				mes "[" + strcharinfo(0) + "]";
+				mes "Check behind your ear.";
+				next;
+				emotion ET_HUK;
+				mes "[Police Officer Gerev]";
+				mes "Err? I don't remember putting it there.";
+				next;
+				emotion ET_QUESTION;
+				mes "[Police Officer Gerev]";
+				mes "Oops, sorry. How may I help you?";
+				next;
+				mes "[" + strcharinfo(0) + "]";
+				mes "Your chief in the middle of Phantasmagorika sent me.";
+				next;
+				emotion ET_FRET;
+				mes "[Police Officer Gerev]";
+				mes "Ah, Chief Kesler sent you. If I didn't know him, I'd have thought he was too busy to come see me. I bet I'm busier than him, though.";
+				next;
+				if (select( "I can help.", "Sorry I can't be of help." ) == 2) {
+					if (isbegin_quest(5306) == 0) {
+						setquest 5306;
+						completequest 5306;
+					}
+					setquest 5311;// Gerev's Problem
+					mes "[Police Officer Gerev]";
+					mes "You're willing to help the Chief, but not me. Why not because I'm not a chief?";
+					next;
+					emotion ET_STARE;
+					mes "[Police Officer Gerev]";
+					mes "*Snort* Just go tell Chief Kesler everything's quiet in my sector.";
+					close;
+				}
+				emotion ET_BIGTHROB;
+				mes "[Police Officer Gerev]";
+				mes "Are you sure? Because I really hate to be disappointed.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "As you know, the Doom Prayers are among us. Grr, just thinking about them makes me grind me teeth.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "Yesterday I walked over one of their traps and sprained my ankle,";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "on top of everything else that's happened to me.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "Sigh, could you disarm their traps?";
+				next;
+				if (select( "Sure thing.", "Maybe next time." ) == 2) {
+					emotion ET_FRET;
+					if (isbegin_quest(5306) == 0) {
+						setquest 5306;
+						completequest 5306;
+					}
+					setquest 5311;
+					mes "[Police Officer Gerev]";
+					mes "*Snort* I knew it. Just go tell Chief Kesler everything's quiet in my sector.";
+					close;
+				}
+				setquest 5315;
+				mes "[Police Officer Gerev]";
+				mes "Thank you. Please disarm 10 traps installed in Phantasmagorika.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "I appreciate it if you can get rid of those in my vicinity first.";
+				close;
+			}
+			mes "Hello again. Did the Chief send you?";
+			next;
+			mes "[Police Officer Gerev]";
+			mes "If you're not busy, could you disarm the Doom Prayers' traps scattered across Phantasmagorika?";
+			next;
+			if (select( "Sure.", "Maybe next time." ) == 1) {
+				setquest 5315;
+				trap_doom_prayers = 0;
+				mes "[Police Officer Gerev]";
+				mes "Thank you. Please disarm 10 traps installed in Phantasmagorika.";
+				close;
+			}
+			emotion ET_SCRATCH;
+			setquest 5311;
+			mes "[Police Officer Gerev]";
+			mes "You're just as busy, eh? No worries. I have other adventurers helping me. Please tell Chief Kesler everything's good in my sector.";
+			close;
+		case 1:
+			emotion ET_HUK;
+			mes "Wow, did you already disarm all the traps?";
+			next;
+			switch( select( "I did!", "Where are the traps?", "I have a more pressing matter at hand.", "Never mind." ) ) {
+			case 1:
+				if (trap_doom_prayers >= 10) {
+					completequest 5315;// Gerev's Request
+					setquest 5311;// Gerev's Problem
+					trap_doom_prayers = 0;
+					mes "[Police Officer Gerev]";
+					mes "Thank you. I feel much better, knowing there are fewer traps around me. Please tell Chief Kesler that everything's well in my sector.";
+					close;
+				}
+				emotion ET_OTL;
+				mes "[Police Officer Gerev]";
+				mes "I'm already on the verge of a breakdown. You don't have to push.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "You haven't finished disarming 10 traps. I can see one in front of me. Why don't you start with that?";
+				close;
+			case 2:
+				emotion ET_STARE;
+				mes "[Police Officer Gerev]";
+				mes "Oh no, haven't you seen any trap at all?";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "Look for ??? written on the ground. That's the Doom Prayers' signature.";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "I can see one right in front of me. Ugh, my stomach...";
+				next;
+				mes "[Police Officer Gerev]";
+				mes "I must be stressed out again. I feel my stomach tightening...";
+				close;
+			case 3:// can redo
+				erasequest 5315;// Gerev's Request
+				trap_doom_prayers = 0;
+				if (isbegin_quest(5306) == 0) {
+					setquest 5306;
+					completequest 5306;
+				}
+				close;
+			case 4:
+				emotion ET_OTL;
+				mes "[Police Officer Gerev]";
+				mes "...W-what? Ugh... M-my stomach...";
+				close;
+			}
+		case 2:
+			break;
+		}
+	}
+	emotion ET_DELIGHT;
+	mes "I feel much better now. Please tell Chief Kesler that everything's good in my sector.";
+	close;
+}
+
+verus03,81,241,6	script	Police Officer Seiden#EP15_1	4_M_ORIENT02,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@quest_5307 = isbegin_quest(5307);// Police Officer Seiden
+	.@quest_5309 = isbegin_quest(5309);// Police Chief's Request
+	.@quest_5312 = isbegin_quest(5312);// Seiden's Problem
+	.@quest_5314 = isbegin_quest(5314);// Salgran's Request
+	.@quest_5315 = isbegin_quest(5315);// Gerev's Request
+	.@quest_5316 = isbegin_quest(5316);// Seiden's Request
+	.@quest_5317 = isbegin_quest(5317);// Piffs's Request
+	.@playtime_5318 = checkquest(5318,PLAYTIME);
+
+	emotion ET_KIK;
+	mes "[Police Officer Seiden]";
+	if (.@quest_5309 != 1) {
+		mes "*Chuckle* I know who you are, but I don't want to talk to you.";
+		next;
+		mes "He's creepy.";
+		close;
+	}
+	if (.@quest_5314 == 1 || .@quest_5315 == 1 || .@quest_5317 == 1) {
+		mes "*Chuckle* Try one thing at a time, or Phantasmagorika's curse will be upon you.";
+		close;
+	}
+	if (.@quest_5312 == 0 && .@playtime_5318 < 2) {
+		switch(.@quest_5316) {
+		case 0:
+			if (.@quest_5307 == 0) {
+				mes "*Chuckle* The Chief sent you. I know because I've been waiting.";
+				next;
+				emotion ET_SURPRISE, playerattached();
+				mes "[" + strcharinfo(0) + "]";
+				mes "?!";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "Don't ask me how--I have my sources. Let's cut to the chase.";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "I could use your help, if you're willing and not busy.";
+				next;
+				if (select( "Sure.", "Not now." ) == 2) {
+					emotion ET_SCRATCH;
+					if (isbegin_quest(5307) == 0) {
+						setquest 5307;
+						completequest 5307;
+					}
+					setquest 5312;// Seiden's Problem
+					mes "[Police Officer Seiden]";
+					mes "I don't understand. My friend swore this never failed on people, hm... Oh well, tell Chief Kesler everything's good on my end.";
+					close;
+				}
+				emotion ET_KIK;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckle* I knew it. Ah, just forget I said that.";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "I'm having a bit of difficulty doing my job.";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "The Doom Prayers throw stones at us, and I'm worried they might hurt innocent people.";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "Could you pick up the stones you see in Phantasmagorika? 10 stones should suffice for now. Keep doing that and we'll get to all of them one day.";
+				next;
+				if (select( "I'll be back.", "Maybe next time." ) == 2) {
+					emotion ET_SCRATCH;
+					if (isbegin_quest(5307) == 0) {
+						setquest 5307;
+						completequest 5307;
+					}
+					setquest 5312;// Seiden's Problem
+					mes "[Police Officer Seiden]";
+					mes "I don't understand. My friend swore this never failed on people, hm... Oh well, tell Chief Kesler everything's good on my end.";
+					close;
+				}
+				emotion ET_KIK;
+				setquest 5316;
+				count_stone_seiden = 0;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckles* Pebbles don't count. Please bring 10 stones big enough to fit your hand.";
+				close;
+			}
+			mes "*Chuckle* I thought it's about time.";
+			next;
+			mes "[Police Officer Seiden]";
+			mes "*Chuckle* Please clear Phantasmagorika of stones, just like the last time.";
+			next;
+			if (select( "Sure.", "Maybe next time." ) == 1) {
+				setquest 5316;
+				count_stone_seiden = 0;
+				mes "[Police Officer Seiden]";
+				mes "Pebbles don't count. Please bring 10 stones big enough to fit your hand.";
+				close;
+			}
+			setquest 5312;
+			mes "[Police Officer Seiden]";
+			mes "You're still busy, huh? No worries. Just tell Chief Kesler that everything's quiet in my sector.";
+			close;
+		case 1:
+			mes "*Chuckle* Did you pick up all the stones?";
+			next;
+			switch( select( "I did.", "Where are they?", "I don't have time for them.", "Never mind." ) ) {
+			case 1:
+				emotion ET_KIK;
+				mes "[Police Officer Seiden]";
+				if (count_stone_seiden < 10) {
+					if (countitem(7049) < 10)
+						mes "*Chuckle* Where are they? Pick them up, or the spirits of the victims will haunt you forever.";
+					else
+						mes "*Chuckle* Look around--there are stones everywhere. Where did you find this stone, then?";
+					close;
+				}
+				if (countitem(7049) < 10) {
+					mes "*Chuckle* Where are the stones? Please bring them to me.";
+					close;
+				}
+				delitem 7049,10;// Stone
+				count_stone_seiden = 0;
+				completequest 5316;
+				if (isbegin_quest(5307) == 0) {
+					setquest 5307;
+					completequest 5307;
+				}
+				setquest 5312;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckle* Thank you. The spirits of the victims are appeased for now.";
+				close;
+			case 2:
+				emotion ET_KIK;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckle* Stones are everywhere.";
+				next;
+				mes "[Police Officer Seiden]";
+				mes "Search the ground. *Chuckle* Do I really have to tell you that?";
+				close;
+			case 3:
+				emotion ET_KIK;
+				erasequest 5316;
+				count_stone_seiden = 0;
+				if (isbegin_quest(5307) == 0) {
+					setquest 5307;
+					completequest 5307;
+				}
+				setquest 5312;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckle* Please leave your stones somewhere away from traffic. Beware the spirits of the victims!";
+				close;
+			case 4:
+				emotion ET_KIK;
+				mes "[Police Officer Seiden]";
+				mes "*Chuckle* Got it. Keep up the good work.";
+				close;
+			}
+		case 2:
+			break;
+		}
+	}
+	mes "*Chuckle* Be careful not to incur anyone's wrath.";
+	close;
+}
+
+verus03,127,36,4	script	???#EP15_1D_01	4_CRACK,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@quest_5315 = isbegin_quest(5315);// Gerev's Request
+	.@quest_5316 = isbegin_quest(5316);// Seiden's Request
+	if (.@quest_5315 == 1 || .@quest_5316 == 1) {
+		if (.@quest_5315 == 1) {
+			if (trap_doom_prayers >= 10) {
+				mes "You disarmed all the traps you had to.";
+				close;
+			}
+			emotion ET_SURPRISE;
+			mes "The ??? on the ground looks suspicious. What do you want to do?";
+			next;
+			if (select( "Examine.", "Leave it." ) == 2) {
+				mes "You've decided not to touch the suspicious object.";
+				close;
+			}
+			progressbar "00ff00",2;
+			if (rand(2))
+				mes "You've decided it's nothing.";
+			else {
+				mes "You disarmed all the traps of the Doom Prayers.";
+				trap_doom_prayers++;
+			}
+		}
+		else {
+			if (count_stone_seiden > 9) {
+				mes "You picked up 10 large stones. Take them to the police officer.";
+				close;
+			}
+			mes "You found a stone half-buried in the ground. Do you want to pick it up?";
+			next;
+			if (select( "Pick it up.", "Leave it." ) == 2) {
+				mes "You've decided to leave the pebble.";
+				close;
+			}
+			if (rand(2))
+				mes "This pebble is too small to inflict serious damage when thrown.";
+			else {
+				mes "You picked up a dangerously large stone.";
+				getitem 7049,1;
+				count_stone_seiden++;
+			}
+		}
+		initnpctimer;
+		disablenpc strnpcinfo(0);
+		close;
+	}
+	end;
+
+OnTimer30000:
+	stopnpctimer;
+	enablenpc strnpcinfo(0);
+	end;
+}
+verus03,119,17,4	duplicate(???#EP15_1D_01)	???#EP15_1D_02	4_CRACK
+verus03,163,33,4	duplicate(???#EP15_1D_01)	???#EP15_1D_03	4_CRACK
+verus03,207,47,4	duplicate(???#EP15_1D_01)	???#EP15_1D_04	4_CRACK
+verus03,225,245,4	duplicate(???#EP15_1D_01)	???#EP15_1D_05	4_CRACK
+verus03,169,181,4	duplicate(???#EP15_1D_01)	???#EP15_1D_06	4_CRACK
+verus03,122,139,4	duplicate(???#EP15_1D_01)	???#EP15_1D_07	4_CRACK
+verus03,80,230,4	duplicate(???#EP15_1D_01)	???#EP15_1D_08	4_CRACK
+verus03,42,105,4	duplicate(???#EP15_1D_01)	???#EP15_1D_09	4_CRACK
+verus03,99,235,4	duplicate(???#EP15_1D_01)	???#EP15_1D_10	4_CRACK
+verus03,81,207,4	duplicate(???#EP15_1D_01)	???#EP15_1D_11	4_CRACK
+verus03,226,243,4	duplicate(???#EP15_1D_01)	???#EP15_1D_12	4_CRACK
+verus03,148,144,4	duplicate(???#EP15_1D_01)	???#EP15_1D_13	4_CRACK
+verus03,74,44,4	duplicate(???#EP15_1D_01)	???#EP15_1D_14	4_CRACK
+verus03,20,54,4	duplicate(???#EP15_1D_01)	???#EP15_1D_15	4_CRACK
+verus03,74,212,4	duplicate(???#EP15_1D_01)	???#EP15_1D_16	4_CRACK
+verus03,42,47,4	duplicate(???#EP15_1D_01)	???#EP15_1D_17	4_CRACK
+verus03,80,195,4	duplicate(???#EP15_1D_01)	???#EP15_1D_18	4_CRACK
+verus03,134,72,4	duplicate(???#EP15_1D_01)	???#EP15_1D_19	4_CRACK
+verus03,45,45,4	duplicate(???#EP15_1D_01)	???#EP15_1D_20	4_CRACK
+verus03,115,235,4	duplicate(???#EP15_1D_01)	???#EP15_1D_21	4_CRACK
+verus03,76,194,4	duplicate(???#EP15_1D_01)	???#EP15_1D_22	4_CRACK
+verus03,166,32,4	duplicate(???#EP15_1D_01)	???#EP15_1D_23	4_CRACK
+verus03,121,42,4	duplicate(???#EP15_1D_01)	???#EP15_1D_24	4_CRACK
+verus03,141,36,4	duplicate(???#EP15_1D_01)	???#EP15_1D_25	4_CRACK
+
+verus04,202,258,4	script	Police Officer Piffs#EP15_1	4_M_SAGE_C,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	.@quest_5308 = isbegin_quest(5308);// Police Officer Piffs
+	.@quest_5309 = isbegin_quest(5309);// Police Chief's Request
+	.@quest_5313 = isbegin_quest(5313);// Piffs's Problem
+	.@quest_5314 = isbegin_quest(5314);// Salgran's Request
+	.@quest_5315 = isbegin_quest(5315);// Gerev's Request
+	.@quest_5316 = isbegin_quest(5316);// Seiden's Request
+	.@quest_5317 = isbegin_quest(5317);// Piffs's Request
+	.@playtime_5318 = checkquest(5318,PLAYTIME);
+
+	mes "[Police Officer Piffs]";
+	if (.@quest_5309 != 1) {
+		emotion ET_HUNGRY;
+		mes "*Yum Yum*";
+		mes "Um, this meat is delicious!";
+		next;
+		mes "He's chewing on meat.";
+		close;
+	}
+	if (.@quest_5314 == 1 || .@quest_5315 == 1 || .@quest_5316 == 1) {
+		emotion ET_BEST;
+		mes "Geez, are you working multiple sectors at the same time? You're superhuman.";
+		close;
+	}
+	if (.@quest_5313 == 0 && .@playtime_5318 < 2) {
+		switch(.@quest_5317) {
+		case 0:
+			if (.@quest_5308 == 0) {
+				emotion ET_HUNGRY;
+				mes "*Yum Yum* Delish!";
+				next;
+				mes "[" + strcharinfo(0) + "]";
+				mes "Excuse me.";
+				next;
+				emotion ET_HUK;
+				mes "[Police Officer Piffs]";
+				mes "Oops.";
+				mes "My apologies; I shouldn't have been snacking in public.";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "Hello. My name is Piffs, and I'm a Sage. I came to study Phantasmagorika.";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "Did the Chief send you? This is great.";
+				next;
+				emotion ET_QUESTION;
+				mes "[Police Officer Piffs]";
+				mes "I'm running short on some supplies, but I can't leave my post unattended. Can you help me?";
+				next;
+				if (select("Sure thing.", "Not now.") == 2) {
+					if (isbegin_quest(5308) == 0) {
+						setquest 5308;// Police Officer Piffs
+						completequest 5308;
+					}
+					setquest 5313;// Piffs's Problem
+					mes "[Police Officer Piffs]";
+					mes "I understand. If you change your mind, though, come back to me.";
+					close;
+				}
+				mes "[Police Officer Piffs]";
+				mes "Hah hah hah, thank you.";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "This area is fairly safe, but my colleagues stationed at the Plaza are prone to injury caused by the Doom Prayers.";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "I need to gather herbs for them, but like I said I can't leave my post unattended.";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "I know where some good herbs grow in this place. Could you gather them for me?";
+			}
+			else {
+				mes "Hah hah! Hello again. Did the Chief send you?";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "If you're not busy, I'd like to ask you to gather some more herbs. Is that okay?";
+			}
+			next;
+			if (select( "Sure.", "Maybe next time." ) == 1) {
+				setquest 5317;// Piffs's Request
+				mes "[Police Officer Piffs]";
+				mes "Thank you. Look around thickets, and you'll see some herbs. I won't need more than 10.";
+				close;
+			}
+			if (isbegin_quest(5308) == 0) {
+				setquest 5308;// Police Officer Piffs
+				completequest 5308;
+			}
+			setquest 5313;// Piffs's Problem
+			mes "[Police Officer Piffs]";
+			mes "I understand. If you change your mind, though, come back to me.";
+			close;
+		case 1:
+			emotion ET_QUESTION;
+			mes "Welcome back. Did you find all the herbs?";
+			next;
+			switch( select( "There you go.", "Where can I find them?", "I have a more pressing matter at hand.", "Never mind." ) ) {
+			case 1:
+				mes "[Police Officer Piffs]";
+				if (countitem(6754) > 9) {
+					delitem 6754,10;// Collected_Medicinal_Herbs
+					completequest 5317;
+					setquest 5313;
+					if (isbegin_quest(5308) == 0) {
+						setquest 5308;
+						completequest 5308;
+					}
+					mes "Thank you for helping me stock up on herbs.";
+					next;
+					mes "[Police Officer Piffs]";
+					mes "This herb smells good. I think it'll make good garnish for meat... *Ahem* I'm not saying I want to eat it.";
+				}
+				else {
+					mes "Where are the herbs you said you gathered?";
+					next;
+					mes "[Police Officer Piffs]";
+					mes "No, I don't eat herbs. I just want to keep them in stock for my colleagues.";
+				}
+				close;
+			case 2:
+				mes "[Police Officer Piffs]";
+				mes "Where can you find herbs?";
+				next;
+				mes "[Police Officer Piffs]";
+				mes "Look around thickets, and you'll see some herbs.";
+				close;
+			case 3:
+				changequest 5317,5313;
+				if (isbegin_quest(5308) == 0) {
+					setquest 5308;
+					completequest 5308;
+				}
+				if (countitem(6754))
+					delitem 6754, countitem(6754);// Collected_Medicinal_Herbs
+				mes "[Police Officer Piffs]";
+				mes "You can leave now. I'll send word to the Chief.";
+				close;
+			case 4:
+				mes "[Police Officer Piffs]";
+				mes "Don't forget I need 10 herbs.";
+				close;
+			}
+		case 2:
+			break;
+		}
+	}
+	emotion ET_BEST;
+	mes "Don't you worry. I'll keep this area safe.";
+	close;
+}
+
+verus04,187,219,4	script	Thicket#EP15_1D_01	4_CREEPER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to continue. -";
+		close;
+	}
+	if (isbegin_quest(5317) == 1) {// Piffs's Request
+		if (countitem(6754) > 9) {
+			mes "This kind of thicket grows everywhere in Phantasmagorika.";
+			close;
+		}
+		mes "This thicket looks like it's hiding some herbs. What do you want to do?";
+		next;
+		if (select( "Gather the herb.", "Leave it." ) == 2) {
+			mes "You've decided to forget about it.";
+			close;
+		}
+		if (rand(2)) {
+			progressbar "00ff00",2;
+			mes "No herbs were found in the thicket.";
+		}
+		else {
+			getitem 6754,1;// Collected_Medicinal_Herbs
+			mes "Gathered the herb.";
+		}
+		disablenpc strnpcinfo(0);
+		initnpctimer;
+		close;
+	}
+	end;
+
+OnTimer60000:
+	enablenpc strnpcinfo(0);
+	stopnpctimer;
+	end;
+}
+verus04,167,206,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_02	4_CREEPER
+verus04,198,198,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_03	4_CREEPER
+verus04,143,205,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_04	4_CREEPER
+verus04,125,265,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_05	4_CREEPER
+verus04,92,203,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_06	4_CREEPER
+verus04,97,204,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_07	4_CREEPER
+verus04,85,189,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_08	4_CREEPER
+verus04,64,191,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_09	4_CREEPER
+verus04,55,185,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_10	4_CREEPER
+verus04,42,185,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_11	4_CREEPER
+verus04,29,189,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_12	4_CREEPER
+verus04,40,223,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_13	4_CREEPER
+verus04,32,240,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_14	4_CREEPER
+verus04,27,243,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_15	4_CREEPER
+verus04,34,248,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_16	4_CREEPER
+verus04,52,251,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_17	4_CREEPER
+verus04,72,247,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_18	4_CREEPER
+verus04,75,243,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_19	4_CREEPER
+verus04,81,252,4	duplicate(Thicket#EP15_1D_01)	Thicket#EP15_1D_20	4_CREEPER
+
+//- New Power Source
+verus03,107,177,3	script	Luke Lapez#atnd09	4_M_EDEN_GUARDER,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	mes "[Luke]";
+	if (VER_MAIN < 14) {
+		cutin "looke_rapez04.bmp",0;
+		mes "Don't worry about him.";
+		mes "He knows what he's doing.";
+		close3;
+	}
+	if (VER_MAIN == 14) {
+		cutin "looke_rapez02.bmp",0;
+		mes "...?";
+		mes "Interesting.";
+		mes "He wants something ready to eat, juicy, refreshing, and clean-tasting?";
+		next;
+		cutin "looke_rapez03.bmp",0;
+		mes "[Luke]";
+		mes "Well, I've got an idea. Bring me some ingredients, and I'll cook something for you.";
+		mes "I'm pretty sure it'll fit the bill.";
+		next;
+		mes "[Luke]";
+		mes "The problem is";
+		mes "the ingredients are difficult to find.";
+		mes "I've learned this recipe while traveling across dimensions.";
+		next;
+		cutin "looke_rapez04.bmp",0;
+		mes "[Luke]";
+		mes "Well, it'll be you who has to find the ingredients:";
+		mes "2 Meats, 1 Mora Mandarin, and 1 Banana. Can you get them?";
+		next;
+		cutin "looke_rapez02.bmp",0;
+		mes "[Luke]";
+		mes "Some of the fruits grow near the ^4d4dffMisty Forest Labyrinth^000000.";
+		mes "You'll have to look hard for them.";
+		erasequest 7624;// In Search of a Delicacy
+		setquest 7625;// Count On Me
+		VER_MAIN = 15;
+		close3;
+	}
+	if (VER_MAIN == 15) {
+		if (countitem(517) < 2 || countitem(11520) < 1 || countitem(513) < 1) {
+			cutin "looke_rapez04.bmp",0;
+			mes "Did you forget the ingredients?";
+			mes "2 Meats, 1 Mora Mandarin, and 1 Banana.";
+			next;
+			mes "[Luke]";
+			mes "Some of the fruits grow near the ^4d4dffMisty Forest Labyrinth^000000.";
+			mes "...";
+			close3;
+		}
+		cutin "looke_rapez02.bmp",0;
+		mes "This should suffice.";
+		mes "I haven't cooked it in a while, but the recipe is in my head.";
+		next;
+		mes "[Luke]";
+		mes "Done.";
+		mes "This food should fit all the conditions you told me.";
+		next;
+		cutin "",255;
+		mes "Luke gave you Mora's specialty food, Beef Toast.";
+		mes "It perfectly fits everything Ian said he wanted.";
+		delitem 517,2;	// Meat
+		delitem 11520,1;// Mora_Mandarin
+		delitem 513,1;	// Banana
+		getitem 11519,1;// Beef_Toast
+		erasequest 7625;// Count On Me
+		setquest 7626;// Delicacy for Him
+		VER_MAIN = 16;
+		close;
+	}
+	if (VER_MAIN == 16) {
+		cutin "looke_rapez01.bmp",0;
+		mes "*Chuckle*";
+		mes "If you need more, it'll be easier to buy it from the Mora Village.";
+		mes "Do whatever it takes to win favor with that old man.";
+		next;
+		mes "[Luke]";
+		mes "Or you won't find the answer the Captain wanted.";
+		mes "Good luck.";
+		close3;
+	}
+	cutin "looke_rapez03.bmp",0;
+	mes "This place is boring, just like everywhere else.";
+	mes "Aren't there stronger monsters?";
+	next;
+	cutin "",255;
+	mes "[Lloyd]";
+	mes "Don't say that.";
+	mes "You'll jinx us.";
+	mes "I'm a brave Cat, but my claws can't even scratch those.";
+	next;
+	cutin "looke_rapez01.bmp",0;
+	mes "[Luke]";
+	mes "Alright, alright.";
+	mes "But don't worry.";
+	mes "I'm not stupid.";
+	mes "I'll never put my charges in danger.";
+	close3;
+}
+
+verus03,103,177,5	script	Machinist Lloyd#atnd09	4_M_BOSSCAT,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	mes "[Lloyd]";
+	if (VER_MAIN < 9) {
+		mes "You're";
+		mes "looking down your nose at me because I'm a Cat.";
+		mes "Tsk, tsk.";
+		mes "You Humans are so superficial.";
+		next;
+		mes "[Lloyd]";
+		mes "Just keep your distance and mind your own business.";
+		mes "You and I will be fine so long as you don't steal my hard work.";
+		close;
+	}
+	if (VER_MAIN == 9) {
+		mes "You're looking down your nose at me because I'm a Cat.";
+		next;
+		select("Are you Lloyd?");
+		mes "[Lloyd]";
+		mes "Yeah. What's up?";
+		mes "Huh? Aureth sent you?";
+		mes "To check up on my progress?";
+		next;
+		mes "[Lloyd]";
+		mes "Oh, I'm in trouble.";
+		mes "I must live up to his expectations,";
+		mes "but my research has been stagnant.";
+		next;
+		mes "[Lloyd]";
+		mes "Hey, could you help";
+		mes "me with something?";
+		next;
+		switch( select( "Sure.", "What is a Cat doing here?", "No." ) ) {
+		case 1:
+			break;
+		case 2:
+			mes "[Lloyd]";
+			mes "Unlike many from Malangdo Island, I've always been interested in new technologies and cultures.";
+			mes "I worked at companies, and I've learned alchemy.";
+			next;
+			mes "[Lloyd]";
+			mes "I came to Verus City when I heard the news of its discovery. I was told that I must be in an excavation team to be in the city.";
+			next;
+			mes "[Lloyd]";
+			mes "Aureth helped me to get in.";
+			mes "I'm also a member of the Arnard Excavation Team.";
+			next;
+			break;
+		case 3:
+			cutin "looke_rapez04.bmp",0;
+			mes "[Luke]";
+			mes "Sorry to interrupt,";
+			mes "but you're from the Eden Group to help the excavation team.";
+			next;
+			mes "[Luke]";
+			mes "Your job is to help Lloyd.";
+			mes "You can't say no.";
+			next;
+			cutin "",255;
+			mes "[Lloyd]";
+			mes "He's right!";
+			mes "You're obligated to help me with my research!";
+			next;
+			break;
+		}
+		mes "[Lloyd]";
+		mes "Let's cut to the chase.";
+		mes "Hey, Human help.";
+		mes "Get 10 empty glass bottles,";
+		mes "and collect condensed energy found around the remnants of robots.";
+		next;
+		mes "[Lloyd]";
+		mes "This place is littered with broken robots and machines.";
+		mes "Clouds of physical energy are discovered near them.";
+		next;
+		mes "[Lloyd]";
+		mes "Just bring empty bottles close to the energy, and it'll enter the bottles.";
+		mes "Bring me 10 bottles.";
+		next;
+		mes "[Lloyd]";
+		mes "I'll be waiting.";
+		erasequest 7620;// Young Blood?
+		setquest 7621;// Bottling the Energy
+		VER_MAIN = 10;
+		close;
+	}
+	if (VER_MAIN == 10) {
+		if (countitem(6756) < 10) {// Cohesive_Energy
+			mes "This place is littered with broken robots and machines.";
+			mes "Clouds of physical energy are discovered near them.";
+			next;
+			mes "[Lloyd]";
+			mes "Just bring empty bottles close to the energy, and it'll enter the bottles.";
+			mes "Bring me 10 bottles.";
+			next;
+			mes "[Lloyd]";
+			mes "You must be dumber than you look if you have to ask twice.";
+			close;
+		}
+		mes "Oh, this is enough.";
+		mes "You're good.";
+		mes "My estimation of you went up a notch.";
+		next;
+		mes "[Lloyd]";
+		mes "You've made my job easier.";
+		mes "Finally, I can be useful to Aureth.";
+		mes "If I find the cause of the condensation of energy and its possible applications, maybe";
+		next;
+		mes "[Lloyd]";
+		mes "Ian and I can reactivate the robots in this place.";
+		mes "That's what we've wanted all along.";
+		next;
+		mes "[Lloyd]";
+		mes "Tell Aureth I'm making progress.";
+		mes "Good job, Human.";
+		mes "I'll look forward to using your service again.";
+		delitem 6756,10;// Cohesive_Energy
+		erasequest 7621;// Bottling the Energy
+		setquest 7622;// Good News!
+		VER_MAIN = 11;
+		close;
+	}
+	if (VER_MAIN > 10 && VER_MAIN < 17) {
+		mes "Soon I'll need your service on a daily basis.";
+		mes "Don't fret and take one for the team.";
+		close;
+	}
+	switch( checkquest(7629,PLAYTIME) ) {
+	case -1:
+		if (isbegin_quest(7628) == 0) {
+			mes "You know the drill: collect condensed energy.";
+			mes "You'll do that for me, won't you?";
+			next;
+			if (select( "Sure.","Decline." ) == 2) {
+				mes "[Lloyd]";
+				mes "Why, do you have something else to do?";
+				mes "All right then,";
+				mes "I'll ask Luke to take me around.";
+				next;
+				cutin "looke_rapez01.bmp",0;
+				mes "[Luke]";
+				mes "I thought you'd never ask!";
+				mes "I've been itching for some action.";
+				close3;
+			}
+			mes "[Lloyd]";
+			mes "All you have to do is collect energy that naturally gathers around the remnants of robots and machines.";
+			mes "I need 10 bottles every day.";
+			setquest 7628;// New Power Source
+			close;
+		}
+		if (countitem(6756) < 10) {
+			mes "All you have to do is collect energy that naturally gathers around the remnants of robots and machines.";
+			mes "I need 10 bottles every day.";
+			close;
+		}
+		mes "I think I like you!";
+		mes "Not as much as Aureth and Luke, though.";
+		mes "All right, I'll make good use of this energy.";
+		next;
+		mes "[Lloyd]";
+		mes "Come back tomorrow.";
+		mes "Well, you might as well come back every day at this time.";
+		mes "You can't say no.";
+		mes "I need you.";
+		delitem 6756,10;// Cohesive_Energy
+		changequest 7628,7629;// Tomorrow for Tomorrow's Energy
+		getexp 150000,1000000;
+		close;
+	case 0:
+	case 1:
+		mes "I'm analyzing the collected energy.";
+		mes "...";
+		next;
+		mes "[Lloyd]";
+		mes "Are you dense?";
+		mes "That means I want to be left alone!";
+		close;
+	case 2:
+		erasequest 7629;
+		mes "Hm, maybe I need to find a special storage method.";
+		mes "The energy dissipates so easily.";
+		next;
+		mes "[Lloyd]";
+		mes "I'll need more bottles of the energy.";
+		mes "How are you?";
+		mes "Are you ready to take one for the team?";
+		close;
+	}
+}
+verus03,127,145,0	script	Machine Remnant#atnd01	4_ENERGY_RED,{
+	if (checkweight(1301,1) == 0) {
+		mes "- You are carrying too many items to proceed with the quest. -";
+		close;
+	}
+	if (isbegin_quest(7628) == 0 && VER_MAIN != 10) {
+		mes "You don't have to collect more energy at this moment.";
+		close;
+	}
+	if (countitem(6756) > 9)// Cohesive_Energy
+		mes "You have enough ^4d4dffCondensed Energy^000000.";
+	else if (countitem(713) < 1)
+		mes "^4d4dffEmpty Bottle^000000 is required to collect Condensed Energy.";
+	else {
+		mes "A thick cloud of energy is visible between the broken pieces of metal.";
+		mes "Bring an empty bottle close to the waving edges of the cloud to collect the energy.";
+		next;
+		progressbar "00ff00",3;
+		delitem 713,1;// Empty Bottle
+		getitem 6756,1;// Cohesive_Energy
+		mes "Collected Condensed Energy!";
+		initnpctimer;
+		hideonnpc strnpcinfo(0);
+	}
+	close;
+
+OnTimer30000:
+	stopnpctimer;
+	hideoffnpc strnpcinfo(0);
+	end;
+}
+verus03,84,152,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd02	4_ENERGY_RED
+verus03,104,181,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd03	4_ENERGY_RED
+verus03,204,202,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd04	4_ENERGY_RED
+verus03,219,199,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd05	4_ENERGY_RED
+verus03,260,194,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd06	4_ENERGY_RED
+verus03,198,181,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd07	4_ENERGY_RED
+verus03,207,115,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd08	4_ENERGY_RED
+verus03,54,78,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd09	4_ENERGY_RED
+verus03,24,74,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd10	4_ENERGY_RED
+verus03,41,121,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd11	4_ENERGY_RED
+verus03,62,120,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd12	4_ENERGY_RED
+verus03,44,195,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd13	4_ENERGY_RED
+verus03,124,61,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd14	4_ENERGY_RED
+verus03,168,229,3	duplicate(Machine Remnant#atnd01)	Machine Remnant#atnd15	4_ENERGY_RED
+
+
+//- Krotzel's Request
+verus02,79,31,4	script	Krotzel#1	4_F_HUWOMAN,{
+	if (VER_MAIN < 19)
+		end;
+	mes "[Krotzel]";
+	switch(VER_REPORTER) {
+	case 0:
+		mes "I am Monthly Brigan's senior reporter Krotzel! As this place is revealed to the many, many Adventurers are gathering here.";
+		next;
+		mes "[Krotzel]";
+		mes "Not a lot of information has been relayed to general Adventurers. So we are interviewing Adventurers ourselves! Doing the legwork and gathering information.";
+		next;
+		mes "[Krotzel]";
+		mes "Please give us good information if you have it. If it is a good piece of info we can give you a small reward.";
+		next;
+		mes "[Krotzel]";
+		mes "Who are we? We are Monthly Brigan's Adventure team 2...";
+		next;
+		mes "[Krotzel]";
+		mes "...?";
+		next;
+		mes "[Krotzel]";
+		mes "Where did everybody go? Ha these pains in the butt! Adventure team 2 consists of two senior reporters, one veteran and one Probationary reporter for a total of four.";
+		next;
+		mes "[Krotzel]";
+		mes "I am in charge of interviews and arranging stories and my colleague is photographs. Veteran senior acts as a guide. As a magazine specializing in Adventure we go to cover dangerous places a lot.";
+		next;
+		mes "[Krotzel]";
+		mes "While I am not completely lacking combat experience my forte is reporting! But where did everybody really go? One might think we're on a picnic!";
+		VER_REPORTER = 1;
+		close;
+	case 1:
+		mes "I am most worried about the Probationary member. He is still new so won't know anything. It is highly possible he followed the veteran senior. If it is okay, can you find him?";
+		next;
+		if (select( "Look for Probationary reporter", "Too busy" ) == 1) {
+			mes "[Krotzel]";
+			mes "Thank you so much. If he followed the veteran senior he might have gone to the ruined area. I saw his limpid eyes looking at the senior.";
+			next;
+			mes "[Krotzel]";
+			mes "I will look around in this area. You don't have to bring him. Even though it's the Probationary period he should know how to work by himself! Just let me know where he is when you find him.";
+			close2;
+			setquest 13195;// Monthly Brigan
+			VER_REPORTER = 2;
+			end;
+		}
+		close;
+	case 2:
+		mes "If she followed the veteran senior she might have gone to the ruined area. If you find her please let me know where she is.";
+		close;
+	case 3:
+		mes "As I thought. I am glad he is at least safe. If it's okay can you find my colleague Sunny Kim as well?";
+		next;
+		mes "[Krotzel]";
+		mes "We got along well since joining and eventually made a team together so I cannot help but be worried.";
+		next;
+		mes "[Krotzel]";
+		mes "She started singing about the architecture style as soon as she came here so she will be around this area.";
+		close2;
+		setquest 13196;// Monthly Brigan
+		VER_REPORTER = 4;
+		end;
+	case 4:
+		mes "We got along well since joining and eventually made a team together so I cannot help but be worried.";
+		next;
+		mes "[Krotzel]";
+		mes "He started to sing about the architecture style as soon as he came here so he will be around this area. I beg you.";
+		close;
+	case 5:
+		mes "I don't think it can be helped that people will worry. The last veteran reporter, Grizzly Grylls! Designated survival reporter!";
+		next;
+		mes "[Krotzel]";
+		mes "The nickname stuck because he survived anywhere but honestly he has no talent in combat. He is just lucky.";
+		next;
+		mes "[Krotzel]";
+		mes "Although I think he will be safe... can you find out where about he is? He probably ran to the ruins there...";
+		close2;
+		setquest 13197;// Monthly Brigan
+		VER_REPORTER = 6;
+		end;
+	case 6:
+		mes "Find me Grizzly Grylls, veteran reporter who can survive anywhere. I think he may be in the ruins to the east...";
+		next;
+		mes "[Krotzel]";
+		mes "Come to think of it he's similar to a guild master I interviewed a while back. The fact that he jumps into danger and comes back no matter what... Easier to avoid danger in the first place!";
+		close;
+	case 7:
+		mes "Good! So everybody is safe. Everybody will create a news item on their own, right?";
+		next;
+		mes "[Krotzel]";
+		mes "If they don't return tomorrow I should look for them.";
+		close2;
+		setquest 13199;// Krotzel's Request - Complete
+		getexp 1500000,1000000;
+		VER_REPORTER = 8;
+		end;
+	default:
+		break;
+	}
+	switch( checkquest(13199,PLAYTIME) ) {
+	case -1:
+	case 2:
+		if (isbegin_quest(13198) == 0) {// Monthly Brigan : Krotzel's Request
+			mes "You're the adventurer I met last time! Our team members still haven't returned so I am worried. If it's okay, can you check if they are safe?";
+			next;
+			switch( select( "Look for team members", "Right now is not a good time", "Converse" ) ) {
+			case 1:
+				mes "[Krotzel]";
+				mes "They all have a professional mindset so if they haven't finished working just see if they are safe.";
+				if (isbegin_quest(13198) > 0)
+					erasequest 13199;// Krotzel's Request - Complete
+				setquest 13195;// Monthly Brigan
+				setquest 13196;// Monthly Brigan
+				setquest 13197;// Monthly Brigan
+				setquest 13198;// Monthly Brigan : Krotzel's Request
+				close;
+			case 2:
+				mes "[Krotzel]";
+				mes "I will wait for you.";
+				close;
+			case 3:
+				mes "[Krotzel]";
+				mes "What is monthly Brigan? You know. Booty that can be obtained from monsters. It is not a jewel but it can provide quite an income. It is like sweet rain to an Adventurer.";
+				next;
+				mes "[Krotzel]";
+				mes "The boss' goal is that. Not the jackpot for an Adventurer but let's make a magazine that can provide sweet info! That's kind of the purpose apparently.";
+				close;
+			}
+		}
+		if (isbegin_quest(13195) > 0 || isbegin_quest(13196) > 0 || isbegin_quest(13197) > 0) {
+			mes "I should check if everybody is safe. Please find and see if all three are working hard.";
+			close;
+		}
+		mes "Well we are all safe today. Because we are Adventure team 2! Thank you for helping!";
+		close2;
+		erasequest 13198;// Monthly Brigan : Krotzel's Request
+		setquest 13199;// Krotzel's Request - Complete
+		getexp 1000000,500000;
+		end;
+	case 0:
+	case 1:
+		mes "It seems they are still working. I'm worried but I should be focusing on my work! We are the monthly Brigan Adventure team 2!";
+		close;
+	}
+}
+
+verus02,134,169,4	script	Photo Journalist#1	4_F_GON,{
+	if (VER_REPORTER < 4 || VER_REPORTER == 6 || VER_REPORTER == 7) {
+		mes "[Sunny Kim]";
+		mes "Monthly Brigan's senior photo journalist...Ahah! Monsters keep coming! It's dangerous!";
+		close;
+	}
+	if (VER_REPORTER == 4) {
+		mes "[Sunny Kim]";
+		mes "Krotzel? Ah you mean my partner. I still have to capture the cool architecture style and monsters. Tell her I am fine.";
+		close2;
+		erasequest 13196;// Monthly Brigan
+		VER_REPORTER = 5;
+		end;
+	}
+	if (VER_REPORTER == 5) {
+		mes "[Sunny Kim]";
+		mes "I thought I worked a lot on the ground but I am impressed! I will capture all of it in my palm!";
+		close;
+	}
+	switch( select( "Ask if safe", "Is there anything to help with?", "Converse" ) ) {
+	case 1:
+		mes "[Sunny Kim]";
+		if (isbegin_quest(13196) == 0) {
+			mes "How is this incredible architecture underground? The more I know the more curious I am.";
+			close;
+		}
+		mes "Of course! I have struggled a lot at the bottom! I am still taking photos. Tell her I will go when I am ready.";
+		close2;
+		erasequest 13196;
+		end;
+	case 2:
+		mes "[Sunny Kim]";
+		switch( checkquest(13203,PLAYTIME) ) {
+		case -1:
+		case 2:
+			switch( checkquest(13202,HUNTING) ) {
+			case -1:
+				mes "Do you have any thoughts on helping me as a righteous Adventurer?";
+				next;
+				if (select( "Help Photo Journalist Sunny Kim", "Decline" ) == 1) {
+					mes "[Sunny Kim]";
+					mes "Photographing cool structures, dynamic monsters and an Adventurer! I am taking photos with two themes but you can help me with one!";
+					next;
+					mes "[Sunny Kim]";
+					mes "Take care of the surrounding monsters for me. I will capture it in photos! Then I can photograph the area in peace!";
+					if (isbegin_quest(13203))
+						erasequest 13203;// Photo Journalist's Request - Complete
+					setquest 13202;// Monthly Brigan : Photo Journalist's Request
+				}
+				close;
+			case 0:
+			case 1:
+				mes "So you have to stand there and take care of the monsters! With dynamic and large movements if possible! Photographs need a proper concept.";
+				close;
+			case 2:
+				mes "Thanks to you, I think a great piece of work will be produced! I will go back to taking building photos.";
+				erasequest 13202;// Monthly Brigan : Photo Journalist's Request
+				setquest 13203;// Photo Journalist's Request - Complete
+				getexp 1000000,500000;
+				close;
+			}
+		case 0:
+		case 1:
+			mes "I took a lot of photos but I need time to confirm them. Some of them may be out of focus or I may need better photos, so next time.";
+			close;
+		}
+	case 3:
+		mes "[Sunny Kim]";
+		mes "I can't always take great photos. Photography is about instants. But you can save the moment for a long time. That is the beauty of photography!";
+		close;
+	}
+}
+
+verus01,41,103,4	script	Exhausted Journalist#1	52,{
+	if (VER_REPORTER < 6) {
+		mes "[Grylls]";
+		mes "Haha are you an Adventurer? I am Grizzly Grylls! A reporter who likes adventure.";
+		close;
+	}
+	if (VER_REPORTER == 6) {
+		mes "[Grylls]";
+		mes "Krotzel is concerned? Don't joke. I am veteran reporter Grizzly Grylls! I am enjoying an adventure! Tell her to not worry.";
+		close2;
+		erasequest 13197;// Monthly Brigan
+		VER_REPORTER = 7;
+		end;
+	}
+	if (VER_REPORTER == 7) {
+		mes "[Grylls]";
+		mes "Now I am confused whether I am a reporter or an adventurer. I even got the nickname survival king for being able to survive anywhere!";
+		close;
+	}
+	switch( select( "Ask if safe", "Is there anything to help with?", "Converse" ) ) {
+	case 1:
+		mes "[Grylls]";
+		if (isbegin_quest(13197) == 0) {
+			mes "Other than this place being more dangerous than I thought! I am hungry from diligently running away. I wish there was something to eat.";
+			close;
+		}
+		mes "I am enjoying an adventure! Tell her to not worry. I am a little hungry though...";
+		close2;
+		erasequest 13197;// Monthly Brigan
+		end;
+	case 2:
+		mes "[Grylls]";
+		switch( checkquest(13205,PLAYTIME) ) {
+		case -1:
+		case 2:
+			if (isbegin_quest(13204) == 0) {
+				mes "This isn't a big deal but do you have some time?";
+				next;
+				if (select( "Help survival reporter Grylls", "Decline" ) == 1) {
+					mes "[Grylls]";
+					mes "I haven't been able to eat at all from all the running away. All day! I noticed these bugs that eat metal.";
+					next;
+					mes "[Grylls]";
+					mes "I need to taste these bugs. I think it will be a good news story as well! The survival king's roasted metal bugs! That's the headline!";
+					setquest 13204;// Monthly Brigan : Grylls' Request
+				}
+				close;
+			}
+			if (countitem(11597) < 30) {
+				mes "A bug that gnaws away metal. I wonder how it tastes. I am so curious! This is why I can't quit being a reporter.";
+				close;
+			}
+			mes "I will cook now! I am salivating at the thought of the flavor!";
+			delitem 11597,30;// Metalbug
+			erasequest 13204;// Monthly Brigan : Grylls' Request
+			if (isbegin_quest(13205) > 0)
+				erasequest 13205;
+			setquest 13205;// Grylls' Request - Complete
+			getexp 1000000,500000;
+			close;
+		case 0:
+		case 1:
+			mes "I am a little busy cooking these bugs. You want a bite as well?";
+			close;
+		}
+	case 3:
+		mes "[Grylls]";
+		mes "Amazing that there are bugs that gnaw at metal! But they must be a good source of precious protein and high in nutrition!";
+		close;
+	}
+}
+
+verus01,172,146,4	script	Lame Journalist#1	4_M_HUBOY,{
+	if (VER_REPORTER < 2 || VER_REPORTER > 3 && VER_REPORTER < 8) {
+		mes "[Rookie Reporter]";
+		mes "Hello! I am Rookie reporter Trapp! Of Monthly Brigan's Adventure Team 2! I will cover the stories even through danger!";
+		close;
+	}
+	if (VER_REPORTER == 2) {
+		mes "[Rookie Reporter]";
+		mes "Hello! I am Trapp! The newest member of Monthly Brigan's Adventure team 2! My senior is worried? I will cover this story and return!";
+		close2;
+		erasequest 13195;// Monthly Brigan
+		VER_REPORTER = 3;
+		end;
+	}
+	if (VER_REPORTER == 3) {
+		mes "[Rookie Reporter]";
+		mes "Please tell her to not worry so much! I am a reporter too now! However if you have the time I would like you to help me with something. I mean later.";
+		close;
+	}
+	switch( select( "Ask if safe", "Is there anything to help with?", "Converse" ) ) {
+	case 1:
+		mes "[Rookie Reporter]";
+		if (isbegin_quest(13195) == 0) {
+			mes "Grylls is nicknamed survival king! Because he survives even in the most extreme areas! I want to become a cool reporter like that.";
+			close;
+		}
+		mes "She is really concerned about me! Tell her as soon as Grylls' work is done I will follow!";
+		close2;
+		erasequest 13195;// Monthly Brigan
+		end;
+	case 2:
+		mes "[Rookie Reporter]";
+		switch( checkquest(13201,PLAYTIME) ) {
+		case -1:
+		case 2:
+			switch( checkquest(13200,HUNTING) ) {
+			case -1:
+				mes "I mustered some courage and followed him but it was dangerous. If it's okay can you help me?";
+				next;
+				if (select( "Help Rookie reporter Trapp", "Decline" ) == 1) {
+					mes "[Rookie Reporter]";
+					mes "Please eradicate the monsters for me! I am trying my best but I am still not used to this. I beg of you.";
+					if (isbegin_quest(13201))
+						erasequest 13201;
+					setquest 13200;
+				}
+				close;
+			case 0:
+			case 1:
+				mes "Because of the nickname survival king, I thought Grizzly was good in combat but he is really just good at surviving. As soon as monsters showed up he disappeared like the wind.";
+				close;
+			case 2:
+				mes "Did you eradicate that much already? I am not done yet but thank you!";
+				erasequest 13200;// Monthly Brigan : Rookie's Request
+				setquest 13201;// Rookie's Request - Complete
+				getexp 1000000,500000;
+				close;
+			}
+		case 0:
+		case 1:
+			mes "I am fighting hard to become a specialized survival reporter! Even though...not now but please come back later, if that's okay with you!";
+			close;
+		}
+	case 3:
+		mes "[Rookie Reporter]";
+		mes "Realizing the world's truth and justice is the mission of the reporter! We have to protect those two despite any hardship and environment!";
+		close;
+	}
+}
+
+ver_eju,116,43,5	script	Rekenber Mercenary#atd01	4_GEFFEN_09,{
+	switch( rand(0,2) ) {
+		case 0: npctalk "They don't stop coming."; end;
+		case 1: npctalk "Please be careful."; end;
+		case 2: npctalk "..."; end;
+	}
+}
+
+ver_eju,125,40,1	script	Rekenber Mercenary#atd02	4_GEFFEN_03,{
+	switch( rand(0,2) ) {
+		case 0: npctalk "Where are reinforcements?"; end;
+		case 1: npctalk "Ugh, I really need a break."; end;
+		case 2: npctalk "Grr, these abominations!"; end;
+	}
+}
+
+ver_eju,117,35,7	script	Rekenber Mercenary#atd03	4_GEFFEN_08,{
+	switch( rand(0,2) ) {
+		case 0: npctalk "This is boring."; end;
+		case 1: npctalk "If you're an excavator, move through the tunnel."; end;
+		case 2: npctalk "You'd better watch out."; end;
+	}
+}
+
+ver_eju,15,151,3	script	Rekenber Guard#atd04	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	mes "Are you heading for Phantasmagorika?";
+	mes "It may be difficult to find. Let me give you some directions.";
+	next;
+	mes "[Rekenber Guard]";
+	mes "Follow the road all the way up, and then head southwest.";
+	mes "Let me mark the location on your mini-map.";
+	viewpoint 1,113,36,0,0x4DFF00;
+	next;
+	mes "[Rekenber Guard]";
+	mes "This place is fraught with formidable monsters, just like the other parts of the old Juperos.";
+	mes "Be safe in your travels.";
+	close;
+}
+
+juperos_01,48,243,5	script	Rekenber Guard#atd05	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	mes "Are you heading for Phantasmagorika?";
+	mes "It may be difficult to find. Let me give you some directions.";
+	next;
+	mes "[Rekenber Guard]";
+	mes "Go straight east, then follow the road south. You'll see a giant status at a corner.";
+	mes "Let me mark the location on your mini-map.";
+	viewpoint 1,242,87,0,0x4DFF00;
+	next;
+	mes "[Rekenber Guard]";
+	mes "Who knew there's a hidden place behind a statue? It was pure luck that we found it.";
+	mes "The road to the place is dangerous. Please have safe travel.";
+	close;
+}
+
+juperos_01,242,91,3	script	Rekenber Guard#atd06	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	mes "Are you a participant of the Phantasmagorika project?";
+	mes "This is the entrance to the newly discovered ruins in the east.";
+	next;
+	mes "[Rekenber Guard]";
+	mes "There's a guide on the other side of the entrance to guide you to the excavation site.";
+	mes "Please get in before some monsters pounce on you.";
+	next;
+	mes "[Rekenber Guard]";
+	mes "Oh, the other side of the entrance is teeming with aggressive robots.";
+	mes "You'd better brace yourself.";
+	close;
+
+OnInit:
+	questinfo 7610, QTYPE_QUEST, 1;
+	setquestinfo_level 7610, 140,175;
+	end;
+}
+
+yuno_fild07,211,179,5	script	Excavator Guide#atd07	4_M_LGTGUARD,{
+	mes "[Excavator Guide]";
+	mes "Are you a participant of the Phantasmagorika project?";
+	mes "As you know, you're at the entrance to Juperos.";
+	next;
+	mes "[Excavator Guide]";
+	mes "I'm here to guide you to the excavation site connected to the inside of Juperos.";
+	next;
+	mes "[Excavator Guide]";
+	mes "There are more guides spread across the inside,";
+	mes "so you can find them easily in case you get lost.";
+	next;
+	mes "[Excavator Guide]";
+	mes "Thank you for your contribution to the development of mankind. Good luck.";
+	close;
+
+OnInit:
+	questinfo 7610, QTYPE_QUEST, 1;
+	setquestinfo_level 7610, 140,175;
+	end;
+}
+
+verus03,55,245,3	script	Rekenber scholar#e152a0	2_M_MOLGENSTEIN,{
+	mes "[Rekenber scholar]";
+	mes "Hm.. This machine seems to be have been used for tracking something.";
+	mes "What do you think?";
+	next;
+	mes "[Rekenber Technician]";
+	mes "I think so as well.";
+	mes "This screen probably indicates the position or condition of what it is tracking or detecting.";
+	next;
+	mes "[Rekenber scholar]";
+	mes "Was it showing the situation of this closed area, perhaps?";
+	mes "It is presumed that it was impossible to directly enter based on the interior situation a while ago.";
+	next;
+	mes "[Rekenber Technician]";
+	mes "Probably so.";
+	mes "We can assume there was a large explosion just by observation with our eyes..";
+	mes "Then the reason for the people outside to install something like this ....";
+	next;
+	mes "[Rekenber scholar]";
+	mes "Yes. It is to find out the interior situation.";
+	mes "Maybe.. there was a big accident so it might be for searching for survivors..";
+	next;
+	mes "[Rekenber Technician]";
+	mes "Indeed. You are probably right.";
+	mes "And our role is to find out the secrets of what happened here.";
+	close;
+
+}
+verus03,55,243,3	duplicate(Rekenber scholar#e152a0)	Rekenber technician#e152a1	4_M_REPAIR
+
+verus03,59,250,7	script	Coral Excavation team C#e152	2_M_SAGE_B,{
+	mes "[Cecil]";
+	mes "Hey, Kobell. If we want to be chosen as an outstanding excavation team...!";
+	next;
+	mes "[Kobell]";
+	mes "To be..?";
+	next;
+	mes "[Cecil]";
+	mes "Is to figure out the identity of these unknown mechanical devices!";
+	next;
+	mes "[Kobell]";
+	mes "Whaat? How did this happen?";
+	mes "We didn't even major in engineering!";
+	next;
+	mes "[Cecil]";
+	mes "This place if full of machines! We can receive recognition like the Atnad excavators if we analyze them!";
+	next;
+	mes "[Kobell]";
+	mes "Aha! Indeed so.";
+	mes "But I think the Atnad excavators are around here...?";
+	next;
+	mes "[Cecil]";
+	mes "Hah! Our research goals cannot be discovered. This is a secret between you and I!";
+	next;
+	mes "[Kobell]";
+	mes "Let's do that~";
+	close;
+}
+verus03,61,250,7	duplicate(Coral Excavation team C#e152)	Coral Excavation team C#e152_	4_M_ALCHE_C
+
+verus04,1,1,0	script	#verus04_invade	HIDDEN_WARP_NPC,{
+	end;
+OnInit:
+	initnpctimer;
+	end;
+OnTimer1000:
+	mapannounce "verus04", "Police Officer Piffs: The Doom Prayers have stricken!", bc_map;
+    monster "verus04",0,0,"Ruin Grace Believer",3158,20, "#verus04_invade::OnMobDead";
+	end;
+OnTimer3000:
+	mapannounce "verus04", "Police Chief Kesler: Attention all police officers, stop the Doom Prayers before they destroy the excavation site!", bc_map;
+	end;
+OnTimer30000:
+	mapannounce "verus04", "Doom Prayers Executive: Destroy and bring the end of the world! Destroy and be saved!", bc_map;
+	end;
+OnTimer60000:
+	mapannounce "verus04", "Police Officer Piffs: Argh, Doom Prayers! Where do they keep coming from?!", bc_map;
+	end;
+OnTimer120000:
+	mapannounce "verus04", "Police Chief Kesler: Everyone, do not retreat! Don't let them destroy the excavation site!", bc_map;
+	end;
+OnTimer180000:
+	mapannounce "verus04", "Police Chief Kesler: Those Doom Prayers underestimate us.", bc_map;
+	end;
+OnTimer240000:
+	mapannounce "verus04", "Police Chief Kesler: Adventurers, the Doom Prayers have been driven out of Phantasmagorika. They're no longer a threat to your safety.", bc_map;
+	killmonster "verus04", "#verus04_invade::OnMobDead";
+	end;
+OnTimer3600000:
+	initnpctimer;
+	end;
+OnMobDead:
+	end;
+}
+
+verus04,194,165,5	script	Rekenber Guard#ver01	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	mes "Are you a member of the Excavation Group?";
+	mes "Our chairman has personally ordered us to see to your safety so that you can focus on your excavation work.";
+	close;
+}
+verus04,203,171,3	script	Rekenber Guard#ver02	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	mes "We're here to support your excavation of Verus City.";
+	mes "Let us know if you experience any problems.";
+	close;
+}
+verus04,171,267,3	script	Rekenber Guard#ver03	4_M_LGTGUARD2,{
+	mes "[Rekenber Guard]";
+	if (rand(2))// inaccurate
+		mes "I hate using portable johns, but my bladder can't seem to hold very much. What about you?";
+	else
+		mes "Ack! Shoo! Don't come close! I'm saving myself for my future bride!";
+	close;
+}
+verus04,218,217,5	script	Geologist#ver04	4_M_HUGRANFA,{
+	mes "[Geologist]";
+	mes "Hm, the building was crushed by the stone wall.";
+	mes "The rest is almost pulverized to dust.";
+	next;
+	mes "[Assistant]";
+	mes "Yes, Professor.";
+	next;
+	mes "[Geologist]";
+	mes "The terrain on which the village stands was formed in a different period, compared to this stone wall. At least that's my initial assessment.";
+	next;
+	mes "[Assistant]";
+	mes "Yes, Professor.";
+	next;
+	mes "[Geologist]";
+	mes "The underground village doesn't seem to be artificial, though I can't imagine how it can be formed naturally. What do you think?";
+	next;
+	mes "[Assistant]";
+	mes "Yes, Professor.";
+	next;
+	mes "[Geologist]";
+	mes "...Are you even listening to me?";
+	next;
+	mes "[Assistant]";
+	mes "Yes, Professor.";
+	next;
+	mes "[Geologist]";
+	mes "Sigh.";
+	mes "Let's go have lunch.";
+	next;
+	mes "[Assistant]";
+	mes "Yes, Professor!";
+	close;
+}
+verus04,217,216,5	duplicate(Geologist#ver04)	Student#ver05	4_M_HUMAN_01
+
+verus04,50,193,3	script	Scholar#ver06	4_M_HUMERCHANT,{
+	mes "[Scholar]";
+	mes "Schwarzwald may be the most scientifically advanced among the three states of Midgard, but it still doesn't hold a candle to this place.";
+	next;
+	mes "[Scholar]";
+	mes "The same goes for Juperos. If the scientific knowledge of this place passed down to Schwarzwald, it could have been much more powerful.";
+	next;
+	mes "[Scholar]";
+	mes "Of course, that's based on my theory that the residents of this place were also Schwarzwaldians.";
+	close;
+}
+verus04,127,243,3	script	Pierrot#ver07	4_M_PIERROT,{
+	mes "[Pierrot]";
+	mes "I feel like I'm going insane, stuck in this confined space.";
+	mes "Hey, how about I read your fortune for the day with my juggling balls?";
+	next;
+	if (select( "Sure.", "No, thanks." ) == 2)
+		close;
+	mes "[Pierrot]";
+	mes "Good, choose a color you like.";
+	mes "The color you choose will tell me your fortune.";
+	next;
+	.@s = select( "Red", "Blue", "Yellow", "Green" );
+	mes "[Pierrot]";
+	mes "Dum, dum, dum! Your fortune for the day!";
+	mes "Let's me get the fortune paper inside the ball...";
+	next;
+	mes "[Pierrot]";
+	mes "Today is...";
+	next;
+	mes "[Pierrot]";
+	switch(.@s) {
+	case 1:
+		mes "The same boring day, like yesterday and the day before.";
+		mes "Only positive thinking will get you out of this funk. Smile and be nice to others, and maybe Lady Luck will brighten your day.";
+		break;
+	case 2:
+		mes "Ack, you shouldn't have gotten out of bed. Wherever you go, trouble follows.";
+		mes "I strongly recommend you stay at the Shelter for the day. Sleep off bad luck.";
+		break;
+	case 3:
+		mes "Not a bad day, but you'll have to work to enjoy some good luck.";
+		mes "Go to the Excavation Site and dig up some dirt. You may find some treasure.";
+		break;
+	case 4:
+		mes "The luckiest day of your life! Wherever you go, you'll find wealth and friends.";
+		mes "Maybe you'll find some historic artifacts buried in this place. That'll be awesome, huh?";
+		break;
+	}
+	next;
+	mes "[Pierrot]";
+	mes "Do you like my reading? Or do you hate it?";
+	mes "Your future is pliable--you can shape it however you want.";
+	mes "Don't get too excited or depressed. Just stay focused on your goal.";
+	next;
+	mes "[Pierrot]";
+	mes "All right, come back if you want another reading.";
+	close;
+}
+
+verus04,180,209,3	script	Excavator#tre01	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "The owner of this house must have been an important figure in Verus City.";
+	mes "Piles of official documents are discovered in this room.";
+	next;
+	mes "[Excavator]";
+	mes "Most of the documents contain petty civil complaints, like water problems and neighbor disputes.";
+	mes "All the documents, however, contain the initials, OX. I don't know if they're of a name or an abbreviation of some sort.";
+	close;
+}
+verus04,202,181,3	script	#tre02	CLEAR_NPC,{
+	mes "- The building entrance shows distinctive wear and tear, indicating abuse by a steady stream of traffic. YHT and DO NOT YELL are written on the door. -";
+	close;
+}
+// tre03 ?
+verus04,121,188,3	script	Excavator#tre04	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "This building is fully furnished, yet there is no sign of habitation.";
+	mes "Maybe the owner lived somewhere else, like in a summer house or something.";
+	close;
+}
+verus04,119,177,3	script	#tre05	CLEAR_NPC,{
+	mes "- ZERT... is written on the door. The rest of the writing looks like it was scratched off with a stone.-";
+	close;
+}
+verus04,85,145,3	script	#tre06	CLEAR_NPC,{
+	mes "- +1 is written on the door. What could it mean? -";
+	close;
+}
+verus04,83,131,3	script	Excavator#tre07	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "The owner of this house must have been a dancer. Her wardrobe is full of glittery stage clothes.";
+	mes "Judging by their size, she must have been very tall for a woman. I wonder how she looked like.";
+	close;
+}
+verus04,71,118,3	script	#tre08	CLEAR_NPC,{
+	mes "- KDY is written on the door. Sooty streaks that spread outward from the inside to the entrance indicate frequent explosions. -";
+	close;
+}
+verus04,71,131,3	script	#tre09	CLEAR_NPC,{
+	mes "- KJH is written on the door. The entrance wall is dotted with tiny squares of paper containing time and numbers. -";
+	close;
+}
+verus04,71,145,3	script	#tre10	CLEAR_NPC,{
+	mes "- PKY is written on the door. Empty liquor bottles are littered around the house. -";
+	close;
+}
+verus04,39,123,3	script	#tre11	CLEAR_NPC,{
+	mes "- DGDG'S BOARD is written on the door. What does that mean? -";
+	close;
+}
+verus04,17,145,3	script	#tre12	CLEAR_NPC,{
+	mes "- THE SUNS is written on the door. -";
+	close;
+}
+verus04,16,166,5	script	Excavator#tre13	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "*Cough Cough* The owner of this house was a hoarder.";
+	mes "Lots of books. Lots of cat furballs. Lots of Assassin pictures. *Cough Cough*";
+	close;
+}
+verus04,118,159,5	script	Excavator#tre14	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "This house is full of red mushrooms. Are they edible? Why are they only found inside this house? Was the owner farming them?";
+	close;
+}
+verus04,123,143,3	script	#tre15	CLEAR_NPC,{
+	mes "- MARES is written on the door, along with various drawings that seem to symbolize pirates. -";
+	close;
+}
+verus04,72,168,3	script	#tre16	CLEAR_NPC,{
+	mes "- LMH is written on the door, along with a flurry of hearts drawn on an edge. -";
+	close;
+}
+verus04,91,168,3	script	#tre17	CLEAR_NPC,{
+	mes "- MISA is written on the door. Various toy weapons are littered around the building. -";
+	close;
+}
+verus04,50,197,3	script	Excavator#tre18	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "...";
+	next;
+	mes "[Excavator]";
+	mes "Various pictures are found in this house, all of them featuring the owner with different men.";
+	mes "I find that curious.";
+	close;
+}
+verus04,34,197,3	script	#tre19	CLEAR_NPC,{
+	mes "- ELTOHC is written on the door. In the center of the door is a W drawn in a circle. It could have been the owner's favorite letter. -";
+	close;
+}
+verus04,17,245,3	script	#tre20	CLEAR_NPC,{
+	mes "- LEONA'S BIRD HEAVEN is written on the door. Unsurprisingly, bird feathers are littered around the house. -";
+	close;
+}
+verus04,13,262,3	script	#tre21	CLEAR_NPC,{
+	mes "- KURAT is written on the door. The building wall is littered with hand-drawn skulls. -";
+	close;
+}
+verus04,28,262,3	script	#tre22	CLEAR_NPC,{
+	mes "- KSY is written on the door. A poster with The Performance of the Century! boldly printed across it is hung on the entrance wall. -";
+	close;
+}
+verus04,54,256,3	script	#tre23	CLEAR_NPC,{
+	mes "- BIBIC & MORZIP'S LOVE HOUSE is written on the door. A couple must have lived in this house. -";
+	close;
+}
+verus04,31,236,3	script	Excavator#tre24	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "The owner of this house must have been a collector of some sort. There are many pictures of women in strange-looking dresses.";
+	next;
+	mes "[Excavator]";
+	mes "Did you see the SKM drawn on the door? That reminds me of the other house with hearts drawn on its door.";
+	mes "I hope it's not one of those childish customs. You know, to mark someone as theirs.";
+	close;
+}
+verus04,62,230,3	script	#tre25	CLEAR_NPC,{
+	mes "- HDY is written on the door. -";
+	close;
+}
+verus04,80,230,3	script	#tre26	CLEAR_NPC,{
+	mes "- BRAN is written on the door. Rows of empty bottles are standing on a side of the house. -";
+	close;
+}
+verus04,79,265,3	script	#tre27	CLEAR_NPC,{
+	mes "- KYH is written on the door. This building is in better condition than the rest in the neighborhood.-";
+	close;
+}
+verus04,96,267,3	script	#tre28	CLEAR_NPC,{
+	mes "- YAOB is written on the door, along with drawings of round, furry animals. -";
+	close;
+}
+verus04,133,267,3	script	Excavator#tre29	4_M_HUMAN_01,{
+	mes "[Excavator]";
+	mes "This house is suspected to belong to a couple named SSUL and SINYC.";
+	mes "The house is filled with incredible things. Everything in it is just gorgeous.";
+	close;
+}
+verus04,152,267,3	script	#tre30	CLEAR_NPC,{
+	mes "- LMS is written on the door, along with Composition Specialist on an edge. -";
+	close;
+}
+verus04,168,267,3	script	#tre31	CLEAR_NPC,{
+	mes "- KJK is written on the door. -";
+	close;
+}
+verus04,190,265,3	script	#tre32	CLEAR_NPC,{
+	mes "- LJH is written on the door. The building wall is covered with numerous grocery store stickers. -";
+	close;
+}
+verus04,172,234,3	script	#tre33	CLEAR_NPC,{
+	mes "- YG is written on the door. A large picture of a smiling baby is visible through a window. -";
+	close;
+}
+verus04,204,235,3	script	#tre34	CLEAR_NPC,{
+	mes "- CHJ is written on the door. -";
+	close;
+}
+
+verus04,91,252,5	script	Archaeologist#tevt01	4_M_6THPRIN1,10,10,{
+	mes "[Archaeologist]";
+	mes "Sometimes, we gather around to talk.";
+	mes "Sharing information is a part of the job.";
+	close;
+
+OnTouch_:
+	if (.ontalk == 0) {
+		.ontalk = 1;
+		initnpctimer;
+	}
+	end;
+OnTimer2000:
+	npctalk "I suspect this Verus City serves a special purpose.", "Archaeologist#tevt01";
+	end;
+OnTimer7000:
+	npctalk "How did you know this place is called Verus?", "New Excavator#tevt03";
+	end;
+OnTimer12000:
+	npctalk "Oh, the name was found written on various milestones and walls at the Plaza.", "Civilization Researcher";
+	end;
+OnTimer17000:
+	npctalk "Verus City, Verus Town, Verus Plaza...", "Civilization Researcher";
+	end;
+OnTimer22000:
+	npctalk "There are two districts that remain unaccessible.", "Civilization Researcher";
+	end;
+OnTimer27000:
+	npctalk "Oh, those two that require permission. You know a lot.", "New Excavator#tevt03";
+	end;
+OnTimer32000:
+	npctalk "I've just figured that out from on a map I've found in a house in the Town.", "Historian#tevt02";
+	end;
+OnTimer37000:
+	npctalk "This place consists of four districts, and only the Town and the Plaza are explorable at this point.", "Archaeologist#tevt01";
+	end;
+OnTimer42000:
+	npctalk "We'd better work harder, or our exploration might become limited to this very area.", "Archaeologist#tevt01";
+	end;
+OnTimer47000:;
+	npctalk "If it really was a planned city, then what was the plan?", "New Excavator#tevt03";
+	end;
+OnTimer52000:
+	npctalk "Einbech is built purely for mining purposes. This city probably served a special purpose like that.", "Scientist#tevt05";
+	end;
+OnTimer57000:
+	npctalk "It must have something to do with technological research and experimentation.", "Scientist#tevt05";
+	end;
+OnTimer62000:
+	npctalk "I've deduced it from journals and diaries found in the Town.", "Historian#tevt02";
+	end;
+OnTimer67000:
+	npctalk "Most of these journals and diaries belonged to scholars and scientists.", "Historian#tevt02";
+	end;
+OnTimer72000:
+	npctalk "The point is this ancient civilization had some really advanced science.", "Civilization Researcher";
+	end;
+OnTimer77000:
+	npctalk "It may not be ancient at all. It could be something unfathomable.", "Civilization Researcher";
+	end;
+OnTimer82000:
+	npctalk "We're here to solve the mystery for a better future for mankind!", "New Excavator#tevt03";
+	end;
+OnTimer87000:
+	npctalk "*Snort* In the end Rekenber takes all.", "Scientist#tevt05";
+	end;
+OnTimer92000:
+	npctalk "But the core discoveries and the excavation efforts are shared by all the organizations involved.", "New Excavator#tevt03";
+	end;
+OnTimer97000:
+	npctalk "What we can do is just do what we can do best in the moment.", "Civilization Researcher";
+	end;
+OnTimer102000:
+	npctalk "But I can't help but think Rekenber has a hidden agenda. I'm not trying to be unappreciative, but...", "Historian#tevt02";
+	end;
+OnTimer107000:
+	npctalk "Let's focus on the present for now.", "Historian#tevt02";
+	end;
+OnTimer112000:
+	npctalk "Why don't we share all the information we find except for our individual research subjects?", "Archaeologist#tevt01";
+	end;
+OnTimer117000:
+	npctalk "I agree.", "Civilization Researcher";
+	end;
+OnTimer122000:
+	npctalk "All right.", "Scientist#tevt05";
+	end;
+OnTimer127000:
+	npctalk "Um, do you know what's for lunch today?", "Scientist#tevt05";
+	end;
+OnTimer130000:
+	npctalk "Um...", "Archaeologist#tevt01";
+	end;
+OnTimer135000:
+	npctalk "Some frozen food. I'm just going to eat the bread I saved yesterday.", "Civilization Researcher";
+	end;
+OnTimer140000:
+	npctalk "Sigh, Rekenber can be stingy if it wants to.", "Historian#tevt02";
+	end;
+OnTimer145000:
+	npctalk "Why? What's wrong with frozen food?", "New Excavator#tevt03";
+	end;
+OnTimer150000:
+	npctalk "Here, try mine.", "Historian#tevt02";
+	end;
+OnTimer155000:
+	npctalk "You can take mine, too.", "Archaeologist#tevt01";
+	end;
+OnTimer160000:
+	npctalk "Or mine.", "Scientist#tevt05";
+	end;
+OnTimer163000:
+	npctalk "...", "New Excavator#tevt03";
+	end;
+OnTimer168000:
+	npctalk "Um, aren't you guys hungry?", "New Excavator#tevt03";
+	end;
+OnTimer178000:
+	npctalk "Is it possible it's frozen because it tastes bad otherwise?", "New Excavator#tevt03";
+	.ontalk = 0;
+	stopnpctimer;
+	end;
+}
+
+verus04,89,251,5	script	Historian#tevt02	4_TOWER_07,{
+	mes "[Historian]";
+	mes "What's the hardest thing about my job?";
+	mes "When I'm forced to eat a terrible lunch provided by my sponsor.";
+	next;
+	mes "[Historian]";
+	mes "In fact, it's been that way since I arrived in Verus City.";
+	mes "Today was not an exception.";
+	close;
+}
+
+verus04,91,248,7	script	New Excavator#tevt03	4_TOWER_04,{
+	mes "[New Excavator]";
+	mes "I have a lot to learn, and I'm a fast learner.";
+	mes "For now, I'm doing mostly physical tasks.";
+	next;
+	mes "[New Excavator]";
+	mes "I'm given free food, a place to sleep, and money. What else can I ask for?";
+	close;
+}
+
+verus04,94,251,3	script	Civilization Researcher	4_TOWER_16,{
+	mes "[Civilization Researcher]";
+	mes "I thought this was a part of Juperos.";
+	mes "I'm now reconsidering that theory.";
+	next;
+	mes "[Civilization Researcher]";
+	mes "Verus is similar to Juperos, yet different.";
+	mes "Everything about it is more refined and sophisticated somehow.";
+	close;
+}
+
+verus04,94,248,1	script	Scientist#tevt05	4_M_SAGE_C,{
+	mes "[Scientist]";
+	mes "This city's level of mechanical engineering is astonishing.";
+	mes "There's no trace of magic.";
+	next;
+	mes "[Scientist]";
+	mes "But I'm concerned:";
+	mes "rapid development and sudden introduction of advanced technology could do more harm than good.";
+	close;
+}
+
+verus04,116,220,0	script	#ep15_1elb	PORTAL,{
+	mes "- Caution -";
+	mes "- For your safety, -";
+	mes "- avoid running -";
+	mes "- or jumping -";
+	mes "- while inside. -";
+	close;
+}
+
+verus04,153,193,8	script	Merchant#ep15_1el10	4_F_CAPEGIRL,{
+	mes "[Merchant]";
+	mes "Ho ho ho!";
+	mes "I came first, so I took the best spot!";
+	close;
+}
+
+verus04,155,197,5	script	Adventurer ?#ep15_1el11	4_M_LGTPOOR,{
+	mes "[Adventurer ?]";
+	mes "*Stomach rumbles*";
+	mes "Aww, I'm hungry...";
+	next;
+	mes "[Adventurer]";
+	mes "But I have no money to buy food...";
+	close;
+}
+
+verus04,150,193,3	script	Adventurer#ep15_1el12	4_M_DIEMAN,{
+	mes "[Jean Baljean]";
+	mes "Ugh, I was struck 19 times for a piece of bread.";
+	close;
+}
+
+verus04,102,246,3	script	Adventurer#ep15_1el13	4_M_RACHMAN2,{
+	mes "[Adventurer]";
+	mes "Mushrooms growing out of rocks.";
+	mes "How resilient!";
+	close;
+}
+
+verus04,16,157,3	script	Adventurer#ep15_1el14	4_M_MIDDLE1,{
+	mes "[Adventurer]";
+	mes "Argh!";
+	mes "So many paths are blocked!";
+	close;
+}
+
+// missing #ep15_1el15 - 18
+verus04,104,120,3	script	Cow#ep15_1el19	4_BULL,{
+	mes "[Cow]";
+	mes "*Moo*";
+	close;
+}
+
+verus04,111,215,5	script	Adventurer#ep15_1el20	4_F_SHABBY,{
+	mes "[Adventurer]";
+	mes "Heh. *Drool*";
+	mes "This place is incredible!";
+	close;
+}
+
+verus04,111,211,3	script	Adventurer#ep15_1el21	4_F_KHGIRL,{
+	mes "[Adventurer]";
+	mes "This site is amazing.";
+	mes "No wonder why Rekenber called dibs on it.";
+	close;
+}
+
+verus04,113,235,5	script	Adventurer#ep15_1el22	4_M_PECOKNIGHT,{
+	mes "[Adventurer]";
+	mes "I want to find something awesome!";
+	close;
+}
+
+verus04,124,220,8	script	Adventurer#ep15_1el23	4_M_HUMERCHANT,{
+	mes "[Adventurer]";
+	mes "The coming era will be yours.";
+	close;
+}
+
+verus04,135,213,4	script	Sign#EP15_1DCenter	4_BOARD3,{
+	mes "[Warning]";
+	mes "Attention visitors of Phantasmagorika,";
+	next;
+	mes "[Warning]";
+	mes "a cult group called the Doom Prayers has been frequently sighted in this area.";
+	next;
+	mes "[Warning]";
+	mes "If you're a victim or a witness to the group's harassment, please report to the Phantasmagorika Police.";
+	mes "- Phantasmagorika Police Chief -";
+	close;
+}
+verus04,204,260,4	duplicate(Sign#EP15_1DCenter)	Sign#EP15_1DNorth	4_BOARD3
+verus03,83,241,4	duplicate(Sign#EP15_1DCenter)	Sign#EP15_1DSouth	4_BOARD3
+verus03,38,114,4	duplicate(Sign#EP15_1DCenter)	Sign#EP15_1DEast	4_BOARD3
+verus03,116,39,4	duplicate(Sign#EP15_1DCenter)	Sign#EP15_1DWest	4_BOARD3
+
+
+verus04,96,195,5	script	Adventurer Cat#ep15_1el_1	4_CAT_REST,{
+	mes "[Adventurer Cat]";
+	mes "I must investi... ga... te...";
+	mes "Zzz... Zzz...";
+	close;
+}
+verus04,96,194,5	script	Adventurer Cat#ep15_1el_2	4_CAT_REST,{
+	mes "[Adventurer Cat]";
+	mes "*Purr*";
+	mes "*Meow*";
+	close;
+}
+verus04,96,193,5	script	Adventurer Cat#ep15_1el_3	4_CAT_REST,{
+	mes "[Adventurer Cat]";
+	mes "For some reason, I can't stand up.";
+	mes "*Meow*";
+	close;
+}
+verus04,96,192,5	script	Adventurer Cat#ep15_1el_4	4_CAT_REST,{
+	mes "[Adventurer Cat]";
+	mes "I've got a good spot.";
+	mes "*Purr*";
+	close;
+}
+
+yuno_fild07,218,154,3	script	Adventurer#ep15_1el01	4_M_ARUNA_NFM1,{
+	mes "[Adventurer]";
+	mes "Ah!";
+	mes "I want to see!";
+	mes "Why can't I go in?!";
+	close;
+}
+yuno_fild07,218,159,5	script	Adventurer#ep15_1el02	4_M_KHBOY,{
+	mes "[Adventurer]";
+	mes "All right!";
+	mes "This time, I'm going to write a report on a field trip to Phantasmagorika.";
+	next;
+	mes "[Adventurer]";
+	mes "Professor Jones will be so impressed he'll give me A+. *Chuckle*";
+	close;
+}
+yuno_fild07,221,157,3	script	Adventurer#ep15_1el03	4_M_CHN8GUEK,{
+	mes "[Adventurer]";
+	mes "Toh!";
+	mes "Sound mind, sound body!";
+	close;
+}
+yuno_fild07,221,155,8	script	Adventurer#ep15_1el04	4_M_ALCHE_B,{
+	mes "[Adventurer]";
+	mes "I'd better pack enough potions for the trip to Phantasmagorika.";
+	close;
+}
+yuno_fild07,217,155,5	script	Adventurer#ep15_1el05	4_F_ROGUE,{
+	mes "[Adventurer]";
+	mes "I'm impressed by Rekenber's support.";
+	mes "Um...";
+	close;
+}
+yuno_fild07,225,166,3	script	Merchant#ep15_1el06	4_CAT_DOWN,{
+	mes "[Merchant]";
+	mes "Ooooh!";
+	mes "I've found a perfect spot for my business!";
+	close;
+}
+yuno_fild07,225,144,1	script	Adventurer#ep15_1el07	1_M_ORIENT01,{
+	mes "[Adventurer]";
+	mes "Elevator? The scientific advancement of Schwarzwald is astonishing!";
+	close;
+}
+yuno_fild07,217,149,3	script	Adventurer#ep15_1el08	4_F_JOB_BLACKSMITH,{
+	mes "[Adventurer]";
+	mes "An ancient civilization. Doesn't that sound incredible?";
+	mes "I feel like I can hear ancient machines moving with loud clanking noises.";
+	next;
+	mes "[Adventurer]";
+	mes "*Dreamy eyes*";
+	mes "*Gaping mouth*";
+	close;
+}
+yuno_fild07,224,152,3	script	Adventurer#ep15_1el09	4_M_SITDOWN,{
+	mes "[Adventurer]";
+	mes "Geez, this place is already crammed!";
+	mes "Just looking at these people makes me tired.";
+	close;
+}
+
+lhz_in01,277,234,3	script	Rekenber Guard#e152i01	4_M_LGTGUARD,{
+	mes "[Rekenber Guard]";
+	if (VER_MAIN < 37) {
+		mes "I am sorry but you cannot enter further without approval.";
+		close;
+	}
+	mes "You are a member of the Atnad excavation team.";
+	mes "I will guide you inside.";
+	close2;
+	warp "lhz_in01",275,241;
+	end;
+}
+
+lhz_in01,275,251,3	script	Luke Lapez#ep152i01	4_M_EDEN_GUARDER,{
+	cutin "looke_rapez04.bmp", 0;
+	mes "[Luke]";
+	mes "Sh. I'm just here as escort.";
+	close2;
+	cutin "",255;
+	npctalk "So much for the damn escort...", "Luke Lapez#ep152i01";
+	sleep 400;
+	emotion ET_FRET, getnpcid(0, "Commander Arquien#ep152");
+	sleep 200;
+	emotion ET_THINK, getnpcid(0, "Luke Lapez#ep152i01");
+	end;
+}
+
+lhz_in01,270,257,4	script	Rekenber Chairman#e152i	4_M_REKENBER,{
+	if (VER_MAIN < 37)
+		end;
+	if (VER_MAIN == 37) {
+		cutin "ep15_rekenber01.bmp",0;
+		mes "[Rekenber Chairman]";
+		mes "I am the chairman of Rekenber.";
+		mes "I invited you to come.";
+		next;
+		mes "[Rekenber Chairman]";
+		mes "I have heard a lot and am familiar with the activities of the Atnad excavation team.";
+		mes "A lot of big results are being achieved as a corporation.";
+		mes "Thanks to you.";
+		next;
+		mes "[Rekenber Chairman]";
+		mes "The reason I have invited you....";
+		mes "You may already know as team leader Dr. Atnad.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Could it be......";
+		next;
+		cutin "ep15_rekenber01.bmp",0;
+		mes "[Rekenber Chairman]";
+		mes "It is what you are predicting.";
+		mes "It's about the Memory Records contents you have been working so hard to collect.";
+		next;
+		mes "[Rekenber Chairman]";
+		mes "We plan to dispose of the content known through the Memory Records and the word of the Memory Records themselves as if it never happened.";
+		mes "I hope you will cooperate with this.";
+		next;
+		select("What did you say?");
+		mes "[Rekenber Chairman]";
+		mes "If this information is leaked outside, the corporation is willing to treat your excavation team with courtesy.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Treatment? Courtesy?";
+		mes "What are you trying to sell!";
+		next;
+		mes "[Ian Atnad]";
+		mes "What is the reason people can't know about the past of the city buried underground!";
+		mes "Who are you to act like this!";
+		next;
+		mes "[Ian Atnad]";
+		mes "We are people who look to truth and fact through the past.";
+		mes "Are you trying to block your eyes and ears now?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Chief secretary]";
+		mes "Instead we will give you sole rights to everything related to the Memory Records.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "What are you talking about now?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Chief secretary]";
+		mes "We do not mean cease your work.";
+		mes "We are not saying discard all the information you have found.";
+		mes "However, what we want is...";
+		next;
+		mes "[Chief secretary]";
+		mes "I want to bury the story between myself, and you.";
+		mes "Do you not remember?";
+		mes "We are probably acquainted.";
+		mes "Although I did make some preparations.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "... Now that I think you do look familiar..";
+		mes "Juperos!";
+		mes "Yes, I saw you at juperos.";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "That time you did.. in the crack that looked like a passage...";
+		mes "......You attacked me!";
+		mes "You bastard.. Because of you..!!";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "Hoho. I meet the main culprit of my family's destruction.";
+		mes "Is this meant to be?";
+		next;
+		select("What do you mean family's destruction?");
+		mes "[Aures]";
+		mes "The time, that accident or whatever you call it.";
+		mes "When I found a seemingly artificial obstacle during the juperos excavation..";
+		mes "Ian suddenly disappeared.";
+		emotion ET_SURPRISE, getnpcid(0, "Commander Arquien#ep152");
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I found myself in a motel room in Yuno when I came to.";
+		mes "I didn't even know how much time has passed.";
+		next;
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "The man went to look around the excavation site and didn't return in over a week...";
+		mes "What do you think we thought?";
+		mes "We wondered if he suffered an unfortunate accident.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "My teeth gnash whenever I think of that time.";
+		mes "Because of the vague memories of that time..";
+		mes "I clung to juperos like a mad man.";
+		next;
+		cutin "ep15_tatio02.bmp",0;
+		mes "[Chief secretary]";
+		mes "......I am sorry about that.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "You're the one who attacked me, right?";
+		mes "What happened to the week I lost.";
+		mes "...After that, I chased after an illusion I wasn't sure was a dream or hallucination.";
+		next;
+		mes "[Ian Atnad]";
+		mes "I blindly went around Juperos.";
+		mes "Lost my team members.. even forgot that I had a family and a home to go back to.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",0;
+		mes "[Arquien]";
+		mes "...Why did you?";
+		mes "Please tell me. Chief Secretary.";
+		mes "Why did you attack father?";
+		next;
+		cutin "ep15_tatio03.bmp",0;
+		mes "[Chief secretary]";
+		mes "That is.. because the doctor saw something he shouldn't have at the time.";
+		mes "Verus city was not ready to be revealed.";
+		next;
+		cutin "verus_ian02.bmp",2;
+		mes "[Ian Atnad]";
+		mes "What?! Verus!!!";
+		mes "So what I found then was a passage to Verus?!";
+		next;
+		cutin "Arquien_n_atnad02.bmp",0;
+		mes "[Arquien]";
+		mes "No no wait wait.";
+		mes "Father, speak to me for a moment.";
+		mes "I just need a moment.";
+		next;
+		mes "I don't know what is happening.";
+		mes "Should we listen to the Atnads first?";// cross line?
+		VER_MAIN = 38;
+		close3;
+	}
+	if (VER_MAIN == 38) {
+		cutin "ep15_rekenber02.bmp",0;
+		mes "[Rekenber]";
+		mes ".... What can we do.";
+		mes "We will wait. Please speak.";
+		close3;
+	}
+	cutin "ep15_rekenber01.bmp",0;
+	mes "[Rekenber]";
+	mes "A chairman's job is to do nothing in times like this.";
+	mes "... That is it.";
+	close3;
+}
+
+lhz_in01,267,257,5	script	Chief secretary#e152i01	4_M_TATIO,{
+	if (VER_MAIN < 37)
+		end;
+	if (VER_MAIN == 37) {
+		mes "[Chief secretary]";
+		cutin "ep15_tatio01.bmp",0;
+		mes "The chairman has waited for a long time.";
+		mes "I as well.";
+		close3;
+	}
+	if (VER_MAIN == 38) {
+		mes "[Chief secretary]";
+		cutin "ep15_tatio01.bmp",0;
+		mes "Are you taken aback?";
+		mes "So have I. I did not think people's lives to be tied together as so.";
+		mes "Anyway that young lady...";
+		next;
+		cutin "ep15_tatio03.bmp",0;
+		mes "[Chief secretary]";
+		mes ".. has a good strong attitude.";
+		mes "True.";
+		mes "Please speak.";
+		mes "I will wait.";
+		close3;
+	}
+	if (VER_MAIN == 39) {
+		mes "[Chief secretary]";
+		cutin "ep15_tatio01.bmp",0;
+		mes "I see it is my turn again.";
+		mes "I will formally introduce you.";
+		mes "The last survivor of Verus City, Tatio.W.00H-1.";
+		mes "Simply call him Tatio.";
+		next;
+		npctalk "What?!", "Ian Atnad#ep152i01";
+		mes "[Tatio]";
+		mes "Not revealing the contents of the Memory Records by the corporation.";
+		mes "Attacking you at Juperos was all because I wanted to.";
+		next;
+		cutin "ep15_tatio02.bmp",0;
+		mes "[Tatio]";
+		mes "To tell you this I have no choice but to reveal my identity.";
+		mes "I have prepared for this but.. it does not feel great.";
+		next;
+		cutin "",255;
+		mes "Everybody seems frozen by the massive news.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "I am the Tatio in the Memory Records you have discovered.";
+		mes "And Atnad is Lasse Atnad, the great-grandfather of Dr. Atnad.";
+		next;
+		cutin "ep15_tatio03.bmp",0;
+		mes "[Tatio]";
+		mes "Lasse is one of the people who made me, and a friend.";
+		mes "I wanted to protect Verus, which is home to my undead machine body...";
+		next;
+		mes "[Tatio]";
+		mes "I have committed that discourtesy that the time.";
+		mes "And on top of that, I had a hand on hiding what the doctor saw........";
+		mes "I manipulated his memory a bit.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "That is why you have that one week gap.";
+		mes "I took care of you for four days and sent you to the motel in Yuno.";
+		next;
+		cutin "ep15_tatio02.bmp",0;
+		mes "[Tatio]";
+		mes "I would not have done that if I knew you were a descendant of Lasse.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "Verus city a long.. long. Time ago was once side by side with Juperos..";
+		mes "No surpassed it as a great city of science with a scientific civilization.";
+		next;
+		mes "[Tatio]";
+		mes "Although an unfortunate accident turned it the way it is now.";
+		mes "I did not die because I was made of machines so I just watched over Verus.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "This story. Does the chairman know?";
+		mes "Wait. He already knows I bet. Isn't that why he called us here.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "That is right.";
+		mes "The chairman knows of me and the Verus City secrets.";
+		mes "Only two in the whole world knew of this secret.";
+		next;
+		mes "[Tatio]";
+		mes "Ah, No. One of the founders, Janet Zerter knows of this as well.";
+		mes "Also one of the descendants of Verus City.";
+		next;
+		cutin "ep15_tatio02.bmp",0;
+		mes "[Tatio]";
+		mes ".....Do you now understand my previous proposal?";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Oh oh well...";
+		mes "Although open, Verus City is still something you want to protect ..I see.";
+		mes "That is why the Memory Records...";
+		next;
+		mes "[Ian Atnad]";
+		mes "Then this doesn't apply to the other data in the city?";
+		mes "You're trying to hide it to prevent your's and my name being revealed and becoming a public issue, right?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "The quantum level core technology unsuitable for this world's civilization has already been discarded.";
+		mes "Just like how lethal weapons are not put in the hands of children.";
+		next;
+		mes "[Tatio]";
+		mes "Although most of the data has been lost by accident...";
+		mes "You will probably gain plenty with what is now remaining.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "Why did you reveal it?";
+		mes "Should have wrapped it tightly instead.";
+		mes "Like you did to me.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "..To be honest, the first reason is that I could not easily approach the laboratories because of the energy storms during the time";
+		next;
+		mes "[Tatio]";
+		mes "And because although I do not know the reason the energy storms disappeared and";
+		mes "I assessed it as not being too dangerous.";
+		next;
+		mes "[Tatio]";
+		mes "The right time to reveal it has came.";
+		mes "This place has also come to understand what is science and engineering.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes ".. Something is doubtful, but okay.";
+		mes "I guess I should be satisfied at even having this kind of opportunity.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "I thank you for understanding.";
+		mes "I will give you sole rights to the Memory Records.";
+		mes "However the revealing of information and timing must be decided here.";
+		next;
+		mes "[Tatio]";
+		mes "And... In order to avoid affecting our descendants";
+		mes "we should keep it a secret between us as well.";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "I understand that.";
+		mes "Then I will handle the collecting of the Memory Records as I have been until now.";
+		mes "I will decide to report directly or not through you.";
+		next;
+		mes "[Ian Atnad]";
+		mes "That is it, right?";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Tatio]";
+		mes "That is right.";
+		mes "In reality there is not much change to the actual work.";
+		mes "Ah also...";
+		mes "For working diligently as a member of the Atnad excavation team..";
+		mes "" + strcharinfo(0) + " I will give you a small reward.";
+		getexp 4500000,3000000;
+		VER_MAIN = 40;
+		next;
+		mes "[Tatio]";
+		mes "The contents of the Memory Records are precious memories to me.";
+		mes "...It is like going through my diary. So I hope you take care in the future.";
+		close3;
+	}
+	cutin "ep15_tatio03.bmp",0;
+	mes "[Tatio]";
+	mes "...I hope everything goes smoothly with this...";
+	close3;
+}
+
+lhz_in01,272,255,3	script	Ian Atnad#ep152i01	4_M_IAN,{
+	if (VER_MAIN < 37)
+		end;
+	mes "[Ian Atnad]";
+	if (VER_MAIN == 37) {
+		cutin "verus_ian01.bmp",2;
+		mes "Have you arrived now?";
+		mes "It seems everybody has gathered.";
+		mes "So, let's see what it was you had to say to everybody.";
+		close3;
+	}
+	if (VER_MAIN == 38) {
+		cutin "verus_ian01.bmp",2;
+		mes "So, what do you want to say?";
+		mes "What is it that you cut me off in this important moment.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",0;
+		mes "[Arquien]";
+		mes "What that man just said, was the incident of your disappearance?";
+		mes "The reason why you were running around outside for years.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Chief secretary]";
+		mes "No.. it's not that..";
+		mes "The time I was with the doctor was only four days.";
+		next;
+		cutin "Arquien_n_atnad04.bmp",0;
+		mes "[Arquien]";
+		mes "Before you said you were stuck somewhere for a week!";
+		mes "And running around like you were possessed by a ghost!";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "That.. that..!";
+		mes "Don't treat my passion for my field like a runaway ghost!";
+		mes "At the time I thought I was going to find something about my grand-grandfather..";
+		next;
+		mes "[Ian Atnad]";
+		mes "The place I saw.. The memory I had of that place...";
+		mes ".....";
+		mes "...?";
+		next;
+		mes "[Ian Atnad]";
+		mes "Wait a minute. Are you blaming me now?";
+		mes "I sent letters home, but you were the one who didn't reply!";
+		next;
+		cutin "Arquien_n_atnad04.bmp",0;
+		mes "[Arquien]";
+		mes "All the letters were sent back because the address wasn't clear!";
+		mes "Why are you talking big!";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "And didn't you sell the house and sent all my letters back!";
+		mes "You couldn't wait a few years so sell the house and disappear?!";
+		mes "What do you have to say for yourself!";
+		next;
+		mes "The situation is overheating due to the fight between father and daughter.";
+		mes "Aures and the secretary giving embarrassed looks.";
+		next;
+		select("Should the table be turned over?");
+		cutin "Arquien_n_atnad01.bmp",0;
+		mes "[Arquien]";
+		mes "What's that sound..";
+		mes "An..anyway isn't that secretary the main instigator of this whole incident?";
+		mes "What happened?";
+		VER_MAIN = 39;
+		close3;
+	}
+	if (VER_MAIN == 39) {
+		cutin "verus_ian01.bmp",2;
+		mes "We keep losing the point.";
+		mes "Shouldn't you ask why he attacked me first.";
+		mes "Let's please listen to what he has to say. Daughter.";
+		close3;
+	}
+	cutin "verus_ian01.bmp",2;
+	mes "It is confusing to hear a surprising story at once but";
+	mes "At the same time it's cathartic.";
+	mes "Hm.. I see. I see.";
+	close3;
+}
+
+lhz_in01,267,255,7	script	Aures#ep152i01	4_M_OLDSCHOLAR,{
+	if (VER_MAIN < 37)
+		end;
+	cutin "verus_aures.bmp",0;
+	mes "[Aures]";
+	if (VER_MAIN == 37) {
+		mes "Now you are here.";
+		mes "Sit here comfortably.";
+		mes "Although it might uncomfortable to sit on the corporation toilet.";
+		next;
+		mes "[Aures]";
+		mes "It is amusing to see those two together.";
+		mes "Seems you cannot trick blood.";
+		mes "Seeing how they talk alike.";
+	}
+	else if (VER_MAIN == 38)
+		mes "I loathe fighting but.. It is fun to see them together. Yes.";
+	else if (VER_MAIN > 38) {
+		cutin "verus_aures.bmp",0;
+		mes "[Aures]";
+		mes "I loathe fighting but.. It is fun to see them together. Yes.";
+	}
+	close3;
+}
+
+lhz_in01,272,251,3	script	Commander Arquien#ep152i	4_F_EDEN_MASTER,{
+	if (VER_MAIN < 37)
+		end;
+	if (VER_MAIN == 37) {
+		mes "[Arquien]";
+		cutin "Arquien_n_atnad01.bmp",2;
+		mes "Let's see if you gathered all of us to give us some bombastic story.";
+		close3;
+	}
+	if (VER_MAIN == 38) {
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "So, what do you want to say?";
+		mes "What is it that you cut me off in this important moment.";
+		next;
+		cutin "Arquien_n_atnad01.bmp",0;
+		mes "[Arquien]";
+		mes "What that man just said, was the incident of your disappearance?";
+		mes "The reason why you were running around outside for years.";
+		next;
+		cutin "ep15_tatio01.bmp",0;
+		mes "[Chief secretary]";
+		mes "No.. it's not that..";
+		mes "The time I was with the doctor was only four days.";
+		next;
+		cutin "Arquien_n_atnad04.bmp",0;
+		mes "[Arquien]";
+		mes "Before you said you were stuck somewhere for a week!";
+		mes "And running around like you were possessed by a ghost!";
+		next;
+		cutin "verus_ian01.bmp",2;
+		mes "[Ian Atnad]";
+		mes "That.. that..!";
+		mes "Don't treat my passion for my field like a runaway ghost!";
+		mes "At the time I thought I was going to find something about my grandfather..";
+		next;
+		mes "[Ian Atnad]";
+		mes "The place I saw.. The memory I had of that place...";
+		mes ".....";
+		mes "...?";
+		next;
+		mes "[Ian Atnad]";
+		mes "Wait a minute. Are you blaming me now?";
+		mes "I sent letters home, but you were the one who didn't reply!";
+		next;
+		cutin "Arquien_n_atnad04.bmp",0;
+		mes "[Arquien]";
+		mes "All the letters were sent back because the address wasn't clear!";
+		mes "Why are you talking big!";
+		next;
+		cutin "verus_ian03.bmp",2;
+		mes "[Ian Atnad]";
+		mes "And didn't you sell the house and sent all my letters back!";
+		mes "You couldn't wait a few years so sell the house and disappear?!";
+		mes "What do you have to say for yourself!";
+		next;
+		mes "The situation is overheating due to the fight between father and daughter.";
+		mes "Aures and the secretary giving embarrassed looks.";
+		next;
+		select("Should the table be turned over?");
+		cutin "Arquien_n_atnad04.bmp",2;
+		mes "[Arquien]";
+		mes "What's that sound..";
+		mes "An..anyway isn't that secretary the main instigator of this whole incident?";
+		mes "What happened?";
+		VER_MAIN = 39;
+		close3;
+	}
+	if (VER_MAIN == 39) {
+		mes "[Arquien]";
+		mes ".......Let's keep listening to that secretary guy.";
+		mes "If give me nonsense I'm going to flip this company over.";
+		close3;
+	}
+	cutin "Arquien_n_atnad02.bmp",2;
+	mes "[Arquien]";
+	mes "So he means we can know the embarrassing past of the secretary by collecting and listening to the Memory Records?";
+	mes "That is kind of interesting.";
+	next;
+	cutin "Arquien_n_atnad03.bmp",2;
+	mes "[Arquien]";
+	mes "What are you doing?";
+	mes "Let's go back now.";
+	mes "To the city that was too good for its own good.";
+	close3;
+}
+
+//- To Phantasmagorika!
+yuno_fild07,216,157,5	script	Guide Elisha#ep15_1bs2	4_F_ZONDAGIRL,{
+	if (VER_MAIN >= 4) {
+		mes "[Elisha]";
+		mes "Good day.";
+		mes "Please say your name, so I can check your registration.";
+		emotion ET_THROB;
+		next;
+		switch( select( "Say your name.", "Ask about the registration.", "End conversation." ) ) {
+		case 1:
+			mes "[Elisha]";
+			switch(VER_ELEVATOR) {
+			case 0:
+			case 1:
+				mes "Um, let's see...";
+				mes "I'm sorry, but you're not on the list. Could you check your registration status?";
+				emotion ET_PROFUSELY_SWEAT;
+				close;
+			case 2:
+				mes "You're back already.";
+				emotion ET_THROB;
+				next;
+				mes "[Elisha]";
+				mes "Let's see...";
+				mes "Ah, I've found your name.";
+				mes "Would you like to ^0000FFmove to Phantasmagorika^000000 now?";
+				next;
+				if (select( "No.", "Yes." ) == 1) {
+					mes "[Elisha]";
+					mes "Have a good day.";
+					emotion ET_THROB;
+					close;
+				}
+				mes "[Elisha]";
+				mes "Let me send you to Phantasmagorika.";
+				next;
+				mes "[Elisha]";
+				mes "For your safety, please avoid running or jumping while inside.";
+				next;
+				mes "[Elisha]";
+				mes "Ready?";
+				mes "Have a safe exploration!";
+				emotion ET_THROB;
+				next;
+				mes "^FF0000- BEEP-! -";
+				mes "- Service temporarily unavailable. -^000000";
+				emotion ET_HUK, playerattached();
+				next;
+				mes "[Elisha]";
+				mes "Um?";
+				mes "Could you hold on a moment?";
+				emotion ET_PROFUSELY_SWEAT;
+				next;
+				mes "^FF0000- BEEP-! -";
+				mes "- Service temporarily unavailable. -^000000";
+				emotion ET_HUK, playerattached();
+				next;
+				mes "[Elisha]";
+				mes "Um...";
+				mes "What's wrong with it?";
+				mes "Please give me a moment.";
+				emotion ET_PROFUSELY_SWEAT;
+				next;
+				mes "^FF0000- BEEP-! -";
+				mes "- Service temporarily unavailable. -^000000";
+				emotion ET_HUK, playerattached();
+				next;
+				mes "[Elisha]";
+				mes "Uh-oh.";
+				mes "Is it out of order?";
+				mes "It can't be!";
+				emotion ET_HUK;
+				next;
+				mes "^FF0000- BEEP-! -";
+				mes "- Service temporarily unavailable. -^000000";
+				emotion ET_HUK, playerattached();
+				next;
+				mes "[Elisha]";
+				mes "I'm sorry, " + strcharinfo(0) + ".";
+				mes "I know you're registered for the service, but it's out of order at this moment.";
+				mes "I'm sorry for this inconvenience.";
+				emotion ET_PROFUSELY_SWEAT;
+				emotion ET_HUK, playerattached();
+				next;
+				mes "[Elisha]";
+				mes "It was working fine just a moment ago.";
+				mes "I'm sorry.";
+				mes "I'll have to call in a technician. Please use the stairs instead.";
+				next;
+				mes "[Elisha]";
+				mes "^0000FFPhantasmagorika is past the tunnel to the south from the southeast gate outside Juperos Ruins.^000000";
+				next;
+				mes "[Elisha]";
+				mes "There are elevator doors near the fountain in the center of the place. Could you check what happened to the elevator?";
+				mes "I'm so sorry for all this.";
+				emotion ET_CRY;
+				changequest 11364,11365;// To Phantasmagorika!
+				VER_ELEVATOR = 3;
+				close;
+			case 3:
+				mes "It was working fine just a moment ago.";
+				mes "I'm sorry.";
+				mes "I'll have to call in a technician. Please use the stairs instead.";
+				next;
+				mes "[Elisha]";
+				mes "^0000FFPhantasmagorika is past the tunnel to the south from the southeast gate outside Juperos Ruins.^000000";
+				next;
+				mes "[Elisha]";
+				mes "There are elevator doors near the fountain in the center of the place. Could you check what happened to the elevator?";
+				mes "I'm so sorry for all this.";
+				emotion ET_CRY;
+				close;
+			case 4:
+				mes "I'm sorry.";
+				mes "The elevator is currently out of order.";
+				close;
+			default:
+				mes "Let's see...";
+				mes "A... B... C... D... E... F... Ah, there it is!";
+				emotion ET_PROFUSELY_SWEAT;
+				next;
+				mes "[Elisha]";
+				mes "" + strcharinfo(0) + ", your registration has been confirmed.";
+				mes "Would you like to move to Phantasmagorika?";
+				emotion ET_THROB;
+				next;
+				if (select( "No.", "Yes." ) == 1) {
+					mes "[Elisha]";
+					mes "Have a good day.";
+					close;
+				}
+				mes "[Elisha]";
+				mes "Let me send you to Phantasmagorika.";
+				next;
+				mes "[Elisha]";
+				mes "For your safety, please avoid running or jumping while inside.";
+				next;
+				mes "[Elisha]";
+				mes "Ready?";
+				mes "Have a safe exploration!";
+				close2;
+				warp "verus04",122,217;
+				end;
+			}
+		case 2:
+			mes "[Elisha]";
+			mes "*Clears her throat*";
+			mes "This facility is provided by ^0000FFRekenber^000000";
+			next;
+			mes "[Elisha]";
+			mes "to ^0000FFthe members of the Eden Group^000000 for their safe transportation to ^0000FFPhantasmagorika^000000.";
+			next;
+			mes "[Elisha]";
+			mes "To use this facility, you must be ^0000FFa member of the Eden Group who is registered for the Phantasmagorika excavation project^000000.";
+			next;
+			mes "[Elisha]";
+			mes "You can register for the use of the facility at ^0000FFRekenber Corporation Headquarters^000000, so long as you're a registered excavator of the Eden Group.";
+			if (VER_ELEVATOR >= 2)
+				close;
+			next;
+			if (select( "End conversation.", "Ask for directions." ) == 2) {
+				mes "[Elisha]";
+				mes "To register for the use of the facility, please visit ^0000FFRekenber Corporation Headquarters in Lighthalzen and talk to Leitner at the information desk to the west from the main entrance on the first floor^000000.";
+				next;
+				mes "[Elisha]";
+				mes "The whole registration process may sound cumbersome, but using the elevator is worth the trouble.";
+				if (VER_ELEVATOR == 0) {
+					setquest 11363;// To Phantasmagorika!
+					VER_ELEVATOR = 1;
+				}
+				close;
+			}
+			break;
+		case 3:
+			break;
+		}
+	}
+	mes "[Elisha]";
+	mes "My company Rekenber is in partnership with the Eden Group";
+	mes "for the ^0000FFPhantasmagorika excavation project^000000.";
+	next;
+	mes "[Elisha]";
+	mes "The newly discovered legacy of the ancients: Phantasmagorika!";
+	mes "Contact the ^0000FFEden Group^000000 to join its Phantasmagorika excavation project!";
+	close;
+
+OnInit:
+	questinfo 11363,QTYPE_QUEST,1;
+	setquestinfo_req 11363,11364,0,11365,0,11366,0;
+	end;
+}
+
+lhz_in01,75,209,3	script	Leitner#ep15_1bs	4_LGTSCIENCE,{
+	mes "[Leitner]";
+	switch(VER_ELEVATOR) {
+	case 0:
+		mes "Heya!";
+		mes "What brings you here, sweetheart?";
+		mes "If you're looking for a shoulder to cry on, I'm here.";
+		emotion ET_CHUP;
+		close;
+	case 1:
+		mes "Heya!";
+		mes "What brings you here, sweetheart?";
+		mes "If you're looking for a shoulder to cry on, I'm here.";
+		emotion ET_CHUP;
+		next;
+		select("Ask about the registration process.");
+		mes "[Leitner]";
+		mes "Oh.";
+		mes "I should have known.";
+		mes "You mean the elevator to Phantasmagorika, eh?";
+		emotion ET_THINK;
+		next;
+		mes "[Leitner]";
+		mes "When I first got this job, the elevator was private and I did diddly-squat.";
+		next;
+		mes "[Leitner]";
+		mes "Then, the management opened it to the public and my life went straight to hell.";
+		next;
+		mes "[Leitner]";
+		mes "Ah, why me?!";
+		mes "Goodbye, peaceful days!";
+		mes "I'm so busy that I barely have time for the ladies.";
+		emotion ET_HELP;
+		next;
+		mes "[Leitner]";
+		mes "Anyway, let's get you registered. I want to get back to my break.";
+		mes "Err... Write down your name here, and put your fingerprint next to it.";
+		mes "Done. Easy, huh?";
+		next;
+		mes "[Leitner]";
+		mes "I know, I know; why the extra step when the elevator is open to the public?";
+		next;
+		mes "^0000FF- BEEP-! -";
+		mes "- The following users -";
+		mes "- have been registered. -^000000";
+		next;
+		mes "[Leitner]";
+		mes "Alright,";
+		mes "you're good to go.";
+		mes "Now you can use the elevator.";
+		changequest 11363,11364;// To Phantasmagorika!
+		VER_ELEVATOR = 2;
+		close;
+	case 2:
+		mes "I know, I know; why the extra step when the elevator is open to the public?";
+		next;
+		mes "[Leitner]";
+		mes "Now you can use the elevator.";
+		close;
+	default:
+		mes "The elevator breaks almost every day, probably from carrying too many people.";
+		mes "Ah, I need rest. Sigh.";
+		emotion ET_HELP;
+		close;
+	}
+}
+
+verus04,119,220,3	script	Guide Scarlet#ep15_1bs	4_M_TELEPORTER,{
+	mes "[Scarlet]";
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "*Clears her throat*";
+		mes "This facility is provided by ^0000FFRekenber^000000";
+		next;
+		mes "[Scarlet]";
+		mes "to ^0000FFthe members of the Eden Group^000000 for their safe transportation to ^0000FFPhantasmagorika^000000.";
+		next;
+		mes "[Scarlet]";
+		mes "To use this facility, you must be ^0000FFa member of the Eden Group who is registered for the Phantasmagorika excavation project^000000.";
+		next;
+		mes "[Scarlet]";
+		mes "You can register for the use of the facility at ^0000FFRekenber Corporation Headquarters^000000, so long as you're a registered excavator of the Eden Group.";
+		next;
+		mes "[Scarlet]";
+		mes "Once you are registered, please double-check your registration status before using the facility.";
+		close;
+	case 3:
+		mes "What did you do in the elevator?";
+		emotion ET_FRET;
+		next;
+		mes "[Scarlet]";
+		mes "I told you not to run or jump inside the elevator!";
+		next;
+		mes "[Scarlet]";
+		mes "I can't believe you crushed the doors!";
+		next;
+		mes "[Mark]";
+		mes "It's my fault.";
+		mes "I should have kept a tight rein on him.";
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0, "Mark#ep15_1elb");
+		cutin "bu_mark3.bmp",0;
+		next;
+		mes "[Deu]";
+		mes "How do you expect me to trust myself to such a shoddy machine?";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du3.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Enough!";
+		mes "Apologize to the lady!";
+		emotion ET_FRET, getnpcid(0, "Mark#ep15_1elb");
+		cutin "bu_mark4.bmp",0;
+		next;
+		mes "[Deu]";
+		mes "But he started it...";
+		cutin "bu_du3.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "...";
+		emotion ET_FRET, getnpcid(0, "Mark#ep15_1elb");
+		cutin "bu_mark4.bmp",0;
+		next;
+		mes "[Tamarin]";
+		mes "I told you stop jumping!";
+		emotion ET_HUK, getnpcid(0, "Tamarin#ep15_1elb");
+		cutin "ep143_taang.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "You guys,";
+		mes "stop fighting.";
+		mes "The floor feels dangerously unstable.";
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0, "Alf#ep15_1elb");
+		cutin "bu_alp2.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "We all should get off and call in a techni...";
+		cutin "",255;
+		next;
+		mes "^FF0000- THUD -^000000";
+		emotion ET_HUK;
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		emotion ET_HUK, getnpcid(0, "Mark#ep15_1elb");
+		emotion ET_HUK, getnpcid(0, "Tamarin#ep15_1elb");
+		emotion ET_HUK, getnpcid(0, "Alf#ep15_1elb");
+		emotion ET_HUK, getnpcid(0, "Magi#ep15_1elb");
+		next;
+		mes "[Magi]";
+		mes "Kyaaaaah-!";
+		emotion ET_HUK, getnpcid(0, "Magi#ep15_1elb");
+		cutin "bu_maggi4.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Wah!";
+		mes "The floor rattled!";
+		emotion ET_PROFUSELY_SWEAT, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "Stop!";
+		mes "Everyone, stay still!";
+		mes "Or we might plummet to the bottom!";
+		emotion ET_HUK;
+		cutin "",255;
+		next;
+		mes "[Scarlet]";
+		mes "Hey,";
+		mes "you!";
+		mes "Help!";
+		emotion ET_HELP;
+		next;
+		mes "[Scarlet]";
+		mes "This elevator is so unstable that none of us can move.";
+		mes "Could you bring us something to ^0000FFsupport the floor^000000?";
+		next;
+		mes "[Scarlet]";
+		mes "We don't have time to wait for a technician!";
+		mes "We just need ^FF000030 Used Iron Plates from Dimiks^000000 in Juperos!";
+		next;
+		mes "[Scarlet]";
+		mes "Please help us!";
+		changequest 11365,11366;// To Phantasmagorika!
+		VER_ELEVATOR = 4;
+		close;
+	case 4:
+		mes "Careful!";
+		mes "Everyone, stop moving!";
+		next;
+		mes "[Deu]";
+		mes "WAH-!";
+		mes "We're going to crash to the ground!";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "Don't say that!";
+		mes "This is your fault!";
+		emotion ET_FRET, getnpcid(0, "Tamarin#ep15_1elb");
+		cutin "ep143_taang.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "Quiet, both of you!";
+		mes "If you move an inch, we are all going to die!";
+		emotion ET_HUK;
+		cutin "",255;
+		next;
+		mes "[Scarlet]";
+		if (countitem(7319) < 30) {// Used_Iron_Plate
+			mes "This elevator is so unstable that none of us can move.";
+			mes "Could you bring us something to ^0000FFsupport the floor^000000?";
+			next;
+			mes "[Scarlet]";
+			mes "We don't have time to wait for a technician!";
+			mes "We just need ^FF000030 Used Iron Plates from Dimiks^000000 in Juperos!";
+			next;
+			mes "[Scarlet]";
+			mes "Please help us!";
+			close;
+		}
+		mes "Did you bring Used Iron Plates?";
+		mes "Please push them in here carefully, one by one.";
+		delitem 7319,30;// Used_Iron_Plate
+		completequest 11366;// To Phantasmagorika!
+		VER_ELEVATOR = 5;
+		next;
+		mes "[Scarlet]";
+		mes "They might not hold for long, but that should still be enough us to get out.";
+		next;
+		select("Push in Used Iron Plates.");
+		mes "[Scarlet]";
+		mes "Now, get off!";
+		mes "The plates won't hold for long!";
+		next;
+		mes "[Deu]";
+		mes "Thank the gods!";
+		mes "Here, Magi!";
+		mes "Take my hand and get down.";
+		cutin "bu_du4.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "Whew...";
+		mes "I'm glad no one's hurt.";
+		mes "I'll let this go,";
+		mes "but never again!";
+		cutin "",255;
+		next;
+		mes "[Scarlet]";
+		mes "And " + strcharinfo(0) + ", thank you so much.";
+		mes "We could have been in big trouble if it weren't for you.";
+		emotion ET_THANKS;
+		next;
+		mes "[Scarlet]";
+		mes "I've just heard from Elisha.";
+		mes "You had to walk because the elevator was broken, right?";
+		next;
+		mes "[Scarlet]";
+		mes "I'm sorry for the inconvenience.";
+		mes "The elevator is back in operation now. Let me know if you want to go up.";
+		next;
+		mes "[Mark]";
+		mes "Whew! " + strcharinfo(0) + ", you've saved us.";
+		mes "Sigh, I don't know when he's going to grow up.";
+		emotion ET_THANKS, getnpcid(0, "Mark#ep15_1elb");
+		cutin "bu_mark2.bmp",0;
+		next;
+		mes "[Magi]";
+		mes "*Sob* *Hiccup*";
+		mes "Th-thanks... *Sob* *Hiccup*";
+		mes "I was so scared! Wah-!";
+		emotion ET_THANKS, getnpcid(0, "Magi#ep15_1elb");
+		cutin "bu_maggi4.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "...Sorry.";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "Thank you.";
+		mes "Sigh, I don't want to imagine what might have happened if you, " + strcharinfo(0) + ", didn't pass by at that moment.";
+		emotion ET_THANKS, getnpcid(0, "Tamarin#ep15_1elb");
+		cutin "ep143_tasmi.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "...Thank you.";
+		cutin "bu_alp1.bmp",2;
+		emotion ET_THANKS, getnpcid(0, "Alf#ep15_1elb");
+		next;
+		mes "[Tamarin]";
+		mes "By the way, don't you think it's strange";
+		mes "that an elevator is set up and running in the newly discovered ruins?";
+		cutin "ep143_tasta.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Well,";
+		mes "Rekenber is sponsoring the excavation, and that's a good enough reason for me.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[???]";
+		mes "The ruins under Juperos. Isn't that exciting?";
+		cutin "",255;
+		next;
+		mes "[Deu]";
+		mes "It is!";
+		mes "No one hasn't figured out when the ruins were built.";
+		mes "Let's go! I want to be the first to know!";
+		cutin "bu_du2.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Calm down!";
+		mes "Haven't you learned? You almost broke the elevator!";
+		emotion ET_FRET, getnpcid(0, "Mark#ep15_1elb");
+		cutin "bu_mark3.bmp",0;
+		next;
+		mes "[Scarlet]";
+		mes "Be careful!";
+		mes "The floor is still unstable!";
+		cutin "",255;
+		close;
+	default:
+		mes "Good day.";
+		mes "Please say your name, so I can check your registration.";
+		next;
+		if (select( "Say your name.", "End conversation." ) == 1) {
+			mes "[Scarlet]";
+			mes "Hm...";
+			mes "Yes, " + strcharinfo(0) + ", your registration has been confirmed.";
+			mes "Would you like to move to the entrance to Juperos?";
+			next;
+			if (select( "No.", "Yes." ) == 2) {
+				mes "[Scarlet]";
+				mes "Ready?";
+				mes "Have a safe exploration!";
+				close2;
+				warp "yuno_fild07",230,156;
+				end;
+			}
+		}
+		mes "[Scarlet]";
+		mes "Have a good day.";
+		close;
+	}
+}
+
+function	script	excavator_part2	{
+	mes "[Deu]";
+	mes "Hm...";
+	mes "This place doesn't look as exciting as I thought.";
+	cutin "bu_du3.bmp",2;
+	next;
+	mes "[Mark]";
+	mes "What did you expect?";
+	emotion ET_THINK, getnpcid(0, "Mark#ep15_1elb");
+	cutin "bu_mark1.bmp",0;
+	next;
+	mes "[Deu]";
+	mes "You know,";
+	mes "I thought it'd be filled with amazing treasures.";
+	cutin "bu_du2.bmp",2;
+	next;
+	mes "[Mark]";
+	mes "It it were, other people probably beat us to it.";
+	cutin "bu_mark2.bmp",0;
+	next;
+	mes "[Alf]";
+	mes "Um...";
+	mes "The place may not look like much, but the building styles and materials are not like what I've seen in Midgard.";
+	cutin "bu_alp1.bmp",2;
+	next;
+	mes "[Alf]";
+	mes "Or in Juperos.";
+	next;
+	mes "[Deu]";
+	mes "Whoa!";
+	mes "Guys, come look at this fountain!";
+	emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+	cutin "bu_du2.bmp",2;
+	setquest 11367;// Looking for the Traces
+	VER_ELEVATOR = 100;
+	return;
+}
+
+verus04,117,219,0	script	Alf#ep15_1elb	4_M_BLACKMAN,{
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "[Alf]";
+		mes "Excavation, that's a good subject.";
+		emotion ET_THINK;
+		cutin "bu_alp4.bmp",2;
+		break;
+	case 3:
+		mes "[Alf]";
+		mes "...";
+		mes "S-stop moving.";
+		emotion ET_PROFUSELY_SWEAT;
+		cutin "bu_alp2.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "WAAAAAHH-!";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "What did you do in the elevator?";
+		mes "I told you not to run or jump inside the elevator!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 4:
+		mes "[Alf]";
+		mes "S-stop moving.";
+		mes "Th-the f-floor...";
+		emotion ET_PROFUSELY_SWEAT;
+		cutin "bu_alp2.bmp",2;
+		break;
+	case 5:
+		excavator_part2();
+		break;
+	case 100:
+		mes "[Alf]";
+		mes "What about the fountain?";
+		emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+		cutin "bu_alp1.bmp",2;
+		break;
+	default:
+		mes "[Alf]";
+		mes "...Thank you.";
+		cutin "bu_alp1.bmp",2;
+		break;
+	}
+	close3;
+}
+verus04,115,220,5	script	Deu#ep15_1elb	4_M_REDMAN,{
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "[Deu]";
+		mes "Adventurers,";
+		mes "let's go!";
+		cutin "bu_du2.bmp", 2;
+		break;
+	case 3:
+		mes "[Deu]";
+		mes "WAAAAAHH-!";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Someone please do something!";
+		next;
+		mes "[Scarlet]";
+		mes "What did you do in the elevator?";
+		mes "I told you not to run or jump inside the elevator!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 4:
+		mes "[Deu]";
+		mes "WAH-!";
+		mes "We're going to crash to the ground!";
+		emotion ET_HUK;
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "Don't say that!";
+		mes "This is your fault!";
+		emotion ET_HUK, getnpcid(0, "Tamarin#ep15_1elb");
+		cutin "ep143_tahuk.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "Quiet, both of you!";
+		mes "If you move an inch, we are all going to die!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 5:
+		excavator_part2();
+		break;
+	case 100:
+		mes "[Deu]";
+		mes "Whoa!";
+		mes "Guys, come look at this fountain!";
+		emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+		cutin "bu_du2.bmp",2;
+		break;
+	default:
+		mes "[Deu]";
+		mes "Adventuring is all about bravery and curiosity!";
+		cutin "bu_du2.bmp",2;
+	}
+	close3;
+}
+verus04,117,220,3	script	Magi#ep15_1elb	4_F_PINKWOMAN,{
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "[Magi]";
+		mes "Phantasmagorika. What a pretty name!";
+		cutin "bu_maggi2.bmp", 2;
+		break;
+	case 3:
+		mes "[Magi]";
+		mes "Kyaaaahhh-!";
+		emotion ET_HUK;
+		cutin "bu_maggi4.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "WAAAAAHH-!";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "What did you do in the elevator?";
+		mes "I told you not to run or jump inside the elevator!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 4:
+		mes "[Magi]";
+		mes "Kyaaaaah-!";
+		emotion ET_HUK;
+		cutin "bu_maggi4.bmp",2;
+		break;
+	case 5:
+		excavator_part2();
+		break;
+	case 100:
+		mes "[Magi]";
+		mes "Deu is full of bile and vinegar.";
+		mes "What's so interesting about the fountain?";
+		emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+		cutin "bu_maggi1.bmp",2;
+		break;
+	default:
+		mes "[Magi]";
+		mes "*Sob* *Hiccup*";
+		mes "Th-thanks... *Sob* *Hiccup*";
+		mes "I was so scared! Wah-!";
+		emotion ET_CRY;
+		cutin "bu_maggi4.bmp",2;
+	}
+	close3;
+}
+verus04,115,221,5	script	Mark#ep15_1elb	4_M_BLUEMAN,{
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "[Mark]";
+		mes "Phantasmagorika.";
+		mes "I can't wait to know more about this place.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "It's discovered near Juperos, but believed to belong to a different civilization.";
+		cutin "bu_mark2.bmp",0;
+		break;
+	case 3:
+		mes "[Mark]";
+		mes "Watch out!";
+		emotion ET_HUK;
+		cutin "bu_mark4.bmp",0;
+		next;
+		mes "[Deu]";
+		mes "WAAAAAHH-!";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "What did you do in the elevator?";
+		mes "I told you not to run or jump inside the elevator!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 4:
+		mes "[Mark]";
+		mes "By the gods, Deu!";
+		mes "You're going to give me a heart attack!";
+		emotion ET_FRET;
+		cutin "bu_mark3.bmp",0;
+		break;
+	case 5:
+		excavator_part2();
+		break;
+	case 100:
+		mes "[Mark]";
+		mes "What about the fountain?";
+		emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+		cutin "bu_mark3.bmp",0;
+		break;
+	default:
+		mes "[Mark]";
+		mes "Whew! " + strcharinfo(0) + ", you've saved us.";
+		mes "Sigh, I don't know when he's going to grow up.";
+		cutin "bu_mark3.bmp",0;
+	}
+	close3;
+}
+verus04,116,219,5	script	Tamarin#ep15_1elb	4_M_TAMARIN,{
+	switch(VER_ELEVATOR) {
+	case 0:
+	case 1:
+	case 2:
+		mes "[Tamarin]";
+		mes "An excavation project of this scale should attract throngs of people.";
+		cutin "ep143_tasta.bmp",2;
+		break;
+	case 3:
+		mes "[Tamarin]";
+		mes "I told you stop jumping!";
+		emotion ET_HUK;
+		cutin "ep143_tahuk.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "WAAAAAHH-!";
+		emotion ET_HUK, getnpcid(0, "Deu#ep15_1elb");
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Scarlet]";
+		mes "What did you do in the elevator?";
+		mes "I told you not to run or jump inside the elevator!";
+		emotion ET_HUK, getnpcid(0, "Guide Scarlet#ep15_1bs");
+		cutin "",255;
+		close;
+	case 4:
+		mes "[Tamarin]";
+		mes "Argh,";
+		mes "nothing is going in my favor!";
+		emotion ET_CRY;
+		cutin "ep143_tahuk.bmp",2;
+		break;
+	case 5:
+		excavator_part2();
+		break;
+	case 100:
+		mes "[Tamarin]";
+		mes "Hm, did Deu find something in the fountain?";
+		emotion ET_HUK, getnpcid(0, "Fountain#ep15_1elb");
+		cutin "ep143_tasmi.bmp",2;
+		break;
+	default:
+		mes "[Tamarin]";
+		mes "Thank you.";
+		mes "Sigh, I don't want to imagine what might have happened if you, " + strcharinfo(0) + ", didn't pass by at that moment.";
+		cutin "ep143_tasmi.bmp",2;
+	}
+	close3;
+}
+
+verus04,116,226,0	script	Fountain#ep15_1elb	4_ENERGY_BLUE,{
+	if (VER_ELEVATOR == 100) {
+		mes "[Deu]";
+		mes "Look, I wiped it, and it sparkles!";
+		cutin "bu_du2.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Why can't you just listen to us?";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "Stop wasting your time on something so stupid!";
+		cutin "ep143_taang.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Um...";
+		mes "Wait.";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Look, it doesn't look like it's been buried deep underground for centuries.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "You're right. It looks too clean underneath all the dirt and grime.";
+		cutin "ep143_tasta.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Let's see...";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Um...";
+		mes "It's too clean. I can't tell anything about it.";
+		cutin "bu_alp2.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "If this fountain was ever used, it should have some sort of deposit left on the bottom, but there's none at all. It's almost as if the water was drained out of it at once.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "The deposit could have been wiped off naturally after a long time.";
+		next;
+		mes "[Alf]";
+		mes "Let's look around for something else.";
+		next;
+		mes "[Tamarin]";
+		mes "How about those sundries on the left side?";
+		emotion ET_HUK, getnpcid(0, "Sundries#ep15_1elb");
+		cutin "ep143_tasta.bmp",2;
+		changequest 11367,11368;// Looking for the Traces
+		VER_ELEVATOR = 101;
+	}
+	else if (VER_ELEVATOR == 101) {
+		mes "[Alf]";
+		mes "Let's look around for something else.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "How about those sundries on the left side?";
+		emotion ET_HUK, getnpcid(0, "Sundries#ep15_1elb");
+		cutin "ep143_tasta.bmp",2;
+	}
+	else {
+		mes "- Ordinary-looking Fountain -";
+		mes "- There's nothing in it. -";
+	}
+	close3;
+}
+
+verus04,95,238,0	script	Sundries#ep15_1elb	4_ENERGY_BLUE,{
+	if (VER_ELEVATOR == 101) {
+		mes "[Alf]";
+		mes "Hm...";
+		mes "Everything looks too clean.";
+		mes "This site doesn't look like it's as old as we thought it was.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Aside from those piles of broken machines, nothing looks too special.";
+		next;
+		mes "[Alf]";
+		mes "And look at the tree on the left side.";
+		emotion ET_HUK, getnpcid(0, "Tree#ep15_1elb");
+		changequest 11368,11369;// Looking for the Traces
+		VER_ELEVATOR = 102;
+	}
+	else if (VER_ELEVATOR == 102) {
+		mes "[Alf]";
+		mes "Look at the tree on the left side.";
+		cutin "bu_alp1.bmp",2;
+		emotion ET_HUK, getnpcid(0, "Tree#ep15_1elb");
+	}
+	else
+		mes "- The ground is littered with sundries. -";
+	close3;
+}
+
+verus04,79,249,0	script	Tree#ep15_1elb	4_ENERGY_BLUE,{
+	if (VER_ELEVATOR == 102) {
+		mes "[Deu]";
+		mes "I've been wondering since we arrived: don't trees need sunlight to grow?";
+		cutin "bu_du1.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "*Gasp*";
+		mes "Deu, that's the smartest thing I've ever heard you say.";
+		cutin "ep143_tahuk.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "What did you say?";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "How did this tree grow underground?";
+		mes "There's no sunlight.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[Magi]";
+		mes "It doesn't look like it's enchanted.";
+		cutin "bu_maggi1.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Oh, look here!";
+		mes "Something strange is standing in front of the door!";
+		emotion ET_HUK, getnpcid(0, "Signboard#ep15_1elb");
+		cutin "bu_du2.bmp",2;
+		changequest 11369,11370;// Looking for the Traces
+		VER_ELEVATOR = 103;
+	}
+	else if (VER_ELEVATOR == 103) {
+		mes "[Deu]";
+		mes "Oh, look here!";
+		mes "Something strange is standing in front of the door!";
+		emotion ET_HUK, getnpcid(0, "Signboard#ep15_1elb");
+		cutin "bu_du2.bmp",2;
+	}
+	else {
+		mes "A tall, verdant tree.";
+		mes "Nothing looks special about it, except that it's growing underground.";
+	}
+	close3;
+}
+
+verus04,62,255,0	script	Signboard#ep15_1elb	4_ENERGY_BLUE,{
+	if (VER_ELEVATOR == 103 || VER_ELEVATOR == 104) {
+		if (VER_ELEVATOR == 103) {
+			mes "[Mark]";
+			mes "Hey!";
+			mes "Stop wandering off! This place can be dangerous!";
+			cutin "bu_mark3.bmp",0;
+			next;
+			mes "[Deu]";
+			mes "Adventuring is all about bravery and curiosity!";
+			cutin "bu_du2.bmp",2;
+			next;
+			mes "[Deu]";
+			mes "And I'm not going to let other people take all the treasures!";
+			cutin "bu_du1.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "Last time you said that, you were hospitalized for a month.";
+			cutin "ep143_taang.bmp",2;
+			next;
+			mes "[Deu]";
+			mes "This time, it's different!";
+			mes "Plus, what doesn't kill me only makes me stronger. It did!";
+			cutin "bu_du5.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "You're delusional.";
+			cutin "bu_mark4.bmp",0;
+			next;
+			mes "[Alf]";
+			mes "Oh,";
+			mes "wait.";
+			cutin "bu_alp1.bmp",2;
+			next;
+		}
+		mes "[Alf]";
+		mes "Look behind the building.";
+		mes "There's a path that leads upward.";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "I go";
+		mes "wherever my instinct leads me!";
+		mes "Mwah hah hah!";
+		cutin "bu_du2.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Deu, stop!";
+		mes "Did you not hear me?!";
+		cutin "bu_mark3.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "Grr!";
+		mes "He's out of control.";
+		next;
+		mes "[Magi]";
+		mes "Mark,";
+		mes "Deu's managed to get that far already.";
+		cutin "bu_maggi1.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Grr!";
+		mes "That knucklehead!";
+		cutin "bu_mark3.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "We'd better follow him before we lose him.";
+		cutin "bu_mark1.bmp",0;
+		if (VER_ELEVATOR == 103) {
+			changequest 11370,11371;// Looking for the Traces
+			VER_ELEVATOR = 104;
+		}
+		close3;
+	}
+	mes "- The door is blocked. -";
+	close;
+}
+
+verus03,46,23,3	script	Deu#ep15_1elb03	4_M_REDMAN,{
+	mes "[Deu]";
+	if (VER_ELEVATOR == 104) {
+		mes "Whoa...";
+		mes "I thought this place would be the same as the last one, but it's overrun with machines.";
+		emotion ET_HUK;
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Are these the same as those in Juperos?";
+		cutin "bu_du1.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "What does this place have to do with Juperos?";
+		next;
+		mes "[Deu]";
+		mes "Up there, I saw another fountain looking similar to the last one.";
+		mes "Do you want to go check it out?";
+		cutin "bu_du2.bmp",2;
+		changequest 11371,11372;// Looking for the Traces
+		VER_ELEVATOR = 105;
+	}
+	else if (VER_ELEVATOR == 105) {
+		mes "Up there, I saw another fountain looking similar to the last one.";
+		mes "Do you want to go check it out?";
+		cutin "bu_du2.bmp",2;
+	}
+	else {
+		mes "What does this place have to do with Juperos?";
+		cutin "bu_du5.bmp",2;
+	}
+	close3;
+}
+
+verus03,44,65,0	script	Fountain#ep15_1elb03	4_ENERGY_BLUE,{
+	if (VER_ELEVATOR == 105) {
+		mes "[Alf]";
+		mes "Hm...";
+		mes "This place is disturbingly clean.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "All the buildings are well preserved. What do you think happened to the owners?";
+		cutin "ep143_tasta.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "If they're dead, they're not buried or left to rot in here. If they left... well, I don't think they did.";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Magi]";
+		mes "I tried to read with magic,";
+		mes "but to no avail.";
+		cutin "bu_maggi1.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "So the trail of clues went cold.";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "...";
+		cutin "bu_mark3.bmp",0;
+		next;
+		mes "[Deu]";
+		mes "Ouch! Why did you hit me?";
+		cutin "bu_du4.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "I'll take the path north. Meet me up there later.";
+		cutin "bu_mark2.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "Keep an eye on Deu; he wanders off easily.";
+		cutin "bu_mark4.bmp",0;
+		changequest 11372,11373;// Looking for the Traces
+		VER_ELEVATOR = 106;
+	}
+	else if (VER_ELEVATOR == 106) {
+		mes "[Mark]";
+		mes "I'll take the path north. Meet me up there later.";
+		cutin "bu_mark2.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "Keep an eye on Deu; he wanders off easily.";
+		cutin "bu_mark4.bmp",0;
+	}
+	else {
+		mes "- Ordinary-looking Fountain -";
+		mes "- There's nothing in it. -";
+	}
+	close3;
+}
+
+verus03,88,237,3	script	Mark#ep15_1elb03	4_M_BLUEMAN,{
+	mes "[Mark]";
+	if (VER_ELEVATOR == 106) {
+		mes "Do you see the giant machine ahead of us?";
+		mes "Unlike the first place, this place is filled with giant machines.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "Buildings are crumbled. The ground is caved in here and there.";
+		next;
+		mes "[Mark]";
+		mes "I've found a path over there, though it's blocked.";
+		next;
+		mes "[Mark]";
+		mes "That doesn't bode well.";
+		cutin "bu_mark4.bmp",0;
+		next;
+		mes "[Mark]";
+		mes "Oh, Tamarin!";
+		mes "Don't go over there!";
+		cutin "bu_mark1.bmp",0;
+		emotion ET_HUK;
+		changequest 11373,11374;// Looking for the Traces
+		VER_ELEVATOR = 107;
+	}
+	else if (VER_ELEVATOR == 107) {
+		mes "Oh, Tamarin!";
+		mes "Don't go over there!";
+		cutin "bu_mark1.bmp",0;
+		emotion ET_HUK;
+	}
+	else {
+		mes "Do you see the giant machine ahead of us?";
+		mes "Unlike the first place, this place is filled with giant machines.";
+		cutin "bu_mark3.bmp", 0;
+	}
+	close3;
+}
+
+verus03,51,256,3	script	Tamarin#ep15_1elb03	4_M_TAMARIN,{
+	mes "[Tamarin]";
+	mes "Look over there.";
+	mes "That part of the place is completely destroyed.";
+	cutin "ep143_tahuk.bmp",2;
+	if (VER_ELEVATOR == 107 || VER_ELEVATOR == 108) {
+		next;
+		mes "[Tamarin]";
+		mes "Magi, how's it like over there?";
+		cutin "ep143_tasta.bmp",2;
+		emotion ET_HUK, getnpcid(0, "Magi#ep15_1elb03");
+		if (VER_ELEVATOR == 107) {
+			changequest 11374,11375;// Looking for the Traces
+			VER_ELEVATOR = 108;
+		}
+	}
+	close3;
+}
+
+verus03,35,254,3	script	Magi#ep15_1elb03	612,{
+	if (VER_ELEVATOR < 108) {
+		mes "[Magi]";
+		mes "Danger is in the air. I can feel it in my bones.";
+		cutin "bu_maggi3.bmp",2;
+	}
+	else if (VER_ELEVATOR == 108) {
+		mes "[Magi]";
+		mes "Oh.";
+		mes "The path over here is also blocked.";
+		cutin "bu_maggi1.bmp",2;
+		next;
+		mes "[Magi]";
+		mes "I'm sensing some kind of current on the other side,";
+		mes "but I can't tell exactly what.";
+		cutin "bu_maggi3.bmp",2;
+		next;
+		mes "[Magi]";
+		mes "It doesn't feel like a living thing,";
+		mes "but it's strong just the same.";
+		cutin "bu_maggi1.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Um.";
+		mes "I really don't want to go over there.";
+		cutin "bu_du3.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "...!";
+		mes "That's a first. You earned the nickname Red-haired Boar because you never stop running.";
+		cutin "ep143_tahuk.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "No one calls me that!";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "I've got cooler nicknames! Call me those!";
+		next;
+		mes "[Alf]";
+		mes "Deu.";
+		mes "Don't insult boars.";
+		mes "All their parts, from head to toe, are useful.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "Delicious, too.";
+		cutin "bu_alp4.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "That's not the point!";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Deu's instinct has never betrayed us. We should steer clear of that path.";
+		mes "Right, Boar?";
+		cutin "bu_mark2.bmp",0;
+		next;
+		mes "[Deu]";
+		mes "Grr!";
+		mes "I said";
+		mes "don't call me that!";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Alf]";
+		mes "The path is blocked, and if the Phantasmagorika Excavation Team hasn't cleared it, then there must be a reason. Let's steer clear of it until we find out more about it.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Deu]";
+		mes "Don't you make fun of me!";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "I agree.";
+		mes "Let's check the other places first.";
+		completequest 11375;// Looking for the Traces
+		getexp 1000000,0;
+		cutin "bu_mark2.bmp",0;
+		VER_ELEVATOR = 109;
+	}
+	else {
+		mes "[Alf]";
+		mes "The path is blocked, and if the Phantasmagorika Excavation Team hasn't cleared it, then there must be a reason. Let's steer clear of it until we find out more about it.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "I agree.";
+		mes "Let's check the other places first.";
+		cutin "bu_mark2.bmp",0;
+	}
+	close3;
+}
+
+// Part 3 : Vestige
+verus01,221,65,5	script	Due#Verus	4_M_REDMAN,{
+	if (VER_MAIN < 19)
+		end;
+	mes "[Due]";
+	if (VER_ELEVATOR == 109 || VER_ELEVATOR == 1000) {
+		if (VER_ELEVATOR == 109) {
+			mes "Isn't this a complete mess?";
+			mes "Whew, barely got in!";
+			mes "I hate these access protocols.";
+			cutin "bu_du3.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "I think it's an essential protocol needed for safety.";
+			cutin "bu_mark3.bmp",0;
+			next;
+			mes "[Due]";
+			mes "You guys, look at this!";
+			cutin "bu_du2.bmp",2;
+			next;
+			mes "[Due]";
+			mes "Isn't this a complete mess?";
+			next;
+			mes "[Mark]";
+			mes "Hey...";
+			mes "Didn't you just say that?";
+			cutin "bu_mark3.bmp",0;
+			next;
+			mes "[Alp]";
+			mes "Hey.";
+			mes "Forget about that and let's start on the investigation instead.";
+			cutin "bu_alp1.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "By the way I think I know why only this place was sealed off.";
+			cutin "ep143_tasta.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "There are no intact buildings and the cracks on the ground are much more severe compared to other areas...";
+			next;
+			mes "[Tamarin]";
+			mes "Not to mention these monsters...";
+			cutin "ep143_tahuk.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "It seems they are only found here so something is wrong...";
+			next;
+			mes "[Due]";
+		}
+		mes "Right!";
+		mes "Our job is to investigate that!";
+		cutin "bu_du2.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "Come to think of it the people passing by earlier did say there is an incredible device in the center...";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "Then let's investigate that part first.";
+		cutin "bu_mark1.bmp",0;
+		if (VER_ELEVATOR == 109) {
+			setquest 11381;// Vestige
+			VER_ELEVATOR = 1000;
+		}
+		close3;
+	}
+	mes "Investigations are supposed to be done calmly...";
+	cutin "bu_du3.bmp",2;
+	close3;
+}
+
+verus01,151,173,3	script	Fruit#Verus	4_F_FRUIT,{
+	mes "[Fruit]";
+	if (VER_ELEVATOR < 110) {
+		mes "Coooooooooolll!!!!";
+		mes "See this?";
+		mes "Right here!!!!";
+		cutin "EP15_2_fru_2.bmp",2;
+		next;
+		mes "[Fruit]";
+		mes "Doesn't it look like something will go swirly?!";
+		mes "Haaa!";
+		close3;
+	}
+	if (VER_ELEVATOR == 1000 || VER_ELEVATOR == 1001) {
+		if (VER_ELEVATOR == 1000) {
+			mes "Coooooooooolll!!!!";
+			mes "See this?";
+			mes "Right here!!!!";
+			cutin "EP15_2_fru_2.bmp",2;
+			next;
+			mes "[Fruit]";
+			mes "Doesn't it look like something will go swirly?!";
+			mes "Haaa!";
+			next;
+			mes "[Fruit]";
+			mes "I wish I could take the whole thing to my laboratory!";
+			mes "I can only watch on...";
+			cutin "EP15_2_fru_3.bmp",2;
+			next;
+			mes "[Fruit]";
+			mes "So I was thinking...";
+			mes "I was busy here so I haven't been able to go down to the underground bunker they say is right underneath.";
+			cutin "EP15_2_fru_2.bmp",2;
+			next;
+			mes "[Fruit]";
+			mes "Do you want to go?";
+			next;
+			mes "[Fruit]";
+			mes "It isn't common to have someone tell you all the investigation points, right?";
+			next;
+			mes "[Fruit]";
+			mes "I am not asking you to work for free either!";
+			mes "If you bring back interesting results there will be rewards!";
+			next;
+			mes "[Fruit]";
+			mes "What do you think?";
+			next;
+			if (select( "Quit.", "Do it." ) == 1) {
+				mes "[Fruit]";
+				mes "Eh...";
+				cutin "EP15_2_fru_1.bmp",2;
+				close2;
+				cutin "",255;
+				end;
+			}
+		}
+		mes "Yahoo!!!";
+		mes "If you go in a little ways there will probably be someone to guide you.";
+		next;
+		mes "[Fruit]";
+		mes "I will be expecting you to bring back lots of fun stuff.";
+		if (VER_ELEVATOR == 1000) {
+			erasequest 11381;// Vestige
+			setquest 11382;// Vestige
+			VER_ELEVATOR = 1001;
+		}
+		close3;
+	}
+	if (checkquest(11380,HUNTING) == 2) {
+		mes "[Fruit]";
+		mes "Aarrghhhh!!!";
+		mes "Amazing!!!";
+		cutin "EP15_2_fru_2.bmp",2;
+		next;
+		mes "[Fruit]";
+		mes "So? So? Then what?";
+		mes "Come on! Tell me more!!!";
+		erasequest 11380;// Final Room
+		getitem 6827,1;// Intact Machine Component
+		getitem 6828,1;// Gravity Safety Device
+		close3;
+	}
+	mes "Hm... Is there anything more interesting?";
+	cutin "EP15_2_fru_1.bmp",2;
+	next;
+	if (select( "Trade goods.", "Quit." ) == 1) {
+		mes "[Fruit]";
+		mes "I will give you equipment in return for 17 intact machine components!";
+		next;
+		switch( select( "Runaway Chip", "Broken Chip 1", "Broken Chip 2" ) ) {
+		case 1:
+			mes "[Fruit]";
+			mes "Runaway Chip is HIT + 50, FLEE + 50, MSP - 50%";
+			next;
+			mes "[Fruit]";
+			mes "When equipped together with Broken Chip 1 and Broken Chip 2, you get unlimited movement acceleration.";
+			next;
+			mes "[Fruit]";
+			mes "ATK and MATK + 50. If helmet refinement is at 9, it has an affect of MSP + 50%, MHP + 10%.";
+			.@item_id = 18997;
+			break;
+		case 2:
+			mes "[Fruit]";
+			mes "Broken Chip 1 has STR + 4. If equipped with Broken Chip 2, it has a STR + 8, INT+ 8 affect.";
+			.@item_id = 28326;
+			break;
+		case 3:
+			mes "[Fruit]";
+			mes "Broken Chip 2 has INT + 4. If equipped with Broken Chip 1, it has a STR + 8, INT+ 8 affect.";
+			.@item_id = 28327;
+			break;
+		}
+		next;
+		if (select( "Exchange", "Quit." ) == 1) {
+			if (countitem(6827) < 17) {
+				mes "[Fruit]";
+				mes "Not enough!!!";
+				close3;
+			}
+			delitem 6827,17;// Intact Machine Component
+			getitem .@item_id,1;// Runaway Chip
+			close3;
+		}
+		// continue
+	}
+	mes "[Fruit]";
+	mes "Is this not what you wanted?";
+	close3;
+}
+
+un_bunker,100,96,3	script	Mark#Bunker Entrance	4_M_BLUEMAN,{
+	mes "[Mark]";
+	if (VER_ELEVATOR == 1001 || VER_ELEVATOR == 1002) {
+		if (VER_ELEVATOR == 1001) {
+			mes "This part is very pristinely preserved compared to the upper parts.";
+			mes "But this disgusting smell....";
+			cutin "bu_mark4.bmp",0;
+			next;
+			mes "[Mark]";
+			mes "The Undead not seen in other areas can be easily seen in this zone.";
+			next;
+			mes "[Mark]";
+			mes "If you look at the structure of this place...";
+			mes "Or the condition, I think this place was built to be used as a bunker.";
+			next;
+			mes "[Tamarin]";
+			mes "Then that means... The Undead...";
+			cutin "ep143_tahuk.bmp",2;
+			next;
+			mes "[Maggi]";
+			mes "Eeeeeeeeeeek!!!!!";
+			cutin "bu_maggi4.bmp",2;
+			next;
+			mes "[Mark]";
+		}
+		mes "It might be a good idea to calm down first...and look around thoroughly.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[Due]";
+		mes "O...o...o...okay!";
+		mes "Thi...thi...this stuff..... is...is nothing...";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "Then let's look around individually and send a signal when something of value is found.";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Due]";
+		mes "Wa...wait!!";
+		mes "Wouldn't it be better to move together since it's dangerous?";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Due]";
+		mes "Hey!";
+		mes "Look!";
+		mes "Don't leave me!";
+		mes "Hey!!!";
+		next;
+		mes "[Due]";
+		mes "Wait for me!!!!!";
+		if (VER_ELEVATOR == 1001) {
+			changequest 11382,11383;// Vestige
+			VER_ELEVATOR = 1002;
+		}
+		close3;
+	}
+	mes "What is this disgusting smell?";
+	cutin "bu_mark4.bmp",0;
+	close3;
+}
+
+un_bunker,363,171,3	script	Alp#Entrance	4_M_BLACKMAN,{
+	mes "[Alp]";
+	if (VER_ELEVATOR < 1002) {
+		mes "There are too many suspicious places...";
+		cutin "bu_alp3.bmp",2;
+		close3;
+	}
+	if (VER_ELEVATOR == 1002) {
+		mes "Um...";
+		mes "You're here...";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "I didn't send the signal yet but did you come here because you also got a strange feeling?";
+		cutin "bu_alp1.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "A long time ago...";
+		mes "...";
+		next;
+		mes "[Alp]";
+		mes "No...no.";
+		mes "Let's call the others and start the investigation.";
+		cutin "bu_alp2.bmp",2;
+		next;
+		switch( select( "Quit.", "Investigate." ) ) {
+		case 1:
+			mes "[Alp]";
+			mes "...";
+			mes "Don't forget our goal is to investigate...";
+			cutin "bu_alp1.bmp",2;
+			break;
+		case 2:
+			mes "[Alp]";
+			mes "I just sent out the signal so the others will arrive soon.";
+			cutin "bu_alp1.bmp",2;
+			next;
+			mes "[Due]";
+			mes "Aaarghhhh!!!!";
+			mes "Get away you unctuous bastards!!!!!";
+			cutin "bu_du5.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "Be quiet...";
+			cutin "bu_mark3.bmp",0;
+			next;
+			mes "[Verity]";
+			mes "Is there something special about this room?";
+			cutin "EP15_2_brt_3.bmp",2;
+			next;
+			mes "[Due]";
+			mes "Oh! The woman at the entrance earlier?";
+			mes "Why are you at a dangerous place like this?";
+			cutin "bu_du5.bmp",2;
+			next;
+			mes "[Verity]";
+			mes "Oh?";
+			mes "Did you not hear?";
+			mes "That..";
+			cutin "EP15_2_brt_5.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "Come to think of it that girl did say there would probably be a guide.";
+			cutin "ep143_tasmi.bmp",2;
+			next;
+			mes "[Alp]";
+			mes "....Um...";
+			mes "Was there...";
+			cutin "bu_alp1.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "Anyway it seems everybody is here so let's go in.";
+			cutin "bu_mark1.bmp",0;
+			next;
+			mes "[Alp]";
+			mes "Right...";
+			mes "There's a bad energy so be careful...";
+			cutin "bu_alp1.bmp",2;
+			erasequest 11383;// Vestige
+			setquest 11384;// Vestige
+			VER_ELEVATOR = 1003;
+			close2;
+			warp "un_bunker",385,83;
+			end;
+		}
+	}
+	mes "Is there more left to investigate in this room?";
+	cutin "bu_alp1.bmp",2;
+	next;
+	if (select( "Quit.", "Go in." ) == 1) {
+		mes "[Alp]";
+		mes "...";
+		mes "Don't forget our goal is to investigate...";
+		close3;
+	}
+	mes "[Alp]";
+	mes "Right...";
+	mes "There's a bad energy so be careful...";
+	close2;
+	warp "un_bunker",385,83;
+	end;
+}
+
+un_bunker,388,86,3	script	Alp#Entrance2	4_M_BLACKMAN,{
+	if (VER_ELEVATOR < 1003)// inaccurate
+		end;
+	if (VER_ELEVATOR == 1003) {
+		mes "[Alp]";
+		mes "As expected..";
+		mes "Only this room has a different lay out than the rest...";
+		cutin "bu_alp3.bmp",2;
+		next;
+		mes "[Mark]";
+		mes "I see.";
+		mes "There's a door that doesn't seem to belong in a very unnatural location.";
+		cutin "bu_mark1.bmp",0;
+		next;
+		mes "[Tamarin]";
+		mes "...There is no other way but to go in and investigate ourselves?";
+		cutin "ep143_taang.bmp",2;
+		next;
+		mes "[Due]";
+		mes "Charge!!!!!";
+		cutin "bu_du5.bmp",2;
+		erasequest 11384;// Vestige
+		setquest 11385;// Vestige
+		VER_ELEVATOR = 1004;
+		close2;
+		warp "un_myst",11,206;
+		end;
+	}
+	mes "[Alp]";
+	mes "Unnatural room... Unnatural door...";
+	cutin "bu_alp1.bmp",2;
+	next;
+	if (select( "Quit.", "Go in." ) == 1) {
+		mes "[Alp]";
+		mes "...";
+		close3;
+	}
+	mes "[Alp]";
+	mes "Haa...";
+	close2;
+	warp "un_myst",11,206;
+	end;
+}
+
+un_myst,27,208,5	script	Verity#Myst	4_F_BERRYTEA,{
+	mes "[Verity]";
+	mes "This space is suffocating.";
+	mes "My head is starting to throb already.";
+	cutin "EP15_2_brt_3.bmp",2;
+	next;
+	if (VER_ELEVATOR == 1004 || VER_ELEVATOR == 1005) {
+		mes "[Tamarin]";
+		mes "What is this space?";
+		mes "It seems to be poorly built for it to be used as a bunker...";
+		cutin "ep143_tasta.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "The disgusting smell has gotten worse...";
+		cutin "bu_alp5.bmp",2;
+		next;
+		mes "[Tamarin]";
+		mes "There looks to be another door there so let's check it out.";
+		cutin "ep143_tasta.bmp",2;
+		if (VER_ELEVATOR == 1004) {
+			changequest 11385,11386;// Vestige
+			VER_ELEVATOR = 1005;
+			close2;
+			cutin "",255;
+			end;
+		}
+		next;
+	}
+	if (VER_ELEVATOR == 1005)
+		.@string$ = "Move to the door.";
+	else
+		.@string$ = "Quit.";
+	if (select( .@string$, "Leave." ) == 1) {
+		mes "[Verity]";
+		mes "...Should have brought some painkillers for headaches.";
+		cutin "EP15_2_brt_4.bmp",2;
+		close3;
+	}
+	mes "[Verity]";
+	mes "Are you quitting the investigation?";
+	cutin "EP15_2_brt_4.bmp",2;
+	close2;
+	warp "un_bunker",300,166;
+	end;
+}
+
+un_myst,56,206,0	script	warp_un_myst	WARPNPC,1,1,{
+	end;
+OnTouch:
+	if (VER_ELEVATOR == 1005) {
+		mes "- Does not seem locked but blocked by something.-";
+		next;
+		if (select( "Break it.", "Quit." ) == 2) {
+			mes "[Due]";
+			mes "You want to leave a place like this alone?";
+			cutin "bu_du1.bmp",2;
+			close3;
+		}
+		mes "[Due]";
+		mes "Alright then....";
+		mes "One!";
+		mes "Two!";
+		mes "Three!";
+		cutin "bu_du5.bmp",2;
+		erasequest 11386;// Vestige
+		setquest 11387;// Vestige
+		VER_ELEVATOR = 1006;
+		close2;
+	}
+	warp "un_myst",81,190;
+	end;
+}
+
+un_myst,100,190,3	script	Due#Hall	4_M_REDMAN,{
+	if (VER_ELEVATOR == 1006 || VER_ELEVATOR == 1007) {
+		if (VER_ELEVATOR == 1006) {
+			mes "[Due]";
+			mes "Wow...What is this place?";
+			cutin "bu_du1.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "It is a really suspicious place...";
+			mes "I didn't think such a space would exist inside a bunker...";
+			cutin "bu_mark1.bmp",0;
+			next;
+			mes "[Maggi]";
+			mes "Ah...Ah...";
+			cutin "bu_maggi3.bmp",2;
+			next;
+			mes "[Tamarin]";
+			mes "It seems to be haphazardly made considering its use... Hm...";
+			cutin "ep143_tasta.bmp",2;
+			next;
+			mes "[Maggi]";
+			mes "The...door....";
+			cutin "bu_maggi3.bmp",2;
+			next;
+			mes "[Alp]";
+			mes "There is a kind of subtlety for it be a secret space...";
+			cutin "bu_alp3.bmp",2;
+			next;
+			mes "[Maggi]";
+			mes "Door...door....";
+			cutin "bu_maggi3.bmp",2;
+			next;
+			mes "[Due]";
+			mes "Maggi what are you gaping about?";
+			cutin "bu_du2.bmp",2;
+			next;
+			mes "[Maggi]";
+			mes "The...door is stuck.";
+			cutin "bu_maggi4.bmp",2;
+			next;
+			mes "[Due]";
+			mes "Eh?";
+			cutin "bu_du5.bmp",2;
+			next;
+			mes "[Mark]";
+			mes "What?!?!?";
+			cutin "bu_mark4.bmp",0;
+			next;
+			mes "[Due]";
+			mes "Argh!!!";
+			mes "It's true?!";
+			cutin "bu_du5.bmp",2;
+			next;
+		}
+		mes "[Due]";
+		mes "Are we all trapped here?!";
+		next;
+		mes "[Mark]";
+		mes "Wa..wait let's think about this stoically.";
+		cutin "bu_mark4.bmp",0;
+		next;
+		mes "[Verity]";
+		mes "Oh no what do we do...";
+		cutin "EP15_2_brt_5.bmp",2;
+		next;
+		mes "[Alp]";
+		mes "Ah...";
+		cutin "bu_alp2.bmp",2;
+		next;
+		mes "[Verity]";
+		mes "Since there is no way to get out, should we go further inside?";
+		cutin "EP15_2_brt_4.bmp",2;
+		next;
+		mes "[Due]";
+		mes "Wait... Come to think Verity!";
+		mes "You say you are a guide and you don't know the way out?";
+		cutin "bu_du5.bmp",2;
+		next;
+		mes "[Verity]";
+		mes "This is the first time for me go in this deep...";
+		mes "There is no other way!";
+		cutin "EP15_2_brt_6.bmp",2;
+		if (VER_ELEVATOR == 1006) {
+			erasequest 11387;// Vestige
+			setquest 11388;// Vestige
+			VER_ELEVATOR = 1007;
+		}
+		close3;
+	}
+	mes "[Due]";
+	mes "Wow...What is this place?";
+	cutin "bu_du1.bmp",2;
+	next;
+	mes "[Mark]";
+	mes "It is a really suspicious place...";
+	mes "I didn't think such a space would exist inside a bunker...";
+	cutin "bu_mark1.bmp",0;
+	close3;
+}
+
+un_myst,333,206,3	script	Weird piece#01	4_GC109,{
+	if (isbegin_quest(11388) == 0 && isbegin_quest(11389) == 0) {
+		mes "There is a weird piece.";
+		close;
+	}
+	if (@weird_piece == 1) {// A
+		mes "I cannot tell how long it has been since I entered this place.";
+		mes "In this darkness my sense of time grows dull and the people are quickly growing tired.";
+		next;
+		mes "They talk of escaping without knowing the outside situation... Is this the right choice?";
+		next;
+		mes "But we have already lost our way back.";
+		mes "Yes.... This was not an escape.";
+		mes "Merely fleeing to survive...";
+		next;
+		mes "How long can we keep running?";
+		close2;
+		erasequest 11388;// Vestige
+		setquest 11389;// Vestige
+		warp "un_myst",260,204;
+		@weird_piece = 2;
+		end;
+	}
+	if (@weird_piece == 2) {
+		mes "Even though I was ready for this, the situation is deteriorating.";
+		mes "I can only say I would not have survived if I stayed at that place.";
+		next;
+		mes "Hope...";
+		next;
+		mes "Many have already become incapable of hope...";
+		close2;
+		warp "un_myst",260,204;
+		@weird_piece = 3;
+		end;
+	}
+	if (@weird_piece == 3) {
+		mes "We should have been out by now according to the calculations but there is only dirt still.";
+		next;
+		mes "The calculations could be wrong and we may be going in circles.";
+		mes "It doesn't feel right.";
+		next;
+		mes "No..";
+		mes "I haven't felt at ease since that day.";
+		close2;
+		warp "un_myst",347,138;
+		@weird_piece = 4;
+		end;
+	}
+}
+
+un_myst,182,137,3	script	Weird piece#02	4_GC109,{
+	if (@weird_piece == 4) {// B
+		mes "I may have reached my limits.";
+		mes "I must blame my overtaxed body for not listening to me now.";
+		next;
+		mes "The numbers of survivors are dwindling.";
+		next;
+		mes "Like this...";
+		mes "I thought it was karma that I am witnessing the end...";
+		mes "Perhaps it is my selfishness.";
+		mes "I don't think there is no such time left for me..";
+		close2;
+		warp "un_myst",86,136;
+		@weird_piece = 5;
+		end;
+	}
+	if (@weird_piece == 5) {
+		mes "Even walking is difficult now.";
+		next;
+		mes "Once I confidently claimed I will lead all of us...";
+		mes "I find myself pathetic for becoming a burden much less of help.";
+		next;
+		mes "Everything is regretful.";
+		mes "Everything I started...";
+		mes "Everything of mine...";
+		close2;
+		warp "un_myst",86,136;
+		@weird_piece = 6;
+		end;
+	}
+	if (@weird_piece == 6) {
+		mes "It would be better to abandon me...";
+		close2;
+		warp "un_myst",86,136;
+		@weird_piece = 7;
+		end;
+	}
+	if (@weird_piece == 7) {
+		mes "The days I am asleep are outnumbering the days I am awake now.";
+		next;
+		mes "I suddenly picture his face in my increasingly hazy consciousness.";
+		next;
+		mes "Tatio...";
+		next;
+		mes "A person sweet to me even though all I only cared about was my work.";
+		next;
+		mes "Ha... person...";
+		mes "I cannot endure the shame of my past for considering him a mere successful project.'";
+		next;
+		mes "Though I cannot help that I may die here...";
+		mes "If only to apologize to him...";
+		mes "If only to muster one sweet word, I have thoughts of survival.";
+		next;
+		mes "..Is it possible?";
+		close2;
+		warp "un_myst",14,92;
+		@weird_piece = 8;
+		end;
+	}
+}
+
+un_myst,214,86,3	script	Weird piece#03	4_GC109,{
+	if (@weird_piece > 7 && @weird_piece < 17) {
+		if (@weird_piece == 8)// C
+			mes "01001000010001010100110001001100010011110101011101001111010100100100110001000100";
+		else if (@weird_piece == 9)
+			mes "s o g g g o h o h h h h h h h h h h h h";
+		else if (@weird_piece == 10)
+			mes "debugging";
+		else if (@weird_piece == 11) {
+			mes "File...error...restore...";
+			mes "Operation...range...25%...30%...35%.......";
+		}
+		else if (@weird_piece == 12)
+			mes "45%...50%... Minimal normal operations possible start safety mode operations";
+		else if (@weird_piece == 13)
+			mes "60% movement speed normal. Bodily functions normal.";
+		else if (@weird_piece == 14)
+			mes "70% Most language function restored. Slight symptoms of septic anemia but it seems it will be fixed soon.";
+		else if (@weird_piece == 15) {
+			mes "80% Surgery was fairly successful despite having had no proper preparations.";
+			mes "Planning to apply treatment to the rest of the survivors based on this success.";
+		}
+		else if (@weird_piece == 16) {
+			mes "98% Corrupt sector detected.";
+			mes "For more effective operations I have copied the memory chip and constructed 'T_W_O_002b.'";
+			mes "There seems to have been some loss of data during the copying process...";
+			close2;
+			warp "un_myst",209,33;
+			@weird_piece = 17;
+			end;
+		}
+		close2;
+		warp "un_myst",160,89;
+		@weird_piece++;
+		end;
+	}
+}
+
+un_myst,209,42,3	script	Tamarin#Lastroom Entrance	4_M_TAMARIN,{
+	if (VER_ELEVATOR < 1007)
+		end;
+	mes "[Tamarin]";
+	mes "... It seems the last survivors have lingered here...";
+	cutin "ep143_taang.bmp",2;
+	next;
+	mes "[Tamarin]";
+	mes "I feel scared to open the next door for some reason.";
+	next;
+	if (VER_ELEVATOR == 1007 && @weird_piece == 17) {
+		select("Open door.");
+		completequest 11389;// Vestige
+		VER_ELEVATOR = 1008;
+		getexp 0,1000000;
+		@weird_piece = 0;
+		getitem 6827,1;// Complete_Machine_Parts
+		getitem 6828,1;// Gravity_Safety_Device
+	}
+	else {
+		if (@weird_piece == 0)	// can't go outside following path weird piece
+			.@string$ = "Go outside.";
+		.@s = select( "Open door.", .@string$ ) - 1;
+	}
+	mes "[Tamarin]";
+	mes "There is a bitter feeling of sorts...";
+	close2;
+	if (.@s == 0)
+		warp "un_myst",142,38;
+	else {
+		warp "un_bunker",98,91;
+		@weird_piece = 0;
+	}
+	end;
+}
+
+verus04,144,239,3	shop	Tool Merchant#verus	4_M_DEWMAN,611:-1,504:-1,656:-1,601:-1,602:-1,610:-1

+ 2579 - 0
npc/re/quests/quests_15_2.txt

@@ -0,0 +1,2579 @@
+//===== rAthena Script =======================================
+//= Phantasmagorika Quests.
+//===== Description: =========================================
+//--- Memory Record Daily Quests:
+//- Help Her
+//- Air Purifier
+//- Grape Harvest
+//- Subdue Hysterical Patients
+//- Daily Necessities Transport
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+// Return 0 if a time limit of "Restriction on the Journey" quests has been reached.
+function	script	F_time_limit_recorder	{
+	return (checkquest(5341,PLAYTIME) != 2 && checkquest(5351,PLAYTIME) != 2 && checkquest(5358,PLAYTIME) != 2 && checkquest(5363,PLAYTIME) != 2 && checkquest(5366,PLAYTIME) != 2);
+}
+
+// Erase datas if a time limit of "Restriction on the Journey" quests has been reached.
+function	script	F_erase_datas_recorder	{
+	if (callfunc("F_time_limit_recorder") == 1)
+		return;
+	mes "";
+	mes "Your whole body suddenly becomes heavy and time seems to be passing faster around you.";
+	mes "";
+	for ( .@quest_id = 5341; .@quest_id < 5371; .@quest_id++ ) {
+		if (isbegin_quest(.@quest_id) > 0)
+			erasequest .@quest_id;
+	}
+	delitem 6825, countitem(6825);// Air Purifier Box
+	delitem 6826, countitem(6826);// Fresh Grape
+	recorder_quest_type = 0;
+	recorder_quest_status = 0;
+	mes "Ah- This cozy and snug fe...el.....ling";
+	warp "un_bunker",98,91;
+	close;
+}
+
+// Monitoring room
+un_bk_q,97,141,0	script	Monitoring room#A-0	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 1 && recorder_quest_status == 0) {
+		mes "[Bunker Sayhu]";
+		mes "Hey!! Where do you think you're going when we're trying to get a headcount? Get over here.";
+		close;
+	}
+	warp "un_bk_q",98,121;
+	end;
+}
+
+un_bk_q,69,167,0	script	Monitoring room#L-1	WARPNPC,1,1,{
+	end;
+OnTouch:
+	if (recorder_quest_type == 1 && recorder_quest_status == 0) {
+		mes "[Bunker Sayhu]";
+		mes "Hey!! Where do you think you're going when we're trying to get a headcount? Get over here.";
+		close;
+	}
+	warp "un_bk_q",57,168;
+	end;
+}
+
+un_bk_q,126,168,0	script	Monitoring room#L-2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 1 && recorder_quest_status == 0) {
+		mes "[Bunker Sayhu]";
+		mes "Hey!! Where do you think you're going when we're trying to get a headcount? Get over here.";
+		close;
+	}
+	warp "un_bk_q",140,167;
+	end;
+}
+
+un_bk_q,103,147,4	script	Bunker Sayhu#EP15.2MR	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		switch( recorder_quest_status ) {
+		case 0:
+			emotion ET_CONGRATULATION;
+			mes "[Bunker Sayhu]";
+			mes "First congratulations on surviving. I'm glad you got into the air-raid shelter. If you were outside..";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "...";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "Whew.. even thinking about it makes me dizzy. Both of us were lucky. Don't you think so?";
+			next;
+			select("I think so too.");
+			emotion ET_CRY;
+			mes "[Bunker Sayhu]";
+			mes "I feel a lot of sympathy though. It looks like a lot of people are blaming this explosion on Fresa.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "The explosion can't be only Lona's responsibility.";
+			next;
+			select("Lona?");
+			emotion ET_QUESTION, playerattached();
+			mes "[Bunker Sayhu]";
+			mes "A great person for sure despite failing the experiment.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "She took charge of figuring out the number of survivors in that confusing mess of a situation.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "If it was me...";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "I would probably be wandering around without knowing what do to right about now..";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "Ugh- I guess even I should go and help. Want to help?";
+			next;
+			select("Agree to help.");
+			emotion ET_THANKS;
+			mes "[Bunker Sayhu]";
+			mes "Really? You will help? What a relief because I wasn't confident about going by myself.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "There is a researcher with a cold demeanor in the center of this room, right?";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "She is the head of the experiment, Lona Fresa. People usually call her Dr. Fresa.";
+			next;
+			setquest 5341;// Limits of Journeys
+			setquest 5342;// Help Her
+			recorder_quest_status = 1;
+			mes "[Bunker Sayhu]";
+			mes "Do you want to go and ask her if she needs any help?";
+			close;
+		case 1:
+			mes "[Bunker Sayhu]";
+			mes "There is a researcher with a cold demeanor in the center of this room, right?";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "Do you want to go and ask her if she needs any help?";
+			close;
+		case 3:
+		case 5:
+		case 9:
+		case 17:
+			mes "[Bunker Sayhu]";
+			mes "I was asked to find out how many are capable of cooking.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "We have to try hard even though the air-raid shelter is complex and wide.";
+			close;
+		case 100:
+			mes "[Bunker Sayhu]";
+			mes "Thanks for helping her.";
+			next;
+			mes "[Bunker Sayhu]";
+			mes "Is it because we helped? I thought I saw a faint smile on her face.";
+			close;
+		}
+		end;
+	case 2:
+		emotion ET_QUESTION;
+		mes "[Bunker Sayhu]";
+		mes "Uh?! I don't think I've seen you before in the air-raid shelter?";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "Ah! Are you the Adventurer who's helping with moving the newly made air cleaning unit?";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "You are working a lot because of those thoughtless Mechanicians.";
+		close;
+	case 3:
+		mes "[Bunker Sayhu]";
+		mes "The Bioengineers succeeded in cultivating grapes right?";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "They say at least one grape harvest every 2 weeks is possible? The harvest day is probably either today or tomorrow.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "I want to taste fresh grapes soon. I've been eating only dry food for the past few days.";
+		close;
+	case 4:
+		mes "[Bunker Sayhu]";
+		mes "There's a rumor going around in the air-raid shelter.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "A while ago the Chemical Substance Specialist and a few others went outside the air-raid shelter.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "Apparently some contaminated substance got inside the air-raid shelter.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "I heard the number of convulsing patients are rapidly increasing because of the contaminant.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "Ah! It's just a rumor! A Rumor!!";
+		close;
+	case 5:
+		mes "[Bunker Sayhu]";
+		mes "It seems the rumor going around was true.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "I hear they are moving supplies to the clean Zone Z-2 even though it's newly opened because of the contaminant.";
+		next;
+		mes "[Bunker Sayhu]";
+		mes "I think I will lend a hand even just a little.";
+		close;
+	}
+}
+
+un_bk_q,93,168,4	script	Dr.Fresa#EP15.2MR	4_F_BERRYTEA,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		switch( recorder_quest_status ) {
+		case 0:
+			mes "[Lona Fresa]";
+			emotion ET_SORRY;
+			mes "I am sorry. Right now I am a little busy with several problems. Can we speak later?";
+			close;
+		case 1:
+			mes "[Lona Fresa]";
+			emotion ET_SORRY;
+			mes "I am sorry. Right now I am a little busy with several problems. Can we speak later?";
+			next;
+			select("No! What I mean..");
+			emotion ET_SURPRISE;
+			emotion ET_QUESTION;
+			mes "[Lona Fresa]";
+			mes "What?! The Adventurer wants to help me?";
+			next;
+			mes "[Lona Fresa]";
+			mes "Good. The people are uncontrollable because they are shocked and confused.";
+			next;
+			mes "[Lona Fresa]";
+			mes "If the intimidating Adventurer helps out it will be easier to control the confused masses.";
+			next;
+			mes "[Lona Fresa]";
+			mes "Good!! I approve. Just in time for a troublesome problem as well.";
+			next;
+			select("Troublesome problem?");
+			emotion ET_QUESTION, playerattached();
+			mes "[Lona Fresa]";
+			mes "The personnel with various specialties such as yourself have not changed their positions and are easy to grasp, but the other employees are the problem.";
+			next;
+			mes "[Lona Fresa]";
+			mes "Surely they are moving according to the Emergency Situation Guidelines of their respective teams.";
+			next;
+			emotion ET_SCRATCH;
+			mes "[Lona Fresa]";
+			mes "I cannot figure out from here where they are and what they are doing.";
+			next;
+			mes "[Lona Fresa]";
+			mes "So I was thinking if you";
+			next;
+			mes "[Lona Fresa]";
+			.@r = rand(1,4);
+			switch(.@r) {
+			case 1:
+				setquest 5343;// Headcount
+				mes "Can you figure out the number of ^0000FFBioengineers ^000000?";
+				break;
+			case 2:
+				setquest 5344;// Headcount
+				mes "Can you figure out the number of ^0000FFMechanicians^000000?";
+				break;
+			case 3:
+				setquest 5345;// Headcount
+				mes "Can you figure out the number of ^0000FFFacilities managers^000000?";
+				break;
+			case 4:
+				setquest 5346;// Headcount
+				mes "Can you figure out the number of ^0000FFChemical Substance Specialists^000000?";
+				break;
+			}
+			recorder_quest_status = recorder_quest_status | pow(2,.@r);
+			next;
+			mes "[Lona Fresa]";
+			mes "I ask you for this favor even though it won't be easy in this large and complex shelter.";
+			close;
+		case 3:
+			callsub( S_Num, 22, 5343, "Bioengineers" );
+		case 5:
+			callsub( S_Num, 18, 5344, "Mechanicians" );
+		case 9:
+			callsub( S_Num, 28, 5345, "Facilities managers" );
+		case 17:
+			callsub( S_Num, 11, 5346, "Chemical Substance Specialists" );
+		case 100:
+			mes "[Lona Fresa]";
+			mes "I know it is frustrating but I hope you will adjust to life inside the air-raid shelter until the outside situation becomes safer.";
+			close;
+		}
+		end;
+	case 2:
+		emotion ET_SORRY;
+		mes "[Lona Fresa]";
+		mes "I am sorry. Right now I am a little busy with several problems. It would be better if we speak later.";
+		close;
+	case 4:
+		if (recorder_quest_status == 2) {
+			emotion ET_SORRY;
+			mes "[Lona Fresa]";
+			mes "I am sorry. Right now I am a little busy with several problems. It would be better if we speak later.";
+			next;
+			select("I have something urgent to tell you.");
+			mes "[Lona Fresa]";
+			mes "What?! What is going on?";
+			next;
+			mes "Explain current situation at the temporary clinic.";
+			next;
+			emotion ET_HUK;
+			mes "[Lona Fresa]";
+			mes "Patients are convulsing simultaneously.. this is not good.";
+			next;
+			mes "[Lona Fresa]";
+			mes "I got it. We need to take measures.";
+			next;
+			erasequest 5364;// Convulsing Patient Suppression
+			erasequest 5365;// Urgent News
+			setquest 5370;// Memory Record
+			getexp 750000,750000;
+			recorder_quest_status = 3;
+			mes "The small round capsule has percolated through the skin. It feels like experience has accumulated.";
+			next;
+			mes "[Lona Fresa]";
+			mes "Thank you for informing me.";
+			close;
+		}
+		emotion ET_PROFUSELY_SWEAT;
+		mes "[Lona Fresa]";
+		mes "This situation is grave so we need to quickly take measures.";
+		close;
+	case 5:
+		emotion ET_SORRY;
+		mes "[Lona Fresa]";
+		mes "I am sorry. Right now I am a little busy with several problems. It would be better if we speak later.";
+		close;
+	}
+	end;
+
+S_Num:
+	.@bon_nombre = getarg(0);
+	.@quest_id = getarg(1);
+	.@headcount_complete = isbegin_quest(getarg(1)+4);
+
+	mes "[Lona Fresa]";
+	if (.@headcount_complete > 0)
+		mes "Ah! You are here. Isn't the interior of the shelter a bit complicated? The favor I asked of you..";
+	else {
+		emotion ET_QUESTION;
+		mes "Huh?! You're already back? You came back earlier than I thought.";
+		next;
+		mes "[Lona Fresa]";
+		mes "The favor that I asked.. ah?! Ah!!";
+	}
+	next;
+	mes "[Lona Fresa]";
+	mes "The number of ^0000FF" + getarg(2) + "^000000? How many do they say have survived?";
+	next;
+	input .@num;
+	mes "[Lona Fresa]";
+	if (.@num != .@bon_nombre || .@headcount_complete == 0) {
+		mes "" + .@num + " people you say?";
+		next;
+		emotion ET_SCRATCH;
+		mes "[Lona Fresa]";
+		mes "That's strange? According to the list they have never been that number.";
+		next;
+		mes "[Lona Fresa]";
+		mes "Can you check again?";
+		close;
+	}
+	mes "Really? It is roughly the same as the number on the list. Good work.";
+	next;
+	mes "[Lona Fresa]";
+	mes "Sayhu says Adventurers like this kind of stuff. This is compensation for your help.";
+	next;
+	mes "The small round capsule has percolated through the skin. It feels like experience has accumulated.";
+	next;
+	erasequest 5342;// Help Her
+	erasequest .@quest_id;// Headcount
+	erasequest (.@quest_id + 4);// Headcount Complete
+	setquest 5370;// Memory Record
+	getexp 750000,750000;
+	recorder_quest_status = 100;
+	mes "[Lona Fresa]";
+	mes "Good work. I know it is frustrating but I hope you will adjust to the life inside the air-raid shelter until the outside situation becomes safer.";
+	close;
+}
+
+un_bk_q,76,175,4	script	Researcher Grum#EP15.2M	4_F_SCIENCE,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		if (recorder_quest_status == 0) {
+			mes "[Researcher Grum]";
+			mes "I really don't like self-righteous and hypocritical Fresa.";
+			close;
+		}
+		mes "[Researcher Grum]";
+		mes "Who is that woman to conduct a headcount as if she's the leader?";
+		next;
+		mes "[Researcher Grum]";
+		mes "There wouldn't have been an explosion if there was no experiment the first place? Right?";
+		close;
+	case 2:
+		mes "[Researcher Grum]";
+		mes "I think the self-righteous and haggardly Fresa has changed.";
+		next;
+		mes "[Researcher Grum]";
+		mes "She's become more warm compared to the past, right?";
+		close;
+	case 3:
+		mes "[Researcher Grum]";
+		mes "Fresa has definitely changed a lot.";
+		next;
+		mes "[Researcher Grum]";
+		mes "Today she is handing out grapes to people. In the past that would have been unimaginable.";
+		close;
+	case 4:
+		mes "[Researcher Grum]";
+		mes "Why is that Fresa acting like the leader alone but still hasn't taken measures?";
+		next;
+		mes "[Researcher Grum]";
+		mes "Measures need to taken about the convulsing patients. Are you going to cover this up like in the past?";
+		close;
+	case 5:
+		mes "[Researcher Grum]";
+		mes "So this is what's happening?";
+		next;
+		mes "[Researcher Grum]";
+		mes "I should have known when she tried to half-ass things.";
+		close;
+	}
+}
+
+// Corridor Monitoring room
+un_bk_q,86,121,4	script	Chemical Substance Specialist Karsten	4_M_ALCHE_B,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		if (recorder_quest_status == 17) {
+			if (isbegin_quest(5350) == 0) {
+				mes "[Chemical Substance Specialist Karsten]";
+				emotion ET_QUESTION;
+				mes "Who are you?";
+				next;
+				select("I am...");
+				emotion ET_SURPRISE;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Ah! Ah! Fresa? I have met her a few times at plenary sessions.";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "If I recall she is the one in charge of this failed project?";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Anyway!!";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Not everybody is fit to be director. A headcount in this hectic situation.";
+				next;
+				emotion ET_PROFUSELY_SWEAT;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Wait a minute. I did a headcount and wrote it down somewhere..";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Was it this number? That number? Ah?! This number.";
+				next;
+				setquest 5350;// Headcount Complete
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Total number of Chemical Substance Specialists is ^FF000011^000000. Damn a lot less.";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "Ah! Tell Fresa on your way that we are checking for hazardous substances within the air-raid shelter according to emergency protocol.";
+				next;
+				mes "[Chemical Substance Specialist Karsten]";
+				mes "We have to do our job even if there aren't many of us left.";
+				close;
+			}
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "Total number of Chemical Substance Specialists is ^FF000011^000000.";
+			next;
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "Tell Fresa that although there are only a few left but, we are checking for hazardous substances within the air-raid shelter.";
+			close;
+		}
+		mes "[Chemical Substance Specialist Karsten]";
+		mes "We are checking for hazardous substances within the air-raid shelter according to emergency protocol.";
+		close;
+	case 3:
+		if (recorder_quest_status == 2) {
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "Is that the first grape harvested by the Bioengineers?";
+			next;
+			emotion ET_QUESTION;
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "The rumors say a grape tree got smashed because of the Mechanicians but it seems it hasn't affected the harvest.";
+			next;
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "Anyway thanks. I prepared this for compensation.";
+			next;
+			erasequest 5359;// Grape Harvest
+			erasequest 5362;// Grape Delivery
+			setquest 5370;// Memory Record
+			getexp 1000000,1000000;
+			recorder_quest_status = 3;
+			mes "- The small round capsule has percolated through skin. It feels like experience has accumulated.";
+			next;
+			emotion ET_CRY;
+			mes "[Chemical Substance Specialist Karsten]";
+			mes "I've been eating nothing but dried food for the past few days so it moves me to eat fresh grape.";
+			close;
+		}
+		mes "[Chemical Substance Specialist Karsten]";
+		mes "I've been eating nothing but dried food so eating fresh grape makes me feel fresh.";
+		close;
+	case 2:
+	case 4:
+	case 5:
+		emotion ET_SMILE;
+		mes "[Chemical Substance Specialist Karsten]";
+		mes "Us Chemical Substance Specialists are living like we always do. It's not like we can do chemical experiments in a place like this.";
+		close;
+	}
+}
+
+// Control Room
+un_bk_q,98,246,8	script	Facilities manager Jiko	4_M_EINMAN2,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Facilities manager Jiko]";
+		mes "Aah- I don't know the reason but the control room is";
+		next;
+		mes "[Facilities manager Jiko]";
+		mes "is damaged a lot. At this point it isn't a control room but a warehouse.";
+		close;
+	case 2:
+		mes "[Facilities manager Jiko]";
+		mes "Ah the air cleaning unit doesn't belong here.";
+		next;
+		mes "[Facilities manager Jiko]";
+		mes "If my memory is correct, you have to deliver them to Zones C-0, F-1, F-2, I-0, Z-0.";
+		close;
+	case 3:
+		mes "[Facilities manager Jiko]";
+		mes "Haa- I have been cleaning the Control room for several days now";
+		next;
+		mes "[Facilities manager Jiko]";
+		mes "This place cannot be organized no matter how I much organize it. I guess we should just use it for storage.";
+		close;
+	case 4:
+		mes "[Facilities manager Jiko]";
+		mes "Come on in. Welcome to the Warehouse.";
+		next;
+		mes "[Facilities manager Jiko]";
+		mes "Urrghh";
+		close;
+	case 5:
+		mes "[Facilities manager Jiko]";
+		mes "This is not the control room.";
+		next;
+		mes "[Facilities manager Jiko]";
+		mes "It's the warehouse!!";
+		close;
+	}
+}
+
+un_bk_q,108,243,4	script	Discarded Mechanical Device	4_ENERGY_BLUE,{
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 1) {
+		mes "The mechanical device thrown on the floor cannot be determined if it is still operable.";
+		close;
+	}
+	for ( .@i = 0; .@i < (recorder_quest_type - 1); .@i++ )
+		.@listen_continue$[.@i] = "Continue listening.";
+	.@listen_again$[.@i] = "Listen again.";
+
+	mes "There is a Memory Record somebody is recording.";
+	next;
+	if (select( "Listen.", "Quit." ) == 2)
+		close;
+	while(true) {
+		mes "Oh- Is this a memory record? Does it work? Oh it works. Works! Should I try it since I'm bored?";
+		next;
+		mes "My name is Maso an Adventurer traveling the world. Today is 4th day of entering the air-raid shelter? 3rd day? The vibe here is weird and hard to adjust to.";
+		next;
+		mes "Verus city has Adventurers amongst its original population but the treatment towards Adventurers is strangely good.";
+		next;
+		mes "The mood is that Adventurers are people caught up in an uncontrollable accident and need to be treated well.";
+		next;
+		mes "As an Adventurer who eats and plays as much as he works, I cannot stand the itching for action. Urgh";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Is today day 6? Details aren't told to Adventurers so I am not sure but the people of Verus city seem very gloomy.";
+		next;
+		mes "The Adventurer's blood is boiling and wanting to explore places but there isn't much to do.";
+		next;
+		mes "I looked around the air-raid shelter but whoever designed it has not one artistic hair on him.";
+		next;
+		mes "It is no fun to keep looking at the same hallways and same room lay outs.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Is today day 21? The Verus City people look happy to have solved the food problem.";
+		next;
+		mes "It is cute to see the mild looking researchers going around cheering and screaming.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "The 30th night but because it's always dark I don't really know if it's night or day. I just ate supper so it must be night.";
+		next;
+		mes "Today I moved the really heavy air cleaning units made by the Mechanicians with the other Adventurers.";
+		next;
+		mes "The air-raid shelter is so large that I had no idea where they were but thanks to that I became friends with some of the Adventurers, especially Castle and Blat.";
+		next;
+		mes "By the way the Mechanicians seem to have mental problems. They make a ruckus for not being able to make machines and got dragged out by the guards.";
+		next;
+		mes "The Mechanicians are definitely going to cause trouble someday.";
+		next;
+		switch( select( .@listen_again$[1], .@listen_continue$[1], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Today is day 32 and I worked on the grape harvest.";
+		next;
+		mes "I ate fresh grapes and since I don't have anything to do anything to do, I'm going to sleep early.";
+		next;
+		mes "Ah.. the grape was good, I want it again. Did they say harvest was possible once every 2 weeks?";
+		next;
+		switch( select( .@listen_again$[2], .@listen_continue$[2], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Today is the 38th day of being in the shelter and there is a fuss since the morning.";
+		next;
+		mes "This morning the recruited Adventurers to join the Chemical Substance Specialists for an investigation outside the air-raid shelter, many volunteered despite the dangers.";
+		next;
+		mes "I am of the belief danger should be avoided but my friends Castle and Blat volunteered.";
+		next;
+		mes "Well I understand that they were sick of living in the shelter for a while.";
+		next;
+		mes "They have not returned past the afternoon. Verus City leader Fresa has concluded that the people who left are dead.";
+		next;
+		mes "Everybody had a moment of silence at dawn. They were good people so it is sad to part like this.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Is it since the morning of the 40th day? There is a mysterious infectious disease going around the shelter.";
+		next;
+		mes "A few people have suddenly attacked those near them and convulsed";
+		next;
+		mes "And Adventurers have been deployed to suppress the convulsing people because a lot of the weak researchers are wounded.";
+		next;
+		mes "There is a rumor saying a contaminant came in because of the people who went outside the shelter a while go.";
+		next;
+		switch( select( .@listen_again$[3], .@listen_continue$[3], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Lunch during day 44 the air-raid shelter leader Fresa gathered the Adventurers and had a presentation.";
+		next;
+		mes "The rumor has been confirmed true and a safety partition will be built in Zone Z-0";
+		next;
+		mes "A decision has been made to move necessities to Zone Z-2 tomorrow and I heard they need the help of Adventurers.";
+		next;
+		mes "I have to work tomorrow so I am doing to sleep early.";
+		next;
+		mes "There is no more recorded content.";
+		next;
+		switch( select( .@listen_again$[4], .@listen_continue$[4], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+	}
+}
+
+// Corridor Control Room
+un_bk_q,56,192,4	script	Chemical Substance Specialist Kori	4_M_ALCHE_B,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Chemical Substance Specialist Kori]";
+		mes "We are seeing if there are hazardous substances within the air-raid shelter according to emergency protocol.";
+		next;
+		mes "[Chemical Substance Specialist Kori]";
+		mes "You want to know how many Chemical Substance Specialists there are? Go to Karsten then. Should be here somewhere.";
+		close;
+	case 2:
+		mes "[Chemical Substance Specialist Kori]";
+		mes "This next room is temporarily being used by the Chemical Substance Specialist.";
+		next;
+		mes "[Chemical Substance Specialist Kori]";
+		mes "We tightly hid away dangerous things but don't touch anything just in case.";
+		close;
+	case 3:
+		mes "[Chemical Substance Specialist Kori]";
+		mes "Karsten gave me grapes.";
+		next;
+		mes "[Chemical Substance Specialist Kori]";
+		mes "How fresh and tasty it was.";
+		close;
+	case 4:
+		mes "[Chemical Substance Specialist Kori]";
+		mes "My colleagues left the air-raid shelter to investigate and haven't come back.";
+		next;
+		mes "[Chemical Substance Specialist Kori]";
+		mes "It was concluded they are dead but are they really all dead? I want to see my colleagues.";
+		close;
+	case 5:
+		mes "[Chemical Substance Specialist Kori]";
+		mes "Good work.";
+		next;
+		mes "[Chemical Substance Specialist Kori]";
+		mes "We are working to find a solution for the contaminant.";
+		close;
+	}
+}
+
+// Corridor K-0
+un_bk_q,161,193,6	script	Adventurer Bamdaku#EP15.2MR	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Adventurer Bamdaku]";
+		mes "I found this while looking around the air-raid shelter";
+		next;
+		mes "[Adventurer Bamdaku]";
+		mes "but there is a lot of this on the wall. What can it be?";
+		close;
+	case 2:
+		mes "[Adventurer Bamdaku]";
+		mes "I have been investigating this for 30 days already but I do not know what it is.";
+		next;
+		mes "[Adventurer Bamdaku]";
+		mes "I am too proud to ask somebody.";
+		close;
+	case 3:
+		mes "[Adventurer Bamdaku]";
+		mes "I have been investigating this for 32 days already but I do not know what it is.";
+		next;
+		mes "[Adventurer Bamdaku]";
+		mes "Ugh what to do.. Should I just ask somebody?";
+		close;
+	case 4:
+		mes "[Adventurer Bamdaku]";
+		mes "I have been investigating this for 40 days already.";
+		next;
+		mes "[Adventurer Bamdaku]";
+		mes "My pride won't let me quit now.";
+		close;
+	case 5:
+		mes "[Adventurer Bamdaku]";
+		mes "45 days have passed since I started investigating this unknown thing.";
+		next;
+		mes "[Adventurer Bamdaku]";
+		mes "How did I come to investigate this?";
+		close;
+	}
+}
+
+un_bk_q,103,393,4	script	Memory_Record#EP15.2MR	4_ENERGY_BLUE,{
+	callfunc("F_time_limit_recorder");
+
+	for ( .@i = 0; .@i < (recorder_quest_type - 1); .@i++ )
+		.@listen_continue$[.@i] = "Continue listening.";
+	.@listen_again$[.@i] = "Listen again.";
+
+	mes "There is a Memory Record somebody is recording.";
+	next;
+	if (select( "Listen.", "Quit." ) == 2)
+		close;
+	while(true) {
+		mes "Ah ah- One two three test- test-";
+		next;
+		mes "To distinguish survival days in the air-raid shelter, today will be designated Explosion Day 1 after the experiment explosion.";
+		next;
+		mes "Everybody fell into panic after seeing the outside situation on the monitor after the explosion.";
+		next;
+		mes "But chief researcher Dr. Fresa calmly consoled everybody and checked how many survived.";
+		next;
+		mes "The final number of survivors including adventurers seems to be 326.";
+		next;
+		mes "The camera showing outside was damaged in the afternoon. It seems we cannot see the situation outside anymore.";
+		next;
+		mes "There is no more recorded content.";
+		next;
+		switch( select( .@listen_again$[0], .@listen_continue$[0], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Explosion Day 2";
+		next;
+		mes "A witch hunt against the director and chief researcher Fresa began.";
+		next;
+		mes "My opinion is different. The research and experiment was conducted under her direction but this is an accident.";
+		next;
+		mes "If not Fresa, they would have made somebody else to blame.";
+		next;
+		mes "But she is handling it in a dignified manner despite concerns.";
+		next;
+		mes "She says problem solving is more important than blame and is checking assignments of survivors before the accident.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 3";
+		next;
+		mes "Fresa.. She naturally became the leader of the survivors.";
+		next;
+		mes "There was no vote of sorts, but nobody is complaining about her being the leader.";
+		next;
+		mes "The day before she had a briefing on the situation of the total survivors.";
+		next;
+		mes "20 Bioengineers";
+		mes "16 Mechanicians";
+		mes "27 Facilities managers";
+		mes "10 Chemical Substance Specialists";
+		mes "Other than specialists the assignments of survivors such as cafeteria staff, janitors, gardeners, distribution directors, health professionals, adventurers caught in the accident have been assessed.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 4";
+		next;
+		mes "Everybody's work has been decided based on Fresa's briefing the day before.";
+		next;
+		mes "It was decided that researchers including myself know nothing much research and must continue our lives in the air-raid shelter under the guidance of those who have technical skill needed for survival.";
+		next;
+		mes "First the Chemical Substance Specialists and Facilities managers started to install Air Contamination Gauge Sensors in the air-raid shelter.";
+		next;
+		mes "After evaluating that oxygen levels were low the Mechanicians have started to assemble Air cleaning units.";
+		next;
+		mes "Lora, a former cafeteria employee was consulted on the important problem of food.";
+		next;
+		mes "We assessed that about 40 days of survival is possible based on the food in the warehouse and the number of survivors.";
+		next;
+		mes "This prompted the Bioengineers to cultivate plants that can self-produce.";
+		next;
+		mes "Other miscellaneous assignments were issued under Fresa's direction.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 5";
+		next;
+		mes "I don't know the details but the air pollution level outside of the shelter was measured.";
+		next;
+		mes "According to the Chemical Substance Specialists the situation is hopeless.";
+		next;
+		mes "It seems life in the air-raid shelter has to continue longer. Just can quietly keep working..";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 21";
+		next;
+		mes "After silently working for several days the Bioengineers have good news.";
+		next;
+		mes "They have succeeded in artificially germinating a plant that can self-produce.";
+		next;
+		mes "Fortunately the air-raid shelter has a warehouse spacious enough to grow plants in.";
+		next;
+		mes "It seems we can forget about our food problem now.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 30";
+		next;
+		mes "A small problem has occurred in the air-raid shelter. The air cleaning units made in the beginning are broken.";
+		next;
+		mes "Fortunately there will be no problem maintaining oxygen concentration levels thanks to the air cleaning units the Mechanicians made without approval.";
+		next;
+		mes "They are too heavy so adventurers were deployed because nobody else is able to move them.";
+		next;
+		switch( select( .@listen_again$[1], .@listen_continue$[1], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Explosion Day 32";
+		next;
+		mes "Today is the first harvest of the grape tree cultivated by the Bioengineers.";
+		next;
+		mes "Although there was a small problem of the Mechanicians destroying one grape tree";
+		next;
+		mes "The air-raid shelter residents are throwing a small party to celebrate the successful harvest.";
+		next;
+		mes "There is no more recorded content.";
+		next;
+		switch( select( .@listen_again$[2], .@listen_continue$[2], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Explosion Day 38";
+		next;
+		mes "Chemical Substance Specialists and some Adventurers sick of living in the air-raid shelter have left the shelter to measure the air.";
+		next;
+		mes "They have not returned by evening.";
+		next;
+		mes "Was the freedom of outside better than the life in the dark air-raid shelter?";
+		next;
+		mes "After midnight the remaining Chemical Substance Specialists assessed that they were dead and everybody had a brief moment of silence.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 40";
+		next;
+		mes "A dark rumor is going around the shelter.";
+		next;
+		mes "There is a rumor that a contaminant from the outside has invaded the air-raid shelter because of the people who left a while ago.";
+		next;
+		mes "Is it because of the contaminant? There are patients who suddenly convulse and attack others.";
+		next;
+		mes "Under the leader Fresa's decision, everybody was checked and those found with transfectants were quarantined in the temporary clinic.";
+		next;
+		switch( select( .@listen_again$[3], .@listen_continue$[3], "Stop listening." ) ) {
+		case 1:
+			continue;
+		case 2:
+			break;
+		case 3:
+			close;
+		}
+		mes "Explosion Day 43";
+		next;
+		mes "The rumor in the air-raid shelter has come true.";
+		next;
+		mes "The remaining Chemical Substance Specialists have confirmed that the contaminant is eroding into the air-raid shelter";
+		next;
+		mes "And Fresa and experts have started taking measures.";
+		next;
+		if (select( "Continue listening.", "Stop listening." ) == 2)
+			close;
+		mes "Explosion Day 45";
+		next;
+		mes "The invading contaminant will not stop.";
+		next;
+		mes "It has been decided to move all equipment and necessities to the less contaminated Zone Z-2";
+		next;
+		mes "And facility managers have started to install a partition in Zone Z-0 to prevent the contaminant from coming in further.";
+		next;
+		mes "There is no more recorded content.";
+		next;
+		if (select( "Listen again.", "Stop listening." ) == 2)
+			close;
+	}
+}
+
+// Machine Warehouse
+un_bk_q,41,275,0	script	Machine Warehouse#J-0	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 2 && recorder_quest_status == 0) {
+		emotion ET_O, getnpcid(0, "Mechanician Mugeosi#EP1");
+		mes "[Mechanician Mugeosi]";
+		mes "Ah! You're the adventurer send to deliver air cleaners. You are at the right place. Come this way.";
+		close;
+	}
+	warp "un_bk_q",21,276;
+	end;
+}
+
+un_bk_q,56,286,4	script	Mechanician Mugeosi#EP1	4_M_REPAIR,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Mechanician Mugeosi]";
+		mes "Are you an Adventurer? This is the machine warehouse.";
+		next;
+		mes "[Mechanician Mugeosi]";
+		mes "It was originally a warehouse but it is now being used by Mechanicians to assemble machines for the air-raid shelter.";
+		next;
+		emotion ET_FRET;
+		mes "[Mechanician Mugeosi]";
+		mes "You want to know the total number of Mechanicians? I don't think I know?";
+		next;
+		mes "[Mechanician Mugeosi]";
+		mes "Ah! Al up there might know. Go to Al.";
+		close;
+	case 2:
+		if (recorder_quest_status == 0) {
+			mes "[Mechanician Mugeosi]";
+			mes "An adventure to move the air cleaner?";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "You look solid just like the other researchers mentioned. I bet you can lift the air cleaner like nothing!!";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "We shouldn't be ordering people like you who got caught up in an accident, but the situation is urgent.";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "We made a new air cleaning unit because the one operating previously broke down a while ago.";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "We should have made it in modular form. Made it as one solid piece by mistake.";
+			next;
+			emotion ET_SMILE;
+			mes "[Mechanician Mugeosi]";
+			mes "Didn't think of it when we were making it!!";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "It happens. Right?";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "Facilities managers are making a fuss about needing the air cleaning unit soon.";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "We can't move the air cleaning unit with the equipment we have now..";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "We could make the machine that can transport it if we had more time..";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "So we ended up asking the strong Adventurer.";
+			next;
+			select("Yes sir.");
+			emotion ET_SMILE;
+			mes "[Mechanician Mugeosi]";
+			mes "Aren't you refreshing!!";
+			next;
+			setquest 5351;// Limits of Journeys
+			setquest 5352;// Air Cleaning Unit
+			recorder_quest_status = 1;
+			mes "[Mechanician Mugeosi]";
+			mes "We are counting on you. Take five air cleaning units to areas C-0, F-1, F-2, I-0, Z-0. Talk to me when you're ready.";
+			close;
+		}
+		if (recorder_quest_status == 1) {
+			.@total = isbegin_quest(5353) + isbegin_quest(5354) + isbegin_quest(5355) + isbegin_quest(5356) + isbegin_quest(5357);
+			if (.@total < 5) {
+				emotion ET_QUESTION;
+				mes "[Mechanician Mugeosi]";
+				mes "Are you ready to move heavy objects?";
+				next;
+				select("Give it to me.");
+				if (checkweight(6825,1) == 0) {
+					mes "[Mechanician Mugeosi]";
+					mes "You look strong but seems you are weak. You can't lift the air cleaning unit like that.";
+					close;
+				}
+				getitem 6825,1;// Air Purifier Box
+				mes "[Mechanician Mugeosi]";
+				mes "Deliver them to zones C-0, F-1, F-2, I-0, Z-0. The order doesn't matter and please be careful since they are precise machines.";
+				close;
+			}
+			emotion ET_BEST;
+			mes "[Mechanician Mugeosi]";
+			mes "Good work. The air cleaning units are heavy, right?";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "Sayhu says Adventurers like this kind of stuff and I should use this as compensation after giving you work.";
+			next;
+			erasequest 5352;// Air Cleaning Unit
+			erasequest 5353;// C-0 Delivery Complete
+			erasequest 5354;// F-1 Delivery Complete
+			erasequest 5355;// F-2 Delivery Complete
+			erasequest 5356;// I-0 Delivery Complete
+			erasequest 5357;// Z-0 Delivery Complete
+			setquest 5370;// Memory Record
+			getexp 1000000,1000000;
+			recorder_quest_status = 2;
+			mes "The small round capsule has percolated through skin. It feels like experience has accumulated.";
+			next;
+			mes "[Mechanician Mugeosi]";
+			mes "Thanks to you we overcame a crisis. I need to make a machine that can move heavy objects in case this happens again.";
+			close;
+		}
+		mes "[Mechanician Mugeosi]";
+		mes "Good work. Let's relax for now.";
+		close;
+	case 3:
+		mes "[Mechanician Mugeosi]";
+		mes "Have you tried the grapes made by the Bioengineers using that growth thingy?";
+		next;
+		mes "[Mechanician Mugeosi]";
+		mes "We can now eat fresh fruit in this dull and dark air-raid shelter.";
+		close;
+	case 4:
+		mes "[Mechanician Mugeosi]";
+		mes "Are you worried because people are suddenly attacking? What? You aren't infected right?";
+		close;
+	case 5:
+		mes "[Mechanician Mugeosi]";
+		mes "Why is everybody rejecting us making a machine that can make shipping easier? Pssh!!";
+		close;
+	}
+}
+
+un_bk_q,82,323,2	script	Mechanician Al#EP15.2MR	4_M_REPAIR,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		switch( recorder_quest_status ) {
+		case 3:
+		case 9:
+		case 17:
+			mes "[Mechanician Al]";
+			mes "So busy. This is why I asked for additional manpower in the first place. No use now I guess.";
+			close;
+		case 5:
+			if (isbegin_quest(5348) == 0) {
+				mes "[Mechanician Al]";
+				emotion ET_DELIGHT;
+				mes "You are?";
+				next;
+				select("I am...");
+				emotion ET_SCRATCH;
+				mes "[Mechanician Al]";
+				mes "Fresa? Hm? Who is Fresa?";
+				next;
+				mes "[Mechanician Al]";
+				mes "Ah?! Ah!! The chief director of the experiment was ^0000FF Lona Fresa^000000.";
+				next;
+				mes "[Mechanician Al]";
+				mes "OK Adventurer man, identity confirmation complete!!";
+				next;
+				mes "[Mechanician Al]";
+				mes "Was it your business to check the Mechanician survivor headcount?";
+				next;
+				setquest 5348;// Headcount Complete
+				mes "[Mechanician Al]";
+				mes "There weren't many in the first place, and too bad for the poor bastards who didn't make it into the shelter.";
+				next;
+				mes "[Mechanician Al]";
+				mes "Tell Fresa, Fress or whatever her name is, that the Mechanicians are inspecting";
+				next;
+				mes "[Mechanician Al]";
+				mes "the mechanical systems in the air-raid shelter according to the emergency protocols. Thanks~";
+				close;
+			}
+			mes "[Mechanician Al]";
+			mes "^FF000018^000000 Mechanicians have survived.";
+			next;
+			mes "[Mechanician Al]";
+			mes "Tell Fresa, Fress or whatever her name is, that the Mechanicians are inspecting the mechanical systems in the air-raid shelter.";
+			close;
+		default:
+			mes "[Mechanician Al]";
+			mes "The Mechanicians are checking for irregularities in the internal mechanical systems according to Emergency Situation Guidelines.";
+			next;
+			emotion ET_FRET;
+			mes "[Mechanician Al]";
+			mes "Darn it- Why am I even explaining this? You're bothering me so go away.";
+			close;
+		}
+	case 2:
+		mes "[Mechanician Al]";
+		mes "So busy. This is why I asked for additional manpower in the first place. No use now I guess.";
+		close;
+	case 3:
+		mes "[Mechanician Al]";
+		mes "Is that grape for me? It's not? Pssh!!";
+		close;
+	case 4:
+		mes "[Mechanician Al]";
+		mes "So busy. This is why I asked for additional manpower in the first place. No use now I guess.";
+		close;
+	case 5:
+		switch( recorder_quest_status ) {
+		case 0:
+			end;
+		case 1:
+			mes "[Mechanician Al]";
+			mes "Huh? What's going on?";
+			next;
+			mes "[Mechanician Al]";
+			mes "What, shouldn't the items be moved to Zone Z-2 and not here? Take them there.";
+			close;
+		case 2:
+			mes "[Mechanician Al]";
+			mes "Huh? What's going on? I heard the Adventurers are being used to move the supplies?";
+			next;
+			select("The message from Ernon..");
+			mes "[Mechanician Al]";
+			mes "Ernon? Goods manager Ernon? He has a message for me? What is it?";
+			next;
+			input .@string$;
+			setquest 5369;// Message Delivery Complete
+			recorder_quest_status = 3;
+			mes "[" + strcharinfo(0) + "]";
+			mes .@string$;
+			next;
+			emotion ET_OTL;
+			mes "[Mechanician Al]";
+			mes "Huh.. uh.. buh.. buh..";
+			next;
+			mes "He seems shocked and out of it. Go back to Ernon since the message has been delivered.";
+			close;
+		case 3:
+			emotion ET_OTL;
+			mes "[Mechanician Al]";
+			mes "Huh.. uh.. buh.. buh..";
+			next;
+			mes "He is out of it. Go back to Ernon since the message has been delivered.";
+			close;
+		case 4:
+			emotion ET_OTL;
+			mes "[Mechanician Al]";
+			mes "Er.. non.. ar.. argh!!";
+			next;
+			mes "He is convulsing like an infected patient.";
+			close;
+		}
+	}
+}
+
+un_bk_q,100,312,6	script	Mechanician Bukal#EP15.	4_M_REPAIR,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Mechanician Bukal]";
+		mes "You're conducting a headcount?";
+		next;
+		mes "[Mechanician Bukal]";
+		mes "I am not sure. Maybe you can ask Al over there?";
+		close;
+	case 2:
+		if (recorder_quest_status == 0) {
+			mes "[Mechanician Bukal]";
+			mes "Ugh.. I want to make something.";
+			close;
+		}
+		mes "[Mechanician Bukal]";
+		mes "I mean the air cleaning unit you are moving now.";
+		next;
+		mes "[Mechanician Bukal]";
+		mes "I made that. Isn't it awesome?";
+		close;
+	case 3:
+		mes "[Mechanician Bukal]";
+		mes "Ah!! You're the adventurer. You could check out the farm.";
+		next;
+		mes "[Mechanician Bukal]";
+		mes "Isn't the farm good because it's warm? I made the temperature control device there. Isn't it awesome?";
+		close;
+	case 4:
+		mes "[Mechanician Bukal]";
+		mes "I am worried of the people suddenly attacking.";
+		next;
+		mes "[Mechanician Bukal]";
+		mes "Since we're already here should I make something like a patient suppression device?";
+		close;
+	case 5:
+		mes "[Mechanician Bukal]";
+		mes "I don't know why everybody is rejecting a device that can move heavy objects.";
+		next;
+		mes "[Mechanician Bukal]";
+		mes "I should have made one when they were making new air cleaning units..";
+		close;
+	}
+}
+
+un_bk_q,91,283,2	script	Guard#EP15.2MR	4_M_HUMAN_02,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Guard]";
+		mes "Hello adventurer?";
+		next;
+		mes "[Guard]";
+		mes "I don't know the reason, but Fresa assigned me here.";
+		close;
+	case 2:
+		if (recorder_quest_status == 0) {
+			mes "[Guard]";
+			mes "Hello adventurer?";
+			close;
+		}
+		mes "[Guard]";
+		mes "I always wondered why I was assigned here but now I think I know the reason.";
+		next;
+		mes "[Guard]";
+		mes "It is to watch if the Mechanicians make useless things.";
+		close;
+	case 3:
+		mes "[Guard]";
+		mes "The Mechanicians occasionally want to make something.";
+		next;
+		mes "[Guard]";
+		mes "My job is to stop them.";
+		close;
+	case 4:
+		mes "[Guard]";
+		mes "I hear patients these days are convulsing and attacking the people around them?";
+		next;
+		mes "[Guard]";
+		mes "The Mechanician constantly convulse saying they want to make something so it's not weird to me.";
+		close;
+	case 5:
+		mes "[Guard]";
+		mes "The convulsion of Mechanicians are reaching extremes.";
+		next;
+		mes "[Guard]";
+		mes "They are convulsing so much I may need to call back up.";
+		close;
+	}
+}
+
+un_bk_q,212,294,6	script	Zone C-0 Facilities man#1	4_M_EINMAN2,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Facilities manager]";
+		mes "We are inspecting the interior facilities of the air-raid shelter according to emergency regulations.";
+		close;
+	case 2:
+		.@npc_num = strnpcinfo(2);
+		switch(.@npc_num) {
+		case 1:
+			if (isbegin_quest(5353) == 0 && recorder_quest_status == 1) {
+				emotion ET_DELIGHT;
+				mes "[Facilities manager]";
+				mes "Oh- You're here? I was waiting.";
+				next;
+				mes "[Facilities manager]";
+				mes "I have heard Adventurers are all strong as oxen but it is still impressive.";
+				next;
+				if (countitem(6825) < 1) {
+					mes "[Facilities manager]";
+					mes "But where is the air cleaning unit? You didn't bring the most important thing. Bring it here.";
+					close;
+				}
+				delitem 6825,1;// Air Purifier Box
+				setquest 5353;// C-0 Delivery Complete
+				mes "[Facilities manager]";
+				mes "Good work. Good work. We have received the air cleaning unit.";
+				close;
+			}
+			mes "[Facilities manager]";
+			mes "Good work. Good work. We have received the air cleaning unit.";
+			close;
+		case 2:
+			if (isbegin_quest(5354) == 0 && recorder_quest_status == 1) {
+				emotion ET_THANKS;
+				mes "[Facilities manager]";
+				mes "Oh my you are working hard. You can place the item over here.";
+				next;
+				mes "[Facilities manager]";
+				mes "Whoa- I heard the rumors but you are really strong.";
+				next;
+				mes "[Facilities manager]";
+				mes "It's hard for even four of us Facilities managers to lift it for a moment..";
+				next;
+				if (countitem(6825) < 1) {
+					mes "[Facilities manager]";
+					mes "But where is the air cleaning unit? You didn't bring the most important thing. Bring it here.";
+					close;
+				}
+				delitem 6825,1;// Air Purifier Box
+				setquest 5354;// F-1 Delivery Complete
+				mes "[Facilities manager]";
+				mes "Anyway we have received the air cleaning unit.";
+				close;
+			}
+			mes "[Facilities manager]";
+			mes "Anyway we have received the air cleaning unit.";
+			close;
+		case 3:
+			if (isbegin_quest(5355) == 0 && recorder_quest_status == 1) {
+				emotion ET_QUESTION;
+				mes "[Facilities manager]";
+				mes "Ah?! Are you the Adventurer who's delivering air cleaning units?";
+				next;
+				if (countitem(6825) < 1) {
+					mes "[Facilities manager]";
+					mes "But where is the air cleaning unit? Did you not bring it?";
+					close;
+				}
+				delitem 6825,1;// Air Purifier Box
+				setquest 5355;// F-2 Delivery Complete
+				mes "[Facilities manager]";
+				mes "We need to work fast so place the item here.";
+				close;
+			}
+			mes "[Facilities manager]";
+			mes "We have received the air cleaning unit.";
+			close;
+		case 4:
+			if (isbegin_quest(5356) == 0 && recorder_quest_status == 1) {
+				emotion ET_QUESTION;
+				mes "[Facilities manager]";
+				mes "Has the adventurer not delivered the air cleaning unit yet? Uh?! It's here. Hurry.. the air cleaning unit..";
+				next;
+				if (countitem(6825) < 1) {
+					mes "[Facilities manager]";
+					mes "Arwhat!! Why didn't you bring it. Bring it now, okay?";
+					close;
+				}
+				delitem 6825,1;// Air Purifier Box
+				setquest 5356;// I-0 Delivery Complete
+				mes "[Facilities manager]";
+				mes "It's urgent. I'll thank you later..";
+				close;
+			}
+			mes "[Facilities manager]";
+			mes "Don't talk to me. Every hour is precious.";
+			close;
+		case 5:
+			if (isbegin_quest(5357) == 0 && recorder_quest_status == 1) {
+				emotion ET_BEST;
+				mes "[Facilities manager]";
+				mes "Oh- You're here? I was waiting.";
+				next;
+				mes "[Facilities manager]";
+				mes "I have heard Adventurers are all strong as oxen but it is still impressive.";
+				next;
+				if (countitem(6825) < 1) {
+					mes "[Facilities manager]";
+					mes "But where is the air cleaning unit? You didn't bring the most important thing. Bring it here.";
+					close;
+				}
+				delitem 6825,1;// Air Purifier Box
+				setquest 5357;// Z-0 Delivery Complete
+				mes "[Facilities manager]";
+				mes "Good work. Good work. We have received the air cleaning unit.";
+				close;
+			}
+			mes "[Facilities manager]";
+			mes "Good work. Good work. We have received the air cleaning unit.";
+			close;
+		}
+		end;
+	case 3:
+		mes "[Facilities manager]";
+		mes "Have you tried the grape made by the Bioengineers?";
+		next;
+		mes "[Facilities manager]";
+		mes "Science is truly amazing to have us enjoy fresh grapes in this underground air-raid shelter.";
+		close;
+	case 4:
+		mes "[Facilities manager]";
+		mes "I think the air cleaner might be useless because the contaminant has already infiltrated the air-raid shelter.";
+		close;
+	case 5:
+		mes "[Facilities manager]";
+		mes "You are going through a lot.";
+		close;
+	}
+}
+
+un_bk_q,223,217,4	duplicate(Zone C-0 Facilities man#1)	Zone F-1 Facilities man#2	4_M_EINMAN2
+un_bk_q,372,217,6	duplicate(Zone C-0 Facilities man#1)	Zone F-2 Facilities man#3	4_M_EINMAN2
+un_bk_q,389,276,6	duplicate(Zone C-0 Facilities man#1)	Zone I-0 Facilities man#4	4_M_EINMAN2
+un_bk_q,291,158,4	duplicate(Zone C-0 Facilities man#1)	Zone Z-0 Facilities man#5	4_M_EINMAN2
+
+// Corridor Farm
+un_bk_q,213,303,4	script	Bioengineer Touring#EP1	4W_M_02,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		if (recorder_quest_status == 3) {
+			if (isbegin_quest(5347) == 0) {
+				mes "[Bioengineer Touring]";
+				emotion ET_QUESTION;
+				mes "Huh?! Who are you?";
+				next;
+				select("I am...");
+				emotion ET_SURPRISE;
+				mes "[Bioengineer Touring]";
+				mes "Ah! Dr. Fresa sent you to check the conditions of survivor assignments?";
+				next;
+				mes "[Bioengineer Touring]";
+				mes "What a relief. The disaster network came on a bit ago and we just confirmed how many Bioengineers have survived.";
+				next;
+				setquest 5347;// Headcount
+				mes "[Bioengineer Touring]";
+				mes "We have confirmed ^FF000022 ^000000Bioengineers have survived including myself.";
+				next;
+				mes "[Bioengineer Touring]";
+				mes "Oh yeah! Tell Dr. Fresa that the Bioengineers are using growth acceleration technology for food production according to the Emergency Situation Guidelines.";
+				next;
+				emotion ET_THANKS;
+				mes "[Bioengineer Touring]";
+				mes "I will count on you.";
+				close;
+			}
+			mes "[Bioengineer Touring]";
+			mes "We have confirmed ^FF000022 ^000000Bioengineers have survived including myself.";
+			next;
+			mes "[Bioengineer Touring]";
+			mes "Oh yeah! Tell Dr. Fresa that the Bioengineers are using growth acceleration technology for food production according to the Emergency Situation Guidelines.";
+			next;
+			emotion ET_THANKS;
+			mes "[Bioengineer Touring]";
+			mes "I will count on you.";
+			close;
+		}
+		mes "[Bioengineer Touring]";
+		mes "We Bioengineers are doing all we can to produce food for the people inside the air-raid shelter.";
+		close;
+	case 2:
+		mes "[Bioengineer Touring]";
+		mes "Wait a minute. You cannot enter the farm right now.";
+		close;
+	case 3:
+		mes "[Bioengineer Touring]";
+		mes "We have just finished the last grape harvest and are getting ready for the next one.";
+		next;
+		emotion ET_SORRY;
+		mes "[Bioengineer Touring]";
+		mes "If people come and go often, it may interfere with the work so access is prohibited.";
+		close;
+	case 4:
+		mes "[Bioengineer Touring]";
+		mes "We Bioengineers are doing all we can to produce food for the people inside the air-raid shelter.";
+		next;
+		emotion ET_SORRY;
+		mes "[Bioengineer Touring]";
+		mes "If people come and go often, it may interfere with the work for the next harvest so access will be prohibited.";
+		close;
+	case 5:
+		mes "[Bioengineer Touring]";
+		mes "We Bioengineers are doing all we can to produce food for the people inside the air-raid shelter.";
+		next;
+		emotion ET_SORRY;
+		mes "[Bioengineer Touring]";
+		mes "If people come and go often, it may interfere with the work for the next harvest so access will be prohibited.";
+		close;
+	}
+}
+
+// Farm
+un_bk_q,216,300,0	script	C-0#farm	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer Touring]";
+	mes "Wait a minute. You cannot enter the farm right now.";
+	close;
+}
+
+un_bk_q,213,346,0	script	farm#C-0	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 3 && recorder_quest_status == 0) {
+		emotion ET_BIGTHROB, getnpcid(0, "Bioengineer Ebrik#EP15.2MR");
+		mes "[Bioengineer Ebrik]";
+		mes "Are you the Adventurer here to help us with the grape harvest? Right here!!";
+		close;
+	}
+	warp "un_bk_q",213,299;
+	end;
+}
+
+un_bk_q,220,350,4	script	Bioengineer Ebrik#EP15.2MR	4_M_01,{
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type != 3)
+		end;
+	switch( recorder_quest_status ) {
+	case 0:
+		emotion ET_QUESTION;
+		mes "[Bioengineer Ebrik]";
+		mes "Are you the Adventurer here to help us with the grape harvest? Nice to meet you.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Bioengineers alone do not have enough hands to harvest the amount of grapes we need to provide all the people inside the air-raid shelter.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "So we ended up asking the Adventurers.";
+		next;
+		select("Are there others who can help?");
+		mes "[Bioengineer Ebrik]";
+		mes "Don't even mention it. We gave the task of harvesting grapes to the meandering Mechanicians and..";
+		next;
+		emotion ET_KEK;
+		mes "[Bioengineer Ebrik]";
+		mes "They ended up smashing one of the grape trees!!";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "We were lucky to have found out and stopped them before they destroyed the other trees. The thought of it is horrible.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Ah! That is not what's important.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "We used growth acceleration to make ripe grapes drop periodically.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "It would be nice if you can wait in front of the grape tree and collect 30 bunches of grapes.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "You can collect more, but the remaining ones from the harvest will naturally decompose and disappear.";
+		next;
+		setquest 5358;// Limits of Journeys
+		setquest 5359;// Grape Harvest
+		recorder_quest_status = 1;
+		mes "[Bioengineer Ebrik]";
+		mes "Then the soil fertility will recover partially. Good luck.";
+		close;
+	case 1:
+		if (countitem(6826) < 30) {
+			mes "[Bioengineer Ebrik]";
+			mes "We have decided to give out one grape box per team.";
+			next;
+			mes "[Bioengineer Ebrik]";
+			mes "One box can hold 30~32 bunches so collect accordingly.";
+			close;
+		}
+		emotion ET_BEST;
+		mes "[Bioengineer Ebrik]";
+		mes "Whoa good job. As I thought Adventurers are so much more capable than Mechanicians.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Since the grapes are harvested should we deliver them to each team?";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "I will be rude and ask you another favor on top of your hard work.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Let's see.. the grapes you just harvested";
+		next;
+		delitem 6826, countitem(6826);// Fresh Grape
+		setquest 5362;// Grape Delivery
+		recorder_quest_status = 2;
+		mes "[Bioengineer Ebrik]";
+		mes "This should be delivered to the Chemical Substance team. You can deliver this to Karsten.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Oh! You do not have to come back after the deliveries. We will be busy starting the next project.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "The people receiving the deliveries will probably give you compensation. If they don't, you can nag them.";
+		close;
+	case 2:
+		mes "[Bioengineer Ebrik]";
+		mes "That grape box you are holding";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Has to be delivered to Karsten of the Chemical substance team.";
+		next;
+		mes "[Bioengineer Ebrik]";
+		mes "Compensation will be paid by the people receiving the deliveries so you do not have to come back here.";
+		close;
+	}
+	end;
+
+OnInit:
+	freeloop 1;
+	setarray .amount[0],1,1,2;
+	setarray .grap_num[0],1,2,3,4,5;
+	setarray .coord[0],
+		242,391,	// Grape tree 1
+		274,391,	// Grape tree 2
+		333,360,	// Grape tree 3
+		316,344,	// Grape tree 4
+		241,343;	// Grape tree 5
+
+	while(true) {
+		sleep 60000;
+		callsub( S_Random_Grap, 0 );
+		callsub( S_Random_Grap, 1 );
+	}
+
+S_Random_Grap:
+	.@end = 4 - getarg(0);
+	.@r = rand(3);
+	.@tmp = .grap_num[.@r];
+	.@index = (.@tmp - 1) * 2;
+	.grap_num[.@r] = .grap_num[.@end];
+	.grap_num[.@end] = .@tmp;
+
+	for ( .@i = 0; .@i < 3; .@i++ ) {
+		do {
+			.@x = .coord[.@index] + rand(-2,2);
+			.@y = .coord[.@index+1] + rand(-2,2);
+		}
+		while( !checkcell("un_bk_q",.@x,.@y,cell_chkpass) );
+		makeitem 6826, .amount[.@i], "un_bk_q",.@x,.@y;
+	}
+	return;
+}
+
+un_bk_q,240,380,8	script	Bioengineer#EP15.2MR1	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer]";
+	mes "It seems we can harvest grape tree number 1 without problems. What a relief.";
+	next;
+	mes "[Bioengineer]";
+	mes "My heart sank when the Mechanicians destroyed a tree..";
+	close;
+}
+
+un_bk_q,274,380,8	script	Bioengineer#EP15.2MR2	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer]";
+	mes "The soil grape tree number 2 is in seems to be lacking nutrition.";
+	next;
+	mes "[Bioengineer]";
+	mes "We need to prepare fertilizer to provide the soil more nutrition.";
+	close;
+}
+
+un_bk_q,327,360,6	script	Bioengineer#EP15.2MR3	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer]";
+	mes "I worried because a lot of weird stuff was growing around grape tree number 3.";
+	next;
+	mes "[Bioengineer]";
+	mes "It seems the harvest will have no problem.";
+	close;
+}
+
+un_bk_q,316,351,4	script	Bioengineer#EP15.2MR4	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer]";
+	mes "Grape tree number 4 has no particular problem.";
+	next;
+	mes "[Bioengineer]";
+	mes "Nutrition state good. Harvest state good.";
+	close;
+}
+
+un_bk_q,249,344,2	script	Bioengineer#EP15.2MR5	4_M_ALCHE_C,{
+	callfunc("F_time_limit_recorder");
+	mes "[Bioengineer]";
+	mes "The nutrition of grape tree number 5 is too good.";
+	next;
+	mes "[Bioengineer]";
+	mes "That doesn't mean there will be a higher harvest yield..";
+	close;
+}
+
+// Clinic
+un_bk_q,269,236,0	script	Clinic#G-1	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 4 && recorder_quest_status == 0) {
+		mes "[Nurse Lapplad]";
+		mes "Look here?! Where are you trying to go? We have to do some tests so don't leave and wait here!!";
+		close;
+	}
+	warp "un_bk_q",255,235;
+	end;
+}
+
+un_bk_q,297,221,0	script	Clinic#H-0	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 4 && recorder_quest_status == 0) {
+		mes "[Nurse Lapplad]";
+		mes "Look here?! Where are you trying to go? We have to do some tests so don't leave and wait here!!";
+		close;
+	}
+	warp "un_bk_q",298,203;
+	end;
+}
+
+un_bk_q,326,236,0	script	Clinic#G-2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 4 && recorder_quest_status == 0) {
+		mes "[Nurse Lapplad]";
+		mes "Look here?! Where are you trying to go? We have to do some tests so don't leave and wait here!!";
+		close;
+	}
+	warp "un_bk_q",340,235;
+	end;
+}
+
+un_bk_q,276,243,4	script	Nurse Lapplad#EP15.2MR	4_F_BRZ_WOMAN,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 4:
+		switch( recorder_quest_status ) {
+		case 0:
+			emotion ET_SORRY;
+			mes "[Nurse Lapplad]";
+			mes "Sorry. Did you wait long? There are a lot of suspected infection patients as you can see..";
+			next;
+			select("Not really..");
+			emotion ET_HUK;
+			mes "[Nurse Lapplad]";
+			mes "Eh?! You didn't wait? That's strange? Did you cut in line? Cutting is bad.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "As you know there are infectees who are suddenly showing strange phenomena..";
+			next;
+			emotion ET_SCISSOR;
+			mes "[Nurse Lapplad]";
+			mes "Um...";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "...Ah...";
+			next;
+			emotion ET_SURPRISE;
+			mes "[Nurse Lapplad]";
+			mes "...Oh!!";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "I don't see any problematic symptoms. Fortunate.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "We are having trouble because of the suddenly convulsing patients.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Look here. My skin is getting crispy from not being able to sleep for days~";
+			next;
+			mes "Thudunk!! Babang!! Crash!!";
+			if (mobcount( "un_bk_q", "Nurse Lapplad#EP15.2MR::OnMobDead" ) < 1)
+				callsub S_Random, 1;	// always starts on Patient 1
+			next;
+			emotion ET_SMILE;
+			mes "[Nurse Lapplad]";
+			mes "Yes.. Just like that";
+			next;
+			emotion ET_SCISSOR;
+			mes "[Nurse Lapplad]";
+			mes ". .";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Argh!! Another convulsing patient.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Hey. Aren't you an adventurer? You must be really strong.";
+			next;
+			setquest 5363;// Limits of Journeys
+			setquest 5364;// Convulsing Patient Suppression
+			recorder_quest_status = 1;
+			mes "[Nurse Lapplad]";
+			mes "Can you suppress that convulsing patient? I am counting on you.";
+			close;
+		case 1:
+			if (mobcount( "un_bk_q", "Nurse Lapplad#EP15.2MR::OnMobDead" ) > 0) {
+				emotion ET_CRY;
+				mes "[Nurse Lapplad]";
+				mes "Ee~~ ee~ ek~~~~~~~~~!!";
+				next;
+				emotion ET_CRY;
+				mes "[Nurse Lapplad]";
+				mes "Take those patients down quickly! You're an adventurer!!";
+				close;
+			}
+			mes "[Nurse Lapplad]";
+			mes "You didn't get bit or scratched by the convulsing patient, did you?";
+			next;
+			select("Why?");
+			mes "[Nurse Lapplad]";
+			mes "Hmm~ I don't see any particular wounds.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Since I can't figure out the infection route...";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "We have to prepare for a possible disaster...";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Anyway, Adventurer~ Assuring and the best!";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "I haven't been that bewildered by simultaneously convulsing patients before..";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "Lucky you were here to suppress it with ease.";
+			next;
+			mes "[Nurse Lapplad]";
+			mes "I am sorry but can you report this to Fresa on your way? You know who Fresa is?";
+			next;
+			setquest 5365;// Urgent News
+			recorder_quest_status = 2;
+			mes "[Nurse Lapplad]";
+			mes "It is a situation so I am asking you a favor.";
+			close;
+		case 2:
+			mes "[Nurse Lapplad]";
+			mes "I am sorry but can you report this to Fresa on your way? This is a favor.";
+			close;
+		}
+	}
+	end;
+
+S_Random:
+	.rand_npc = getarg(0);
+	getmapxy .@map$,.@x,.@y, UNITTYPE_NPC, "Patient#EP15.2MR_0" + .rand_npc;
+	disablenpc "Patient#EP15.2MR_0" + .rand_npc;
+	monster .@map$,.@x,.@y, "Convulsing Patient",1015,1,"Nurse Lapplad#EP15.2MR::OnMobDead";
+	.mob_id = $@mobid[0];
+	initnpctimer;
+	return;
+
+OnMobDead:
+	enablenpc "Patient#EP15.2MR_0" + .rand_npc;
+	stopnpctimer;
+	if (rand(7) > 0)	// inaccurate
+		callsub S_Random, rand(1,7);
+	end;
+
+OnTimer3000:
+	if (rand(100) < 50) {
+		if (.rand_npc == 1) unittalk .mob_id, "Woouuu~";
+		else if (.rand_npc == 2) unittalk .mob_id, "Wooaa~";
+		else if (.rand_npc == 3) unittalk .mob_id, "Eh~";
+		else if (.rand_npc == 4) unittalk .mob_id, "Ha-ak-ha-ak~";
+		else if (.rand_npc == 5) unittalk .mob_id, "Uh- Ugh~";
+		else if (.rand_npc == 6) unittalk .mob_id, "Eh~";
+		else if (.rand_npc == 7) unittalk .mob_id, "Kur..urk..kekek..";
+	}
+	initnpctimer;
+	end;
+}
+
+// Patients
+un_bk_q,286,254,4	script	Patient#EP15.2MR_01	4_M_LIEMAN,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_PROFUSELY_SWEAT;
+	mes "[Patient]";
+	mes "Hurts.. It hurts..";
+	close;
+}
+
+un_bk_q,296,252,4	script	Patient#EP15.2MR_02	4_M_DSTMANDEAD,{
+	callfunc("F_time_limit_recorder");
+	mes "[Patient]";
+	mes "I'm fine. They're making a fuss for no reason.";
+	close;
+}
+
+un_bk_q,316,231,4	script	Patient#EP15.2MR_03	4_M_DIEMAN,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_SLEEPY;
+	mes "[Patient]";
+	mes "I keep feeling sleepy for some reason. Is it because I'm sick?";
+	close;
+}
+un_bk_q,281,226,4	script	Patient#EP15.2MR_04	4_F_PATIENT,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_OHNO;
+	mes "[Patient]";
+	mes "My head feels blank.. Uh? Did you say something?";
+	close;
+}
+
+un_bk_q,320,249,4	script	Patient#EP15.2MR_05	4_M_PATIENT,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_CONFUSE;
+	mes "[Patient]";
+	mes "Ugh.. Feels like my whole body is cramped.";
+	close;
+}
+
+un_bk_q,306,233,4	script	Patient#EP15.2MR_06	4_M_DIEMAN,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_SEXY;
+	mes "[Patient]";
+	mes "Urk.. I feel sick even though I didn't drink.";
+	close;
+}
+
+un_bk_q,310,261,4	script	Patient#EP15.2MR_07	4_M_LIEMAN,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_OTL;
+	mes "[Patient]";
+	mes "Oh no is there a transfectant found in me..";
+	close;
+}
+
+// Nurses
+un_bk_q,313,261,2	script	Nurse#EP15.2MR1	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	mes "[Nurse]";
+	mes "Patient~ That chair is quite high.. doesn't your head ache?";
+	close;
+}
+
+un_bk_q,322,249,2	script	Nurse#EP15.2MR2	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	mes "[Nurse]";
+	mes "Why does he say he has a cramp? The other patients didn't have that problem.";
+	close;
+}
+
+un_bk_q,316,233,4	script	Nurse#EP15.2MR3	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	mes "[Nurse]";
+	mes "Argh- I told you not to scribble on the floor while pretending to sleep.";
+	close;
+}
+
+un_bk_q,304,233,4	script	Nurse#EP15.2MR4	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	mes "[Nurse]";
+	mes "You ran around the elephant trunk thirty times so you must be sick. Claiming he can't feel dizziness. Quite the bluffer.";
+	close;
+}
+
+un_bk_q,283,226,2	script	Nurse#EP15.2MR5	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_CRY;
+	mes "[Nurse]";
+	mes "Ah geez! There is no other issues yet but why is he saying he's dizzy?";
+	close;
+}
+
+un_bk_q,284,255,4	script	Nurse#EP15.2MR6	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	mes "[Nurse]";
+	mes "So what do you mean!! Where does it hurt!!";
+	close;
+}
+
+un_bk_q,296,254,4	script	Nurse#EP15.2MR7	4_F_NURSE,{
+	callfunc("F_time_limit_recorder");
+	emotion ET_CRY;
+	mes "[Nurse]";
+	mes "What do you mean nothing is wrong, your face has gone purple.";
+	close;
+}
+
+// Cafeteria
+un_bk_q,271,290,0	script	Cafeteria#G-1	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 5 && recorder_quest_status == 0) {
+		emotion ET_FRET, getnpcid(0, "Transportation Executive Ernon");
+		mes "[Transportation Executive Ernon]";
+		mes "Hey~ This is a time to borrow even the hands of small children. Stop goofing around and come here.";
+		close;
+	}
+	warp "un_bk_q",255,261;
+	end;
+}
+
+un_bk_q,324,290,0	script	Cafeteria#G-2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	callfunc("F_time_limit_recorder");
+	if (recorder_quest_type == 5 && recorder_quest_status == 0) {
+		mes "[Transportation Executive Ernon]";
+		mes "Hey~ This is a time to borrow even the hands of small children. Stop goofing around and come here.";
+		close;
+	}
+	warp "un_bk_q",340,261;
+	end;
+}
+
+un_bk_q,279,294,4	script	Transportation Executive Ernon	4_M_LGTMAN,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Transportation Executive Ernon]";
+		mes "We used to deliver things like daily necessities or research tools here before the accident.";
+		next;
+		mes "[Transportation Executive Ernon]";
+		mes "Work that involved going out to other places a lot more even as a staff member here.";
+		close;
+	case 2:
+		emotion ET_QUESTION;
+		mes "[Transportation Executive Ernon]";
+		mes "What?! Is something going on? The Mechanicians and Facilities managers look busy.";
+		close;
+	case 3:
+		emotion ET_BEST;
+		mes "[Transportation Executive Ernon]";
+		mes "Yaa~ Did you try the grapes?";
+		next;
+		mes "[Transportation Executive Ernon]";
+		mes "Isn't it great that we can grow fresh grapes in an underground evacuation facility like this?";
+		close;
+	case 4:
+		mes "[Transportation Executive Ernon]";
+		mes "Some people are suddenly attacking others.";
+		next;
+		mes "[Transportation Executive Ernon]";
+		mes "What in the hell is going on?";
+		close;
+	case 5:
+		switch( recorder_quest_status ) {
+		case 0:
+			emotion ET_QUESTION;
+			mes "[Transportation Executive Ernon]";
+			mes "They were talking about it in the broadcast since yesterday so you know the gist of the situation, right?";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "The contaminant is getting to the interior of the air-raid shelter so the decision has been made to move all supplies to the uncontaminated zone Z-2 that the Chemical Substance Specialists found.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "There was a request to move the cargo with the Adventurers since the scrawny researchers won't be of help.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "Alright- let's move the cargo to Zone Z-2 first.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "If you go to the machine Warehouse on your way back there will a person called Al. Tell him";
+			next;
+			emotion ET_KIK;
+			mes "[Transportation Executive Ernon]";
+			mes "^0000FF You idiots!! Stop wasting material with stupid machines!!^000000 for me and come back.";
+			next;
+			select("Eh?");
+			mes "[Transportation Executive Ernon]";
+			mes "Don't understand? Tell Al in the machine Warehouse";
+			next;
+			emotion ET_KIK;
+			mes "[Transportation Executive Ernon]";
+			mes "^0000FF You idiots!! Stop wasting material with stupid machines!!^000000 and come back.";
+			next;
+			setquest 5366;// Limits of Journeys
+			setquest 5367;// Transport Necessities
+			recorder_quest_status = 1;
+			mes "[Transportation Executive Ernon]";
+			mes "Remember to get every postposition right and convey my feeling 100%.";
+			close;
+		case 1:
+		case 2:
+			mes "[Transportation Executive Ernon]";
+			mes "Transport the cargo to Zone Z-2 first.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "On your way back go to the machine Warehouse and tell Al";
+			next;
+			emotion ET_KIK;
+			mes "[Transportation Executive Ernon]";
+			mes "??^0000FF You idiots!! Stop wasting material with stupid machines!!^000000?? for me and come back.";
+			close;
+		case 3:
+			mes "[Transportation Executive Ernon]";
+			mes "You conveyed my feeling right?";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "They should be smartened up by now. They wouldn't waste precious components again, right?";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "Here! This is compensation for the job.";
+			next;
+			erasequest 5367;// Transport Necessities
+			erasequest 5368;// Goods delivery Complete
+			erasequest 5369;// Message Delivery Complete
+			setquest 5370;// Memory Record
+			getexp 750000,500000;
+			recorder_quest_status = 4;
+			mes "- The small round capsule has percolated through skin. It feels like experience has accumulated.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "Though our survival isn't sure because of the contaminant,";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "The chief researcher told us to adequately compensate the adventurers who were caught up in the explosion.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "Don't worry about it though.";
+			close;
+		case 4:
+			mes "[Transportation Executive Ernon]";
+			mes "Though our survival isn't sure because of the contaminant,";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "The chief researcher told us to adequately compensate the adventurers who were caught up in the explosion.";
+			next;
+			mes "[Transportation Executive Ernon]";
+			mes "Don't worry about it though.";
+			close;
+		}
+	}
+}
+
+un_bk_q,297,287,6	script	Adventurer Jean#EP15.2M	4_M_HUBOY,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Adventurer Jean]";
+		mes "Uh?! You're an adventurer too?";
+		next;
+		mes "[Adventurer Jean]";
+		mes "Ugh.. It seems you are unlucky as well.";
+		close;
+	case 2:
+		mes "[Adventurer Jean]";
+		mes "Don't you think this place is trying to exploit us Adventurers?";
+		next;
+		mes "[Adventurer Jean]";
+		mes "The Cafeteria food is good though.";
+		close;
+	case 3:
+		mes "[Adventurer Jean]";
+		mes "Grapes were served on the side today.";
+		next;
+		mes "[Adventurer Jean]";
+		mes "I like grapes. I want to eat more.";
+		close;
+	case 4:
+		mes "[Adventurer Jean]";
+		mes "A friend I made here is confined in the temporary clinic. They found a transfectant or something.";
+		next;
+		mes "[Adventurer Jean]";
+		mes "To us adventurers a healthy body is an asset.";
+		close;
+	case 5:
+		mes "[Adventurer Jean]";
+		mes "I ate a lot of different things from adventuring places.";
+		next;
+		mes "[Adventurer Jean]";
+		mes "I think the food here is one of the best.";
+		close;
+	}
+}
+
+un_bk_q,318,299,2	script	Cafeteria Lady#EP15.2MR	4_F_CAVE1,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Cafeteria Lady]";
+		mes "Sorry. We aren't ready to distribute food yet.";
+		close;
+	case 2:
+		mes "[Cafeteria Lady]";
+		mes "Grab a plate or tray and wait in line.";
+		close;
+	case 3:
+		mes "[Cafeteria Lady]";
+		mes "Oh no what should we do? We ran out of grapes.";
+		next;
+		mes "[Cafeteria Lady]";
+		mes "New grapes should be delivered from the farm soon. Do you want to wait?";
+		close;
+	case 4:
+		mes "[Cafeteria Lady]";
+		mes "Do you know that's the temporary clinic? You cannot go that way now.";
+		next;
+		mes "[Cafeteria Lady]";
+		mes "The passage is blocked because of convulsing patients.";
+		close;
+	case 5:
+		mes "[Cafeteria Lady]";
+		mes "You are working hard.";
+		close;
+	}
+}
+
+// Corridor
+un_bk_q,280,280,8	script	Access Control Guard#EP_clinic1	4_M_HUMAN_02,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+	case 2:
+	case 3:
+		mes "[Access Control Guard]";
+		mes "You cannot enter this area because it is under construction.";
+		next;
+		mes "[Access Control Guard]";
+		mes "According to the Facilities managers it will be later used as a Clinic.";
+		close;
+	case 4:
+		mes "[Access Control Guard]";
+		mes "Access to the temporary clinic is restricted to quarantine convulsing patients.";
+		next;
+		mes "[Access Control Guard]";
+		mes "I ask for your understanding.";
+		close;
+	case 5:
+		mes "[Access Control Guard]";
+		mes "Movement in this area is currently prohibited.";
+		next;
+		mes "[Access Control Guard]";
+		mes "I ask for your understanding.";
+		close;
+	}
+}
+un_bk_q,313,280,8	duplicate(Access Control Guard#EP_clinic1)	Access Control Guard#EP_clinic2	4_M_HUMAN_02
+un_bk_q,340,235,6	duplicate(Access Control Guard#EP_clinic1)	Access Control Guard#EP_clinic3	4_M_HUMAN_02
+un_bk_q,298,203,4	duplicate(Access Control Guard#EP_clinic1)	Access Control Guard#EP_clinic4	4_M_HUMAN_02
+un_bk_q,255,236,2	duplicate(Access Control Guard#EP_clinic1)	Access Control Guard#EP_clinic5	4_M_HUMAN_02
+
+un_bk_q,248,258,2	script	Adventurer Dally#EP15.2	4_F_SITDOWN,{
+	callfunc("F_time_limit_recorder");
+	mes "[Adventurer Dally]";
+	mes "Darn it!! Frustrating";
+	next;
+	sc_start SC_INCREASEAGI,240000,10;
+	mes "[Adventurer Dally]";
+	mes "Sister- Run~";
+	close;
+}
+
+// Z-2 Zone
+un_bk_q,72,53,4	script	Distribution Chief Avrandi	4_M_TWTEAMAN,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		emotion ET_OHNO;
+		mes "[Distribution Chief Avrandi]";
+		mes "It is a relief we were able to evacuate to the air-raid shelter interior in advance.";
+		next;
+		mes "[Distribution Chief Avrandi]";
+		mes "If we weren't able to evacuate..? We probably won't be here.";
+		close;
+	case 2:
+		emotion ET_QUESTION;
+		mes "[Distribution Chief Avrandi]";
+		mes "Is there something wrong?";
+		next;
+		mes "[Distribution Chief Avrandi]";
+		mes "A while ago the Facilities managers were running around in haste.";
+		close;
+	case 3:
+		emotion ET_HUK;
+		mes "[Distribution Chief Avrandi]";
+		mes "What in the world?! You ate fresh grapes? Why didn't I get to eat them? Why?";
+		close;
+	case 4:
+		emotion ET_SHY;
+		mes "[Distribution Chief Avrandi]";
+		mes "This place is sure quiet. Why you ask?";
+		next;
+		mes "[Distribution Chief Avrandi]";
+		mes "Not many people come this far.";
+		close;
+	case 5:
+		if (recorder_quest_status == 1) {
+			mes "[Distribution Chief Avrandi]";
+			mes "Ah! Come on in. It seems there are a lot of visitors today because of the broadcast this morning.";
+			next;
+			mes "[Distribution Chief Avrandi]";
+			mes "You're here because Ernon sent you right?";
+			next;
+			mes "[Distribution Chief Avrandi]";
+			mes "I have received the item you have brought.";
+			next;
+			setquest 5368;// Goods delivery Complete
+			recorder_quest_status = 2;
+			mes "[Distribution Chief Avrandi]";
+			mes "Eh-? Are you taking it back? That is a lot of work.";
+			close;
+		}
+		mes "[Distribution Chief Avrandi]";
+		mes "Good luck. You are working hard.";
+		close;
+	}
+}
+
+// B-1 Warehouse
+un_bk_q,34,138,4	script	Warehouse Keeper Pik#EP	4W_M_03,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Warehouse Keeper Pik]";
+		mes "I don't know what brings you here but please don't touch anything.";
+		next;
+		mes "[Warehouse Keeper Pik]";
+		mes "I haven't finished checking the stock and it would be annoying if anything went missing.";
+		close;
+	case 2:
+		mes "[Warehouse Keeper Pik]";
+		mes "You're an adventurer. You don't have to deliver air cleaners here.";
+		next;
+		mes "[Warehouse Keeper Pik]";
+		mes "It's a warehouse anyway. The independent air circulation system is enough.";
+		close;
+	case 3:
+		mes "[Warehouse Keeper Pik]";
+		mes "Aahh- Looking after the warehouse is annoying.";
+		next;
+		mes "[Warehouse Keeper Pik]";
+		mes "There is nobody to rotate my shift";
+		close;
+	case 4:
+		mes "[Warehouse Keeper Pik]";
+		mes "Wha- wha- wait stop!!";
+		next;
+		mes "[Warehouse Keeper Pik]";
+		mes "You're not here to ambush me right? It's alright if not.";
+		close;
+	case 5:
+		mes "[Warehouse Keeper Pik]";
+		mes "Are you here to move items?";
+		next;
+		mes "[Warehouse Keeper Pik]";
+		mes "The goods in this warehouse should not be today I think? From what I know today we are moving necessities first.";
+		close;
+	}
+}
+
+// Corridor F-2
+un_bk_q,347,217,4	script	Facilities manager Remodeling	4_M_EINMAN,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		if (recorder_quest_status == 9) {
+			if (isbegin_quest(5349) == 0) {
+				emotion ET_QUESTION;
+				mes "[Facilities manager Remodeling]";
+				mes "Uh?! Hello. First time meeting you. What brings you here?";
+				next;
+				select("Explain situation.");
+				mes "[Facilities manager Remodeling]";
+				mes "Ah! Is that so? Fresa you say? It hasn't been long since my department was placed here.";
+				next;
+				mes "[Facilities manager Remodeling]";
+				mes "I only heard of the name Fresa.";
+				next;
+				setquest 5349;// Headcount Complete
+				mes "[Facilities manager Remodeling]";
+				mes "Anyway the current number of us facilities managers is ^FF000028^000000.";
+				next;
+				mes "[Facilities manager Remodeling]";
+				mes "There might be some others who are hiding somewhere but as of right now there are ^FF000028^000000.";
+				next;
+				mes "[Facilities manager Remodeling]";
+				mes "Tell Fresa on your way that Facilities managers are inspecting facilities in their assigned areas because the air-raid shelter facilities have not really been used.";
+				close;
+			}
+			mes "[Facilities manager Remodeling]";
+			mes "The current number of facilities managers is ^FF000028^000000.";
+			next;
+			mes "[Facilities manager Remodeling]";
+			mes "Tell Fresa that Facilities managers are inspecting facilities in their assigned areas because the air-raid shelter facilities have not really been used.";
+			close;
+		}
+		mes "[Facilities manager Remodeling]";
+		mes "I don't know who equipped the air-raid shelter. But it surely is well made and sturdy.";
+		close;
+	case 2:
+		mes "[Facilities manager Remodeling]";
+		mes "I don't know who equipped the air-raid shelter. But it surely is well made and sturdy.";
+		close;
+	case 3:
+		mes "[Facilities manager Remodeling]";
+		mes "What!! That grape!! I had some already so I am guessing it's not mine.";
+		close;
+	case 4:
+		mes "[Facilities manager Remodeling]";
+		mes "I don't know who equipped the air-raid shelter. But it surely is well made and sturdy.";
+		close;
+	case 5:
+		mes "[Facilities manager Remodeling]";
+		mes "I don't know who equipped the air-raid shelter. But it surely is well made and sturdy.";
+		close;
+	}
+}
+
+// Off Limits
+un_bk_q,102,97,2	script	Adventurer Breezin#EP15.2MR	4_F_BRZ_INDOLD,{
+	callfunc("F_time_limit_recorder");
+	switch( recorder_quest_type ) {
+	case 1:
+		mes "[Adventurer Breezin]";
+		mes "Ahh.. Why did I travel here..";
+		next;
+		mes "[Adventurer Breezin]";
+		mes "Hey don't think of going out that way. It's going to be dangerous because of the explosion.";
+		close;
+	case 2:
+		mes "[Adventurer Breezin]";
+		mes "Today is strange. Hey do you see the mysterious device over there too?";
+		close;
+	case 3:
+		mes "[Adventurer Breezin]";
+		mes "I think I said it 30 times today alone but there is no device at the door.";
+		next;
+		mes "[Adventurer Breezin]";
+		mes "I am itching for an adventure but safety outside isn't confirmed so don't think of going outside.";
+		close;
+	case 4:
+		mes "[Adventurer Breezin]";
+		mes "A while I ago I couldn't stop the Chemical Substance Specialists from going outside.";
+		next;
+		mes "[Adventurer Breezin]";
+		mes "Seeing how they didn't return, they must be dead, right?";
+		close;
+	case 5:
+		mes "[Adventurer Breezin]";
+		mes "The situation has grown out of control.";
+		next;
+		mes "[Adventurer Breezin]";
+		mes "Haa- Should have I stopped those people leaving the air-raid shelter?";
+		close;
+	}
+}
+
+// Bulletin Board
+un_bk_q,101,92,8	script	Off Limits#01	4_BULLETIN_BOARD2,{ end; }
+un_bk_q,94,92,8	duplicate(Off Limits#01)	Off Limits#02	4_BULLETIN_BOARD2
+un_bk_q,22,279,4	duplicate(Off Limits#01)	Machine Warehouse	4_BULLETIN_BOARD2
+un_bk_q,215,303,4	duplicate(Off Limits#01)	farm#C0	4_BULLETIN_BOARD2
+
+un_bk_q,58,185,4	duplicate(Off Limits#01)	Control room#Left	4_BULLETIN_BOARD2
+un_bk_q,139,187,4	duplicate(Off Limits#01)	Control room#Right	4_BULLETIN_BOARD2
+
+un_bk_q,101,122,4	duplicate(Off Limits#01)	Monitoring room#A0Center	4_BULLETIN_BOARD2
+un_bk_q,58,171,4	duplicate(Off Limits#01)	Monitoring room#L1Left	4_BULLETIN_BOARD2
+un_bk_q,139,171,4	duplicate(Off Limits#01)	Monitoring room#L2Right	4_BULLETIN_BOARD2
+
+un_bk_q,256,239,4	duplicate(Off Limits#01)	Temporary Clinic#G1	4_BULLETIN_BOARD2
+un_bk_q,301,204,4	duplicate(Off Limits#01)	Temporary Clinic#H0	4_BULLETIN_BOARD2
+
+un_bk_q,58,121,4	duplicate(Off Limits#01)	A-0 Zone#L1	4_BULLETIN_BOARD2
+un_bk_q,141,115,4	duplicate(Off Limits#01)	A-0 Zone#L2	4_BULLETIN_BOARD2
+un_bk_q,278,193,4	duplicate(Off Limits#01)	A-0 Zone#H0Left	4_BULLETIN_BOARD2
+un_bk_q,317,193,4	duplicate(Off Limits#01)	A-0 Zone#H0Right	4_BULLETIN_BOARD2
+
+un_bk_q,49,137,4	duplicate(Off Limits#01)	B-1 Warehouse	4_BULLETIN_BOARD2
+
+un_bk_q,219,265,4	duplicate(Off Limits#01)	C-0 Zone#G1	4_BULLETIN_BOARD2
+
+un_bk_q,247,217,4	duplicate(Off Limits#01)	F-1 Zone#G1	4_BULLETIN_BOARD2
+un_bk_q,349,217,4	duplicate(Off Limits#01)	F-2 Zone#G2	4_BULLETIN_BOARD2
+
+un_bk_q,214,283,4	duplicate(Off Limits#01)	G-1 Zone#C0	4_BULLETIN_BOARD2
+un_bk_q,228,217,4	duplicate(Off Limits#01)	G-1 Zone#F1	4_BULLETIN_BOARD2
+un_bk_q,273,203,4	duplicate(Off Limits#01)	G-1 Zone#H0	4_BULLETIN_BOARD2
+un_bk_q,322,203,4	duplicate(Off Limits#01)	G-2 Zone#H0	4_BULLETIN_BOARD2
+un_bk_q,388,266,4	duplicate(Off Limits#01)	G-2 Zone#I0	4_BULLETIN_BOARD2
+
+un_bk_q,122,125,4	duplicate(Off Limits#01)	H-0 Zone#Right	4_BULLETIN_BOARD2
+un_bk_q,78,125,4	duplicate(Off Limits#01)	H-0 Zone#Left	4_BULLETIN_BOARD2
+un_bk_q,340,203,4	duplicate(Off Limits#01)	H-0 Zone#H0	4_BULLETIN_BOARD2
+un_bk_q,300,184,4	duplicate(Off Limits#01)	H-0 Zone#Z0	4_BULLETIN_BOARD2
+
+un_bk_q,368,267,4	duplicate(Off Limits#01)	I-0 Zone#G2	4_BULLETIN_BOARD2
+
+un_bk_q,25,193,4	duplicate(Off Limits#01)	J-0 Zone#L1	4_BULLETIN_BOARD2
+
+un_bk_q,173,193,4	duplicate(Off Limits#01)	K-0 Zone#L2	4_BULLETIN_BOARD2
+
+un_bk_q,71,121,4	duplicate(Off Limits#01)	L-1 Zone#A0	4_BULLETIN_BOARD2
+un_bk_q,22,259,4	duplicate(Off Limits#01)	L-1 Zone#J0	4_BULLETIN_BOARD2
+un_bk_q,126,121,4	duplicate(Off Limits#01)	L-2 Zone#A0	4_BULLETIN_BOARD2
+un_bk_q,171,233,4	duplicate(Off Limits#01)	L-2 Zone#K0	4_BULLETIN_BOARD2
+
+un_bk_q,300,194,4	duplicate(Off Limits#01)	Z-0 Zone#H0	4_BULLETIN_BOARD2
+un_bk_q,164,55,4	duplicate(Off Limits#01)	Z-0 Zone#Z1	4_BULLETIN_BOARD2
+un_bk_q,27,55,4	duplicate(Off Limits#01)	Z-0 Zone#Z2	4_BULLETIN_BOARD2
+un_bk_q,230,167,4	duplicate(Off Limits#01)	Z-1 Zone#Z0	4_BULLETIN_BOARD2
+un_bk_q,365,167,4	duplicate(Off Limits#01)	Z-2 Zone#Z0	4_BULLETIN_BOARD2
+
+un_bk_q,97,84,4	script	Dimension move Portal#E	PORTAL,{
+	callfunc("F_time_limit_recorder");
+	mes "[Dimension-mover]";
+	mes "Do you want finish your travels and";
+	mes "go back to your original time?";
+	mes "^FF0000All traces in this place will be erased if you go back to your original time.^000000";
+	next;
+	if (select( "Stay here.", "Go back." ) == 2) {
+		mes "[Dimension-mover]";
+		delitem 6825, countitem(6825);// Air Purifier Box
+		delitem 6826, countitem(6826);// Fresh Grape
+		for ( .@quest_id = 5341; .@quest_id < 5371; .@quest_id++ ) {
+			if (isbegin_quest(.@quest_id) > 0)
+				erasequest .@quest_id;
+		}
+		recorder_quest_type = 0;
+		recorder_quest_status = 0;
+		mes "Your whole body becomes heavy and time seems to be passing faster around you.";
+		close2;
+		warp "un_bunker",98,91;
+	}
+	end;
+}

+ 1 - 1
npc/re/quests/quests_glastheim.txt

@@ -11,7 +11,7 @@
 //= 1.1 Dialogue cleanup [Aleos]
 //============================================================
 
-glast_01,195,273,4	script	Hugin's Follower#n_gh	123,{
+glast_01,195,273,3	script	Hugin's follower#1	2_F_MAGICMASTER,{
 	mes "[Hugin's Follower]";
 	mes "I can't move between time and dimensions like master Hugin but I can pretend to.";
 	next;

+ 7 - 2
npc/re/scripts_athena.conf

@@ -54,17 +54,19 @@ npc: npc/re/guides/guides_woe_te.txt
 npc: npc/re/instances/BakonawaLake.txt
 npc: npc/re/instances/BangungotHospital.txt
 npc: npc/re/instances/BuwayaCave.txt
+npc: npc/re/instances/CentralLaboratory.txt
+npc: npc/re/instances/EclageInterior.txt
 npc: npc/re/instances/FacewormsNest.txt
 npc: npc/re/instances/GhostPalace.txt
 npc: npc/re/instances/HazyForest.txt
 npc: npc/re/instances/HorrorToyFactory.txt
+npc: npc/re/instances/LastRoom.txt
 npc: npc/re/instances/MalangdoCulvert.txt
 npc: npc/re/instances/OctopusCave.txt
 npc: npc/re/instances/OldGlastHeim.txt
-npc: npc/re/instances/WolfchevLaboratory.txt
-npc: npc/re/instances/EclageInterior.txt
 npc: npc/re/instances/SarahAndFenrir.txt
 npc: npc/re/instances/SaraMemory.txt
+npc: npc/re/instances/WolfchevLaboratory.txt
 //npc: npc/custom/official/GeffenMagicTournament.txt
 
 // ---------------- Kafras & Cool Event Corp. -------------------
@@ -91,6 +93,7 @@ npc: npc/re/merchants/gld_mission_exchange.txt
 npc: npc/re/merchants/hd_refiner.txt
 npc: npc/re/merchants/HorrorToyFactory_merchants.txt
 npc: npc/re/merchants/inn.txt
+npc: npc/re/merchants/OldGlastHeim_merchants.txt
 npc: npc/re/merchants/quivers.txt
 npc: npc/re/merchants/refine.txt
 npc: npc/re/merchants/renters.txt
@@ -150,6 +153,8 @@ npc: npc/re/quests/mrsmile.txt
 npc: npc/re/quests/ninja_quests.txt
 npc: npc/re/quests/pile_bunker.txt
 npc: npc/re/quests/quests_13_1.txt
+npc: npc/re/quests/quests_15_1.txt
+npc: npc/re/quests/quests_15_2.txt
 npc: npc/re/quests/quests_aldebaran.txt
 npc: npc/re/quests/quests_brasilis.txt
 npc: npc/re/quests/quests_dewata.txt

+ 1 - 0
npc/re/scripts_monsters.conf

@@ -7,6 +7,7 @@ npc: npc/re/mobs/championmobs.txt
 npc: npc/re/mobs/citycleaners.txt
 npc: npc/re/mobs/int_land.txt
 npc: npc/re/mobs/towns.txt
+npc: npc/re/mobs/verus.txt
 
 // -------------------------- Dungeons --------------------------
 npc: npc/re/mobs/dungeons/abbey.txt

+ 2 - 0
npc/re/scripts_warps.conf

@@ -41,4 +41,6 @@ npc: npc/re/warps/other/jobquests.txt
 npc: npc/re/warps/other/paradise.txt
 npc: npc/re/warps/other/s_workshop.txt
 npc: npc/re/warps/other/sign.txt
+npc: npc/re/warps/other/un_myst.txt
+npc: npc/re/warps/other/verus.txt
 npc: npc/re/warps/guildcastles.txt

+ 6 - 0
npc/re/warps/other/paradise.txt

@@ -23,3 +23,9 @@ moc_para01,113,32,0	warp2	#warp_2_ware	1,1,moc_para01,105,92
 moc_para01,102,92,0	warp2	#warp_2_pass_2	1,1,moc_para01,109,33
 moc_para01,41,187,0	warp2	#warp_2_room2	1,1,moc_para01,179,93
 moc_para01,179,90,0	warp2	#warp_2_2fhall_3	1,1,moc_para01,41,185
+
+// moc_para01,47,38,0	warp2	#warp_2_pass_2_2	1,1,moc_para01,106,14
+moc_para01,17,187,0	warp2	#warp_2_bossroom	1,1,moc_para01,132,159
+moc_para01,132,156,0	warp2	#warp_2_2fhall_1	1,1,moc_para01,17,185
+moc_para01,29,187,0	warp2	#warp_2_room1	1,1,moc_para01,180,159
+moc_para01,180,156,0	warp2	#warp_2_2fhall_2	1,1,moc_para01,29,185

+ 132 - 0
npc/re/warps/other/un_myst.txt

@@ -0,0 +1,132 @@
+//===== rAthena Script =======================================
+//= un_myst warps
+//===== Description: =========================================
+//= Warp Points for episodes 15.1 & 15.2
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+// A
+un_myst,124,189,0	script	#un_myst_entrance	WARPNPC,1,1,{
+	end;
+OnTouch:
+	warp "un_myst",171,197;
+	@weird_piece = 1;
+	end;
+}
+un_myst,171,183,0	warp2	#un_myst_A_1	1,1,un_myst,259,200
+
+un_myst,258,208,0	script	#un_myst_A_2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",329,205;
+	else if (.@r < 5)
+		warp "un_myst",291,203;
+	else
+		warp "un_myst",259,200;
+	end;
+}
+un_myst,295,208,0	script	#un_myst_A_3	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",329,205;
+	else if (.@r < 5)
+		warp "un_myst",291,203;
+	else
+		warp "un_myst",259,200;
+	end;
+}
+
+// B
+un_myst,393,139,0	script	#un_myst_B_1	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",176,137;
+	else if (.@r < 5)
+		warp "un_myst",138,138;
+	else
+		warp "un_myst",86,136;
+	end;
+}
+un_myst,104,136,0	script	#un_myst_B_2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",176,137;
+	else if (.@r < 5)
+		warp "un_myst",138,138;
+	else
+		warp "un_myst",86,136;
+	end;
+}
+un_myst,138,140,0	script	#un_myst_B_3	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",176,137;
+	else if (.@r < 5)
+		warp "un_myst",138,138;
+	else
+		warp "un_myst",86,136;
+	end;
+}
+
+// C
+un_myst,75,91,0	script	#un_myst_C_1	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",217,84;
+	else if (.@r < 5)
+		warp "un_myst",160,89;
+	else
+		warp "un_myst",107,88;
+	end;
+}
+un_myst,169,89,0	script	#un_myst_C_2	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",217,84;
+	else if (.@r < 5)
+		warp "un_myst",160,89;
+	else
+		warp "un_myst",107,88;
+	end;
+}
+un_myst,121,82,0	script	#un_myst_C_3	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",217,84;
+	else if (.@r < 5)
+		warp "un_myst",160,89;
+	else
+		warp "un_myst",107,88;
+	end;
+}
+un_myst,219,88,0	script	#un_myst_C_4	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@r = rand(9);
+	if (.@r == 0)
+		warp "un_myst",217,84;
+	else if (.@r < 5)
+		warp "un_myst",160,89;
+	else
+		warp "un_myst",107,88;
+	end;
+}
+
+un_myst,108,38,0	warp2	#un_myst_tamarin	1,1,un_myst,209,33

+ 156 - 0
npc/re/warps/other/verus.txt

@@ -0,0 +1,156 @@
+//===== rAthena Script =======================================
+//= Verus warps
+//===== Description: =========================================
+//= Warp Points for episodes 15.1 & 15.2
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+verus04,204,163,0	warp2	fr_ver04_to_tun	1,1,ver_tunn,13,35
+verus04,121,267,0	warp2	fr_ver04_to_ver03_1	1,1,verus03,121,20
+verus04,44,267,0	warp2	fr_ver04_to_ver03_2	1,1,verus03,44,20
+
+verus01,247,58,0	warp2	verus01_to_verus03	1,1,verus03,55,251
+verus02,72,16,0	warp2	verus02_to_verus03	1,1,verus03,169,255
+verus03,122,17,0	warp2	fr_ver03_to_ver04_1	1,1,verus04,121,264
+verus03,44,17,0	warp2	fr_ver03_to_ver04_2	1,1,verus04,44,264
+
+juperos_01,245,87,0	warp2	fr_ju_to_eju	1,1,ver_eju,13,148
+ver_eju,10,148,0	warp2	fr_eju_to_ju	1,1,juperos_01,242,87
+ver_eju,107,36,0	warp2	fr_eju_to_tun	2,2,ver_tunn,84,82
+ver_tunn,84,86,0	warp2	fr_tun_to_eju	1,1,ver_eju,113,38
+ver_tunn,10,36,0	warp2	fr_tun_to_ver04	1,1,verus04,202,165
+
+lhz_in01,276,238,0	warp2	in_to_out#e152i02	1,1,lhz_in01,276,230
+
+// Bunker
+un_bunker,41,275,0	warp2	A_0#A_1	1,1,un_bunker,21,276
+un_bunker,98,85,0	warp2	#bunker_out	1,1,verus01,115,190
+un_bunker,24,276,0	warp2	A_1#A_0	1,1,un_bunker,45,275
+un_bunker,24,256,0	warp2	A_2#A_3	1,1,un_bunker,26,190
+un_bunker,23,190,0	warp2	A_3#A_2	1,1,un_bunker,21,256
+un_bunker,31,196,0	warp2	A_4#A_5	1,1,un_bunker,22,378
+un_bunker,21,375,0	warp2	A_5#A_4	1,1,un_bunker,32,193
+un_bunker,51,196,0	warp2	A_6#A_7	1,1,un_bunker,68,378
+un_bunker,67,375,0	warp2	A_7#A_6	1,1,un_bunker,52,193
+un_bunker,60,183,0	warp2	A_8#A_9	1,1,un_bunker,75,235
+un_bunker,71,236,0	warp2	A_9#A_8	1,1,un_bunker,57,182
+un_bunker,60,169,0	warp2	A_10#A_11	1,1,un_bunker,72,168
+un_bunker,69,167,0	warp2	A_11#A_10	1,1,un_bunker,57,168
+un_bunker,47,135,0	warp2	A_12#A_13	1,1,un_bunker,37,134
+un_bunker,40,135,0	warp2	A_13#A_12	1,1,un_bunker,50,134
+un_bunker,57,118,0	warp2	A_14#A_15	1,1,un_bunker,72,117
+un_bunker,69,118,0	warp2	A_15#A_14	1,1,un_bunker,53,117
+un_bunker,97,124,0	warp2	A_16#A_17	1,1,un_bunker,100,144
+un_bunker,97,141,0	warp2	A_17#A_16	1,1,un_bunker,98,121
+un_bunker,128,118,0	warp2	A_18#A_19	1,1,un_bunker,144,117
+un_bunker,140,118,0	warp2	A_19#A_18	1,1,un_bunker,125,117
+un_bunker,137,168,0	warp2	A_20#A_21	1,1,un_bunker,122,167
+un_bunker,126,168,0	warp2	A_21#A_20	1,1,un_bunker,140,167
+un_bunker,137,185,0	warp2	A_22#A_23	1,1,un_bunker,120,235
+un_bunker,124,236,0	warp2	A_23#A_22	1,1,un_bunker,140,184
+un_bunker,147,196,0	warp2	A_24#A_25	1,1,un_bunker,106,378
+un_bunker,105,375,0	warp2	A_25#A_24	1,1,un_bunker,148,193
+un_bunker,167,196,0	warp2	A_26#A_27	1,1,un_bunker,152,378
+un_bunker,151,375,0	warp2	A_27#A_26	1,1,un_bunker,168,193
+un_bunker,174,190,0	warp2	A_28#A_29	1,1,un_bunker,172,229
+un_bunker,169,230,0	warp2	A_29#A_28	1,1,un_bunker,171,189
+un_bunker,213,346,0	warp2	A_30#A_31	1,1,un_bunker,213,299
+un_bunker,216,300,0	warp2	A_31#A_30	1,1,un_bunker,216,345
+un_bunker,216,280,0	warp2	A_32#A_33	1,1,un_bunker,220,261
+un_bunker,217,262,0	warp2	A_33#A_32	1,1,un_bunker,213,279
+un_bunker,249,268,0	warp2	A_34#A_35	1,1,un_bunker,390,380
+un_bunker,389,377,0	warp2	A_35#A_34	1,1,un_bunker,250,265
+un_bunker,258,262,0	warp2	A_36#A_37	1,1,un_bunker,274,289
+un_bunker,271,290,0	warp2	A_37#A_36	1,1,un_bunker,255,261
+un_bunker,258,236,0	warp2	A_38#A_39	1,1,un_bunker,272,235
+un_bunker,269,236,0	warp2	A_39#A_38	1,1,un_bunker,255,235
+un_bunker,245,214,0	warp2	A_40#A_41	1,1,un_bunker,226,213
+un_bunker,230,214,0	warp2	A_41#A_40	1,1,un_bunker,248,213
+un_bunker,262,200,0	warp2	A_42#A_43	1,1,un_bunker,274,199
+un_bunker,271,200,0	warp2	A_43#A_42	1,1,un_bunker,258,199
+un_bunker,75,128,0	warp2	A_44#B_1	1,1,un_bunker,276,196
+un_bunker,275,191,0	warp2	B_1#A_44	1,1,un_bunker,76,121
+un_bunker,119,128,0	warp2	A_45#B_2	1,1,un_bunker,319,196
+un_bunker,320,191,0	warp2	B_2#A_45	1,1,un_bunker,120,121
+un_bunker,297,206,0	warp2	B_3#B_4	1,1,un_bunker,298,224
+un_bunker,297,221,0	warp2	B_4#B_3	1,1,un_bunker,298,203
+un_bunker,324,200,0	warp2	B_5#B_6	1,1,un_bunker,344,199
+un_bunker,339,200,0	warp2	B_6#B_5	1,1,un_bunker,321,199
+un_bunker,350,214,0	warp2	B_7#B_8	1,1,un_bunker,368,213
+un_bunker,365,214,0	warp2	B_8#B_7	1,1,un_bunker,347,213
+un_bunker,337,236,0	warp2	B_9#B_10	1,1,un_bunker,323,235
+un_bunker,326,236,0	warp2	B_10#B_9	1,1,un_bunker,340,235
+un_bunker,281,266,0	warp2	B_11#B_12	1,1,un_bunker,282,282
+un_bunker,281,279,0	warp2	B_12#B_11	1,1,un_bunker,282,263
+un_bunker,313,266,0	warp2	B_13#B_14	1,1,un_bunker,314,282
+un_bunker,313,279,0	warp2	B_14#B_13	1,1,un_bunker,314,262
+un_bunker,324,290,0	warp2	B_15#B_16	1,1,un_bunker,340,261
+un_bunker,337,262,0	warp2	B_16#B_15	1,1,un_bunker,321,289
+un_bunker,343,270,0	warp2	B_17#B_18	1,1,un_bunker,382,328
+un_bunker,381,325,0	warp2	B_18#B_17	1,1,un_bunker,344,267
+un_bunker,370,264,0	warp2	B_19#B_20	1,1,un_bunker,388,263
+un_bunker,385,264,0	warp2	B_20#B_19	1,1,un_bunker,367,263
+un_bunker,297,192,0	warp2	B_21#B_22	1,1,un_bunker,298,181
+un_bunker,297,186,0	warp2	B_22#B_21	1,1,un_bunker,298,196
+un_bunker,229,163,0	warp2	B_23#B_24	1,1,un_bunker,159,52
+un_bunker,164,51,0	warp2	B_24#B_23	1,1,un_bunker,233,164
+un_bunker,366,164,0	warp2	B_25#B_26	1,1,un_bunker,31,51
+un_bunker,27,52,0	warp2	B_26#B_25	1,1,un_bunker,361,163
+un_bunker,387,79,0	warp2	alp2#out	1,1,un_bunker,366,164
+
+// Memory bunker
+un_bk_q,69,118,0	warp2	A-0#L-1	1,1,un_bk_q,53,117
+un_bk_q,128,118,0	warp2	A-0#L-2	1,1,un_bk_q,144,117
+un_bk_q,97,124,0	warp2	A-0#Monitoring room	1,1,un_bk_q,100,144
+un_bk_q,40,135,0	warp2	B-1#L-1	1,1,un_bk_q,50,134
+un_bk_q,71,236,0	warp2	Control room#L-1	1,1,un_bk_q,57,182
+un_bk_q,124,236,0	warp2	Control room#L-2	1,1,un_bk_q,140,184
+un_bk_q,216,280,0	warp2	C-0#G-1	1,1,un_bk_q,220,261
+un_bk_q,21,375,0	warp2	D-1#L-1	1,1,un_bk_q,32,193
+un_bk_q,67,375,0	warp2	D-2#L-1	1,1,un_bk_q,52,193
+un_bk_q,105,375,0	warp2	E-1#L-2	1,1,un_bk_q,148,193
+un_bk_q,151,375,0	warp2	E-2#L-2	1,1,un_bk_q,168,193
+un_bk_q,230,214,0	warp2	F-1#G-1	1,1,un_bk_q,248,213
+un_bk_q,365,214,0	warp2	F-2#G-2	1,1,un_bk_q,347,213
+un_bk_q,258,262,0	warp2	G-1#Cafeteria	1,1,un_bk_q,274,289
+un_bk_q,217,262,0	warp2	G-1#C-0	1,1,un_bk_q,213,279
+un_bk_q,245,214,0	warp2	G-1#F-1	1,1,un_bk_q,226,213
+un_bk_q,262,200,0	warp2	G-1#H-0	1,1,un_bk_q,274,199
+un_bk_q,249,268,0	warp2	G-1#M-0	1,1,un_bk_q,390,380
+un_bk_q,350,214,0	warp2	G-2#F-2	1,1,un_bk_q,368,213
+un_bk_q,324,200,0	warp2	G-2#H-0	1,1,un_bk_q,344,199
+un_bk_q,370,264,0	warp2	G-2#I-0	1,1,un_bk_q,388,263
+un_bk_q,343,270,0	warp2	G-2#N-0	1,1,un_bk_q,382,328
+un_bk_q,337,262,0	warp2	H-0#Cafeteria	1,1,un_bk_q,321,289
+un_bk_q,271,200,0	warp2	H-0#G-1	1,1,un_bk_q,258,199
+un_bk_q,339,200,0	warp2	H-0#G-2	1,1,un_bk_q,321,199
+un_bk_q,297,192,0	warp2	H-0#Z-0	1,1,un_bk_q,298,181
+un_bk_q,385,264,0	warp2	I-0#G-2	1,1,un_bk_q,367,263
+un_bk_q,24,256,0	warp2	J-0#L-1	1,1,un_bk_q,26,190
+un_bk_q,24,276,0	warp2	J-0#Machine Warehouse	1,1,un_bk_q,45,275
+un_bk_q,169,230,0	warp2	K-0#L-2	1,1,un_bk_q,171,189
+un_bk_q,60,183,0	warp2	L-1#Control room	1,1,un_bk_q,75,235
+un_bk_q,60,169,0	warp2	L-1#Monitoring room	1,1,un_bk_q,72,168
+un_bk_q,137,168,0	warp2	L-2#Monitoring room	1,1,un_bk_q,122,167
+un_bk_q,57,118,0	warp2	L-1#A-0	1,1,un_bk_q,72,117
+un_bk_q,47,135,0	warp2	L-1#B-1	1,1,un_bk_q,37,134
+un_bk_q,31,196,0	warp2	L-1#D-1	1,1,un_bk_q,22,378
+un_bk_q,51,196,0	warp2	L-1#D-2	1,1,un_bk_q,68,378
+un_bk_q,23,190,0	warp2	L-1#J-0	1,1,un_bk_q,21,256
+un_bk_q,137,185,0	warp2	L-2#Control room	1,1,un_bk_q,120,235
+un_bk_q,140,118,0	warp2	L-2#A-0	1,1,un_bk_q,125,117
+un_bk_q,147,196,0	warp2	L-2#E-1	1,1,un_bk_q,106,378
+un_bk_q,167,196,0	warp2	L-2#E-2	1,1,un_bk_q,152,378
+un_bk_q,174,190,0	warp2	L-2#K-0	1,1,un_bk_q,172,229
+un_bk_q,389,377,0	warp2	M-0#G-1	1,1,un_bk_q,250,265
+un_bk_q,381,325,0	warp2	N-0#G-2	1,1,un_bk_q,344,267
+un_bk_q,297,186,0	warp2	Z-0#H-0	1,1,un_bk_q,298,196
+un_bk_q,164,51,0	warp2	Z-1#Z-0	1,1,un_bk_q,233,164
+un_bk_q,27,52,0	warp2	Z-2#Z-0	1,1,un_bk_q,361,163
+un_bk_q,229,163,0	warp2	Z-0#Z-1	1,1,un_bk_q,159,52
+un_bk_q,366,164,0	warp2	Z-0#Z-2	1,1,un_bk_q,31,51
+un_bk_q,75,128,0	warp2	LA-0#LH-0	1,1,un_bk_q,276,196
+un_bk_q,275,191,0	warp2	LH-0#LA-0	1,1,un_bk_q,76,121
+un_bk_q,119,128,0	warp2	RA-0#RH-0	1,1,un_bk_q,319,196
+un_bk_q,320,191,0	warp2	RH-0#RA-0	1,1,un_bk_q,120,121

+ 64 - 20
sql-files/item_db_re.sql

@@ -1424,9 +1424,9 @@ REPLACE INTO `item_db_re` VALUES (2187,'Shield_Of_Gray','Shield of Gray',4,10,NU
 REPLACE INTO `item_db_re` VALUES (2188,'Svalinn_J','Svalinn',4,10,NULL,500,NULL,80,NULL,1,0xFFFFFFFF,63,2,32,NULL,'65',1,3,'.@r = getrefine(); bonus bMaxHP,9+.@r/3; bonus2 bAddEle,Ele_Water,4+.@r/3*5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2189,'Mad_Bunny','Mad Bunny Shield',4,10,NULL,100,NULL,40,NULL,1,0xFFFFFFFF,63,2,32,NULL,'30',1,6,'bonus2 bSubEle,Ele_All,5; bonus bMdef,6; bonus bDex,1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2190,'Ancient_Shield_Of_Aeon','Ancient Shield Of Aeon',4,0,NULL,200,NULL,5,NULL,0,0x000FDF80,63,2,32,NULL,'130',1,2,'bonus2 bSubEle,Ele_Neutral,10; bonus2 bSubEle,Ele_Fire,10; bonus2 bSubEle,Ele_Water,10; bonus2 bSubEle,Ele_Wind,10; bonus2 bSubEle,Ele_Earth,10; bonus2 bSubEle,Ele_Dark,10; bonus2 bSubEle,Ele_Holy,10; bonus2 bSubEle,Ele_Ghost,10; bonus bMaxHP,500; bonus bMaxSP,50; if(getrefine()>=14) skill "MG_STONECURSE",5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2195,'Lian_Shield','Lian Shield',4,0,NULL,1300,NULL,50,NULL,1,0xFFFFFFFF,63,2,32,NULL,'65',1,NULL,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2196,'White_Gold_Shield','White Gold Shield',4,0,NULL,1800,NULL,140,NULL,1,0xFFFFFFFF,63,2,32,NULL,NULL,1,NULL,'autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2198,'Lapine_Shield','Lapine Shield',4,0,NULL,1000,NULL,25,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,NULL,'bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2195,'Lian_Shield','Lian Shield',4,0,NULL,1300,NULL,50,NULL,1,0xFFFFFFFF,63,2,32,NULL,'65',1,3,'bonus2 bSubEle,Ele_Neutral,5; bonus2 bSubRace,RC_Formless,-5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2196,'White_Gold_Shield','White Gold Shield',4,0,NULL,1800,NULL,140,NULL,1,0xFFFFFFFF,63,2,32,NULL,NULL,1,4,'autobonus2 "{ bonus bMagicDamageReturn,20; }",100,2000,BF_MAGIC; /* Confirm: Success rate? */',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2198,'Lapine_Shield','Lapine Shield',4,0,NULL,1000,NULL,25,NULL,1,0xFFFFFFFF,63,2,32,NULL,'100',1,3,'bonus bMdef,10; if (getrefine() > 7) { bonus bMatk,20; }',NULL,NULL);
 # GM Shield
 REPLACE INTO `item_db_re` VALUES (2199,'Ahura_Mazda','Ahura Mazdah',4,1,NULL,10,NULL,10000,NULL,0,0xFFFFFFFF,63,2,32,NULL,'1',1,1,'bonus bAllStats,50; bonus bMdef,99; bonus bShortWeaponDamageReturn,100; bonus2 bSubRace,RC_DemiHuman,95; bonus2 bSubRace,RC_Player,95; skill "CR_FULLPROTECTION",5; skill "WZ_ESTIMATION",1; skill "ST_FULLSTRIP",5; skill "HW_MAGICPOWER",10; skill "ECL_SNOWFLIP",1; skill "ECL_PEONYMAMY",1; skill "ECL_SADAGUI",1; skill "ECL_SEQUOIADUST",1; bonus bMaxHPrate,200; bonus bNoKnockback,0; bonus bDelayRate,-20; bonus bSpeedRate,25; bonus bIntravision,1;','sc_start4 SC_ENDURE,60000,10,0,0,1;','sc_end SC_ENDURE;');
 #===================================================================
@@ -2194,7 +2194,7 @@ REPLACE INTO `item_db_re` VALUES (2971,'Pocket_Watch','Pocket Watch',4,10,NULL,2
 REPLACE INTO `item_db_re` VALUES (2976,'Red_Lantern','Red Lantern',4,10,NULL,200,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'100',0,NULL,'bonus bMaxSP,-300; skill "MG_SIGHT",1;',NULL,'sc_end SC_SIGHT;');
 REPLACE INTO `item_db_re` VALUES (2977,'Hurt_Mind','Hurt Mind',4,10,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'110',0,NULL,'bonus bMaxSP,200; skill "DC_SCREAM",3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2978,'KindHeart','Kind Heart',4,10,NULL,100,NULL,0,NULL,1,0xFFFFFFFF,63,2,136,NULL,'110',0,NULL,'bonus bMaxHP,500; bonus2 bHPRegenRate,300,10000; skill "DC_SCREAM",3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (2979,'Strawberry_Decoration','Strawberry Decoration',4,0,NULL,500,NULL,1,NULL,1,0xFFFFFFFF,63,2,136,NULL,NULL,0,NULL,'bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,10; /* Confirm: Frost Nova cast chance */',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (2979,'Strawberry_Decoration','Strawberry Decoration',4,20,NULL,500,NULL,1,NULL,1,0xFFFFFFFE,63,2,136,NULL,'1',NULL,NULL,'bonus bAllStats,1; bonus3 bAutoSpellWhenHit,"WZ_FROSTNOVA",3,10; /* Confirm: Frost Nova cast chance */',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2980,'Evilspirit_Gloves','Evilspirit Gloves',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'110',1,NULL,'bonus bMaxHP,500; bonus bMaxSP,200; skill "PF_SPIDERWEB",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2981,'RingOfHero','Warrior\'s Ring',4,10,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'160',NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (2983,'Greed_Brooch','Greed Brooch',4,10,NULL,100,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,136,NULL,'50',1,NULL,'bonus2 bHPLossRate,10,5000;',NULL,NULL);
@@ -3984,7 +3984,7 @@ REPLACE INTO `item_db_re` VALUES (5821,'Gold_Tulip_Hairpin','Gold Tulip Hairpin'
 REPLACE INTO `item_db_re` VALUES (5822,'Love_Chick_Hat','Love Chick Hat',4,10000,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',1,500,'bonus bLuk,4; bonus bMaxHP,100; bonus bMaxSP,100; bonus2 bSubRace,RC_Brute,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5823,'Love_Arrow','Love Arrow',4,5000,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bDex,5; bonus bAgi,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5824,'Fools_Day_Hat','Fools Day Hat',4,20,NULL,300,NULL,6,NULL,0,0xFFFFFFFF,63,2,256,NULL,'30',1,265,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (5825,'Badge_Of_Order_Grace','Badge Of Order Grace',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bMdef,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (5825,'Badge_Of_Order_Grace','Badge Of Order Grace',4,0,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,136,NULL,'0',0,0,'bonus bMdef,1; bonus2 bAddClass,Class_All,10; bonus bMatkRate,10; bonus bMaxHP,1500;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5826,'Valkyrie_Helmet','Valkyrie Helmet',4,0,NULL,0,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,'0',0,225,'bonus bStr,2; bonus bInt,2; bonus bDex,2; bonus bAgi,2; bonus bMdef,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5827,'Book_File_Hat','Book File Hat',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,63,2,256,NULL,'1',1,423,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (5828,'Honor_Gold_Ring','Honor Gold Ring',4,0,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,63,2,136,NULL,'1',1,0,'bonus bAllStats,1; bonus bMdef,5;',NULL,NULL);
@@ -4636,11 +4636,12 @@ REPLACE INTO `item_db_re` VALUES (6604,'Essence_Rune_Magic','Essence Rune Magic'
 REPLACE INTO `item_db_re` VALUES (6605,'Muspellium','Muspellium',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6606,'Cute_Cart_Coupon','Cute Cart Remodel Coupon',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6607,'Temporal_Crystal','Temporal Crystal',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6608,'Coagulated_Spell','Coagulated Spell',3,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6609,'Glast_Decayed_Nail','Glast Decayed Nail',3,82,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6610,'Glast_Horrendous_Mouth','Glast Horrendous Mouth',3,390,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6612,'Gold_Coin_Basket','Gold Coin Basket',3,20,NULL,200,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (6613,'Flashy_Brooch','Flashy Brooch',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6608,'Coagulated_Spell','Coagulated Spell',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6609,'Glast_Decayed_Nail','Glast Decayed Nail',3,2800,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6610,'Glast_Horrendous_Mouth','Glast Horrendous Mouth',3,3200,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6611,'Colorful_Key','Colorful Key',3,50000,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6612,'Gold_Coin_Basket','Gold Coin Basket',3,300000,NULL,200,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6613,'Colorful_Brooch','Colorful Brooch',3,100000,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6615,'Siege_Guild_Coin','Siege Guild Coin',3,0,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6616,'Lmtd_Manny_Card','Limited Manny Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6617,'Lmtd_Sid_Card','Limited Sid Card',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4917,6 +4918,8 @@ REPLACE INTO `item_db_re` VALUES (6956,'Captured_Sheep','Captured Sheep',3,10,NU
 REPLACE INTO `item_db_re` VALUES (6957,'Lamb_Fleece','Lamb Fleece',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6958,'Lamb_Horns','Lamb Horns',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (6960,'Key_Air_Fortress','Key Air Fortress',3,10,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6961,'Huge_Metal_Scrap','Huge Metal Scrap',3,10,0,1000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (6962,'Old_Fuel','Old Fuel',3,10,0,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #
 REPLACE INTO `item_db_re` VALUES (7001,'Mould_Powder','Mould Powder',3,466,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (7002,'Ogre_Tooth','Ogre Tooth',3,658,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -6437,7 +6440,7 @@ REPLACE INTO `item_db_re` VALUES (12259,'Miracle_Medicine','Miracle Tonic',2,0,N
 REPLACE INTO `item_db_re` VALUES (12260,'Cool_Summer_Outfit','Cool Summer Outfit',2,0,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SUMMER,600000,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12261,'Secret_Medicine','Leap of Fantasy',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'getexp2(2000000,1000000);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12262,'Inspector_Certificate_','Authoritative Badge',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SPEEDUP0,540000,25;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (12263,'Comp_Battle_Manual','Field Manual',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,1800000,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (12263,'Comp_Battle_Manual','Field Manual',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,1800000,200;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12264,'Comp_Bubble_Gum','Bubble Gum',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_ITEMBOOST,1800000,200;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12265,'Comp_Insurance','Life Insurrance',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LIFEINSURANCE,1800000,0;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (12266,'Sesame_Pastry_','Sesame Pastry',2,2,NULL,70,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_HITFOOD,180000,30;',NULL,NULL);
@@ -9545,7 +9548,7 @@ REPLACE INTO `item_db_re` VALUES (18559,'Fafnir_Skin','Fafnir Skin',4,20,NULL,10
 REPLACE INTO `item_db_re` VALUES (18560,'Fafnir_Mask','Fafnir Mask',4,20,NULL,300,NULL,2,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,180,'bonus bCritical,2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18561,'B_Feather_Beret','B Feather Beret',4,20,NULL,300,NULL,5,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,731,'bonus bVit,2; bonus bMdef,3; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18562,'Bone_Hat','Bone Hat',4,20,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,63,2,256,NULL,'10',1,732,'bonus bMdef,3;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (18563,'Heart_Wing_Hairband','Heart Wing Hairband',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,733,'bonus bUseSPrate,-10; bonus bDelayrate,-5; .@r = getrefine()/3; if(.@r>0){ bonus bUseSPrate,.@r*3; bonus bDelayrate,.@r*3; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18563,'Heart_Wing_Hairband','Heart Wing Hairband',4,20,NULL,300,NULL,0,NULL,1,0xFFFFFFFF,63,2,256,NULL,'50',1,733,'.@r = getrefine()/3; bonus bUseSPrate,-(10+.@r*3); bonus bDelayrate,-(5+.@r*3);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18564,'Love_Piece','Love Piece',4,20,NULL,200,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'50',0,734,'bonus bNoCastCancel,1; bonus bUseSPrate,15;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18565,'Leprechaun_Hat','St Patrick\'s Hat',4,20,NULL,300,NULL,8,NULL,1,0xFFFFFFFF,63,2,256,NULL,'40',1,735,'bonus bStr,1; bonus bInt,1; bonus bMdef,4; if(getrefine()>7){ bonus2 bAddMonsterDropItem,12135,50; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18566,'Nut_Donut_In_Mouth','Nut Donut In Mouth',4,20,NULL,0,NULL,1,NULL,0,0xFFFFFFFF,63,2,1,NULL,'0',0,736,'bonus bBaseAtk,5; bonus bMatk,5;',NULL,NULL);
@@ -9868,7 +9871,7 @@ REPLACE INTO `item_db_re` VALUES (18983,'Old_Protect_Of_Crown','Old Protect Of C
 REPLACE INTO `item_db_re` VALUES (18984,'Old_Camo_RabbitHood','Old Camouflage Rabbit Hood',4,10,NULL,100,NULL,10,NULL,1,0x0000800,56,2,256,NULL,'170',1,1142,'bonus bAllStats,1; .@r = getrefine(); bonus bMaxHPrate,.@r/2; bonus bMaxSPrate,.@r/2; bonus bLongAtkRate,.@r; bonus bFlee2,.@r/3; bonus2 bSkillAtk,"RA_CLUSTERBOMB",15*.@r/2; bonus2 bSkillAtk,"RA_WUGSTRIKE",10*.@r/2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18985,'Falconer_Flute','Falconer Flute',4,0,NULL,100,NULL,NULL,NULL,0,0x0000800,63,2,1,NULL,'75',0,1143,'set .@bblvl,max(getskilllv("HT_BLITZBEAT"),1); set .@luk,min(readparam(bLuk),120); bonus3 bAutoSpell,"HT_BLITZBEAT",.@i,((.@bblvl / 3) * 10) + (.@luk * 10) + (((.@bblvl / 5) * .@bblvl) * 2);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (18987,'RWC13_Jormungandr_Hat','RWC13 Jormungandr Hat',4,20,NULL,2500,NULL,7,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',0,1149,'bonus bAllStats,2; bonus bVariableCastrate,-5; bonus bDelayrate,-5; bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; .@r = getrefine(); if(.@r>6){ bonus2 bAddItemHealRate,11596,20; bonus bAspd,1; } if(.@r>9){ bonus bVariableCastrate,-5; bonus bDelayrate,-5; } bonus2 bAddItemHealRate,11596,150;','sc_end SC_SpeedUp0;',NULL);
-REPLACE INTO `item_db_re` VALUES (18997,'Riot_Chip','Reckless Chip',4,10,NULL,300,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1201,'bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (18997,'Riot_Chip','Runaway Chip',4,10,NULL,300,NULL,NULL,NULL,1,0xFFFFFFFF,63,2,256,NULL,'100',1,1201,'bonus bHit,50; bonus bFlee,50; bonus bMaxSPrate,-50;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19019,'Elemental_Crown','Elemental Crown',4,0,NULL,500,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,NULL,1,1219,'.@r = getrefine(); bonus bDex,(3 + (.@r/2)+ (readparam(bDex) > 130 ? .@r : 0)); bonus bLongAtkRate,4;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19020,'Survive_Circlet','Survive Circlet',4,0,NULL,500,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,NULL,1,1220,'.@r = getrefine(); bonus bInt,(3 + (.@r/2)+ (BaseLevel > 130 ? .@r : 0)); bonus bMatkRate,4;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19021,'Gigant_Helm','Gigant Helm',4,0,NULL,500,NULL,10,NULL,0,0xFFFFFFFF,63,2,256,NULL,NULL,1,1221,'bonus bStr,3+((BaseLevel > 130) ? getrefine() : 0); bonus2 bAddClass,Class_All,4;',NULL,NULL);
@@ -9930,6 +9933,7 @@ REPLACE INTO `item_db_re` VALUES (19152,'Angelring_Balloon','Angelring Balloon',
 REPLACE INTO `item_db_re` VALUES (19153,'Ghostring_Balloon','Ghostring Balloon',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,1436,'bonus3 bAutoSpell,"MG_SOULSTRIKE",5,10; bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19154,'Arch_Angelring_Balloon','Arch Angelring Balloon',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,1,NULL,'1',0,1437,'skill "ALL_RESURRECTION",1; bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19155,'Demons_Eyes','Demon\'s Eyes',4,20,NULL,10,NULL,0,NULL,0,0xFFFFFFFF,63,2,512,NULL,'60',0,1490,'bonus2 bSubRace,RC_Player,3; bonus bFlee2,2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (19156,'Lunar_Rainbow','Lunar Rainbow',4,20,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,63,2,256,NULL,'80',1,704,'bonus bAgi,3; bonus bMdef,10; bonus bMatk,(10*getrefine());',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19157,'Drooping_Rebellion_','Drooping Rebellion',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,63,2,256,NULL,'1',1,1444,'bonus bAllStats,1; bonus bUseSPrate,-10; .@r = getrefine(); if (.@r >= 9) { bonus bAspd,1; } if (.@r >= 12) { bonus bSpeedRate,25; } bonus2 bExpAddRace,RC_All,5; bonus2 bDropAddRace,RC_All,5;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19158,'C_GeminiS58_Eyes_Blue','Costume GeminiS58 Eyes Blue',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,63,2,2048,NULL,'0',0,1456,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (19159,'Barrel_Helm','Barrel Helm',4,20,NULL,420,NULL,59,NULL,1,0xFFFFFFFF,63,2,769,NULL,'60',1,1498,'bonus bVit,5; bonus bHPrecovRate,-10; .@r = getrefine(); if (.@r >= 7) { bonus bDef,100; skill "CR_AUTOGUARD",1; } if (.@r >= 8) { bonus2 bSubRace,RC_DemiHuman,10; bonus2 bSubRace,RC_Player,10; if(BaseJob==Job_SuperNovice) { skill "CR_AUTOGUARD",5; } }',NULL,NULL);
@@ -10910,6 +10914,18 @@ REPLACE INTO `item_db_re` VALUES (22089,'Crimson_Gaiter_','Crimson Gaiter',4,0,N
 REPLACE INTO `item_db_re` VALUES (22101,'Angel_Poring_Boots','Angel Poring Boots',4,10,NULL,300,NULL,15,NULL,1,0xFFFFFFFF,63,2,64,NULL,'1',1,NULL,'bonus bAllStats,1; skill "AL_HEAL",1;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22103,'Excelion_Leg','Excelion Leg',4,0,NULL,500,NULL,13,NULL,0,0xFFFFFFFF,63,2,64,NULL,'100',1,NULL,'.@r = getrefine(); bonus bMaxHP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; bonus bMaxSP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22106,'Giant_Boots','Giant Boots',4,0,NULL,500,NULL,13,NULL,1,0xFFFFFFFF,63,2,64,NULL,'1',1,NULL,'bonus2 bSubRace,RC_All,1; bonus bMaxHPrate,2; bonus bMaxSPrate,2; .@r = getrefine(); if (.@r > 4) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } if (.@r > 6) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22107,'Modified_Str_Boots','Modified Str Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22108,'Modified_Int_Boots','Modified Int Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22109,'Modified_Agi_Boots','Modified Agi Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22110,'Modified_Vit_Boots','Modified Vit Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22111,'Modified_Dex_Boots','Modified Dex Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22112,'Modified_Luk_Boots','Modified Luk Boots',4,20,NULL,600,NULL,25,NULL,0,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22113,'Modified_Str_Boots_','Modified Str Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22114,'Modified_Int_Boots_','Modified Int Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22115,'Modified_Agi_Boots_','Modified Agi Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22116,'Modified_Vit_Boots_','Modified Vit Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22117,'Modified_Dex_Boots_','Modified Dex Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22118,'Modified_Luk_Boots_','Modified Luk Boots',4,20,NULL,600,NULL,25,NULL,1,0x60000000,63,2,64,NULL,'99',1,NULL,'.@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22122,'Para_Team_Boots100','Awakened Eden Group Boots I',4,0,NULL,0,NULL,22,NULL,0,0xFFFFFFFF,63,2,64,NULL,'100',1,NULL,'bonus bAllStats,1; bonus bHPrecovRate,30; bonus bSPrecovRate,14;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22123,'Para_Team_Boots115','Awakened Eden Group Boots II',4,0,NULL,0,NULL,25,NULL,0,0xFFFFFFFF,63,2,64,NULL,'115',1,NULL,'bonus bAllStats,1; bonus bHPrecovRate,36; bonus bSPrecovRate,18;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22124,'Para_Team_Boots130','Awakened Eden Group Boots III',4,0,NULL,0,NULL,27,NULL,0,0xFFFFFFFF,63,2,64,NULL,'130',1,NULL,'bonus bAllStats,2; bonus bHPrecovRate,36; bonus bSPrecovRate,18;',NULL,NULL);
@@ -11023,12 +11039,12 @@ REPLACE INTO `item_db_re` VALUES (22675,'Mysterious_Scroll','Mysterious Scroll',
 REPLACE INTO `item_db_re` VALUES (22679,'Chest_Of_Death','Death Bin',18,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,'170',NULL,NULL,'/*TODO*/',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22685,'Solo_Christmas_Gift','Single Union Christmas Gift',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'getgroupitem(IG_Solo_Christmas_Gift);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22686,'Solo_Cookie','Single Cookie',0,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,'0',NULL,NULL,'percentheal 5,5;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22687,'Pieces_Of_Sentiment','Fragments Vicious Mind',3,10,NULL,1,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*TODO*/',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22691,'Piece_Of_Record1','Record Fragment',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22692,'Piece_Of_Record2','Record Fragment',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22693,'Piece_Of_Record3','Record Fragment',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22694,'Piece_Of_Record4','Record Fragment',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (22695,'Piece_Of_Record5','Record Fragment',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22687,'Fragments_Vicious_Mind','Fragments Vicious Mind',3,10,NULL,1,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*TODO*/',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22691,'Record_Fragment1','Record Fragment',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "un_bk_q",98,143; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 1; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22692,'Record_Fragment2','Record Fragment',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "un_bk_q",45,276; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 2; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22693,'Record_Fragment3','Record Fragment',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "un_bk_q",217,346; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 3; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22694,'Record_Fragment4','Record Fragment',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "un_bk_q",273,235; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 4; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (22695,'Record_Fragment5','Record Fragment',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'warp "un_bk_q",275,290; if (callfunc("F_time_limit_recorder") == 1) { recorder_quest_type = 5; }',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22699,'Test_Reagent','Test Reagent',3,10,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22700,'Jumping_Support_Box','Jumping Support Box',18,10,NULL,0,NULL,NULL,NULL,0,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'/*TODO: getitem 12529,1; getitem 12323,200; getitem 12324,50; and 5 boxes that containing quivers + oridecons*/',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (22702,'STR_Soul_Potion','STR Reduction Potion',11,10,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'callfunc "F_CashReduceStat",bStr,-1,22702;',NULL,NULL);
@@ -11468,6 +11484,34 @@ REPLACE INTO `item_db_re` VALUES (27159,'Uzhas_Card','Uzhas Card',6,20,NULL,10,N
 REPLACE INTO `item_db_re` VALUES (27160,'Vavayaga_Card','Vavayaga Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bFlee,getrefine()*2;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (27161,'Mavka_Card','Mavka Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bMagicAtkEle,Ele_Fire,20; bonus2 bMagicAtkEle,Ele_Earth,20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (27162,'Gopinich_Card','Gopinich Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bSPDrainValue,5; bonus bUseSPrate,50;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27163,'Faceworm_Card','Faceworm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bAgi,-1; bonus bDex,-1; bonus bAspdRate,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27164,'Faceworm_Queen_Card','Faceworm Queen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMaxHPrate,-10; .@r = getrefine(); bonus bCritical,15 + .@r; bonus bCritAtkRate,.@r;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27165,'Dark_Faceworm_Card','Dark Faceworm Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus bVit,-1; bonus bInt,-1; bonus bDelayrate,-3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27166,'Faceworm_Egg_Card','Faceworm Egg Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'.@r = getrefine(); .@sub = 2+(.@r >= 9 ? 3 : .@r >= 7 ? 1 : 0); bonus bNearAtkDef,.@sub; bonus bMagicAtkDef,.@sub;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27167,'Faceworm_Larva_Card','Faceworm Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Neutral,15; bonus2 bMagicAddSize,Size_All,getrefine()*3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27168,'Irene_High_Elder_Card','Irene High Elder Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bHit,10 + 5 * (getrefine()/3);',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27169,'Payon_Soldier_Card','Payon Soldier Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@atk = 5; .@r = getrefine(); if(getiteminfo(getequipid(EQI_HAND_R),11) == W_SPEAR && .@r >= 10){ .@atk += 20; if(.@r >= 14){ .@atk += 20; } } } bonus bAtk,.@atk; bonus bMatk,.@atk;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27181,'Airship_Raid_Card','Airship Raid Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@r = getrefine(); bonus bLongAtkRate,1 + .@r/2; bonus bCritical,.@r/2;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27182,'Captain_Felock_Card','Captain Felock Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAtk,30; .@r = getrefine(); bonus2 bSkillAtk,"RL_AM_BLAST",.@r >= 10 ? 60 : 30; bonus2 bSkillAtk,"RL_HAMMER_OF_GOD",.@r >= 10 ? 60 : 30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27183,'Gigantes_Card','Gigantes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,128,NULL,NULL,NULL,NULL,'bonus bAtk,20; if(readparam(bStr) >= 120) { bonus bAtk,20; bonus bAspdRate,-3; }',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27184,'Knight_Sakray_Card','Knight Sakray Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bAtk,20; bonus2 bAddRace,RC_Demon,30; bonus2 bAddRace,RC_Undead,30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27249,'Arhi_Card','Arhi Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAtk,15; bonus bMatk,15; bonus bMaxHP,500; bonus bHit,15; bonus bFlee,15;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27250,'Dio_Anemos_Card','Dio Anemos Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Neutral,5; bonus2 bMagicAtkEle,Ele_Earth,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27251,'Geffen_Gang_Member_Card','Geffen Gang Member Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,3; bonus bAspdRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27252,'Geffen_Bully_Card','Geffen Bully Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bCritAtkRate,5; bonus bAspdRate,3;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27253,'Geffen_Shoplifter_Card','Geffen Shoplifter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Fire,5; bonus2 bMagicAtkEle,Ele_Holy,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27254,'Faymont_Card','Faymont Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bSPrecovRate,10; bonus3 bAutoSpellWhenHit,"CH_SOULCOLLECT",1,10;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27255,'Ordre_Card','Ordre Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Wind,5; bonus2 bMagicAtkEle,Ele_Water,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27256,'Blut_Hase_Card','Blut Hase Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAtkRate,3; bonus bLongAtkRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27257,'Kuro_Akuma_Card','Kuro Akuma Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bCastrate,3; bonus bLongAtkRate,5; bonus2 bSkillAtk,"NJ_HUUJIN",5; bonus2 bSkillAtk,"NJ_HYOUSENSOU",5; bonus2 bSkillAtk,"NJ_KOUENKA",5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27258,'Ifodes_Card','Ifodes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAtkRate,3; bonus bAspdRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27259,'Licheniyes_Card','Licheniyes Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bMatkRate,3; bonus2 bMagicAtkEle,Ele_Holy,5; bonus bHealPower,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27260,'Odoric_Card','Odoric Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'bonus bAspdRate,3; bonus bLongAtkRate,5;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27261,'Ju_Card','Ju Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'.@rate = 10 + (getiteminfo(getequipid(EQI_HAND_R),11) == W_BOOK ? 20 : 0) + (getrefine() >= 14 ? 20 : 0); bonus2 bSkillAtk,"MG_FIREBOLT",.@rate; bonus2 bSkillAtk,"MG_COLDBOLT",.@rate; bonus2 bSkillAtk,"MG_LIGHTNINGBOLT",.@rate;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27262,'Dwigh_Card','Dwigh Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus2 bMagicAtkEle,Ele_Dark,20; bonus2 bMagicAtkEle,Ele_Neutral,20;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27263,'Fay_Kanavian_Card','Fay Kanavian Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,64,NULL,NULL,NULL,NULL,'autobonus "{ bonus bDef,300; }",100,10000,BF_WEAPON|BF_SHORT,"{ active_transform 1040,10000; }";',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27264,'Evil_Shadow_Card','Evil Shadow Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,30; bonus2 bSubEle,Ele_Undead,30; bonus2 bSubEle,Ele_Holy,-30; bonus2 bSubEle,Ele_Fire,-30;',NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (27265,'Evil_Fanatics_Card','Evil Fanatics Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus2 bAddEle,Ele_Dark,30; bonus2 bAddEle,Ele_Undead,30; bonus2 bMagicAddEle,Ele_Dark,30; bonus2 bMagicAddEle,Ele_Undead,30; bonus2 bAddEle,Ele_Holy,-30; bonus2 bAddEle,Ele_Fire,-30; bonus2 bMagicAddEle,Ele_Holy,-30; bonus2 bMagicAddEle,Ele_Fire,-30;',NULL,NULL);
 #===================================================================
 # New Katars
 #===================================================================
@@ -11595,7 +11639,7 @@ REPLACE INTO `item_db_re` VALUES (28606,'Unity_Bible','Unity Bible',5,20,NULL,22
 REPLACE INTO `item_db_re` VALUES (28700,'Ru_Gold_Dagger','Ru Gold Dagger',5,0,NULL,1000,'160',NULL,1,2,0x00020000,56,2,2,3,'120',1,1,'bonus bStr,8; bonus bInt,8;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28701,'Ru_Gold_Knife','Ru Gold Knife',5,0,NULL,500,'160',NULL,1,2,0x00010000,56,2,2,3,'120',1,1,'bonus bVit,8; bonus bInt,8;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28702,'Ru_Gold_Ashura','Ru Gold Ashura',5,0,NULL,1000,'150:150',NULL,1,2,0x2000000,63,2,2,3,'120',1,1,NULL,NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (28703,'Infinity_Dagger','Infinity Dagger',5,10,NULL,500,'125',NULL,1,1,0x028F5EEF,56,2,2,4,'100',1,1,NULL,NULL,NULL);
+REPLACE INTO `item_db_re` VALUES (28703,'Infinity_Dagger','Infinity Dagger',5,10,NULL,500,'125:100',NULL,1,1,0x028F5EEF,56,2,2,4,'100',1,1,NULL,NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28705,'Crimson_Dagger','Crimson Dagger',5,20,NULL,550,'55',NULL,1,2,0x028F5EEF,63,2,2,3,'70',1,1,'.@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); bonus bMatk,(.@r<=15?(pow(.@r,2)/2):225);',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (28706,'Dagger_of_Vicious_Mind','Dagger of Vicious Mind',5,20,NULL,1050,'105:50',NULL,1,1,0x028F5EEF,63,2,2,4,'160',1,1,'bonus bAtk,pow(min(getrefine(),15),2); bonus bMatk,pow(min(getrefine(),15),2)/2;',NULL,NULL);
 #===================================================================

+ 69 - 55
sql-files/mob_db_re.sql

@@ -594,7 +594,7 @@ REPLACE INTO `mob_db_re` VALUES (1500,'PARASITE','Parasite','Parasite',76,3222,1
 # Event MVP
 REPLACE INTO `mob_db_re` VALUES (1502,'PORING_V','Pori Pori','Bring it on!',99,95000000,1,78525,25106,1,5000,10000,0,10,100,100,65,100,255,255,10,12,1,3,25,0x6283885,160,1672,672,480,43625,10020,1000,4005,100,2286,200,5035,10000,2344,2500,2346,2500,2350,2500,2348,2500,2655,500,7126,10000,0,0,0,0,2110,4500);
 
-# Nifflheim (7.0)
+# Niflheim (7.0)
 REPLACE INTO `mob_db_re` VALUES (1503,'GIBBET','Gibbet','Gibbet',105,12999,1,1944,1458,1,536,621,116,45,103,56,62,55,61,37,10,12,2,6,27,0x2003885,180,917,1584,576,0,0,0,0,0,0,0,7212,1800,7218,5335,7222,4074,724,300,716,100,604,10,7939,100,0,0,0,0,4278,1);
 REPLACE INTO `mob_db_re` VALUES (1504,'DULLAHAN','Dullahan','Dullahan',108,18546,1,2509,1977,2,666,741,111,38,121,29,51,43,87,3,10,12,1,1,49,0x3885,155,847,1152,480,0,0,0,0,0,0,0,7209,3200,7210,4850,2614,1,2505,13,2506,1,15039,10,0,0,0,0,0,0,4176,1);
 REPLACE INTO `mob_db_re` VALUES (1505,'LOLI_RURI','Loli Ruri','Loli Ruri',109,15280,1,2790,2093,2,787,1017,53,44,111,50,47,79,79,79,10,12,2,6,87,0x2003885,125,747,1632,576,0,0,0,0,0,0,0,7206,800,7219,3000,7214,5044,985,100,7019,1,2718,5,6246,300,15038,10,0,0,4191,1);
@@ -1682,20 +1682,20 @@ REPLACE INTO `mob_db_re` VALUES (2461,'TREASURE_BOX_TE_9','Treasure Chest','Trea
 REPLACE INTO `mob_db_re` VALUES (2462,'TREASURE_BOX_TE_10','Treasure Chest','Treasure Chest',99,0,1,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,0,0,0,20,0x1000000,0,0,0,0,0,0,0,0,0,0,0,6600,40,658,500,7444,10000,7444,10000,12399,5000,0,0,616,400,12399,500,0,0,0,0);
 #2463,E_BOMBPORING
 
-# Old Glast Heim (currently placeholders)
-REPLACE INTO `mob_db_re` VALUES (2464,'MG_ZOMBIE','Zombie','Zombie',17,9340,1,117,87,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2465,'MG_WRAITH','Wraith','Wraith',77,23168,1,1190,1191,1,335,396,80,40,62,26,30,55,76,5,10,12,2,1,89,0x3695,300,1816,576,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2466,'MG_GHOUL','Ghoul','Ghoul',61,12614,1,583,656,1,216,245,78,5,56,12,19,11,27,10,10,12,1,1,49,0x3885,250,2456,912,504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2467,'MG_ARCLOUSE','Arclouse','Arclouze',107,14020,1,1844,2607,1,269,309,101,36,60,73,45,35,140,15,10,12,1,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2468,'MG_RAYDRIC','Raydric','Raydric',115,25408,1,20770,2076,1,572,668,89,15,129,87,55,32,76,27,10,12,2,7,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2469,'MG_RAYDRIC_ARCHER','Raydric Archer','Raydric Archer',82,30370,1,1049,1332,9,377,395,63,40,53,24,40,15,112,30,10,12,1,6,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2470,'MG_KNIGHT_OF_ABYSS','Knight of Abyss','Abysmal Knight',122,332970,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2471,'MG_KHALITZBURG','Khalitzburg','Khalitzburg',118,109860,1,2862,2147,1,737,833,125,10,121,48,40,31,89,32,10,12,2,1,29,0x3695,350,528,1000,396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2472,'MG_BLOODY_KNIGHT','Bloody Knight','Bloody Knight',116,285000,1,7348,6511,3,942,1065,122,50,132,59,70,57,98,45,10,12,2,0,87,0x3695,250,828,528,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2473,'MG_M_UNDEAD_KNIGHT','Undead Knight','Undead Knight',133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2474,'MG_F_UNDEAD_KNIGHT','Undead Knight','Undead Knight',133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2475,'MG_CORRUPTION_ROOT','Root of Corruption','Root of Corruption',136,3190000,1,240120,187920,3,710,1762,213,123,86,89,120,131,101,92,14,12,2,7,62,0x6280084,170,854,2016,480,120060,607,5500,608,3500,732,5500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4603,1);
-REPLACE INTO `mob_db_re` VALUES (2476,'MG_AMDARAIS','Amdarias','Amdarias',143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x6283695,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4601,1);
+# Old Glast Heim
+REPLACE INTO `mob_db_re` VALUES (2464,'MG_ZOMBIE','Corrupted Steward','Corrupted Steward',130,135600,1,13332,15998,1,2364,2808,15,15,44,22,77,25,88,22,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,938,1000,727,500,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2465,'MG_WRAITH','Corrupted Monk','Corrupted Monk',133,100168,1,13998,16796,1,999,3786,80,200,16,26,30,115,79,5,10,12,2,1,89,0x3695,350,1816,576,240,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,2206,100,731,100,747,500,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2466,'MG_GHOUL','Grand Chamberlain in pain','Grand Chamberlain in pain',132,208100,1,14222,17066,1,2965,3631,30,30,88,44,88,21,95,44,10,12,1,1,49,0x3885,300,2456,912,504,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,756,100,2609,100,7751,1000,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2467,'MG_ARCLOUSE','Maggot','Maggot',133,80811,1,22,26,1,1246,2503,121,36,60,103,45,35,172,15,10,12,0,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,1096,3000,997,100,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2468,'MG_RAYDRIC','Corrupted Palace Guard','Corrupted Palace Guard',135,184080,1,16306,6944,2,3167,3305,89,15,159,87,66,33,106,27,10,12,1,1,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2316,200,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2469,'MG_RAYDRIC_ARCHER','Wandering Archer','Wandering Archer',136,144370,1,14248,9378,14,3891,4058,63,40,53,24,40,15,156,30,10,12,1,1,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2330,200,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2470,'MG_KNIGHT_OF_ABYSS','Corrupted Knight of Abyss','Corrupted Abysmal Knight',142,225789,1,18584,16576,2,3200,3322,102,50,121,55,99,70,126,37,10,12,2,1,87,0x6203695,300,1000,500,1000,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,1064,5000,1004,10,2341,200,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2471,'MG_KHALITZBURG','Suffering Khalitzburg','Suffering Khalitzburg',143,236851,1,17542,14662,2,2800,2900,125,10,121,142,55,81,105,32,10,12,2,1,29,0x6203695,350,0,1000,396,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,985,50,1004,10,1110,300,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2472,'MG_BLOODY_KNIGHT','Bloody Knight','Bloody Knight',143,246751,1,20448,21882,2,1881,5081,122,300,132,55,89,151,137,45,10,12,2,1,87,0x6203695,250,828,528,192,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,7054,5000,1160,100,1157,100,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2473,'MG_M_UNDEAD_KNIGHT','1st Commander of Destruction','1st Commander of Destruction',145,950033,1,160018,135184,2,3321,4330,80,150,165,82,110,122,154,52,10,12,1,1,49,0x6203695,130,350,864,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1191,10,1163,100,1463,200,0,0,0,0,0,0,4605,1);
+REPLACE INTO `mob_db_re` VALUES (2474,'MG_F_UNDEAD_KNIGHT','2nd Commander of Destruction','2nd Commander of Destruction',145,848011,1,159672,120398,2,3090,4578,80,180,155,88,110,135,154,59,10,12,1,1,49,0x6203695,120,350,768,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1163,100,1145,50,0,0,0,0,0,0,0,0,4606,1);
+REPLACE INTO `mob_db_re` VALUES (2475,'MG_CORRUPTION_ROOT','Corrupted Soul','Corrupted Soul',150,1820000,1,2199906,2008478,3,3887,7774,333,333,201,20,90,201,201,20,10,12,2,6,62,0x6280084,2000,576,672,480,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,2854,1000,7566,10000,0,0,0,0,0,0,4603,1);
+REPLACE INTO `mob_db_re` VALUES (2476,'MG_AMDARAIS','Amdarias','Amdarias',150,4290000,1,2291324,2197024,3,5290,9190,30,40,255,39,90,169,166,20,10,12,2,1,89,0x6283695,120,312,1200,432,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,1186,1000,1004,10000,0,0,0,0,0,0,4601,1);
 
 REPLACE INTO `mob_db_re` VALUES (2477,'NG_WANDER_MAN','Nightmare Wander Man','Nightmare Wander Man',151,130682,1,19814,17228,2,2827,3045,129,16,208,151,76,39,231,50,12,12,1,6,24,0x2003695,100,672,500,192,0,0,0,0,0,0,0,7005,4850,616,2,13015,5,2270,5,21003,1,984,110,1164,10,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2478,'NG_RIDEWORD','Nightmare Rideword','Nightmare Rideword',146,103220,1,10500,15840,1,2320,2486,140,59,131,195,58,66,263,5,12,12,0,0,60,0x3695,150,864,500,192,0,0,0,0,0,0,0,1097,4850,1568,5,1569,5,1570,5,1571,5,7015,150,18752,1,0,0,0,0,0,0);
@@ -1748,9 +1748,9 @@ REPLACE INTO `mob_db_re` VALUES (2485,'NG_CHIMERA','Nightmare Chimera','Nightmar
 #2525,WATERMELON_16
 #2526,E_BANDIT
 #2527,ME_ANOPHELES
-REPLACE INTO `mob_db_re` VALUES (2528,'FACEWORM','Faceworm','Faceworm',140,482427,1,38800,3960,2,1818,727,50,30,100,50,100,100,100,50,10,12,2,4,25,0x2000085,200,384,720,480,0,0,0,0,0,0,0,971,100,22507,100,0,0,0,0,0,0,0,0,13089,10,7326,1000,972,100,0,0);
-REPLACE INTO `mob_db_re` VALUES (2529,'FACEWORM_QUEEN','Faceworm Queen','Faceworm Queen',155,50000000,1,200000,200000,2,4024,1609,100,60,200,100,200,200,200,100,10,12,2,4,85,0x6283695,200,768,540,480,90909,0,0,617,2500,12246,2500,607,1000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2530,'FACEWORM_DARK','Faceworm Dark','Dark Faceworm',144,5000000,1,100000,80000,2,2012,805,100,30,150,100,150,150,150,100,10,12,2,4,45,0x6283695,180,576,480,480,0,0,0,0,0,0,0,13089,10,22507,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2528,'FACEWORM','Faceworm','Faceworm',140,482427,1,38800,3960,2,1818,727,50,30,100,50,100,100,100,50,10,12,2,4,25,0x2000085,200,384,720,480,0,0,0,0,0,0,0,971,100,22507,100,0,0,0,0,0,0,0,0,13089,10,7326,1000,972,100,27163,1);
+REPLACE INTO `mob_db_re` VALUES (2529,'FACEWORM_QUEEN','Faceworm Queen','Faceworm Queen',155,50000000,1,200000,200000,2,4024,1609,100,60,200,100,200,200,200,100,10,12,2,4,85,0x6283695,200,768,540,480,90909,0,0,617,2500,12246,2500,607,1000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,27164,1);
+REPLACE INTO `mob_db_re` VALUES (2530,'FACEWORM_DARK','Faceworm Dark','Dark Faceworm',144,5000000,1,100000,80000,2,2012,805,100,30,150,100,150,150,150,100,10,12,2,4,45,0x6283695,180,576,480,480,0,0,0,0,0,0,0,13089,10,22507,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27165,1);
 REPLACE INTO `mob_db_re` VALUES (2531,'VENOM_BUG','Venom Bug','Venom Bug',140,10000,1,0,0,1,340,0,200,100,200,200,200,200,200,200,12,12,0,4,25,0x2200084,2000,384,0,480,0,0,0,0,0,0,0,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7326,1000,0,0);
 REPLACE INTO `mob_db_re` VALUES (2532,'FACEWORM_QUEEN_R','Faceworm Queen (Red)','Red Faceworm Queen',155,50000000,1,200000,200000,2,12000,4800,400,400,500,100,200,200,200,100,10,12,2,4,23,0x6283695,200,768,540,480,90909,12246,2500,617,2500,0,0,994,5000,0,0,0,0,0,0,0,0,13090,100,0,0,6649,5000,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2533,'FACEWORM_QUEEN_G','Faceworm Queen (Green)','Green Faceworm Queen',155,50000000,1,200000,200000,2,5000,2000,500,60,200,100,400,200,200,100,10,12,2,4,22,0x6283695,200,768,540,480,90909,617,2500,12246,2500,0,0,6649,5000,13090,100,997,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@@ -1760,30 +1760,30 @@ REPLACE INTO `mob_db_re` VALUES (2536,'HIDDEN_MOB3','Hidden Mob 3','Monster 3',1
 REPLACE INTO `mob_db_re` VALUES (2537,'HIDDEN_MOB4','Hidden Mob 4','Monster 4',151,10000,200,0,0,1,2000,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x0370084,2000,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 #2538,E_KING_PORING
 REPLACE INTO `mob_db_re` VALUES (2539,'HIDDEN_MOB5','Hidden Mob 5','Monster 5',151,10000,200,0,0,9,500,0,200,100,100,100,100,100,100,100,12,12,0,0,88,0x2370084,2000,0,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2540,'FACEWORM_EGG','Faceworm Egg','Faceworm Egg',140,10,1,10,12,1,150,150,10,10,10,10,10,10,10,10,10,12,1,4,25,0x2370000,150,24,0,0,0,0,0,0,0,0,0,7032,5000,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2541,'FACEWORM_LARVA','Faceworm Larva','Faceworm Larva',145,260380,1,10,12,1,1286,1851,10,10,10,50,50,50,180,50,10,12,1,4,45,0x2000085,150,1000,792,336,0,0,0,0,0,0,0,912,225,0,0,0,0,0,0,0,0,0,0,1096,1750,943,400,938,1500,0,0);
-REPLACE INTO `mob_db_re` VALUES (2542,'IRENE_ELDER','Irene Elder','Doyen Irene',101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2543,'PAYONSOLDIER','1st Payon Soldier','1st Payon Soldier',101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2544,'PAYONSOLDIER2','2nd Payon Soldier','2nd Payon Soldier',101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2540,'FACEWORM_EGG','Faceworm Egg','Faceworm Egg',140,10,1,10,12,1,150,150,10,10,10,10,10,10,10,10,10,12,1,4,25,0x2370000,150,24,0,0,0,0,0,0,0,0,0,7032,5000,938,5000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27166,1);
+REPLACE INTO `mob_db_re` VALUES (2541,'FACEWORM_LARVA','Faceworm Larva','Faceworm Larva',145,260380,1,10,12,1,1286,1851,10,10,10,50,50,50,180,50,10,12,1,4,45,0x2000085,150,1000,792,336,0,0,0,0,0,0,0,912,225,0,0,0,0,0,0,0,0,0,0,1096,1750,943,400,938,1500,27167,1);
+REPLACE INTO `mob_db_re` VALUES (2542,'IRENE_ELDER','Irene Elder','Doyen Irene',101,433110,1,11360,27032,1,1749,2281,145,73,82,36,55,100,182,88,10,12,1,7,20,102774421,170,73,384,288,0,0,0,0,0,0,0,12072,100,12082,100,12087,100,12077,100,12092,100,12097,100,7481,1,12129,1,0,0,27168,1);
+REPLACE INTO `mob_db_re` VALUES (2543,'PAYONSOLDIER','1st Payon Soldier','1st Payon Soldier',101,20099,1,1083,2688,1,545,596,66,36,20,46,35,35,64,30,10,12,1,7,20,0x3095,225,73,348,288,0,0,0,0,0,0,0,12054,533,12044,533,12059,533,12069,533,12049,533,12127,266,12064,533,7479,1,0,0,27169,1);
+REPLACE INTO `mob_db_re` VALUES (2544,'PAYONSOLDIER2','2nd Payon Soldier','2nd Payon Soldier',101,21099,1,1136,2703,1,697,748,66,36,20,46,25,35,64,30,10,12,1,7,20,0x3095,200,73,348,288,0,0,0,0,0,0,0,12071,400,12076,400,12091,400,12081,400,12096,400,12086,400,12128,133,7480,1,0,0,27169,1);
 REPLACE INTO `mob_db_re` VALUES (2545,'GUARDDOG','1st Guard Dog','1st Guard Dog',101,20099,1,944,2658,1,546,598,66,36,20,46,25,35,64,30,10,12,1,2,22,0x3091,150,73,348,288,0,0,0,0,0,0,0,12043,600,12068,600,7477,1,12048,600,12053,600,12058,600,12063,600,12125,333,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2546,'GUARDDOG2','2nd Guard Dog','2nd Guard Dog',101,21099,1,1014,2673,1,573,229,66,36,20,46,25,35,64,30,10,12,1,2,23,0x3095,120,73,348,288,0,0,0,0,0,0,0,12045,466,7478,1,12050,466,12055,466,12060,466,12065,466,12070,466,12126,200,0,0,0,0);
 #2547,MER_GARM_BABY
 #2548,MER_HILLSRION
-REPLACE INTO `mob_db_re` VALUES (2549,'GEFFEN_MAGE_1','Arhi','Arhi',90,100000,1,8900,4550,1,329,424,64,38,50,50,50,50,130,50,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2550,'GEFFEN_MAGE_2','Dio Anemos','Dio Anemos',95,200000,1,9440,4430,1,478,649,129,18,40,40,50,80,130,60,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,1095,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2551,'GEFFEN_MAGE_3_1','Geffen Shoplifter','Geffen Shoplifter',100,300000,1,9780,3665,1,478,632,93,36,70,70,40,40,140,60,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2552,'GEFFEN_MAGE_3_2','Geffen Bully','Geffen Bully',100,300000,1,9780,3665,1,478,632,93,36,70,50,70,40,140,40,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2553,'GEFFEN_MAGE_3_3','Geffen Gang Member','Geffen Gang Member',100,300000,1,9780,3665,1,468,622,93,36,60,80,30,30,140,70,10,12,1,7,20,0x85,200,950,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2554,'GEFFEN_MAGE_4','Faymont','Faymont',105,400000,1,11660,4370,1,477,633,114,21,60,60,60,60,140,60,10,12,1,7,20,0x85,200,672,648,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2555,'GEFFEN_MAGE_5','Ordre','Ordre',110,600000,1,15610,4861,1,654,906,107,21,40,70,40,100,150,60,10,12,1,7,20,0x85,200,768,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2556,'GEFFEN_MAGE_6','Blut Hase','Blut Hase',120,1000000,1,20560,10010,1,480,601,66,47,120,120,120,50,150,60,10,12,1,7,48,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2557,'GEFFEN_MAGE_7','Kuro Akuma','Kuro Akuma',130,1200000,1,26100,12030,1,761,1026,135,10,100,100,100,100,145,100,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2558,'GEFFEN_MAGE_8','Ifodes','Ifodes',140,1400000,1,46150,18900,1,676,869,120,60,150,100,100,50,170,100,10,12,1,7,20,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2559,'GEFFEN_MAGE_9','Licheniyes','Licheniyes',145,1600000,1,52060,24105,1,763,1048,140,57,50,100,50,200,220,75,10,12,1,7,20,0x85,200,864,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2560,'GEFFEN_MAGE_10','Odoric','Odoric',150,2000000,1,60027,40237,1,950,1250,165,62,200,150,50,50,170,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2561,'GEFFEN_MAGE_11','Ju','Ju',155,5000000,1,75335,52130,1,1045,1465,170,65,50,100,100,200,220,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2562,'GEFFEN_MAGE_12','Dwigh','Dwigh',160,7000000,1,151317,123000,1,1410,2010,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (2563,'FEI_KANABIAN','Fei Kanabian','Fay Kanavian',160,8000000,1,157975,110571,1,1710,2460,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,720,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (2549,'GEFFEN_MAGE_1','Arhi','Arhi',90,100000,1,8900,4550,1,329,424,64,38,50,50,50,50,130,50,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27249,1);
+REPLACE INTO `mob_db_re` VALUES (2550,'GEFFEN_MAGE_2','Dio Anemos','Dio Anemos',95,200000,1,9440,4430,1,478,649,129,18,40,40,50,80,130,60,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,1095,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27250,1);
+REPLACE INTO `mob_db_re` VALUES (2551,'GEFFEN_MAGE_3_1','Geffen Shoplifter','Geffen Shoplifter',100,300000,1,9780,3665,1,478,632,93,36,70,70,40,40,140,60,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27253,1);
+REPLACE INTO `mob_db_re` VALUES (2552,'GEFFEN_MAGE_3_2','Geffen Bully','Geffen Bully',100,300000,1,9780,3665,1,478,632,93,36,70,50,70,40,140,40,10,12,1,7,20,0x85,200,900,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27252,1);
+REPLACE INTO `mob_db_re` VALUES (2553,'GEFFEN_MAGE_3_3','Geffen Gang Member','Geffen Gang Member',100,300000,1,9780,3665,1,468,622,93,36,60,80,30,30,140,70,10,12,1,7,20,0x85,200,950,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27251,1);
+REPLACE INTO `mob_db_re` VALUES (2554,'GEFFEN_MAGE_4','Faymont','Faymont',105,400000,1,11660,4370,1,477,633,114,21,60,60,60,60,140,60,10,12,1,7,20,0x85,200,672,648,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27254,1);
+REPLACE INTO `mob_db_re` VALUES (2555,'GEFFEN_MAGE_5','Ordre','Ordre',110,600000,1,15610,4861,1,654,906,107,21,40,70,40,100,150,60,10,12,1,7,20,0x85,200,768,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27255,1);
+REPLACE INTO `mob_db_re` VALUES (2556,'GEFFEN_MAGE_6','Blut Hase','Blut Hase',120,1000000,1,20560,10010,1,480,601,66,47,120,120,120,50,150,60,10,12,1,7,48,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27256,1);
+REPLACE INTO `mob_db_re` VALUES (2557,'GEFFEN_MAGE_7','Kuro Akuma','Kuro Akuma',130,1200000,1,26100,12030,1,761,1026,135,10,100,100,100,100,145,100,10,12,1,7,20,0x85,200,1000,864,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27257,1);
+REPLACE INTO `mob_db_re` VALUES (2558,'GEFFEN_MAGE_8','Ifodes','Ifodes',140,1400000,1,46150,18900,1,676,869,120,60,150,100,100,50,170,100,10,12,1,7,20,0x85,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27258,1);
+REPLACE INTO `mob_db_re` VALUES (2559,'GEFFEN_MAGE_9','Licheniyes','Licheniyes',145,1600000,1,52060,24105,1,763,1048,140,57,50,100,50,200,220,75,10,12,1,7,20,0x85,200,864,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27259,1);
+REPLACE INTO `mob_db_re` VALUES (2560,'GEFFEN_MAGE_10','Odoric','Odoric',150,2000000,1,60027,40237,1,950,1250,165,62,200,150,50,50,170,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27260,1);
+REPLACE INTO `mob_db_re` VALUES (2561,'GEFFEN_MAGE_11','Ju','Ju',155,5000000,1,75335,52130,1,1045,1465,170,65,50,100,100,200,220,100,10,12,1,7,20,0x85,200,800,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27261,1);
+REPLACE INTO `mob_db_re` VALUES (2562,'GEFFEN_MAGE_12','Dwigh','Dwigh',160,7000000,1,151317,123000,1,1410,2010,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,800,768,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27262,1);
+REPLACE INTO `mob_db_re` VALUES (2563,'FEI_KANABIAN','Fei Kanabian','Fay Kanavian',160,8000000,1,157975,110571,1,1710,2460,175,65,50,100,100,250,220,100,10,12,1,7,48,0x6200085,200,720,672,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27263,1);
 REPLACE INTO `mob_db_re` VALUES (2564,'GEFFEN_FENRIR','Geffen Fenrir','Fenrir',160,20000000,1,323300,300000,1,2160,3060,200,70,200,100,200,200,220,100,10,12,1,7,48,0x6200085,200,900,864,480,0,0,0,0,0,0,0,22511,100,22511,100,22511,100,22511,100,22511,100,22511,100,0,0,0,0,0,0,4556,1);
 REPLACE INTO `mob_db_re` VALUES (2565,'ALPHONSE','Alphonse','Alphonse',150,1000000,1,0,0,1,650,850,100,20,100,100,50,50,170,100,10,12,1,7,42,0x85,200,1400,816,396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (2566,'ALPHONSE_JR','Alphonse Jr','Alphonse Jr',150,100000,1,0,0,1,450,550,80,20,100,100,50,50,170,100,10,12,1,7,62,0x85,200,936,792,432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@@ -2373,13 +2373,13 @@ REPLACE INTO `mob_db_re` VALUES (3125,'STEP','Step','Step',130,55403,0,3088,2392
 #3150,MG_AMDARAIS_H
 #3151,MG_CORRUPTION_ROOT_H
 #3152,G_MG_KHALITZBURG_H
-#3153,EXCAVATOR_ROBOT
-#3154,RECON_ROBOT
-#3155,REPAIR_ROBOT
-#3156,EXPLORATION_ROVER
-#3157,RUIN_BELIEVER1
-#3158,RUIN_BELIEVER2
-#3159,ILLEGAL_PROMOTION
+REPLACE INTO `mob_db_re` VALUES (3153,'EXCAVATOR_ROBOT','Excavator Robot','Excavator Robot',163,166860,0,15026,16915,1,4093,6007,138,53,102,104,72,57,98,57,10,12,1,0,60,0x0000085,250,1020,500,768,0,0,0,0,0,0,0,11597,251,984,101,6962,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3154,'RECON_ROBOT','Recon Robot','Recon Robot',165,256000,0,15796,17738,1,2668,3863,128,60,112,60,72,57,120,77,10,12,2,0,80,0x0000085,170,1072,672,384,0,0,0,0,0,0,0,998,1001,756,1001,11597,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3155,'REPAIR_ROBOT','Repair Robot','Repair Robot',155,154760,0,11748,47654,1,1893,2714,99,55,98,39,30,35,95,45,10,12,0,3,24,0x0000085,300,1500,500,660,0,0,0,0,0,0,0,998,5000,756,1501,999,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3156,'EXPLORATION_ROVER','Exploration Rover','Exploration Rover',168,293640,0,18172,126234,1,2278,3283,105,41,100,63,35,99,106,61,10,12,2,7,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,998,5000,756,1,999,1,6961,1,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3157,'RUIN_BELIEVER1','Ruin Grace Believer','Ruin Grace Believer',100,61350,0,4666,3874,1,982,1379,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3158,'RUIN_BELIEVER2','Ruin Grace Believer','Ruin Grace Believer',100,61350,0,4666,139500,1,982,1379,91,50,88,61,51,62,136,60,10,12,1,7,40,0x0000085,200,2125,2112,0,0,0,0,0,0,0,0,6753,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3159,'ILLEGAL_PROMOTION','Illegal Promotion','Illegal Promotion',100,10,0,0,0,1,101,102,1,50,1,1,1,1,1,1,10,12,0,0,40,0x0370020,200,0,0,768,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 #3160,BOILED_RICE_DUANWU
 #3161,BOMB
 #3162,ELEPHANT
@@ -2467,16 +2467,16 @@ REPLACE INTO `mob_db_re` VALUES (3243,'V_B_CHEN','Sura Chen','Sura Chen',1,1,0,0
 REPLACE INTO `mob_db_re` VALUES (3244,'V_B_GERTIE','Shadow Chaser Gertie','Shadow Chaser Gertie',1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (3245,'V_B_ALPHOCCIO','Minstrel Alphoccio','Minstrel Alphoccio',1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (3246,'V_B_TRENTINI','Wanderer Trentini','Wanderer Trentini',1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
-#3247,CENERE_G
-#3248,REPAIR_ROBOT_T
-#3249,EXPLORATION_ROVER_T
-#3250,SCR_MT_ROBOTS
-#3251,GC109
-#3252,DR815
-#3253,SYS_MSG
-#3254,T_W_O
-#3255,GHOUL_H
-#3256,ZOMBIE_H
+REPLACE INTO `mob_db_re` VALUES (3247,'CENERE_G','Cenere G','Green Cenere',150,140088,1,7635,7698,1,1897,2007,91,81,70,48,40,37,100,45,10,12,0,0,24,0x0000085,300,3009,720,360,0,0,0,0,0,0,0,6561,5000,7322,500,7001,1500,7320,1000,12815,500,0,0,0,0,0,0,0,0,27014,1);
+REPLACE INTO `mob_db_re` VALUES (3248,'REPAIR_ROBOT_T','Repair Robot T','Repair Robot Turbo',158,186320,1,13208,14489,1,2431,2657,118,59,101,42,55,35,110,45,10,12,0,0,40,0x000008B,300,1515,500,660,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27015,1);
+REPLACE INTO `mob_db_re` VALUES (3249,'EXPLORATION_ROVER_T','Exploration Rover T','Explorer Robot Turbo',171,318117,1,19826,41023,1,2945,3786,121,67,118,80,45,121,138,65,10,12,2,0,80,0x0000085,165,1552,1152,336,0,0,0,0,0,0,0,7512,500,7507,250,998,2000,999,500,11597,1500,0,0,0,0,0,0,0,0,27016,1);
+REPLACE INTO `mob_db_re` VALUES (3250,'SCR_MT_ROBOTS','Scr Mt Robots','Can Robot',155,30,1,61,58,1,95,97,100,99,35,42,20,12,68,3,10,12,0,0,20,0x0070085,300,0,500,400,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27017,1);
+REPLACE INTO `mob_db_re` VALUES (3251,'GC109','Machine Component','Machine Component',149,217650,1,6598,5931,1,2678,3935,121,71,60,132,45,35,155,15,10,12,0,0,47,0x0000085,120,1000,500,600,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27018,1);
+REPLACE INTO `mob_db_re` VALUES (3252,'DR815','Machine Component','Machine Component',153,245670,1,7255,7011,1,3315,4076,143,45,88,98,88,21,116,22,10,12,1,0,27,0x0000085,135,1500,600,500,0,0,0,0,0,0,0,7512,1000,7507,1500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27019,1);
+REPLACE INTO `mob_db_re` VALUES (3253,'SYS_MSG','Sys Msg','System message',160,100,1,0,0,1,1,2,276,99,0,0,0,188,0,0,10,12,0,0,20,0xC170081,2000,3000,600,550,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3254,'T_W_O','T_W_O','T_W_O',165,48000000,1,0,0,1,3955,4151,158,134,90,141,7,87,267,70,10,12,2,6,67,0x6280085,150,1250,500,350,0,6832,5000,617,5000,617,5000,22699,3000,1531,500,7319,2000,0,0,0,0,0,0,0,0,0,0,0,0,27020,1);
+REPLACE INTO `mob_db_re` VALUES (3255,'GHOUL_H','Ghoul H','Smelly Ghoul',155,178652,1,10233,10598,1,2235,2451,99,55,98,55,61,22,133,2,10,12,0,3,24,0x0000085,200,0,500,660,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3256,'ZOMBIE_H','Zombie H','Smelly Zombie',148,134615,1,6859,6903,1,1995,2445,91,42,76,53,54,21,125,3,10,12,0,0,60,0x0000085,220,0,960,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 #3257,MALE_PORING
 #3258,FEMALE_PORING
 #3259,FANTASTIC_B_UNICORN
@@ -3292,3 +3292,17 @@ REPLACE INTO `mob_db_re` VALUES (3508,'DR_EGGRING_G','Eggring','Eggring',20,220,
 #20086,RED_ERUMA_MJ
 #20087,SIORAVA_MJ
 
+#20101,WILOW_MJ
+#20102,MANDRAGORA_MJ
+#20103,STEM_WORM_MJ
+#20104,SPORE_MJ
+#20105,TW_V_B_KATRINN
+#20106,TW_V_B_SHECIL
+#20107,TW_DETALE
+#20108,TW_KIEL
+#20109,TW_TAO_GUNKA
+#20110,TW_KNIGHT_OF_WINDSTORM
+
+#20118,GOBLIN_KING
+#20119,BAD_CATCUMBER
+

+ 74 - 78
sql-files/mob_skill_db.sql

@@ -2963,7 +2963,7 @@ REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_COLDBOLT','attack',
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_COLDBOLT','chase',14,10,3000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_FIREBALL','attack',17,44,3000,500,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_FIREBALL','chase',17,44,3000,500,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@WZ_SIGHTRASHER','attack',81,20,3000,0,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@WZ_SIGHTRASHER','attack',81,10,3000,0,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@WZ_QUAGMIRE','chase',92,5,3000,0,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_SAFETYWALL','attack',12,10,3000,0,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1639,'Kathryne Keyron@MG_FIREBOLT','chase',19,10,3000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -3675,7 +3675,7 @@ REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_FIREATTACK','atta
 REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_CRITICALSLASH','attack',170,1,1000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_STUNATTACK','attack',179,4,1000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_TELEKINESISATTACK','attack',191,5,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,'21',NULL);
-REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@WZ_SIGHTRASHER','attack',81,20,1000,0,10000,'yes','target','attackpcge','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@WZ_SIGHTRASHER','attack',81,10,1000,0,10000,'yes','target','attackpcge','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@KN_BOWLINGBASH','attack',62,4,1000,0,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_AGIUP','attack',350,5,1000,0,60000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1705,'Thanatos Despero@NPC_AGIUP','attack',350,5,2000,0,10000,'yes','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -3741,7 +3741,7 @@ REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_FIREATTACK','atta
 REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_CRITICALSLASH','attack',170,1,1000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_STUNATTACK','attack',179,4,1000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_TELEKINESISATTACK','attack',191,5,500,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,'21',NULL);
-REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@WZ_SIGHTRASHER','attack',81,20,1000,0,10000,'yes','target','attackpcge','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@WZ_SIGHTRASHER','attack',81,10,1000,0,10000,'yes','target','attackpcge','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@KN_BOWLINGBASH','attack',62,5,1000,0,10000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_AGIUP','attack',350,5,1000,0,60000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1710,'Thanatos Despero@NPC_AGIUP','attack',350,5,2000,0,10000,'yes','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4117,7 +4117,7 @@ REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@NPC_POWERUP','attack
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@NPC_POWERUP','attack',349,5,2000,700,50000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@NPC_FIREBREATH','chase',654,10,2000,500,10000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@SM_MAGNUM','attack',7,25,10000,0,5000,'yes','self','attackpcge','2',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@WZ_SIGHTRASHER','attack',81,20,2000,0,5000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@WZ_SIGHTRASHER','attack',81,10,2000,0,5000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@MG_FIREBALL','attack',17,44,1000,500,20000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@MG_FIREBALL','chase',17,44,10000,500,20000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1768,'Gloom Under Night@NPC_CALLSLAVE','attack',352,1,10000,0,30000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4549,7 +4549,7 @@ REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@NPC_FIREBREATH','attack',654,10,2
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@MG_FIREBALL','idle',17,44,10000,500,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@MG_FIREBALL','chase',17,44,10000,500,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@MG_FIREBALL','attack',17,44,5000,500,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@WZ_SIGHTRASHER','attack',81,20,1000,0,20000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@WZ_SIGHTRASHER','attack',81,10,1000,0,20000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@LK_SPIRALPIERCE','attack',397,1,1500,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@WZ_METEOR','chase',83,1,5000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1833,'Kasa@WZ_METEOR','attack',83,1,5000,1000,10000,'no','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4593,7 +4593,7 @@ REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@MG_FIREBALL','chase',17,44,3000,50
 REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@NPC_FIREATTACK','attack',186,5,1000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@NPC_PULSESTRIKE','attack',661,3,1000,1000,5000,'no','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@MG_SIGHT','idle',10,1,500,0,5000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@WZ_SIGHTRASHER','attack',81,20,3000,0,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@WZ_SIGHTRASHER','attack',81,10,3000,0,10000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1837,'Imp@RG_STRIPARMOR','attack',217,1,2000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,'29',NULL);
 REPLACE INTO `mob_skill_db` VALUES (1838,'Knocker@HT_LANDMINE','idle',116,2,4000,1000,18000,'yes','around2','always','0',NULL,NULL,NULL,NULL,NULL,'5',NULL);
 REPLACE INTO `mob_skill_db` VALUES (1838,'Knocker@NPC_GROUNDATTACK','attack',185,2,2000,0,5000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4886,45 +4886,45 @@ REPLACE INTO `mob_skill_db` VALUES (1904,'Bomb Poring@NPC_SELFDESTRUCTION','any'
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_DRAGONFEAR','chase',659,10,10000,0,600000,'no','self','myhpltmaxrate','5',NULL,NULL,NULL,NULL,NULL,NULL,'17');
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_DRAGONFEAR','attack',659,10,10000,0,600000,'no','self','myhpltmaxrate','5',NULL,NULL,NULL,NULL,NULL,NULL,'17');
 #10% HP - Talk
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_TALK','chase',682,10,10000,0,600000,'no','self','myhpinrate','6',10,NULL,NULL,NULL,NULL,NULL,'16');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_TALK','attack',682,10,10000,0,600000,'no','self','myhpinrate','6',10,NULL,NULL,NULL,NULL,NULL,'16');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_TALK','chase',682,10,10000,0,600000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,NULL,'16');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_TALK','attack',682,10,10000,0,600000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,NULL,'16');
 #30% HP - Earthquake Combo
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDEHELLDIGNITY','chase',684,1,10000,2000,180000,'no','self','myhpinrate','11',30,NULL,NULL,NULL,NULL,NULL,'6');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDEHELLDIGNITY','attack',684,1,10000,2000,180000,'no','self','myhpinrate','11',30,NULL,NULL,NULL,NULL,NULL,'6');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTUN','chase',678,5,10000,1300,180000,'no','self','afterskill','684',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTUN','attack',678,5,10000,1300,180000,'no','self','afterskill','684',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EARTHQUAKE','chase',653,10,10000,2000,180000,'no','self','afterskill','678',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EARTHQUAKE','attack',653,10,10000,2000,180000,'no','self','afterskill','678',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDEHELLDIGNITY','chase',684,1,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,'6');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDEHELLDIGNITY','attack',684,1,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,'6');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTUN','chase',678,5,10000,1300,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTUN','attack',678,5,10000,1300,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EARTHQUAKE','chase',653,10,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EARTHQUAKE','attack',653,10,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #40% HP - Mixed Combo
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_PULSESTRIKE','chase',661,5,10000,800,60000,'no','self','myhpinrate','31',40,NULL,NULL,NULL,NULL,NULL,'14');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_PULSESTRIKE','attack',661,5,10000,800,60000,'no','self','myhpinrate','31',40,NULL,NULL,NULL,NULL,NULL,'14');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTONE','chase',666,5,10000,0,60000,'no','self','afterskill','661',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTONE','attack',666,5,10000,0,60000,'no','self','afterskill','661',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_METEOR','chase',83,5,10000,800,60000,'no','target','afterskill','666',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_METEOR','attack',83,5,10000,800,60000,'no','target','afterskill','666',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_PULSESTRIKE','chase',661,5,10000,800,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,'14');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_PULSESTRIKE','attack',661,5,10000,800,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,'14');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTONE','chase',666,5,10000,0,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESTONE','attack',666,5,10000,0,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_METEOR','chase',83,5,10000,800,60000,'no','target','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_METEOR','attack',83,5,10000,800,60000,'no','target','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #50% HP - Vampire Combo
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_VAMPIRE_GIFT','chase',679,9,10000,1000,50000,'no','self','myhpinrate','41',50,NULL,NULL,NULL,NULL,NULL,'15');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_VAMPIRE_GIFT','attack',679,9,10000,1000,50000,'no','self','myhpinrate','41',50,NULL,NULL,NULL,NULL,NULL,'15');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESOULDRAIN','chase',680,10,10000,1000,50000,'no','self','afterskill','679',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESOULDRAIN','attack',680,10,10000,1000,50000,'no','self','afterskill','679',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EVILLAND','chase',670,10,10000,1000,50000,'no','target','afterskill','680',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EVILLAND','attack',670,10,10000,1000,50000,'no','target','afterskill','680',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_VAMPIRE_GIFT','chase',679,9,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,'15');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_VAMPIRE_GIFT','attack',679,9,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,'15');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESOULDRAIN','chase',680,10,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESOULDRAIN','attack',680,10,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EVILLAND','chase',670,10,10000,1000,50000,'no','target','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_EVILLAND','attack',670,10,10000,1000,50000,'no','target','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #60% HP - Hell Combo
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESLEEP','chase',668,5,10000,700,35000,'no','self','myhpinrate','51',60,NULL,NULL,NULL,NULL,NULL,'3');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESLEEP','attack',668,5,10000,700,35000,'no','self','myhpinrate','51',60,NULL,NULL,NULL,NULL,NULL,'3');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLPOWER','chase',683,1,10000,800,35000,'no','target','afterskill','668',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLPOWER','attack',683,1,10000,800,35000,'no','target','afterskill','668',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLJUDGEMENT','chase',662,5,10000,800,35000,'no','self','afterskill','683',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLJUDGEMENT','attack',662,5,10000,800,35000,'no','self','afterskill','683',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESLEEP','chase',668,5,10000,700,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,'3');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_WIDESLEEP','attack',668,5,10000,700,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,'3');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLPOWER','chase',683,1,10000,800,35000,'no','target','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLPOWER','attack',683,1,10000,800,35000,'no','target','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLJUDGEMENT','chase',662,5,10000,800,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_HELLJUDGEMENT','attack',662,5,10000,800,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #80% HP - Magic Combo
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_STONECURSE','chase',16,10,10000,1000,20000,'no','target','myhpinrate','61',80,NULL,NULL,NULL,NULL,NULL,'2');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_STONECURSE','attack',16,10,10000,1000,20000,'no','target','myhpinrate','61',80,NULL,NULL,NULL,NULL,NULL,'2');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FIREBOLT','chase',19,10,10000,300,20000,'no','target','afterskill','16',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FIREBOLT','attack',19,10,10000,300,20000,'no','target','afterskill','16',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FROSTDIVER','chase',15,40,10000,1000,20000,'no','target','afterskill','19',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FROSTDIVER','attack',15,40,10000,1000,20000,'no','target','afterskill','19',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_JUPITEL','chase',84,28,10000,1000,20000,'no','target','afterskill','15',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_JUPITEL','attack',84,28,10000,1000,20000,'no','target','afterskill','15',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_STONECURSE','chase',16,10,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,'2');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_STONECURSE','attack',16,10,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,'2');
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FIREBOLT','chase',19,10,10000,300,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FIREBOLT','attack',19,10,10000,300,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FROSTDIVER','chase',15,40,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@MG_FROSTDIVER','attack',15,40,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_JUPITEL','chase',84,28,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@WZ_JUPITEL','attack',84,28,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@AL_TELEPORT','idle',26,1,10000,0,0,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@AL_TELEPORT','chase',26,1,5000,0,5000,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@AL_PNEUMA','idle',25,1,10000,0,1000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4935,53 +4935,51 @@ REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_CALLSLAVE','idle',352
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_TALK','chase',682,1,10000,0,600000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,'1');
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_SUMMONSLAVE','attack',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,'4');
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_SUMMONSLAVE','chase',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,'4');
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_SUMMONSLAVE','idle',196,4,10000,0,30000,'yes','self','onspawn','0',1922,1923,1924,1925,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_SUMMONSLAVE','idle',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@SA_LANDPROTECTOR','attack',288,1,10000,0,15000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1916,'Satan Morroc@NPC_SHIELDBRAKE','attack',346,10,10000,0,15000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #5% HP - Dragon Fear
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_DRAGONFEAR','chase',659,10,10000,0,600000,'no','self','myhpltmaxrate','5',NULL,NULL,NULL,NULL,NULL,NULL,'17');
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_DRAGONFEAR','attack',659,10,10000,0,600000,'no','self','myhpltmaxrate','5',NULL,NULL,NULL,NULL,NULL,NULL,'17');
 #10% HP - Talk
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_TALK','chase',682,10,10000,0,600000,'no','self','myhpinrate','6',10,NULL,NULL,NULL,NULL,NULL,'16');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_TALK','attack',682,10,10000,0,600000,'no','self','myhpinrate','6',10,NULL,NULL,NULL,NULL,NULL,'16');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_TALK','chase',682,10,10000,0,600000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,NULL,'16');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_TALK','attack',682,10,10000,0,600000,'no','self','myhpltmaxrate','10',NULL,NULL,NULL,NULL,NULL,NULL,'16');
 #30% HP - Earthquake Combo
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDEHELLDIGNITY','chase',684,1,10000,2000,180000,'no','self','myhpinrate','11',30,NULL,NULL,NULL,NULL,NULL,'6');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDEHELLDIGNITY','attack',684,1,10000,2000,180000,'no','self','myhpinrate','11',30,NULL,NULL,NULL,NULL,NULL,'6');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTUN','chase',678,5,10000,1300,180000,'no','self','afterskill','684',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTUN','attack',678,5,10000,1300,180000,'no','self','afterskill','684',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EARTHQUAKE','chase',653,10,10000,2000,180000,'no','self','afterskill','678',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EARTHQUAKE','attack',653,10,10000,2000,180000,'no','self','afterskill','678',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDEHELLDIGNITY','chase',684,1,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,'6');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDEHELLDIGNITY','attack',684,1,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,'6');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTUN','chase',678,5,10000,1300,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTUN','attack',678,5,10000,1300,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EARTHQUAKE','chase',653,10,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EARTHQUAKE','attack',653,10,10000,2000,180000,'no','self','myhpltmaxrate','30',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #40% HP - Mixed Combo
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_PULSESTRIKE','chase',661,5,10000,800,60000,'no','self','myhpinrate','31',40,NULL,NULL,NULL,NULL,NULL,'14');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_PULSESTRIKE','attack',661,5,10000,800,60000,'no','self','myhpinrate','31',40,NULL,NULL,NULL,NULL,NULL,'14');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTONE','chase',666,5,10000,0,60000,'no','self','afterskill','661',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTONE','attack',666,5,10000,0,60000,'no','self','afterskill','661',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_METEOR','chase',83,5,10000,800,60000,'no','target','afterskill','666',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_METEOR','attack',83,5,10000,800,60000,'no','target','afterskill','666',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_PULSESTRIKE','chase',661,5,10000,800,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,'14');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_PULSESTRIKE','attack',661,5,10000,800,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,'14');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTONE','chase',666,5,10000,0,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESTONE','attack',666,5,10000,0,60000,'no','self','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_METEOR','chase',83,5,10000,800,60000,'no','target','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_METEOR','attack',83,5,10000,800,60000,'no','target','myhpltmaxrate','40',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #50% HP - Vampire Combo
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_VAMPIRE_GIFT','chase',679,9,10000,1000,50000,'no','self','myhpinrate','41',50,NULL,NULL,NULL,NULL,NULL,'15');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_VAMPIRE_GIFT','attack',679,9,10000,1000,50000,'no','self','myhpinrate','41',50,NULL,NULL,NULL,NULL,NULL,'15');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESOULDRAIN','chase',680,10,10000,1000,50000,'no','self','afterskill','679',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESOULDRAIN','attack',680,10,10000,1000,50000,'no','self','afterskill','679',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EVILLAND','chase',670,10,10000,1000,50000,'no','target','afterskill','680',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EVILLAND','attack',670,10,10000,1000,50000,'no','target','afterskill','680',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_VAMPIRE_GIFT','chase',679,9,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,'15');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_VAMPIRE_GIFT','attack',679,9,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,'15');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESOULDRAIN','chase',680,10,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESOULDRAIN','attack',680,10,10000,1000,50000,'no','self','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EVILLAND','chase',670,10,10000,1000,50000,'no','target','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_EVILLAND','attack',670,10,10000,1000,50000,'no','target','myhpltmaxrate','50',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #60% HP - Hell Combo
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESLEEP','chase',668,5,10000,700,35000,'no','self','myhpinrate','51',60,NULL,NULL,NULL,NULL,NULL,'3');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESLEEP','attack',668,5,10000,700,35000,'no','self','myhpinrate','51',60,NULL,NULL,NULL,NULL,NULL,'3');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLPOWER','chase',683,1,10000,800,35000,'no','target','afterskill','668',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLPOWER','attack',683,1,10000,800,35000,'no','target','afterskill','668',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLJUDGEMENT','chase',662,5,10000,800,35000,'no','self','afterskill','683',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLJUDGEMENT','attack',662,5,10000,800,35000,'no','self','afterskill','683',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESLEEP','chase',668,5,10000,700,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,'3');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_WIDESLEEP','attack',668,5,10000,700,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,'3');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLPOWER','chase',683,1,10000,800,35000,'no','target','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLPOWER','attack',683,1,10000,800,35000,'no','target','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLJUDGEMENT','chase',662,5,10000,800,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_HELLJUDGEMENT','attack',662,5,10000,800,35000,'no','self','myhpltmaxrate','60',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #80% HP - Magic Combo
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_STONECURSE','chase',16,10,10000,1000,20000,'no','target','myhpinrate','61',80,NULL,NULL,NULL,NULL,NULL,'2');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_STONECURSE','attack',16,10,10000,1000,20000,'no','target','myhpinrate','61',80,NULL,NULL,NULL,NULL,NULL,'2');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FIREBOLT','chase',19,10,10000,300,20000,'no','target','afterskill','16',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FIREBOLT','attack',19,10,10000,300,20000,'no','target','afterskill','16',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FROSTDIVER','chase',15,40,10000,1000,20000,'no','target','afterskill','19',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FROSTDIVER','attack',15,40,10000,1000,20000,'no','target','afterskill','19',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_JUPITEL','chase',84,28,10000,1000,20000,'no','target','afterskill','15',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_JUPITEL','attack',84,28,10000,1000,20000,'no','target','afterskill','15',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_STONECURSE','chase',16,10,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,'2');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_STONECURSE','attack',16,10,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,'2');
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FIREBOLT','chase',19,10,10000,300,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FIREBOLT','attack',19,10,10000,300,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FROSTDIVER','chase',15,40,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@MG_FROSTDIVER','attack',15,40,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_JUPITEL','chase',84,28,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@WZ_JUPITEL','attack',84,28,10000,1000,20000,'no','target','myhpltmaxrate','80',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@AL_TELEPORT','idle',26,1,10000,0,0,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@AL_TELEPORT','chase',26,1,5000,0,5000,'yes','self','rudeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@AL_PNEUMA','idle',25,1,10000,0,1000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4992,8 +4990,6 @@ REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_CALLSLAVE','idle',3
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_TALK','chase',682,1,10000,0,600000,'yes','self','always','0',NULL,NULL,NULL,NULL,NULL,NULL,'1');
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_SUMMONSLAVE','attack',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,'4');
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_SUMMONSLAVE','chase',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,'4');
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_SUMMONSLAVE','idle',196,4,10000,0,30000,'yes','self','onspawn','0',1922,1923,1924,1925,NULL,NULL,NULL);
-REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_SUMMONSLAVE','idle',196,4,10000,0,30000,'yes','self','slavele','1',1922,1923,1924,1925,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@SA_LANDPROTECTOR','attack',288,1,10000,0,15000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1917,'Wounded Morroc@NPC_SHIELDBRAKE','attack',346,10,10000,0,15000,'yes','target','always','0',NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `mob_skill_db` VALUES (1918,'Incarnation of Morroc@AL_PNEUMA','idle',25,1,10000,0,1000,'yes','self','longrangeattacked',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

File diff suppressed because it is too large
+ 824 - 186
sql-files/mob_skill_db_re.sql


+ 1 - 1
src/char/char_clif.cpp

@@ -305,7 +305,7 @@ int chclif_parse_pincode_setnew( int fd, struct char_session_data* sd ){
 //----------------------------------------
 void chclif_charlist_notify( int fd, struct char_session_data* sd ){
 // This is needed on RE clients from october 2015 onwards
-#if defined(PACKETVER_RE) && PACKETVER >= 20151001
+#if defined(PACKETVER_RE) && PACKETVER >= 20151001 && PACKETVER < 20180103
 	WFIFOHEAD(fd, 10);
 	WFIFOW(fd, 0) = 0x9a0;
 	// pages to req / send them all in 1 until mmo_chars_fromsql can split them up

+ 37 - 40
src/char/inter.cpp

@@ -66,9 +66,9 @@ int inter_recv_packet_length[] = {
 };
 
 struct WisData {
-	int id, fd, count, len;
+	int id, fd, count, len, gmlvl;
 	unsigned long tick;
-	unsigned char src[NAME_LENGTH], dst[NAME_LENGTH], msg[512];
+	char src[NAME_LENGTH], dst[NAME_LENGTH], msg[512];
 };
 static DBMap* wis_db = NULL; // int wis_id -> struct WisData*
 static int wis_dellist[WISDELLIST_MAX], wis_delnum;
@@ -1045,31 +1045,22 @@ int mapif_broadcast(unsigned char *mes, int len, unsigned long fontColor, short
 int mapif_wis_message(struct WisData *wd)
 {
 	unsigned char buf[2048];
-	if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
+	int headersize = 12 + 2 * NAME_LENGTH;
+
+	if (wd->len > 2047-headersize) wd->len = 2047-headersize; //Force it to fit to avoid crashes. [Skotlex]
 
 	WBUFW(buf, 0) = 0x3801;
-	WBUFW(buf, 2) = 56 +wd->len;
+	WBUFW(buf, 2) = headersize+wd->len;
 	WBUFL(buf, 4) = wd->id;
-	memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
-	memcpy(WBUFP(buf,32), wd->dst, NAME_LENGTH);
-	memcpy(WBUFP(buf,56), wd->msg, wd->len);
+	WBUFL(buf, 8) = wd->gmlvl;
+	safestrncpy(WBUFCP(buf,12), wd->src, NAME_LENGTH);
+	safestrncpy(WBUFCP(buf,12 + NAME_LENGTH), wd->dst, NAME_LENGTH);
+	safestrncpy(WBUFCP(buf,12 + 2*NAME_LENGTH), wd->msg, wd->len);
 	wd->count = chmapif_sendall(buf,WBUFW(buf,2));
 
 	return 0;
 }
 
-// Wis sending result
-int mapif_wis_end(struct WisData *wd, int flag)
-{
-	unsigned char buf[27];
-
-	WBUFW(buf, 0)=0x3802;
-	memcpy(WBUFP(buf, 2),wd->src,24);
-	WBUFB(buf,26)=flag;
-	chmapif_send(wd->fd,buf,27);
-	return 0;
-}
-
 // Send the requested account_reg
 int mapif_account_reg_reply(int fd, uint32 account_id, uint32 char_id, int type)
 {
@@ -1122,7 +1113,7 @@ int check_ttl_wisdata(void)
 			struct WisData *wd = (struct WisData*)idb_get(wis_db, wis_dellist[i]);
 			ShowWarning("inter: wis data id=%d time out : from %s to %s\n", wd->id, wd->src, wd->dst);
 			// removed. not send information after a timeout. Just no answer for the player
-			//mapif_wis_end(wd, 1); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
+			//mapif_wis_reply(wd->fd, wd->src, 1); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
 			idb_remove(wis_db, wd->id);
 		}
 	} while(wis_delnum >= WISDELLIST_MAX);
@@ -1156,6 +1147,17 @@ int mapif_parse_broadcast_item(int fd) {
 	return 0;
 }
 
+// Wis sending result
+// flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
+int mapif_wis_reply( int mapserver_fd, char* target, uint8 flag ){
+	unsigned char buf[27];
+
+	WBUFW(buf, 0) = 0x3802;
+	safestrncpy(WBUFCP(buf, 2), target, NAME_LENGTH);
+	WBUFB(buf,26) = flag;
+
+	return chmapif_send(mapserver_fd, buf, 27);
+}
 
 // Wisp/page request to send
 int mapif_parse_WisRequest(int fd)
@@ -1165,19 +1167,20 @@ int mapif_parse_WisRequest(int fd)
 	char esc_name[NAME_LENGTH*2+1];// escaped name
 	char* data;
 	size_t len;
+	int headersize = 8+2*NAME_LENGTH;
 
 
 	if ( fd <= 0 ) {return 0;} // check if we have a valid fd
 
-	if (RFIFOW(fd,2)-52 >= sizeof(wd->msg)) {
+	if (RFIFOW(fd,2)-headersize >= sizeof(wd->msg)) {
 		ShowWarning("inter: Wis message size too long.\n");
 		return 0;
-	} else if (RFIFOW(fd,2)-52 <= 0) { // normaly, impossible, but who knows...
+	} else if (RFIFOW(fd,2)-headersize <= 0) { // normaly, impossible, but who knows...
 		ShowError("inter: Wis message doesn't exist.\n");
 		return 0;
 	}
 
-	safestrncpy(name, RFIFOCP(fd,28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
+	safestrncpy(name, RFIFOCP(fd,8+NAME_LENGTH), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
 
 	Sql_EscapeStringLen(sql_handle, esc_name, name, strnlen(name, NAME_LENGTH));
 	if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `name` FROM `%s` WHERE `name`='%s'", schema_config.char_db, esc_name) )
@@ -1186,11 +1189,7 @@ int mapif_parse_WisRequest(int fd)
 	// search if character exists before to ask all map-servers
 	if( SQL_SUCCESS != Sql_NextRow(sql_handle) )
 	{
-		unsigned char buf[27];
-		WBUFW(buf, 0) = 0x3802;
-		memcpy(WBUFP(buf, 2), RFIFOP(fd, 4), NAME_LENGTH);
-		WBUFB(buf,26) = 1; // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
-		chmapif_send(fd, buf, 27);
+		mapif_wis_reply(fd, RFIFOCP(fd, 8), 1);
 	}
 	else
 	{// Character exists. So, ask all map-servers
@@ -1199,13 +1198,9 @@ int mapif_parse_WisRequest(int fd)
 		memset(name, 0, NAME_LENGTH);
 		memcpy(name, data, zmin(len, NAME_LENGTH));
 		// if source is destination, don't ask other servers.
-		if( strncmp(RFIFOCP(fd,4), name, NAME_LENGTH) == 0 )
+		if( strncmp(RFIFOCP(fd,8), name, NAME_LENGTH) == 0 )
 		{
-			uint8 buf[27];
-			WBUFW(buf, 0) = 0x3802;
-			memcpy(WBUFP(buf, 2), RFIFOP(fd, 4), NAME_LENGTH);
-			WBUFB(buf,26) = 1; // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
-			chmapif_send(fd, buf, 27);
+			mapif_wis_reply(fd, RFIFOCP(fd, 8), 1);
 		}
 		else
 		{
@@ -1218,10 +1213,11 @@ int mapif_parse_WisRequest(int fd)
 
 			wd->id = ++wisid;
 			wd->fd = fd;
-			wd->len= RFIFOW(fd,2)-52;
-			memcpy(wd->src, RFIFOP(fd, 4), NAME_LENGTH);
-			memcpy(wd->dst, RFIFOP(fd,28), NAME_LENGTH);
-			memcpy(wd->msg, RFIFOP(fd,52), wd->len);
+			wd->len= RFIFOW(fd,2)-headersize;
+			wd->gmlvl = RFIFOL(fd,4);
+			safestrncpy(wd->src, RFIFOCP(fd,8), NAME_LENGTH);
+			safestrncpy(wd->dst, RFIFOCP(fd,8+NAME_LENGTH), NAME_LENGTH);
+			safestrncpy(wd->msg, RFIFOCP(fd,8+2*NAME_LENGTH), wd->len);
 			wd->tick = gettick();
 			idb_put(wis_db, wd->id, wd);
 			mapif_wis_message(wd);
@@ -1236,7 +1232,8 @@ int mapif_parse_WisRequest(int fd)
 // Wisp/page transmission result
 int mapif_parse_WisReply(int fd)
 {
-	int id, flag;
+	int id;
+	uint8 flag;
 	struct WisData *wd;
 
 	id = RFIFOL(fd,2);
@@ -1246,7 +1243,7 @@ int mapif_parse_WisReply(int fd)
 		return 0;	// This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
 
 	if ((--wd->count) <= 0 || flag != 1) {
-		mapif_wis_end(wd, flag); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
+		mapif_wis_reply(wd->fd, wd->src, flag); // flag: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
 		idb_remove(wis_db, id);
 	}
 

+ 10 - 8
src/map/atcommand.cpp

@@ -2751,7 +2751,9 @@ ACMD_FUNC(guildlevelup) {
  *------------------------------------------*/
 ACMD_FUNC(makeegg) {
 	struct item_data *item_data;
-	int id, pet_id;
+	int id;
+	struct s_pet_db* pet;
+
 	nullpo_retr(-1, sd);
 
 	if (!message || !*message) {
@@ -2767,12 +2769,12 @@ ACMD_FUNC(makeegg) {
 	else
 		id = atoi(message);
 
-	pet_id = search_petDB_index(id, PET_CLASS);
-	if (pet_id < 0)
-		pet_id = search_petDB_index(id, PET_EGG);
-	if (pet_id >= 0) {
-		sd->catch_target_class = pet_db[pet_id].class_;
-		intif_create_pet(sd->status.account_id, sd->status.char_id, pet_db[pet_id].class_, mob_db(pet_db[pet_id].class_)->lv, pet_db[pet_id].EggID, 0, pet_db[pet_id].intimate, 100, 0, 1, pet_db[pet_id].jname);
+	pet = pet_db(id);
+	if (!pet)
+		pet = pet_db_search(id, PET_EGG);
+	if (pet != nullptr) {
+		sd->catch_target_class = pet->class_;
+		intif_create_pet(sd->status.account_id, sd->status.char_id, pet->class_, mob_db(pet->class_)->lv, pet->EggID, 0, pet->intimate, 100, 0, 1, pet->jname);
 	} else {
 		clif_displaymessage(fd, msg_txt(sd,180)); // The monster/egg name/id doesn't exist.
 		return -1;
@@ -8417,7 +8419,7 @@ ACMD_FUNC(accept)
 		return 0;
 	}
 
-	if( duel_check_player_limit( duel_get_duelid( sd->duel_invite ) ) )
+	if( !duel_check_player_limit( duel_get_duelid( sd->duel_invite ) ) )
 	{
 		clif_displaymessage(fd, msg_txt(sd,351)); // "Duel: Limit of players is reached."
 		return 0;

+ 22 - 20
src/map/battle.cpp

@@ -2973,31 +2973,11 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block
 		}
 
 		if (sc) { // Status change considered as masteries
-			uint8 i;
-
 #ifdef RENEWAL
 			if (sc->data[SC_NIBELUNGEN]) // With renewal, the level 4 weapon limitation has been removed
 				ATK_ADD(wd.masteryAtk, wd.masteryAtk2, sc->data[SC_NIBELUNGEN]->val2);
 #endif
 
-			if (sc->data[SC_MIRACLE])
-				i = 2; //Star anger
-			else
-				ARR_FIND(0, MAX_PC_FEELHATE, i, t_class == sd->hate_mob[i]);
-
-			if (i < MAX_PC_FEELHATE && (skill=pc_checkskill(sd,sg_info[i].anger_id))) {
-				int skillratio = sd->status.base_level + sstatus->dex + sstatus->luk;
-
-				if (i == 2)
-					skillratio += sstatus->str; //Star Anger
-				if (skill < 4)
-					skillratio /= 12 - 3 * skill;
-				ATK_ADDRATE(wd.damage, wd.damage2, skillratio);
-#ifdef RENEWAL
-				ATK_ADDRATE(wd.masteryAtk, wd.masteryAtk2, skillratio);
-#endif
-			}
-
 			if(sc->data[SC_CAMOUFLAGE]) {
 				ATK_ADD(wd.damage, wd.damage2, 30 * min(10, sc->data[SC_CAMOUFLAGE]->val3));
 #ifdef RENEWAL
@@ -4464,6 +4444,7 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
 	struct status_data *sstatus = status_get_status_data(src);
 	struct status_data *tstatus = status_get_status_data(target);
 	int inf3 = skill_get_inf3(skill_id);
+	uint8 anger_id = 0; // SLS Anger
 
 	// Kagerou/Oboro Earth Charm effect +15% wATK
 	if(sd && sd->spiritcharm_type == CHARM_TYPE_LAND && sd->spiritcharm > 0) {
@@ -4625,6 +4606,9 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
 			ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_GVG_GIANT]->val3);
 			RE_ALLATK_ADDRATE(wd, sc->data[SC_GVG_GIANT]->val3);
 		}
+
+		if (sc->data[SC_MIRACLE])
+			anger_id = 2; // Always treat all monsters as star flagged monster when in miracle state
 	}
 
 	if ((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) {
@@ -4637,6 +4621,23 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
 		}
 	}
 
+	if (sd != nullptr && !anger_id)
+		ARR_FIND(0, MAX_PC_FEELHATE, anger_id, status_get_class(target) == sd->hate_mob[anger_id]);
+
+	uint16 anger_level;
+	if (sd != nullptr && anger_id < MAX_PC_FEELHATE && (anger_level = pc_checkskill(sd, sg_info[anger_id].anger_id))) {
+		int skillratio = sd->status.base_level + sstatus->dex + sstatus->luk;
+
+		if (anger_id == 2)
+			skillratio += sstatus->str; // SG_STAR_ANGER additionally has STR added in its formula.
+		if (anger_level < 4)
+			skillratio /= 12 - 3 * anger_level;
+		ATK_ADDRATE(wd.damage, wd.damage2, skillratio);
+#ifdef RENEWAL
+		RE_ALLATK_ADDRATE(wd, skillratio);
+#endif
+	}
+
 	return wd;
 }
 
@@ -8492,6 +8493,7 @@ static const struct _battle_data {
 	{ "allow_bound_sell",                   &battle_config.allow_bound_sell,                0,      0,      0x3,            },
 	{ "event_refine_chance",                &battle_config.event_refine_chance,             0,      0,      1,              },
 	{ "autoloot_adjust",                    &battle_config.autoloot_adjust,                 0,      0,      1,              },
+	{ "broadcast_hide_name",                &battle_config.broadcast_hide_name,             2,      0,      NAME_LENGTH,    },
 	{ "display_tax_info",                   &battle_config.display_tax_info,                0,      0,      1,              },
 
 #include "../custom/battle_config_init.inc"

+ 1 - 0
src/map/battle.hpp

@@ -637,6 +637,7 @@ struct Battle_Config
 	int allow_bound_sell;
 	int event_refine_chance;
 	int autoloot_adjust;
+	int broadcast_hide_name;
 	int display_tax_info;
 
 #include "../custom/battle_config_struct.inc"

+ 1 - 1
src/map/chrif.cpp

@@ -462,7 +462,7 @@ int chrif_changemapserver(struct map_session_data* sd, uint32 ip, uint16 port) {
 
 	chrif_check(-1);
 
-	WFIFOHEAD(char_fd,35);
+	WFIFOHEAD(char_fd,39);
 	WFIFOW(char_fd, 0) = 0x2b05;
 	WFIFOL(char_fd, 2) = sd->bl.id;
 	WFIFOL(char_fd, 6) = sd->login_id1;

+ 26 - 8
src/map/clif.cpp

@@ -6445,8 +6445,13 @@ void clif_upgrademessage(int fd, int result, unsigned short item_id)
 /// Whisper is transmitted to the destination player (ZC_WHISPER).
 /// 0097 <packet len>.W <nick>.24B <message>.?B
 /// 0097 <packet len>.W <nick>.24B <isAdmin>.L <message>.?B (PACKETVER >= 20091104)
-void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len)
-{
+void clif_wis_message(struct map_session_data* sd, const char* nick, const char* mes, int mes_len, int gmlvl){
+	int fd;
+
+	nullpo_retv(sd);
+
+	fd = sd->fd;
+
 #if PACKETVER < 20091104
 	WFIFOHEAD(fd, mes_len + NAME_LENGTH + 4);
 	WFIFOW(fd,0) = 0x97;
@@ -6461,7 +6466,11 @@ void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len)
 	WFIFOW(fd,0) = 0x97;
 	WFIFOW(fd,2) = mes_len + NAME_LENGTH + 8;
 	safestrncpy(WFIFOCP(fd,4), nick, NAME_LENGTH);
-	WFIFOL(fd,28) = (ssd && pc_get_group_level(ssd) == 99) ? 1 : 0; // isAdmin; if nonzero, also displays text above char
+	// If it is not a message from the server or a player from another map-server
+	if( ssd ){
+		gmlvl = pc_get_group_level(ssd);
+	}
+	WFIFOL(fd, 28) = (gmlvl == 99) ? 1 : 0; // isAdmin; if nonzero, also displays text above char
 	safestrncpy(WFIFOCP(fd,32), mes, mes_len);
 	WFIFOSET(fd,WFIFOW(fd,2));
 #endif
@@ -10741,6 +10750,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
 	// not when you move each cell.  This is official behaviour.
 	if (sd->sc.data[SC_CLOAKING])
 		skill_check_cloaking(&sd->bl, sd->sc.data[SC_CLOAKING]);
+	status_change_end(&sd->bl, SC_ROLLINGCUTTER, INVALID_TIMER); // If you move, you lose your counters. [malufett]
 
 	pc_delinvincibletimer(sd);
 
@@ -11222,7 +11232,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
 		// if there are 'Test' player on an other map-server and 'test' player on this map-server,
 		// and if we ask for 'Test', we must not contact 'test' player
 		// so, we send information to inter-server, which is the only one which decide (and copy correct name).
-		intif_wis_message(sd, target, message, strlen(message));
+		intif_wis_message(sd, target, message, strlen(message) + 1);
 		return;
 	}
 
@@ -11238,7 +11248,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
 	// if player is autotrading
 	if (dstsd->state.autotrade == 1){
 		safesnprintf(output,sizeof(output),"%s is in autotrade mode and cannot receive whispered messages.", dstsd->status.name);
-		clif_wis_message(fd, wisp_server_name, output, strlen(output) + 1);
+		clif_wis_message(sd, wisp_server_name, output, strlen(output) + 1, 0);
 		return;
 	}
 
@@ -11255,7 +11265,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
 	clif_wis_end(fd, 0); // 0: success to send wisper
 
 	// Normal message
-	clif_wis_message(dstsd->fd, sd->status.name, message, strlen(message)+1 );
+	clif_wis_message(dstsd, sd->status.name, message, strlen(message)+1, 0);
 }
 
 
@@ -19521,7 +19531,7 @@ void clif_parse_merge_item_cancel(int fd, struct map_session_data* sd) {
 /**
  * 07fd <size>.W <type>.B <itemid>.W <charname_len>.B <charname>.24B <source_len>.B <containerid>.W (ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN)
  * 07fd <size>.W <type>.B <itemid>.W <charname_len>.B <charname>.24B <source_len>.B <srcname>.24B (ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN)
- * type: ITEMOBTAIN_TYPE_BOXITEM & ITEMOBTAIN_TYPE_MONSTER_ITEM "[playername] ... [surcename] ... [itemname]" -> MsgStringTable[1629]
+ * type: ITEMOBTAIN_TYPE_BOXITEM & ITEMOBTAIN_TYPE_MONSTER_ITEM "[playername] ... [sourcename] ... [itemname]" -> MsgStringTable[1629]
  * type: ITEMOBTAIN_TYPE_NPC "[playername] ... [itemname]" -> MsgStringTable[1870]
  **/
 void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type, const char *srcname) {
@@ -19539,7 +19549,15 @@ void clif_broadcast_obtain_special_item(const char *char_name, unsigned short na
 	WBUFB(buf, 4) = type;
 	WBUFW(buf, 5) = nameid;
 	WBUFB(buf, 7) = NAME_LENGTH;
-	safestrncpy(WBUFCP(buf, 8), char_name, NAME_LENGTH);
+
+	if (battle_config.broadcast_hide_name) {
+		std::string dispname = std::string(char_name);
+		int hide = min(battle_config.broadcast_hide_name, dispname.length() - 1);
+		dispname.replace(dispname.length() - hide, hide, hide, '*');
+		safestrncpy(WBUFCP(buf, 8), dispname.c_str(), NAME_LENGTH);
+	}
+	else
+		safestrncpy(WBUFCP(buf, 8), char_name, NAME_LENGTH);
 
 	switch (type) {
 		case ITEMOBTAIN_TYPE_BOXITEM:

+ 1 - 1
src/map/clif.hpp

@@ -698,7 +698,7 @@ void clif_status_change(struct block_list *bl, int type, int flag, int tick, int
 void clif_efst_status_change(struct block_list *bl, int tid, enum send_target target, int type, int tick, int val1, int val2, int val3);
 void clif_efst_status_change_sub(struct block_list *tbl, struct block_list *bl, enum send_target target);
 
-void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len);
+void clif_wis_message(struct map_session_data* sd, const char* nick, const char* mes, int mes_len, int gmlvl);
 void clif_wis_end(int fd, int result);
 
 void clif_solved_charname(int fd, int charid, const char* name);

+ 9 - 1
src/map/clif_obfuscation.hpp

@@ -110,7 +110,7 @@
 	#elif PACKETVER == 20130618 // 2013-06-18Ragexe
 		packet_keys(0x434115DE,0x34A10FE9,0x6791428E);
 	#elif PACKETVER == 20130626 // 2013-06-26Ragexe
-		packet_keys(0x38F453EF,0x6A040FD8,0X65BD6668);
+		packet_keys(0x38F453EF,0x6A040FD8,0x65BD6668);
 	#elif PACKETVER == 20130703 // 2013-07-03Ragexe
 		packet_keys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA);
 	#elif PACKETVER == 20130710 // 2013-07-10Ragexe
@@ -400,6 +400,14 @@
 		packet_keys(0x39D54BD3,0x577A0C21,0x4C1C316E);
 	#elif PACKETVER == 20171213 // 2017-12-13bRagexeRE
 		packet_keys(0x44E41107,0x3B126921,0x00E06AAC);
+	#elif PACKETVER == 20171220 // 2017-12-20aRagexeRE
+		packet_keys(0x6EFE009A,0x440B7BFA,0x052339C8);
+	#elif PACKETVER == 20171227 // 2017-12-27aRagexeRE
+		packet_keys(0x257A2F6E,0x51140EEE,0x00FA4452);
+	#elif PACKETVER == 20180103 // 2018-01-03aRagexeRE or 2018-01-03bRagexeRE
+		packet_keys(0x348F4BD7,0x7A425A54,0x628F589A);
+	#elif PACKETVER == 20180117 // 2018-01-17aRagexeRE
+		packet_keys(0x21F477F4,0x37F437F4,0x37F437F4);
 	#elif PACKETVER > 20110817
 		#error Unsupported packet version.
 	#endif

+ 124 - 0
src/map/clif_shuffle.hpp

@@ -4439,6 +4439,130 @@
 	parseable_packet(0x091A,5,clif_parse_ChangeDir,2,4);
 	parseable_packet(0x0957,5,clif_parse_HomMenu,2,4);
 	parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
+// 2017-12-20aRagexeRE
+#elif PACKETVER == 20171220
+	parseable_packet(0x0281,19,clif_parse_WantToConnection,2,6,10,14,18);
+	parseable_packet(0x0366,8,clif_parse_MoveFromKafra,2,4);
+	parseable_packet(0x0369,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
+	parseable_packet(0x0436,2,clif_parse_SearchStoreInfoNextPage,0);
+	parseable_packet(0x0437,18,clif_parse_PartyBookingRegisterReq,2,4);
+	parseable_packet(0x085E,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
+	parseable_packet(0x0861,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
+	parseable_packet(0x0872,10,clif_parse_UseSkillToId,2,4,6);
+	parseable_packet(0x0873,6,clif_parse_GetCharNameRequest,2);
+	parseable_packet(0x0880,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
+	parseable_packet(0x0882,6,clif_parse_TickSend,2);
+	parseable_packet(0x0885,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
+	parseable_packet(0x088C,10,clif_parse_UseSkillToPos,2,4,6,8);
+	parseable_packet(0x0899,36,clif_parse_StoragePassword,0);
+	parseable_packet(0x089E,5,clif_parse_WalkToXY,2);
+	parseable_packet(0x08A7,2,clif_parse_ReqCloseBuyingStore,0);
+	parseable_packet(0x091B,6,clif_parse_TakeItem,2);
+	parseable_packet(0x091E,6,clif_parse_SolveCharName,2);
+	parseable_packet(0x0924,8,clif_parse_MoveToKafra,2,4);
+	parseable_packet(0x0929,6,clif_parse_DropItem,2,4);
+	parseable_packet(0x0933,5,clif_parse_ChangeDir,2,4);
+	parseable_packet(0x093E,7,clif_parse_ActionRequest,2,6);
+	parseable_packet(0x0941,6,clif_parse_ReqClickBuyingStore,2);
+	//parseable_packet(0x0946,4,NULL,0); // CZ_GANGSI_RANK
+	//parseable_packet(0x094E,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
+	parseable_packet(0x0951,5,clif_parse_HomMenu,2,4);
+	parseable_packet(0x0957,26,clif_parse_FriendsListAdd,2);
+	parseable_packet(0x0960,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
+	parseable_packet(0x0964,26,clif_parse_PartyInvite2,2);
+// 2017-12-27aRagexeRE
+#elif PACKETVER == 20171227
+	parseable_packet(0x035F,6,clif_parse_TickSend,2);
+	parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
+	parseable_packet(0x0361,7,clif_parse_ActionRequest,2,6);
+	parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
+	parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
+	parseable_packet(0x0369,5,clif_parse_ChangeDir,2,4);
+	parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
+	parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
+	parseable_packet(0x0802,6,clif_parse_GetCharNameRequest,2);
+	parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
+	parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
+	parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
+	parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
+	parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
+	parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
+	parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
+	parseable_packet(0x087D,36,clif_parse_StoragePassword,0);
+	parseable_packet(0x0888,8,clif_parse_MoveFromKafra,2,4);
+	//parseable_packet(0x088A,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
+	parseable_packet(0x088D,6,clif_parse_TakeItem,2);
+	parseable_packet(0x08A0,8,clif_parse_MoveToKafra,2,4);
+	parseable_packet(0x08A5,5,clif_parse_HomMenu,2,4);
+	parseable_packet(0x092C,19,clif_parse_WantToConnection,2,6,10,14,18);
+	//parseable_packet(0x092E,4,NULL,0); // CZ_GANGSI_RANK
+	parseable_packet(0x0938,26,clif_parse_PartyInvite2,2);
+	parseable_packet(0x0945,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
+	parseable_packet(0x0946,26,clif_parse_FriendsListAdd,2);
+	parseable_packet(0x0969,6,clif_parse_DropItem,2,4);
+	parseable_packet(0x096A,18,clif_parse_PartyBookingRegisterReq,2,4);
+// 2018-01-03aRagexeRE or 2018-01-03bRagexeRE
+#elif PACKETVER == 20180103
+	parseable_packet(0x02C4,8,clif_parse_MoveToKafra,2,4);
+	parseable_packet(0x0363,26,clif_parse_PartyInvite2,2);
+	parseable_packet(0x0811,19,clif_parse_WantToConnection,2,6,10,14,18);
+	//parseable_packet(0x0865,4,NULL,0); // CZ_GANGSI_RANK
+	parseable_packet(0x086B,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
+	parseable_packet(0x086D,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
+	parseable_packet(0x0872,6,clif_parse_ReqClickBuyingStore,2);
+	parseable_packet(0x0876,6,clif_parse_TickSend,2);
+	parseable_packet(0x0879,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
+	parseable_packet(0x088E,2,clif_parse_ReqCloseBuyingStore,0);
+	parseable_packet(0x0899,26,clif_parse_FriendsListAdd,2);
+	parseable_packet(0x089F,6,clif_parse_SolveCharName,2);
+	parseable_packet(0x08A9,5,clif_parse_ChangeDir,2,4);
+	parseable_packet(0x08AB,6,clif_parse_GetCharNameRequest,2);
+	parseable_packet(0x08AC,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
+	parseable_packet(0x091D,7,clif_parse_ActionRequest,2,6);
+	parseable_packet(0x0922,2,clif_parse_SearchStoreInfoNextPage,0);
+	//parseable_packet(0x0926,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
+	parseable_packet(0x0927,18,clif_parse_PartyBookingRegisterReq,2,4);
+	parseable_packet(0x092C,8,clif_parse_MoveFromKafra,2,4);
+	parseable_packet(0x0935,6,clif_parse_TakeItem,2);
+	parseable_packet(0x0938,10,clif_parse_UseSkillToId,2,4,6);
+	parseable_packet(0x0941,5,clif_parse_WalkToXY,2);
+	parseable_packet(0x0946,36,clif_parse_StoragePassword,0);
+	parseable_packet(0x0948,5,clif_parse_HomMenu,2,4);
+	parseable_packet(0x094E,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
+	parseable_packet(0x095D,10,clif_parse_UseSkillToPos,2,4,6,8);
+	parseable_packet(0x095F,6,clif_parse_DropItem,2,4);
+	parseable_packet(0x0960,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
+// 2018-01-17aRagexeRE
+#elif PACKETVER == 20180117
+	parseable_packet(0x0202,5,clif_parse_ChangeDir,2,4);
+	parseable_packet(0x022D,19,clif_parse_WantToConnection,2,6,10,14,18);
+	parseable_packet(0x023B,26,clif_parse_FriendsListAdd,2);
+	parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12);
+	parseable_packet(0x035F,6,clif_parse_TickSend,2);
+	parseable_packet(0x0360,6,clif_parse_ReqClickBuyingStore,2);
+	parseable_packet(0x0361,5,clif_parse_HomMenu,2,4);
+	parseable_packet(0x0362,6,clif_parse_DropItem,2,4);
+	//parseable_packet(0x0363,8,NULL,0); // CZ_JOIN_BATTLE_FIELD
+	parseable_packet(0x0364,8,clif_parse_MoveFromKafra,2,4);
+	parseable_packet(0x0365,18,clif_parse_PartyBookingRegisterReq,2,4);
+	parseable_packet(0x0366,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10);
+	parseable_packet(0x0368,6,clif_parse_SolveCharName,2);
+	parseable_packet(0x0369,7,clif_parse_ActionRequest,2,6);
+	//parseable_packet(0x0436,4,NULL,0); // CZ_GANGSI_RANK
+	parseable_packet(0x0437,5,clif_parse_WalkToXY,2);
+	parseable_packet(0x0438,10,clif_parse_UseSkillToPos,2,4,6,8);
+	parseable_packet(0x07E4,6,clif_parse_TakeItem,2);
+	parseable_packet(0x07EC,8,clif_parse_MoveToKafra,2,4);
+	parseable_packet(0x0802,26,clif_parse_PartyInvite2,2);
+	parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12);
+	parseable_packet(0x0815,-1,clif_parse_ReqOpenBuyingStore,2,4,8,9,89);
+	parseable_packet(0x0817,2,clif_parse_ReqCloseBuyingStore,0);
+	parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
+	parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0);
+	parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10);
+	parseable_packet(0x083C,10,clif_parse_UseSkillToId,2,4,6);
+	parseable_packet(0x0875,36,clif_parse_StoragePassword,0);
+	parseable_packet(0x096A,6,clif_parse_GetCharNameRequest,2);
 #endif
 
 #endif /* _CLIF_SHUFFLE_HPP_ */

+ 7 - 3
src/map/guild.cpp

@@ -165,12 +165,16 @@ int guild_check_skill_require(struct guild *g,int id) {
 static bool guild_read_castledb(char* str[], int columns, int current) {// <castle id>,<map name>,<castle name>,<castle event>[,<reserved/unused switch flag>]
 	struct guild_castle *gc;
 	int mapindex = mapindex_name2id(str[1]);
-
+	const int castle_id = atoi(str[0]);
+	
 	if (map_mapindex2mapid(mapindex) < 0) // Map not found or on another map-server
 		return false;
 
-	CREATE(gc, struct guild_castle, 1);
-	gc->castle_id = atoi(str[0]);
+	if ((gc = static_cast<guild_castle*>(idb_get(castle_db, castle_id))) == nullptr) {
+		CREATE(gc, struct guild_castle, 1);
+	}
+	
+	gc->castle_id = castle_id;
 	gc->mapindex = mapindex;
 	safestrncpy(gc->castle_name, trim(str[2]), sizeof(gc->castle_name));
 	safestrncpy(gc->castle_event, trim(str[3]), sizeof(gc->castle_event));

+ 1 - 0
src/map/instance.cpp

@@ -927,6 +927,7 @@ static bool instance_readdb_sub(char* str[], int columns, int current)
 			aFree(db->maplist);
 			db->maplist = NULL;
 		}
+		db->maplist_count = 0;
 	}
 
 	StringBuf_AppendStr(db->name, str[1]);

+ 23 - 19
src/map/intif.cpp

@@ -303,6 +303,8 @@ int intif_main_message(struct map_session_data* sd, const char* message)
  */
 int intif_wis_message(struct map_session_data *sd, char *nick, char *mes, int mes_len)
 {
+	int headersize = 8 + 2 * NAME_LENGTH;
+
 	nullpo_ret(sd);
 	if (CheckForCharServer())
 		return 0;
@@ -313,12 +315,13 @@ int intif_wis_message(struct map_session_data *sd, char *nick, char *mes, int me
 		return 0;
 	}
 
-	WFIFOHEAD(inter_fd,mes_len + 52);
+	WFIFOHEAD(inter_fd,mes_len + headersize);
 	WFIFOW(inter_fd,0) = 0x3001;
-	WFIFOW(inter_fd,2) = mes_len + 52;
-	memcpy(WFIFOP(inter_fd,4), sd->status.name, NAME_LENGTH);
-	memcpy(WFIFOP(inter_fd,4+NAME_LENGTH), nick, NAME_LENGTH);
-	memcpy(WFIFOP(inter_fd,4+2*NAME_LENGTH), mes, mes_len);
+	WFIFOW(inter_fd,2) = mes_len + headersize;
+	WFIFOL(inter_fd,4) = pc_get_group_level(sd);
+	safestrncpy(WFIFOCP(inter_fd,8), sd->status.name, NAME_LENGTH);
+	safestrncpy(WFIFOCP(inter_fd,8+NAME_LENGTH), nick, NAME_LENGTH);
+	safestrncpy(WFIFOCP(inter_fd,8+2*NAME_LENGTH), mes, mes_len);
 	WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
 
 	if (battle_config.etc_log)
@@ -333,7 +336,7 @@ int intif_wis_message(struct map_session_data *sd, char *nick, char *mes, int me
  * @param flag : 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target
  * @return 0=no char-serv connected, 1=msg sent
  */
-int intif_wis_replay(int id, int flag)
+int intif_wis_reply(int id, int flag)
 {
 	if (CheckForCharServer())
 		return 0;
@@ -344,7 +347,7 @@ int intif_wis_replay(int id, int flag)
 	WFIFOSET(inter_fd,7);
 
 	if (battle_config.etc_log)
-		ShowInfo("intif_wis_replay: id: %d, flag:%d\n", id, flag);
+		ShowInfo("intif_wis_reply: id: %d, flag:%d\n", id, flag);
 
 	return 1;
 }
@@ -365,9 +368,9 @@ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
 	WFIFOHEAD(inter_fd, mes_len + 8 + NAME_LENGTH);
 	WFIFOW(inter_fd,0) = 0x3003;
 	WFIFOW(inter_fd,2) = mes_len + 32;
-	memcpy(WFIFOP(inter_fd,4), wisp_name, NAME_LENGTH);
+	safestrncpy(WFIFOCP(inter_fd,4), wisp_name, NAME_LENGTH);
 	WFIFOL(inter_fd,4+NAME_LENGTH) = permission;
-	memcpy(WFIFOP(inter_fd,8+NAME_LENGTH), mes, mes_len);
+	safestrncpy(WFIFOCP(inter_fd,8+NAME_LENGTH), mes, mes_len);
 	WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
 
 	if (battle_config.etc_log)
@@ -1245,22 +1248,23 @@ int intif_parse_WisMessage(int fd)
 	struct map_session_data* sd;
 	char *wisp_source;
 	char name[NAME_LENGTH];
-	int id, i;
+	int id, i, gmlvl;
 
 	id=RFIFOL(fd,4);
+	gmlvl=RFIFOL(fd,8);
 
-	safestrncpy(name, RFIFOCP(fd,32), NAME_LENGTH);
+	safestrncpy(name, RFIFOCP(fd,12+NAME_LENGTH), NAME_LENGTH);
 	sd = map_nick2sd(name,false);
 	if(sd == NULL || strcmp(sd->status.name, name) != 0)
 	{	//Not found
-		intif_wis_replay(id,1);
+		intif_wis_reply(id,1);
 		return 0;
 	}
 	if(sd->state.ignoreAll) {
-		intif_wis_replay(id, 2);
+		intif_wis_reply(id, 2);
 		return 0;
 	}
-	wisp_source = RFIFOCP(fd,8); // speed up [Yor]
+	wisp_source = RFIFOCP(fd,12); // speed up [Yor]
 	for(i=0; i < MAX_IGNORE_LIST &&
 		sd->ignore[i].name[0] != '\0' &&
 		strcmp(sd->ignore[i].name, wisp_source) != 0
@@ -1268,12 +1272,12 @@ int intif_parse_WisMessage(int fd)
 
 	if (i < MAX_IGNORE_LIST && sd->ignore[i].name[0] != '\0')
 	{	//Ignored
-		intif_wis_replay(id, 2);
+		intif_wis_reply(id, 2);
 		return 0;
 	}
 	//Success to send whisper.
-	clif_wis_message(sd->fd, wisp_source, RFIFOCP(fd,56),RFIFOW(fd,2)-56);
-	intif_wis_replay(id,0);   // success
+	clif_wis_message(sd, wisp_source, RFIFOCP(fd,12+2*NAME_LENGTH),RFIFOW(fd,2)-12+2*NAME_LENGTH, gmlvl);
+	intif_wis_reply(id,0);   // success
 	return 1;
 }
 
@@ -1313,7 +1317,7 @@ static int mapif_parse_WisToGM_sub(struct map_session_data* sd,va_list va)
 	wisp_name = va_arg(va, char*);
 	message = va_arg(va, char*);
 	len = va_arg(va, int);
-	clif_wis_message(sd->fd, wisp_name, message, len);
+	clif_wis_message(sd, wisp_name, message, len,0);
 	return 1;
 }
 
@@ -1334,8 +1338,8 @@ int mapif_parse_WisToGM(int fd)
 	mes_len =  RFIFOW(fd,2) - 8+NAME_LENGTH;
 	message = (char *) aMalloc(mes_len+1);
 
-	permission = RFIFOL(fd,4+NAME_LENGTH);
 	safestrncpy(Wisp_name, RFIFOCP(fd,4), NAME_LENGTH);
+	permission = RFIFOL(fd, 4 + NAME_LENGTH);
 	safestrncpy(message, RFIFOCP(fd,8+NAME_LENGTH), mes_len+1);
 	// information is sent to all online GM
 	map_foreachpc(mapif_parse_WisToGM_sub, permission, Wisp_name, message, mes_len);

+ 5 - 5
src/map/itemdb.cpp

@@ -201,7 +201,7 @@ unsigned short itemdb_searchrandomid(uint16 group_id, uint8 sub_group) {
 * @param group_id: The group ID of item that obtained by player
 * @param *group: struct s_item_group from itemgroup_db[group_id].random[idx] or itemgroup_db[group_id].must[sub_group][idx]
 */
-static void itemdb_pc_get_itemgroup_sub(struct map_session_data *sd, struct s_item_group_entry *data) {
+static void itemdb_pc_get_itemgroup_sub(struct map_session_data *sd, bool identify, struct s_item_group_entry *data) {
 	uint16 i, get_amt = 0;
 	struct item tmp;
 
@@ -211,7 +211,7 @@ static void itemdb_pc_get_itemgroup_sub(struct map_session_data *sd, struct s_it
 
 	tmp.nameid = data->nameid;
 	tmp.bound = data->bound;
-	tmp.identify = 1;
+	tmp.identify = identify ? identify : itemdb_isidentified(data->nameid);
 	tmp.expire_time = (data->duration) ? (unsigned int)(time(NULL) + data->duration*60) : 0;
 	if (data->isNamed) {
 		tmp.card[0] = itemdb_isequip(data->nameid) ? CARD0_FORGE : CARD0_CREATE;
@@ -245,7 +245,7 @@ static void itemdb_pc_get_itemgroup_sub(struct map_session_data *sd, struct s_it
 * @param nameid: The item that trigger this item group
 * @return val: 0:success, 1:no sd, 2:invalid item group
 */
-char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd) {
+char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_data *sd) {
 	uint16 i = 0;
 	struct s_item_group_db *group;
 
@@ -260,7 +260,7 @@ char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd) {
 	if (group->must_qty) {
 		for (i = 0; i < group->must_qty; i++)
 			if (&group->must[i])
-				itemdb_pc_get_itemgroup_sub(sd,&group->must[i]);
+				itemdb_pc_get_itemgroup_sub(sd, identify, &group->must[i]);
 	}
 
 	// Get the 'random' item each random group
@@ -271,7 +271,7 @@ char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd) {
 		rand = rnd()%group->random[i].data_qty;
 		if (!(&group->random[i].data[rand]) || !group->random[i].data[rand].nameid)
 			continue;
-		itemdb_pc_get_itemgroup_sub(sd,&group->random[i].data[rand]);
+		itemdb_pc_get_itemgroup_sub(sd, identify, &group->random[i].data[rand]);
 	}
 
 	return 0;

+ 1 - 1
src/map/itemdb.hpp

@@ -948,7 +948,7 @@ struct item_combo *itemdb_combo_exists(unsigned short combo_id);
 
 struct s_item_group_db *itemdb_group_exists(unsigned short group_id);
 bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid);
-char itemdb_pc_get_itemgroup(uint16 group_id, struct map_session_data *sd);
+char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_data *sd);
 
 bool itemdb_parse_roulette_db(void);
 

+ 1 - 2
src/map/map.cpp

@@ -416,7 +416,6 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick)
 		skill_unit_move(bl,tick,2);
 		if ( sc && sc->count ) //at least one to cancel
 		{
-			status_change_end(bl, SC_ROLLINGCUTTER, INVALID_TIMER); // If you move, you lose your counters. [malufett]
 			status_change_end(bl, SC_CLOSECONFINE, INVALID_TIMER);
 			status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER);
 			status_change_end(bl, SC_TINDER_BREAKER, INVALID_TIMER);
@@ -1518,7 +1517,7 @@ int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data)
 	}
 
 
-	if (search_petDB_index(fitem->item.nameid, PET_EGG) >= 0)
+	if (pet_db_search(fitem->item.nameid, PET_EGG))
 		intif_delete_petdata(MakeDWord(fitem->item.card[1], fitem->item.card[2]));
 
 	clif_clearflooritem(fitem, 0);

+ 3 - 3
src/map/npc.cpp

@@ -304,7 +304,7 @@ int npc_rr_secure_timeout_timer(int tid, unsigned int tick, int id, intptr_t dat
 /*==========================================
  * Dequeue event and add timer for execution (100ms)
  *------------------------------------------*/
-int npc_event_dequeue(struct map_session_data* sd)
+int npc_event_dequeue(struct map_session_data* sd,bool free_script_stack)
 {
 	nullpo_ret(sd);
 
@@ -314,7 +314,7 @@ int npc_event_dequeue(struct map_session_data* sd)
 			clif_clearunit_single(sd->npc_id, CLR_OUTSIGHT, sd->fd);
 			sd->state.using_fake_npc = 0;
 		}
-		if (sd->st) {
+		if (free_script_stack&&sd->st) {
 			script_free_state(sd->st);
 			sd->st = NULL;
 		}
@@ -2026,7 +2026,7 @@ uint8 npc_selllist(struct map_session_data* sd, int n, unsigned short *item_list
 
 		if( sd->inventory_data[idx]->type == IT_PETEGG && sd->inventory.u.items_inventory[idx].card[0] == CARD0_PET )
 		{
-			if( search_petDB_index(sd->inventory.u.items_inventory[idx].nameid, PET_EGG) >= 0 )
+			if( pet_db_search(sd->inventory.u.items_inventory[idx].nameid, PET_EGG) )
 			{
 				intif_delete_petdata(MakeDWord(sd->inventory.u.items_inventory[idx].card[1], sd->inventory.u.items_inventory[idx].card[2]));
 			}

+ 6 - 1
src/map/npc.hpp

@@ -1082,6 +1082,11 @@ enum e_job_types
 	JT_4_M_SNOWMAN_R,
 	JT_4_M_SNOWMAN_G,
 	JT_WARPEFFECTNPC,
+
+	JT_4_F_DANGDANG = 10286,
+	JT_4_M_DANGDANG,
+	JT_4_F_DANGDANG1,
+	JT_4_LEAFCAT,
 	NPC_RANGE3_END, // Official: JT_NEW_NPC_3RD_END=19999
 
 	// Unofficial
@@ -1118,7 +1123,7 @@ enum npce_event : uint8 {
 };
 struct view_data* npc_get_viewdata(int class_);
 int npc_chat_sub(struct block_list* bl, va_list ap);
-int npc_event_dequeue(struct map_session_data* sd);
+int npc_event_dequeue(struct map_session_data* sd,bool free_script_stack=true);
 int npc_event(struct map_session_data* sd, const char* eventname, int ontouch);
 int npc_touch_areanpc(struct map_session_data* sd, int16 m, int16 x, int16 y);
 int npc_touch_areanpc2(struct mob_data *md); // [Skotlex]

+ 33 - 19
src/map/pc.cpp

@@ -5459,24 +5459,26 @@ enum e_setpos pc_setpos(struct map_session_data* sd, unsigned short mapindex, in
 	sd->state.warping = 1;
 	sd->state.workinprogress = WIP_DISABLE_NONE;
 
-	if(map[sd->bl.m].instance_id && sd->state.changemap && !map[m].instance_id) {
-		bool instance_found = false;
-		struct party_data *p = NULL;
-		struct guild *g = NULL;
-
-		if (sd->instance_id) {
-			instance_delusers(sd->instance_id);
-			instance_found = true;
-		}
-		if (!instance_found && sd->status.party_id && (p = party_search(sd->status.party_id)) != NULL && p->instance_id) {
-			instance_delusers(p->instance_id);
-			instance_found = true;
-		}
-		if (!instance_found && sd->status.guild_id && (g = guild_search(sd->status.guild_id)) != NULL && g->instance_id)
-			instance_delusers(g->instance_id);
-	}
 	if( sd->state.changemap ) { // Misc map-changing settings
 		int i;
+
+		if(map[sd->bl.m].instance_id && !map[m].instance_id) {
+			bool instance_found = false;
+			struct party_data *p = NULL;
+			struct guild *g = NULL;
+
+			if (sd->instance_id) {
+				instance_delusers(sd->instance_id);
+				instance_found = true;
+			}
+			if (!instance_found && sd->status.party_id && (p = party_search(sd->status.party_id)) != NULL && p->instance_id) {
+				instance_delusers(p->instance_id);
+				instance_found = true;
+			}
+			if (!instance_found && sd->status.guild_id && (g = guild_search(sd->status.guild_id)) != NULL && g->instance_id)
+				instance_delusers(g->instance_id);
+		}
+
 		sd->state.pmap = sd->bl.m;
 		if (sd->sc.count) { // Cancel some map related stuff.
 			if (sd->sc.data[SC_JAILED])
@@ -5522,12 +5524,19 @@ enum e_setpos pc_setpos(struct map_session_data* sd, unsigned short mapindex, in
 	{
 		uint32 ip;
 		uint16 port;
+		struct script_state *st;
+
 		//if can't find any map-servers, just abort setting position.
 		if(!sd->mapindex || map_mapname2ipport(mapindex,&ip,&port))
 			return SETPOS_NO_MAPSERVER;
 
-		if (sd->npc_id)
-			npc_event_dequeue(sd);
+		if (sd->npc_id){
+			npc_event_dequeue(sd,false);
+			st = sd->st;
+		}else{
+			st = nullptr;
+		}
+
 		npc_script_event(sd, NPCE_LOGOUT);
 		//remove from map, THEN change x/y coordinates
 		unit_remove_map_pc(sd,clrtype);
@@ -5541,6 +5550,11 @@ enum e_setpos pc_setpos(struct map_session_data* sd, unsigned short mapindex, in
 		//Free session data from this map server [Kevin]
 		unit_free_pc(sd);
 
+		if( st ){
+			// Has to be done here, because otherwise unit_free_pc will free the stack already
+			st->state = END;
+		}
+
 		return SETPOS_OK;
 	}
 
@@ -11676,7 +11690,7 @@ void pc_check_expiration(struct map_session_data *sd) {
 		char tmpstr[1024];
 
 		strftime(tmpstr,sizeof(tmpstr) - 1,msg_txt(sd,501),localtime(&exp_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S."
-		clif_wis_message(sd->fd,wisp_server_name,tmpstr,strlen(tmpstr) + 1);
+		clif_wis_message(sd,wisp_server_name,tmpstr,strlen(tmpstr) + 1,0);
 
 		pc_expire_check(sd);
 	}

+ 105 - 124
src/map/pet.cpp

@@ -3,6 +3,8 @@
 
 #include "pet.hpp"
 
+#include <map>
+
 #include <stdlib.h>
 
 #include "../common/db.h"
@@ -27,7 +29,15 @@
 
 #define MIN_PETTHINKTIME 100
 
-struct s_pet_db pet_db[MAX_PET_DB];
+//Dynamic pet database
+std::map<uint16, struct s_pet_db> pet_db_data;
+struct s_pet_db *pet_db( uint16 pet_id ){
+	if( pet_db_data.find(pet_id) != pet_db_data.end() ){
+		return &pet_db_data.at(pet_id);
+	}else{
+		return nullptr;
+	}
+}
 
 static struct eri *item_drop_ers; //For loot drops delay structures.
 static struct eri *item_drop_list_ers;
@@ -78,38 +88,35 @@ void pet_set_intimate(struct pet_data *pd, int value)
  * Create a pet egg.
  * @param sd : player requesting
  * @param item_id : item ID of tamer
- * @return 1:success, 0:failure
+ * @return true:success, false:failure
  */
-int pet_create_egg(struct map_session_data *sd, unsigned short item_id)
+bool pet_create_egg(struct map_session_data *sd, unsigned short item_id)
 {
-	int pet_id = search_petDB_index(item_id, PET_EGG);
+	struct s_pet_db* pet = pet_db_search(item_id, PET_EGG);
 
-	if (pet_id < 0)
-		return 0; //No pet egg here.
+	if (!pet)
+		return false; //No pet egg here.
 
 	if (!pc_inventoryblank(sd))
-		return 0; // Inventory full
+		return false; // Inventory full
 
-	sd->catch_target_class = pet_db[pet_id].class_;
-	intif_create_pet(sd->status.account_id, sd->status.char_id, pet_db[pet_id].class_, mob_db(pet_db[pet_id].class_)->lv, pet_db[pet_id].EggID, 0, pet_db[pet_id].intimate, 100, 0, 1, pet_db[pet_id].jname);
+	sd->catch_target_class = pet->class_;
+	intif_create_pet(sd->status.account_id, sd->status.char_id, pet->class_, mob_db(pet->class_)->lv, pet->EggID, 0, pet->intimate, 100, 0, 1, pet->jname);
 
-	return 1;
+	return true;
 }
 
 /**
  * Make pet drop target.
  * @param pd : pet requesting
- * @return 0
  */
-int pet_unlocktarget(struct pet_data *pd)
+void pet_unlocktarget(struct pet_data *pd)
 {
-	nullpo_ret(pd);
+	nullpo_retv(pd);
 
 	pd->target_id = 0;
 	pet_stop_attack(pd);
 	pet_stop_walking(pd,1);
-
-	return 0;
 }
 
 /**
@@ -298,29 +305,25 @@ static int pet_hungry(int tid, unsigned int tick, int id, intptr_t data)
 /**
  * Search pet database for given value and type.
  * @param key : value to search for
- * @param type : pet type to search for (Class, Catch, Egg, Equip, Food)
- * @return Pet ID on success, -1 on failure
+ * @param type : pet type to search for (Catch, Egg, Equip, Food)
+ * @return Pet DB pointer on success, NULL on failure
  */
-int search_petDB_index(int key,int type)
-{
-	int i;
-
-	for( i = 0; i < MAX_PET_DB; i++ ) {
-		if(pet_db[i].class_ <= 0)
-			continue;
+struct s_pet_db* pet_db_search( int key, enum e_pet_itemtype type ){
+	for( auto &pair : pet_db_data ){
+		struct s_pet_db* pet = &pair.second;
 
 		switch(type) {
-			case PET_CLASS: if(pet_db[i].class_ == key) return i; break;
-			case PET_CATCH: if(pet_db[i].itemID == key) return i; break;
-			case PET_EGG:   if(pet_db[i].EggID  == key) return i; break;
-			case PET_EQUIP: if(pet_db[i].AcceID == key) return i; break;
-			case PET_FOOD:  if(pet_db[i].FoodID == key) return i; break;
+			case PET_CATCH: if(pet->itemID == key) return pet; break;
+			case PET_EGG:   if(pet->EggID  == key) return pet; break;
+			case PET_EQUIP: if(pet->AcceID == key) return pet; break;
+			case PET_FOOD:  if(pet->FoodID == key) return pet; break;
 			default:
-				return -1;
+				ShowError( "pet_db_search: Unsupported type %d\n", type );
+				return nullptr;
 		}
 	}
 
-	return -1;
+	return nullptr;
 }
 
 /**
@@ -402,20 +405,22 @@ static int pet_return_egg(struct map_session_data *sd, struct pet_data *pd)
  * Load initial pet data when hatching/creating.
  * @param sd : player requesting
  * @param pet : pet requesting
+ * @return True on success or false otherwise
  */
-int pet_data_init(struct map_session_data *sd, struct s_pet *pet)
+bool pet_data_init(struct map_session_data *sd, struct s_pet *pet)
 {
 	struct pet_data *pd;
-	int i = 0, interval = 0;
+	struct s_pet_db *pet_db_ptr;
+	int interval = 0;
 
-	nullpo_retr(1, sd);
+	nullpo_retr(false, sd);
 
 	Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->master == sd);
 
 	if(sd->status.account_id != pet->account_id || sd->status.char_id != pet->char_id) {
 		sd->status.pet_id = 0;
 
-		return 1;
+		return false;
 	}
 
 	if (sd->status.pet_id != pet->pet_id) {
@@ -425,18 +430,19 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet)
 			intif_save_petdata(sd->status.account_id,pet);
 			sd->status.pet_id = 0;
 
-			return 1;
+			return false;
 		}
 
 		//The pet_id value was lost? odd... restore it.
 		sd->status.pet_id = pet->pet_id;
 	}
 
-	i = search_petDB_index(pet->class_,PET_CLASS);
-	if(i < 0) {
+	pet_db_ptr = pet_db(pet->class_);
+
+	if( !pet_db_ptr ){
 		sd->status.pet_id = 0;
 
-		return 1;
+		return false;
 	}
 
 	sd->pd = pd = (struct pet_data *)aCalloc(1,sizeof(struct pet_data));
@@ -444,7 +450,7 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet)
 	pd->bl.id = npc_get_new_npc_id();
 
 	pd->master = sd;
-	pd->petDB = &pet_db[i];
+	pd->petDB = pet_db_ptr;
 	pd->db = mob_db(pet->class_);
 	memcpy(&pd->pet, pet, sizeof(struct s_pet));
 	status_set_viewdata(&pd->bl, pet->class_);
@@ -465,16 +471,16 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet)
 	pd->state.skillbonus = 0;
 
 	if( battle_config.pet_status_support )
-		run_script(pet_db[i].pet_script,0,sd->bl.id,0);
+		run_script(pet_db_ptr->pet_script,0,sd->bl.id,0);
 
 	if( pd->petDB ) {
-		if( pd->petDB->pet_loyal_script )
+		if( pet_db_ptr->pet_loyal_script )
 			status_calc_pc(sd,SCO_NONE);
 
 		if( battle_config.pet_hungry_delay_rate != 100 )
-			interval = pd->petDB->hungry_delay * battle_config.pet_hungry_delay_rate / 100;
+			interval = pet_db_ptr->hungry_delay * battle_config.pet_hungry_delay_rate / 100;
 		else
-			interval = pd->petDB->hungry_delay;
+			interval = pet_db_ptr->hungry_delay;
 	}
 
 	if( interval <= 0 )
@@ -483,7 +489,7 @@ int pet_data_init(struct map_session_data *sd, struct s_pet *pet)
 	pd->pet_hungry_timer = add_timer(gettick() + interval, pet_hungry, sd->bl.id, 0);
 	pd->masterteleport_timer = INVALID_TIMER;
 
-	return 0;
+	return true;
 }
 
 /**
@@ -508,9 +514,7 @@ int pet_birth_process(struct map_session_data *sd, struct s_pet *pet)
 	pet->char_id = sd->status.char_id;
 	sd->status.pet_id = pet->pet_id;
 
-	if(pet_data_init(sd, pet)) {
-		sd->status.pet_id = 0;
-
+	if(!pet_data_init(sd, pet)) {
 		return 1;
 	}
 
@@ -640,7 +644,8 @@ int pet_catch_process1(struct map_session_data *sd,int target_class)
 int pet_catch_process2(struct map_session_data* sd, int target_id)
 {
 	struct mob_data* md;
-	int i = 0, pet_catch_rate = 0;
+	int pet_catch_rate = 0;
+	struct s_pet_db* pet;
 
 	nullpo_retr(1, sd);
 
@@ -655,17 +660,20 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
 
 	//FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume [ultramage]
 
-	i = search_petDB_index(md->mob_id,PET_CLASS);
-
-	//catch_target_class == PET_CATCH_UNIVERSAL is used for universal lures (except bosses for now). [Skotlex]
-	if (sd->catch_target_class == PET_CATCH_UNIVERSAL && !status_has_mode(&md->status,MD_STATUS_IMMUNE))
-		sd->catch_target_class = md->mob_id;
+	pet = pet_db(md->mob_id);
 
-	//catch_target_class == PET_CATCH_UNIVERSAL_ITEM is used for catching any monster required the lure item used
-	else if (sd->catch_target_class == PET_CATCH_UNIVERSAL_ITEM && sd->itemid == pet_db[i].itemID)
-		sd->catch_target_class = md->mob_id;
+	// If the target is a valid pet, we have a few exceptions
+	if( pet ){
+		//catch_target_class == PET_CATCH_UNIVERSAL is used for universal lures (except bosses for now). [Skotlex]
+		if (sd->catch_target_class == PET_CATCH_UNIVERSAL && !status_has_mode(&md->status,MD_STATUS_IMMUNE)){
+			sd->catch_target_class = md->mob_id;
+		//catch_target_class == PET_CATCH_UNIVERSAL_ITEM is used for catching any monster required the lure item used
+		}else if (sd->catch_target_class == PET_CATCH_UNIVERSAL_ITEM && sd->itemid == pet->itemID){
+			sd->catch_target_class = md->mob_id;
+		}
+	}
 
-	if(i < 0 || sd->catch_target_class != md->mob_id) {
+	if(sd->catch_target_class != md->mob_id || !pet) {
 		clif_emotion(&md->bl, ET_ANGER);	//mob will do /ag if wrong lure is used on them.
 		clif_pet_roulette(sd,0);
 		sd->catch_target_class = PET_CATCH_FAIL;
@@ -673,7 +681,7 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
 		return 1;
 	}
 
-	pet_catch_rate = (pet_db[i].capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - get_percentage(md->status.hp, md->status.max_hp))/100;
+	pet_catch_rate = (pet->capture + (sd->status.base_level - md->level)*30 + sd->battle_status.luk*20)*(200 - get_percentage(md->status.hp, md->status.max_hp))/100;
 
 	if(pet_catch_rate < 1)
 		pet_catch_rate = 1;
@@ -686,7 +694,7 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
 		unit_remove_map(&md->bl,CLR_OUTSIGHT);
 		status_kill(&md->bl);
 		clif_pet_roulette(sd,1);
-		intif_create_pet(sd->status.account_id, sd->status.char_id, pet_db[i].class_, mob_db(pet_db[i].class_)->lv, pet_db[i].EggID, 0, pet_db[i].intimate, 100, 0, 1, pet_db[i].jname);
+		intif_create_pet(sd->status.account_id, sd->status.char_id, pet->class_, mob_db(pet->class_)->lv, pet->EggID, 0, pet->intimate, 100, 0, 1, pet->jname);
 	} else {
 		clif_pet_roulette(sd,0);
 		sd->catch_target_class = PET_CATCH_FAIL;
@@ -707,7 +715,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id)
 bool pet_get_egg(uint32 account_id, short pet_class, int pet_id ) {
 	struct map_session_data *sd;
 	struct item tmp_item;
-	int i = 0, ret = 0;
+	int ret = 0;
+	struct s_pet_db* pet;
 
 	if( pet_id == 0 || pet_class == 0 )
 		return false;
@@ -722,17 +731,17 @@ bool pet_get_egg(uint32 account_id, short pet_class, int pet_id ) {
 	// Before this change in cases where more than one pet egg were requested in a short
 	// period of time it wasn't possible to know which kind of egg was being requested after
 	// the first request. [Panikon]
-	i = search_petDB_index(pet_class,PET_CLASS);
+	pet = pet_db(pet_class);
 	sd->catch_target_class = PET_CATCH_FAIL;
 
-	if(i < 0) {
+	if(!pet) {
 		intif_delete_petdata(pet_id);
 
 		return false;
 	}
 
 	memset(&tmp_item,0,sizeof(tmp_item));
-	tmp_item.nameid = pet_db[i].EggID;
+	tmp_item.nameid = pet->EggID;
 	tmp_item.identify = 1;
 	tmp_item.card[0] = CARD0_PET;
 	tmp_item.card[1] = GetWord(pet_id,0);
@@ -1549,25 +1558,11 @@ void read_petdb()
 		DBIMPORT"/pet_db.txt"
 	};
 	unsigned short nameid;
-	int i,j;
-
-	// Remove any previous scripts in case reloaddb was invoked.
-	for( j = 0; j < MAX_PET_DB; j++ ) {
-		if( pet_db[j].pet_script ) {
-			script_free_code(pet_db[j].pet_script);
-			pet_db[j].pet_script = NULL;
-		}
-
-		if( pet_db[j].pet_loyal_script ) {
-			script_free_code(pet_db[j].pet_loyal_script);
-			pet_db[j].pet_loyal_script = NULL;
-		}
-	}
+	int i;
 
 	// clear database
-	memset(pet_db,0,sizeof(pet_db));
+	pet_db_data.clear();
 
-	j = 0; // entry counter
 	for( i = 0; i < ARRAYLENGTH(filename); i++ ) {
 		char line[1024];
 		int lines, entries;
@@ -1584,7 +1579,7 @@ void read_petdb()
 
 		lines = entries = 0;
 
-		while( fgets(line, sizeof(line), fp) && j < MAX_PET_DB ) {
+		while( fgets(line, sizeof(line), fp) ) {
 			char *str[22], *p;
 			unsigned k;
 			lines++;
@@ -1650,44 +1645,42 @@ void read_petdb()
 				continue;
 			}
 
-			pet_db[j].class_ = nameid;
-			safestrncpy(pet_db[j].name,str[1],NAME_LENGTH);
-			safestrncpy(pet_db[j].jname,str[2],NAME_LENGTH);
-			pet_db[j].itemID=atoi(str[3]);
-			pet_db[j].EggID=atoi(str[4]);
-			pet_db[j].AcceID=atoi(str[5]);
-			pet_db[j].FoodID=atoi(str[6]);
-			pet_db[j].fullness=atoi(str[7]);
-			pet_db[j].hungry_delay=atoi(str[8])*1000;
-			pet_db[j].r_hungry=atoi(str[9]);
-			if( pet_db[j].r_hungry <= 0 )
-				pet_db[j].r_hungry=1;
-			pet_db[j].r_full=atoi(str[10]);
-			pet_db[j].intimate=atoi(str[11]);
-			pet_db[j].die=atoi(str[12]);
-			pet_db[j].capture=atoi(str[13]);
-			pet_db[j].speed=atoi(str[14]);
-			pet_db[j].s_perfor=(char)atoi(str[15]);
-			pet_db[j].talk_convert_class=atoi(str[16]);
-			pet_db[j].attack_rate=atoi(str[17]);
-			pet_db[j].defence_attack_rate=atoi(str[18]);
-			pet_db[j].change_target_rate=atoi(str[19]);
-			pet_db[j].pet_script = NULL;
-			pet_db[j].pet_loyal_script = NULL;
+			struct s_pet_db* pet = &pet_db_data[nameid];
+
+			pet->class_ = nameid;
+			safestrncpy(pet->name,str[1],NAME_LENGTH);
+			safestrncpy(pet->jname,str[2],NAME_LENGTH);
+			pet->itemID=atoi(str[3]);
+			pet->EggID=atoi(str[4]);
+			pet->AcceID=atoi(str[5]);
+			pet->FoodID=atoi(str[6]);
+			pet->fullness=atoi(str[7]);
+			pet->hungry_delay=atoi(str[8])*1000;
+			pet->r_hungry=atoi(str[9]);
+			if( pet->r_hungry <= 0 )
+				pet->r_hungry=1;
+			pet->r_full=atoi(str[10]);
+			pet->intimate=atoi(str[11]);
+			pet->die=atoi(str[12]);
+			pet->capture=atoi(str[13]);
+			pet->speed=atoi(str[14]);
+			pet->s_perfor=(char)atoi(str[15]);
+			pet->talk_convert_class=atoi(str[16]);
+			pet->attack_rate=atoi(str[17]);
+			pet->defence_attack_rate=atoi(str[18]);
+			pet->change_target_rate=atoi(str[19]);
+			pet->pet_script = nullptr;
+			pet->pet_loyal_script = nullptr;
 
 			if( *str[20] )
-				pet_db[j].pet_script = parse_script(str[20], filename[i], lines, 0);
+				pet->pet_script = parse_script(str[20], filename[i], lines, 0);
 
 			if( *str[21] )
-				pet_db[j].pet_loyal_script = parse_script(str[21], filename[i], lines, 0);
+				pet->pet_loyal_script = parse_script(str[21], filename[i], lines, 0);
 
-			j++;
 			entries++;
 		}
 
-		if( j >= MAX_PET_DB )
-			ShowWarning("read_petdb: Reached max number of pets [%d]. Remaining pets were not read.\n ", MAX_PET_DB);
-
 		fclose(fp);
 		ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' pets in '" CL_WHITE "%s/%s" CL_RESET "'.\n", entries, db_path, filename[i]);
 	}
@@ -1718,19 +1711,7 @@ void do_init_pet(void)
  */
 void do_final_pet(void)
 {
-	int i;
-
-	for( i = 0; i < MAX_PET_DB; i++ ) {
-		if( pet_db[i].pet_script ) {
-			script_free_code(pet_db[i].pet_script);
-			pet_db[i].pet_script = NULL;
-		}
-
-		if( pet_db[i].pet_loyal_script ) {
-			script_free_code(pet_db[i].pet_loyal_script);
-			pet_db[i].pet_loyal_script = NULL;
-		}
-	}
+	pet_db_data.clear();
 
 	ers_destroy(item_drop_ers);
 	ers_destroy(item_drop_list_ers);

+ 19 - 13
src/map/pet.hpp

@@ -7,14 +7,10 @@
 #include "../common/cbasetypes.h"
 #include "../common/mmo.h"
 
-#include "unit.hpp"
+#include "script.hpp"
 #include "status.hpp"
+#include "unit.hpp"
 
-//fwd declaration
-struct s_map_session_data;
-enum e_sc_type : int16;
-
-#define MAX_PET_DB	300
 #define MAX_PETLOOT_SIZE	30
 
 /// Pet DB
@@ -42,10 +38,20 @@ struct s_pet_db {
 	struct script_code
 		*pet_script, ///< Script since pet hatched
 		*pet_loyal_script; ///< Script when pet is loyal
+
+	~s_pet_db()
+	{
+		if( this->pet_script ){
+			script_free_code(this->pet_script);
+		}
+
+		if( this->pet_loyal_script ){
+			script_free_code(this->pet_loyal_script);
+		}
+	}
 };
-extern struct s_pet_db pet_db[MAX_PET_DB];
 
-enum e_pet_itemtype : uint8 { PET_CLASS,PET_CATCH,PET_EGG,PET_EQUIP,PET_FOOD };
+enum e_pet_itemtype : uint8 { PET_CATCH,PET_EGG,PET_EQUIP,PET_FOOD };
 
 enum e_pet_catch : uint16 {
 	PET_CATCH_FAIL = 0, ///< A catch attempt failed
@@ -119,17 +125,17 @@ struct pet_data {
 	struct map_session_data *master;
 };
 
+struct s_pet_db *pet_db(uint16 pet_id);
 
-
-int pet_create_egg(struct map_session_data *sd, unsigned short item_id);
+bool pet_create_egg(struct map_session_data *sd, unsigned short item_id);
 int pet_hungry_val(struct pet_data *pd);
 void pet_set_intimate(struct pet_data *pd, int value);
 int pet_target_check(struct pet_data *pd,struct block_list *bl,int type);
-int pet_unlocktarget(struct pet_data *pd);
+void pet_unlocktarget(struct pet_data *pd);
 int pet_sc_check(struct map_session_data *sd, int type); //Skotlex
-int search_petDB_index(int key,int type);
+struct s_pet_db* pet_db_search(int key, enum e_pet_itemtype type);
 int pet_hungry_timer_delete(struct pet_data *pd);
-int pet_data_init(struct map_session_data *sd, struct s_pet *pet);
+bool pet_data_init(struct map_session_data *sd, struct s_pet *pet);
 int pet_birth_process(struct map_session_data *sd, struct s_pet *pet);
 int pet_recv_petdata(uint32 account_id,struct s_pet *p,int flag);
 int pet_select_egg(struct map_session_data *sd,short egg_index);

+ 53 - 20
src/map/script.cpp

@@ -10096,23 +10096,24 @@ BUILDIN_FUNC(cooking)
  *------------------------------------------*/
 BUILDIN_FUNC(makepet)
 {
-	TBL_PC* sd;
-	int id,pet_id;
+	struct map_session_data* sd;
+	uint16 mob_id;
+	struct s_pet_db* pet;
 
 	if( !script_rid2sd(sd) )
-		return SCRIPT_CMD_SUCCESS;
-
-	id=script_getnum(st,2);
+		return SCRIPT_CMD_FAILURE;
 
-	pet_id = search_petDB_index(id, PET_CLASS);
+	mob_id = script_getnum(st,2);
+	pet = pet_db(mob_id);
 
-	if (pet_id < 0)
-		pet_id = search_petDB_index(id, PET_EGG);
-	if (pet_id >= 0 && sd) {
-		sd->catch_target_class = pet_db[pet_id].class_;
-		intif_create_pet(sd->status.account_id, sd->status.char_id, pet_db[pet_id].class_, mob_db(pet_db[pet_id].class_)->lv, pet_db[pet_id].EggID, 0, pet_db[pet_id].intimate, 100, 0, 1, pet_db[pet_id].jname);
+	if( !pet ){
+		ShowError( "buildin_makepet: failed to create a pet with mob id %hu\n", mob_id);
+		return SCRIPT_CMD_FAILURE;
 	}
 
+	sd->catch_target_class = mob_id;
+	intif_create_pet( sd->status.account_id, sd->status.char_id, pet->class_, mob_db(pet->class_)->lv, pet->EggID, 0, pet->intimate, 100, 0, 1, pet->jname );
+
 	return SCRIPT_CMD_SUCCESS;
 }
 
@@ -20992,16 +20993,16 @@ BUILDIN_FUNC(checkre)
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/* getrandgroupitem <group_id>{,<quantity>{,<sub_group>}} */
+/* getrandgroupitem <group_id>{,<quantity>{,<sub_group>{,<identify>{,<char_id>}}}} */
 BUILDIN_FUNC(getrandgroupitem) {
 	TBL_PC* sd;
-	int i, get_count = 0;
+	int i, get_count = 0, identify = 0;
 	uint16 group, qty = 0;
 	uint8 sub_group = 1;
 	struct item item_tmp;
 	struct s_item_group_entry *entry = NULL;
 
-	if (!script_rid2sd(sd))
+	if (!script_charid2sd(6, sd))
 		return SCRIPT_CMD_SUCCESS;
 
 	group = script_getnum(st,2);
@@ -21013,6 +21014,7 @@ BUILDIN_FUNC(getrandgroupitem) {
 
 	FETCH(3, qty);
 	FETCH(4, sub_group);
+	FETCH(5, identify);
 
 	entry = itemdb_get_randgroupitem(group,sub_group);
 	if (!entry)
@@ -21020,7 +21022,7 @@ BUILDIN_FUNC(getrandgroupitem) {
 
 	memset(&item_tmp,0,sizeof(item_tmp));
 	item_tmp.nameid   = entry->nameid;
-	item_tmp.identify = itemdb_isidentified(entry->nameid);
+	item_tmp.identify = identify ? 1 : itemdb_isidentified(entry->nameid);
 
 	if (!qty)
 		qty = entry->amount;
@@ -21050,17 +21052,17 @@ BUILDIN_FUNC(getrandgroupitem) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
-/* getgroupitem <group_id>{,<char_id>};
+/* getgroupitem <group_id>{,<identify>{,<char_id>}};
  * Gives item(s) to the attached player based on item group contents
  */
 BUILDIN_FUNC(getgroupitem) {
 	TBL_PC *sd;
 	int group_id = script_getnum(st,2);
 	
-	if (!script_charid2sd(3,sd))
+	if (!script_charid2sd(4,sd))
 		return SCRIPT_CMD_SUCCESS;
 	
-	if (itemdb_pc_get_itemgroup(group_id,sd)) {
+	if (itemdb_pc_get_itemgroup(group_id, (script_hasdata(st, 3) ? script_getnum(st, 3) != 0 : false), sd)) {
 		ShowError("buildin_getgroupitem: Invalid group id '%d' specified.\n",group_id);
 		return SCRIPT_CMD_FAILURE;
 	}
@@ -23696,6 +23698,36 @@ BUILDIN_FUNC(round) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
+BUILDIN_FUNC(getequiptradability) {
+	int i, num;
+	TBL_PC *sd;
+
+	num = script_getnum(st, 2);
+
+	if (!script_charid2sd(3, sd)) {
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	if (equip_index_check(num))
+		i = pc_checkequip(sd, equip_bitmask[num]);
+	else{
+		ShowError("buildin_getequiptradability: Unknown equip index '%d'\n",num);
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	if (i >= 0) {
+		bool tradable = (sd->inventory.u.items_inventory[i].expire_time == 0 &&
+			(!sd->inventory.u.items_inventory[i].bound || pc_can_give_bounded_items(sd)) &&
+			itemdb_cantrade(&sd->inventory.u.items_inventory[i], pc_get_group_level(sd), pc_get_group_level(sd))
+			);
+		script_pushint(st, tradable);
+	}
+	else
+		script_pushint(st, false);
+
+	return SCRIPT_CMD_SUCCESS;
+}
+
 #include "../custom/script.inc"
 
 // declarations that were supposed to be exported from npc_chat.c
@@ -24222,7 +24254,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(get_revision,""),
 	BUILDIN_DEF(get_githash,""),
 	BUILDIN_DEF(freeloop,"?"),
-	BUILDIN_DEF(getrandgroupitem,"i??"),
+	BUILDIN_DEF(getrandgroupitem,"i????"),
 	BUILDIN_DEF(cleanmap,"s"),
 	BUILDIN_DEF2(cleanmap,"cleanarea","siiii"),
 	BUILDIN_DEF(npcskill,"viii"),
@@ -24269,7 +24301,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(vip_time,"i?"),
 	BUILDIN_DEF(bonus_script,"si????"),
 	BUILDIN_DEF(bonus_script_clear,"??"),
-	BUILDIN_DEF(getgroupitem,"i?"),
+	BUILDIN_DEF(getgroupitem,"i??"),
 	BUILDIN_DEF(enable_command,""),
 	BUILDIN_DEF(disable_command,""),
 	BUILDIN_DEF(getguildmember,"i??"),
@@ -24343,6 +24375,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF2(round, "round", "i"),
 	BUILDIN_DEF2(round, "ceil", "i"),
 	BUILDIN_DEF2(round, "floor", "i"),
+	BUILDIN_DEF(getequiptradability, "i?"),
 #include "../custom/script_def.inc"
 
 	{NULL,NULL,NULL},

+ 4 - 0
src/map/script_constants.hpp

@@ -4939,6 +4939,10 @@
 	export_constant_npc(JT_4_M_SNOWMAN_R);
 	export_constant_npc(JT_4_M_SNOWMAN_G);
 	export_constant_npc(JT_WARPEFFECTNPC);
+	export_constant_npc(JT_4_F_DANGDANG);
+	export_constant_npc(JT_4_M_DANGDANG);
+	export_constant_npc(JT_4_F_DANGDANG1);
+	export_constant_npc(JT_4_LEAFCAT);
 	#undef export_constant_npc
 
 	/* special effects */

+ 24 - 22
src/map/skill.cpp

@@ -3427,10 +3427,6 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 		case WM_SEVERE_RAINSTORM_MELEE:
 			dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,WM_SEVERE_RAINSTORM,-2,DMG_SPLASH);
 			break;
-		case WM_REVERBERATION_MELEE:
-		case WM_REVERBERATION_MAGIC:
-			dmg.dmotion = clif_skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,WM_REVERBERATION,-2,DMG_SKILL);
-			break;
 		case SR_TIGERCANNON:
 			dmg.dmotion = clif_skill_damage(src, bl, tick, status_get_amotion(bl), dmg.dmotion, damage, dmg.div_, skill_id, skill_lv, DMG_SKILL);
 			break;
@@ -4151,7 +4147,7 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
 					break;
 				case WM_REVERBERATION_MELEE:
 				case WM_REVERBERATION_MAGIC:
-					skill_castend_damage_id(src,target,skl->skill_id,skl->skill_lv,tick,skl->flag);
+					skill_castend_damage_id(src,target,skl->skill_id,skl->skill_lv,tick,skl->flag|SD_LEVEL|SD_ANIMATION);
 					break;
 				case SC_FATALMENACE:
 					unit_warp(src, -1, skl->x, skl->y, CLR_TELEPORT);
@@ -6443,10 +6439,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 		break;
 	case SA_TAMINGMONSTER:
 		clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
-		if (sd && dstmd) {
-			ARR_FIND( 0, MAX_PET_DB, i, dstmd->mob_id == pet_db[i].class_ );
-			if( i < MAX_PET_DB )
-				pet_catch_process1(sd, dstmd->mob_id);
+		if (sd && dstmd && pet_db(dstmd->mob_id)) {
+			pet_catch_process1(sd, dstmd->mob_id);
 		}
 		break;
 
@@ -15678,18 +15672,26 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i
 			case RA_AIMEDBOLT:
 				break;
 			default:
-				if (require.weapon&(1<<W_REVOLVER))
-					clif_msg(sd, SKILL_NEED_REVOLVER);
-				else if (require.weapon&(1<<W_RIFLE))
-					clif_msg(sd, SKILL_NEED_RIFLE);
-				else if (require.weapon&(1<<W_GATLING))
-					clif_msg(sd, SKILL_NEED_GATLING);
-				else if (require.weapon&(1<<W_SHOTGUN))
-					clif_msg(sd, SKILL_NEED_SHOTGUN);
-				else if (require.weapon&(1<<W_GRENADE))
-					clif_msg(sd, SKILL_NEED_GRENADE);
-				else
-					clif_skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0);
+				switch((unsigned int)log2(require.weapon)) {
+					case W_REVOLVER:
+						clif_msg(sd, SKILL_NEED_REVOLVER);
+						break;
+					case W_RIFLE:
+						clif_msg(sd, SKILL_NEED_RIFLE);
+						break;
+					case W_GATLING:
+						clif_msg(sd, SKILL_NEED_GATLING);
+						break;
+					case W_SHOTGUN:
+						clif_msg(sd, SKILL_NEED_SHOTGUN);
+						break;
+					case W_GRENADE:
+						clif_msg(sd, SKILL_NEED_GRENADE);
+						break;
+					default:
+						clif_skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0);
+						break;
+				}
 				return false;
 		}
 	}
@@ -15780,7 +15782,7 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id,
 		case AM_CANNIBALIZE:
 		case AM_SPHEREMINE: {
 			int c=0;
-			int summons[5] = { MOBID_G_MANDRAGORA, MOBID_G_HYDRA, MOBID_G_FLORA, MOBID_G_PARASITE, MOBID_G_MANDRAGORA };
+			int summons[5] = { MOBID_G_MANDRAGORA, MOBID_G_HYDRA, MOBID_G_FLORA, MOBID_G_PARASITE, MOBID_G_GEOGRAPHER };
 			int maxcount = (skill_id==AM_CANNIBALIZE)? 6-skill_lv : skill_get_maxcount(skill_id,skill_lv);
 			int mob_class = (skill_id==AM_CANNIBALIZE)? summons[skill_lv-1] :MOBID_MARINE_SPHERE;
 			if(battle_config.land_skill_limit && maxcount>0 && (battle_config.land_skill_limit&BL_PC)) {

+ 41 - 0
tools/ci/sql.bat

@@ -0,0 +1,41 @@
+@echo off
+
+rem MySQL database setup
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "CREATE DATABASE %DB_NAME%;"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\main.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\logs.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_cash_db.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_cash_db2.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db2.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\item_db2_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db2.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_db2_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db2.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\mob_skill_db2_re.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% %DB_NAME% -e "source sql-files\roulette_default_data.sql"
+
+%MYSQL% -u %DB_ROOT% -p%DB_ROOTPW% -e "GRANT SELECT,INSERT,UPDATE,DELETE ON %DB_NAME%.* TO '%DB_USER%'@'%DB_HOST%' IDENTIFIED BY '%DB_USERPW%';"

+ 26 - 0
tools/ci/sql.sh

@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+function aborterror {
+	echo $@
+	exit 1
+}
+
+mysql -u $DB_ROOT -e "CREATE DATABASE $DB_NAME;" || aborterror "Unable to create database."
+mysql -u $DB_ROOT $DB_NAME < sql-files/main.sql || aborterror "Unable to import main database."
+mysql -u $DB_ROOT $DB_NAME < sql-files/logs.sql || aborterror "Unable to import logs database."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db.sql || aborterror "Unable to import cash item table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_cash_db2.sql || aborterror "Unable to import cash item 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_db.sql || aborterror "Unable to import pre-renewal item table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2.sql || aborterror "Unable to import pre-renewal item 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_db_re.sql || aborterror "Unable to import renewal item table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/item_db2_re.sql || aborterror "Unable to import renewal item 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db.sql || aborterror "Unable to import pre-renewal monster table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2.sql || aborterror "Unable to import pre-renewal monster 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db_re.sql || aborterror "Unable to import renewal monster table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_db2_re.sql || aborterror "Unable to import renewal monster 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db.sql || aborterror "Unable to import pre-renewal monster skill table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2.sql || aborterror "Unable to import pre-renewal monster skill 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db_re.sql || aborterror "Unable to import renewal monster skill table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/mob_skill_db2_re.sql || aborterror "Unable to import renewal monster skill 2 table."
+mysql -u $DB_ROOT $DB_NAME < sql-files/roulette_default_data.sql || aborterror "Unable to import roulette table."
+mysql -u $DB_ROOT -e "GRANT SELECT,INSERT,UPDATE,DELETE ON $DB_NAME.* TO '$DB_USER'@'$DB_HOST' IDENTIFIED BY '$DB_PASS';"

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