Quellcode durchsuchen

Merge branch 'master' into refactor/StatusChangeDisplay

aleos89 vor 7 Jahren
Ursprung
Commit
4609695882
100 geänderte Dateien mit 6212 neuen und 3353 gelöschten Zeilen
  1. 49 44
      .github/CONTRIBUTING.md
  2. 1 0
      3rdparty/CMakeLists.txt
  3. 54 0
      3rdparty/cmake/GetGitVersion.cmake
  4. 44 0
      3rdparty/cmake/GetSvnVersion.cmake
  5. 8 3
      3rdparty/libconfig/grammar.h
  6. 2 0
      3rdparty/libconfig/libconfig.h
  7. 2 0
      3rdparty/libconfig/parsectx.h
  8. 10 0
      3rdparty/libconfig/scanctx.h
  9. 2 0
      3rdparty/libconfig/scanner.h
  10. 10 0
      3rdparty/libconfig/strbuf.h
  11. 2 0
      3rdparty/libconfig/wincompat.h
  12. 10 0
      3rdparty/mt19937ar/mt19937ar.h
  13. 83 0
      3rdparty/yaml-cpp/CMakeLists.txt
  14. 35 55
      CMakeLists.txt
  15. 5 4
      conf/battle/items.conf
  16. 1 1
      conf/char_athena.conf
  17. 4 3
      conf/msg_conf/map_msg.conf
  18. 1 1
      conf/msg_conf/map_msg_chn.conf
  19. 1 1
      conf/msg_conf/map_msg_frn.conf
  20. 1 1
      conf/msg_conf/map_msg_idn.conf
  21. 1 1
      conf/msg_conf/map_msg_por.conf
  22. 1 1
      conf/msg_conf/map_msg_rus.conf
  23. 1 1
      conf/msg_conf/map_msg_spn.conf
  24. 1 1
      conf/msg_conf/map_msg_tha.conf
  25. 140 548
      configure
  26. 2 1
      configure.in
  27. 0 1152
      db/const.txt
  28. 59 59
      db/pre-re/item_db.txt
  29. 1 1
      db/pre-re/job_db1.txt
  30. 16 16
      db/pre-re/skill_cast_db.txt
  31. 20 15
      db/pre-re/skill_db.txt
  32. 20 20
      db/pre-re/skill_require_db.txt
  33. 17 17
      db/pre-re/skill_tree.txt
  34. 1 0
      db/re/instance_db.txt
  35. 1 0
      db/re/item_combo_db.txt
  36. 216 211
      db/re/item_db.txt
  37. 1 0
      db/re/item_delay.txt
  38. 0 0
      db/re/job_basehpsp_db.txt
  39. 1 1
      db/re/job_db1.txt
  40. 8 8
      db/re/job_exp.txt
  41. BIN
      db/re/map_cache.dat
  42. 146 21
      db/re/mob_db.txt
  43. 5 0
      db/re/mob_skill_db.txt
  44. 23 10
      db/re/quest_db.txt
  45. 29 20
      db/re/skill_cast_db.txt
  46. 4 0
      db/re/skill_castnodex_db.txt
  47. 15 10
      db/re/skill_db.txt
  48. 4 0
      db/re/skill_nocast_db.txt
  49. 31 26
      db/re/skill_require_db.txt
  50. 97 44
      db/re/skill_tree.txt
  51. 1 0
      db/skill_copyable_db.txt
  52. 15 5
      doc/atcommands.txt
  53. 2 2
      doc/effect_list.txt
  54. 42 12
      doc/script_commands.txt
  55. 40 34
      doc/status_change.txt
  56. 2 2
      npc/custom/events/holiday/valentinesdayexp.txt
  57. 1 1
      npc/custom/events/holiday/xmas_rings_event.txt
  58. 427 243
      npc/custom/jobmaster.txt
  59. 57 56
      npc/custom/official/GeffenMagicTournament.txt
  60. 8 95
      npc/custom/platinum_skills.txt
  61. 2 2
      npc/guild2/agit_main_se.txt
  62. 4 0
      npc/merchants/advanced_refiner.txt
  63. 8 0
      npc/merchants/refine.txt
  64. 96 6
      npc/other/Global_Functions.txt
  65. 3 3
      npc/other/arena/arena_point.txt
  66. 2 2
      npc/other/arena/arena_room.txt
  67. 1 0
      npc/other/gm_npcs.txt
  68. 1 1
      npc/other/turbo_track.txt
  69. 4 4
      npc/quests/thana_quest.txt
  70. 4 4
      npc/re/custom/lasagna/lasagna_npcs.txt
  71. 2322 0
      npc/re/instances/SarahAndFenrir.txt
  72. 855 0
      npc/re/jobs/2e/rebellion.txt
  73. 351 135
      npc/re/jobs/novice/academy.txt
  74. 2 0
      npc/re/mapflag/nobranch.txt
  75. 1 0
      npc/re/mapflag/noicewall.txt
  76. 2 0
      npc/re/mapflag/nomemo.txt
  77. 1 0
      npc/re/mapflag/nopenalty.txt
  78. 1 0
      npc/re/mapflag/nopvp.txt
  79. 2 0
      npc/re/mapflag/nosave.txt
  80. 3 0
      npc/re/mapflag/noteleport.txt
  81. 2 0
      npc/re/mapflag/nowarp.txt
  82. 16 0
      npc/re/mapflag/nowarpto.txt
  83. 1 0
      npc/re/mapflag/partylock.txt
  84. 1 0
      npc/re/mapflag/restricted.txt
  85. 1 0
      npc/re/merchants/shops.txt
  86. 12 0
      npc/re/mobs/int_land.txt
  87. 1 0
      npc/re/scripts_athena.conf
  88. 1 0
      npc/re/scripts_jobs.conf
  89. 1 0
      npc/re/scripts_monsters.conf
  90. 57 14
      npc/re/warps/cities/izlude.txt
  91. 3 0
      npc/re/warps/other/dimensional_gap.txt
  92. 59 59
      sql-files/item_db.sql
  93. 216 211
      sql-files/item_db_re.sql
  94. 15 15
      sql-files/logs.sql
  95. 90 90
      sql-files/main.sql
  96. 146 21
      sql-files/mob_db_re.sql
  97. 118 0
      sql-files/upgrades/upgrade_20171001.sql
  98. 16 0
      sql-files/upgrades/upgrade_20171001_logs.sql
  99. 2 0
      sql-files/upgrades/upgrade_20171019.sql
  100. 8 39
      src/char/CMakeLists.txt

+ 49 - 44
.github/CONTRIBUTING.md

@@ -77,27 +77,31 @@ For the most part you as a user will have no reason to worry about the **Milesto
 
 :bangbang: Users should be aware of the 'Mode' and 'Status' Type **Labels** as these sometimes require feedback! :bangbang:
 
-#### Bug Type
+#### Component
 
 | Label Name | Search Link | Description |
 | --- | --- | --- |
-| `bug:core` | [search][search-rathena-label-bugcore] | A fault that lies within the main framework of rAthena. |
-| `bug:database` | [search][search-rathena-label-bugdatabase] | A fault that lies within the database of rAthena. |
-| `bug:documentation` | [search][search-rathena-label-bugdocumentation] | A fault that lies within the documentation of rAthena. |
-| `bug:forum` | [search][search-rathena-label-bugforum] | A fault that lies within the rAthena forum. |
-| `bug:script` | [search][search-rathena-label-bugscript] | A fault that lies within the scripts of rAthena. |
-| `bug:skill` | [search][search-rathena-label-bugskill] | A fault that deals specifically with a skill. |
-| `bug:tool` | [search][search-rathena-label-bugtool] | A fault that lies within a tool of rAthena. |
-
-#### Mode Type
+| `component:core` | [search][search-rathena-label-componentcore] | A fault that lies within the main framework of rAthena. |
+| `component:database` | [search][search-rathena-label-componentdatabase] | A fault that lies within the database of rAthena. |
+| `component:documentation` | [search][search-rathena-label-componentdocumentation] | A fault that lies within the documentation of rAthena. |
+| `component:script` | [search][search-rathena-label-componentscript] | A fault that lies within the scripts of rAthena. |
+| `component:skill` | [search][search-rathena-label-componentskill] | A fault that deals specifically with a skill. |
+| `component:tool` | [search][search-rathena-label-componenttool] | A fault that lies within a tool of rAthena. |
+
+#### Missing
+| Label Name | Search Link | Description |
+| --- | --- | --- |
+| `missing:clientdate` | [search][search-rathena-label-missingclientdate] | Issue **Title** or **Description** does not state the client date used to create the bug. |
+| `missing:mode` | [search][search-rathena-label-missingmode] | Issue **Title** or **Description** does not state pre-renewal or renewal mode. |
+| `missing:revision` | [search][search-rathena-label-missingrevision] | Issue **Description** does not state the revision of rAthena used when the bug occurred. |
 
+#### Mode
 | Label Name | Search Link | Description |
 | --- | --- | --- |
-| `mode:missing` | [search][search-rathena-label-modemissing] | Issue **Title** or **Description** does not state pre-renewal or renewal mode. |
 | `mode:prerenewal` | [search][search-rathena-label-modeprerenewal] | A fault that exists within the pre-renewal mode. |
 | `mode:renewal` | [search][search-rathena-label-moderenewal] | A fault that exists within the renewal mode. |
 
-#### Priority Type
+#### Priority
 
 | Label Name | Search Link | Description |
 | --- | --- | --- |
@@ -105,64 +109,65 @@ For the most part you as a user will have no reason to worry about the **Milesto
 | `priority:medium` | [search][search-rathena-label-prioritymedium] | A fault that makes rAthena have significant repercussions but does not render rAthena unusable. |
 | `priority:low` | [search][search-rathena-label-prioritylow] | A fault that affects rAthena in one piece of functionality and is self-contained. |
 
-#### Server Type
+#### Status
 
 | Label Name | Search Link | Description |
 | --- | --- | --- |
-| `server:login` | [search][search-rathena-label-serverlogin] | A fault that lies within the login server of rAthena. |
-| `server:char` | [search][search-rathena-label-serverchar] | A fault that lies within the character server of rAthena. |
-| `server:map` | [search][search-rathena-label-servermap] | A fault that lies within the map server of rAthena. |
-
-#### Status Type
-
-| Label Name | Search Link | Description |
-| --- | --- | --- |
-| `status:client date missing` | [search][search-rathena-label-statusclientdatemissing] | Issue **Title** or **Description** does not state the client date used to create the bug. |
+| `status:code-review` | [search][search-rathena-label-statuscodereview] | Pull Request that requires reviewing from other developers before being pushed to master. |
 | `status:confirmed` | [search][search-rathena-label-statusconfirmed] | Issue that has been validated by a developer to affect rAthena. |
 | `status:duplicate` | [search][search-rathena-label-statusduplicate] |  Issue that has been reported before. |
-| `status:git hash missing` | [search][search-rathena-label-statusgithashmissing] | Issue **Description** does not state the hash of rAthena used when the bug occurred. |
+| `status:inprogress` | [search][search-rathena-label-statusinprogress] | Issue that has begun resolution by a developer. |
 | `status:invalid` | [search][search-rathena-label-statusinvalid] | Issue that is either not official or is not related to rAthena. |
-| `status:needs more info` | [search][search-rathena-label-statusneedsmoreinfo] | Issue that needs more information from the issue creator. |
-| `status:needs official info` | [search][search-rathena-label-statusneedsofficialinfo] | Issue that needs more information from a creditable source. |
-| `status:started` | [search][search-rathena-label-statusstarted] | Issue that has begun resolution by a developer. |
+| `status:need more info` | [search][search-rathena-label-statusneedmoreinfo] | Issue that needs more information from a creditable source. |
+| `status:need user input` | [search][search-rathena-label-statusneeduserinput] | Issue that needs more information from the issue creator. |
+| `status:outdated emulator` | [search][search-rathena-label-statusoutdatedemulator] | Issue that requires the creator's local files to be updated to be resolved. |
 | `status:unable to reproduce` | [search][search-rathena-label-statusunabletoreproduce] | Issue that was unable to be reproduced on rAthena. |
 | `status:wontfix` | [search][search-rathena-label-statuswontfix] |  Issue that cannot be fixed through some limitation or is intended behavior. |
 
-[search-rathena-label-bugcore]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Acore
-[search-rathena-label-bugdatabase]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Adatabase
-[search-rathena-label-bugdocumentation]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Adocumentation
-[search-rathena-label-bugforum]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Aforum
-[search-rathena-label-bugscript]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Ascript
-[search-rathena-label-bugskill]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Askill
-[search-rathena-label-bugtool]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Abug%3Atool
-[search-rathena-label-modemissing]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amode%3Amissing
+#### Type
+| Label Name | Search Link | Description |
+| --- | --- | --- |
+| `type:bug` | [search][search-rathena-label-typebug] | Issue that is a bug within rAthena. |
+| `type:enhancement` | [search][search-rathena-label-typeenhancement] | Issue that is an enhancement to rAthena. |
+| `type:maintenance` | [search][search-rathena-label-typemaintenance] | Issue for refactoring rAthena. |
+| `type:question` | [search][search-rathena-label-typequestion] | Issue that is a question for rAthena. |
+
+[search-rathena-label-componentcore]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Acore
+[search-rathena-label-componentdatabase]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Adatabase
+[search-rathena-label-componentdocumentation]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Adocumentation
+[search-rathena-label-componentscript]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Ascript
+[search-rathena-label-componentskill]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Askill
+[search-rathena-label-componenttool]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Acomponent%3Atool
+[search-rathena-label-missingclientdate]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amissing%3Aclientdate
+[search-rathena-label-missingmode]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amissing%3Amode
+[search-rathena-label-missingrevision]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amissing%3Arevision
 [search-rathena-label-modeprerenewal]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amode%3Aprerenewal
 [search-rathena-label-moderenewal]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Amode%3Arenewal
 [search-rathena-label-priorityhigh]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Apriority%3Ahigh
 [search-rathena-label-prioritymedium]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Apriority%3Amedium
 [search-rathena-label-prioritylow]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Apriority%3Alow
-[search-rathena-label-serverchar]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Aserver%3Achar
-[search-rathena-label-serverlogin]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Aserver%3Alogin
-[search-rathena-label-servermap]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Aserver%3Amap
-[search-rathena-label-statusclientdatemissing]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aclient+date+missing"
+[search-rathena-label-statuscodereview]: https://github.com/rathena/rathena/pulls?q=is%3Apr+is%3Aopen+label%3Astatus%3Acode-review
 [search-rathena-label-statusconfirmed]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Aconfirmed
 [search-rathena-label-statusduplicate]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Aduplicate
-[search-rathena-label-statusgithashmissing]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Agit+hash+missing"
+[search-rathena-label-statusinprogress]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Ainprogress
 [search-rathena-label-statusinvalid]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Ainvalid
-[search-rathena-label-statusneedsmoreinfo]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aneeds+more+info"
-[search-rathena-label-statusneedsofficialinfo]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aneeds+official+info"
-[search-rathena-label-statusstarted]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Astarted
+[search-rathena-label-statusneedmoreinfo]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aneed+more+info"
+[search-rathena-label-statusneeduserinput]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aneed+user+input"
+[search-rathena-label-statusoutdatedemulator]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aoutdated+emulator"
 [search-rathena-label-statusunabletoreproduce]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3Aunable+to+reproduce"
 [search-rathena-label-statuswontfix]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Astatus%3Awontfix
+[search-rathena-label-typebug]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Abug
+[search-rathena-label-typeenhancement]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Aenhancement
+[search-rathena-label-typemaintenance]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Amaintenance
+[search-rathena-label-typequestion]: https://github.com/rathena/rathena/issues?q=is%3Aissue+is%3Aopen+label%3Atype%3Aquestion
 
 Become a Team Member
 --------------------
 
 1. Before you send in a staff application, make sure you have an [rAthena account](https://rathena.org/board/register/).
-  * If you are new to the community, go ahead and [introduce yourself](https://rathena.org/board/forum/89-introductions/)!
+    * If you are new to the community, go ahead and [introduce yourself](https://rathena.org/board/forum/89-introductions/)!
 2. Please fill out the [Staff Application](https://rathena.org/board/staffapplications/) and you will be notified shortly.
 
-<br />
 The rAthena team is comprised of all volunteers ([AUTHORS](https://github.com/rathena/rathena/blob/master/AUTHORS)). We encourage you to pitch in and submit bug reports or Pull Requests!
 
 Thanks!

+ 1 - 0
3rdparty/CMakeLists.txt

@@ -53,3 +53,4 @@ add_subdirectory( mt19937ar )
 add_subdirectory( mysql )
 add_subdirectory( pcre )
 add_subdirectory( zlib )
+add_subdirectory( yaml-cpp )

+ 54 - 0
3rdparty/cmake/GetGitVersion.cmake

@@ -0,0 +1,54 @@
+# - Returns a version string from Git tags
+#
+# This function inspects the annotated git tags for the project and returns a string
+# into a CMake variable
+# higly adapted from https://raw.githubusercontent.com/google/benchmark/master/cmake/GetGitVersion.cmake
+# lighta
+#
+#  get_git_version()
+#
+# - Example
+#
+# include(GetGitVersion)
+# get_git_version(GIT_VERSION)
+# return 
+#     - GIT_VERSION : remote tracking sha of master
+#     - GIT_HEAD_VERSION : current sha of current branch
+#
+# Requires CMake 2.8.11+
+find_package(Git)
+
+if(__get_git_version)
+  return()
+endif()
+set(__get_git_version INCLUDED)
+
+function(get_git_version)
+  if(GIT_EXECUTABLE)
+      #determine remote tracking master sha
+      execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse origin/master
+          RESULT_VARIABLE status
+          OUTPUT_VARIABLE GIT_VERSION
+          ERROR_QUIET)
+      if(${status})
+        set(GIT_VERSION "unknow")
+      else()
+        string(STRIP ${GIT_VERSION} GIT_VERSION)
+      endif()
+    
+      #determine current head sha
+      execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify HEAD
+          RESULT_VARIABLE status
+          OUTPUT_VARIABLE GIT_HEAD_VERSION
+          ERROR_QUIET)
+      if(${status})
+        set(GIT_HEAD_VERSION "unknow")
+      else()
+        string(STRIP ${GIT_HEAD_VERSION} GIT_HEAD_VERSION)
+      endif()   
+
+  endif()
+  message("-- git Version: ${GIT_VERSION}, ${GIT_HEAD_VERSION}")
+  set(GIT_VERSION ${GIT_VERSION} PARENT_SCOPE)
+  set(GIT_HEAD_VERSION ${GIT_HEAD_VERSION} PARENT_SCOPE)
+endfunction()

+ 44 - 0
3rdparty/cmake/GetSvnVersion.cmake

@@ -0,0 +1,44 @@
+#
+# Find svnversion
+#
+function(get_svn_version)
+  message( STATUS "Detecting svnversion" )
+  find_program( SVNVERSION_EXECUTABLE svnversion )
+  mark_as_advanced( SVNVERSION_EXECUTABLE )
+  if( SVNVERSION_EXECUTABLE )
+    message( STATUS "Found svnversion: ${SVNVERSION_EXECUTABLE}" )
+  endif()
+  message( STATUS "Detecting svnversion - done" )
+  #
+  # Find Subversion
+  #
+  message( STATUS "Detecting Subversion" )
+  find_package( Subversion )
+  message( STATUS "Detecting Subversion - done" )
+  #
+  # SVNVERSION
+  #
+  if( SVNVERSION_EXECUTABLE )
+    message( STATUS "Getting svn version" )
+    execute_process( COMMAND ${SVNVERSION_EXECUTABLE} ${PROJECT_SOURCE_DIR}
+      OUTPUT_VARIABLE SVNVERSION
+      OUTPUT_STRIP_TRAILING_WHITESPACE )
+    if( SVNVERSION MATCHES "^Unversioned" )
+      set( SVNVERSION )
+    endif()
+    string( REGEX REPLACE "[^1234567890MSexported]" "_" SVNVERSION "${SVNVERSION}" )
+    message( STATUS "Found SVNversion: ${SVNVERSION}" )
+    message( STATUS "Getting svn version - done" )
+  endif()
+  if( Subversion_FOUND AND SVNVERSION )
+    message( STATUS "Getting svn branch" )
+    Subversion_WC_INFO( ${PROJECT_SOURCE_DIR} rAthena )
+    if( rAthena_WC_URL )
+      string( REGEX MATCH "[^/]+$" BRANCH ${rAthena_WC_URL} )
+      set( SVNVERSION "${BRANCH}-${SVNVERSION}" )
+      message( STATUS "Found branch: ${BRANCH}" )
+    endif()
+    message( STATUS "Getting svn branch - done" )
+  endif()
+  set(SVNVERSION ${SVNVERSION} PARENT_SCOPE)
+endfunction()

+ 8 - 3
3rdparty/libconfig/grammar.h

@@ -1,4 +1,4 @@
-
+#pragma once
 /* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
@@ -32,7 +32,10 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+    
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -109,5 +112,7 @@ typedef union YYSTYPE
 #endif
 
 
-
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
 

+ 2 - 0
3rdparty/libconfig/libconfig.h

@@ -20,6 +20,8 @@
    ----------------------------------------------------------------------------
 */
 
+#pragma once
+
 #ifndef __libconfig_h
 #define __libconfig_h
 

+ 2 - 0
3rdparty/libconfig/parsectx.h

@@ -1,3 +1,5 @@
+#pragma once
+
 /* ----------------------------------------------------------------------------
    libconfig - A library for processing structured configuration files
    Copyright (C) 2005-2010  Mark A Lindner

+ 10 - 0
3rdparty/libconfig/scanctx.h

@@ -1,3 +1,5 @@
+#pragma once
+
 /* ----------------------------------------------------------------------------
    libconfig - A library for processing structured configuration files
    Copyright (C) 2005-2010  Mark A Lindner
@@ -31,6 +33,10 @@
 
 #define MAX_INCLUDE_DEPTH 10
 
+#ifdef	__cplusplus
+extern "C" {
+#endif
+    
 struct scan_context
 {
   config_t *config;
@@ -59,4 +65,8 @@ extern char *scanctx_take_string(struct scan_context *ctx);
 
 extern const char *scanctx_current_filename(struct scan_context *ctx);
 
+#ifdef	__cplusplus
+}
+#endif
+    
 #endif /* __libconfig_scanctx_h */

+ 2 - 0
3rdparty/libconfig/scanner.h

@@ -1,3 +1,5 @@
+#pragma once
+
 #ifndef libconfig_yyHEADER_H
 #define libconfig_yyHEADER_H 1
 #define libconfig_yyIN_HEADER 1

+ 10 - 0
3rdparty/libconfig/strbuf.h

@@ -1,3 +1,5 @@
+#pragma once
+
 /* ----------------------------------------------------------------------------
    libconfig - A library for processing structured configuration files
    Copyright (C) 2005-2010  Mark A Lindner
@@ -26,6 +28,10 @@
 #include <string.h>
 #include <sys/types.h>
 
+#ifdef	__cplusplus
+extern "C" {
+#endif
+    
 typedef struct
 {
   char *string;
@@ -37,4 +43,8 @@ char *strbuf_release(strbuf_t *buf);
 
 void strbuf_append(strbuf_t *buf, const char *text);
 
+#ifdef	__cplusplus
+}
+#endif
+    
 #endif /* __libconfig_strbuf_h */

+ 2 - 0
3rdparty/libconfig/wincompat.h

@@ -1,3 +1,5 @@
+#pragma once
+
 /* ----------------------------------------------------------------------------
    libconfig - A library for processing structured configuration files
    Copyright (C) 2005-2010  Mark A Lindner

+ 10 - 0
3rdparty/mt19937ar/mt19937ar.h

@@ -1,3 +1,5 @@
+#pragma once
+
 /* 
    A C-program for MT19937, with initialization improved 2002/1/26.
    Coded by Takuji Nishimura and Makoto Matsumoto.
@@ -43,6 +45,10 @@
    email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)
 */
 
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
 /* initializes mt[N] with a seed */
 void init_genrand(unsigned long s);
 
@@ -70,3 +76,7 @@ double genrand_real3(void);
 
 /* generates a random number on [0,1) with 53-bit resolution*/
 double genrand_res53(void);
+
+#ifdef	__cplusplus
+}
+#endif

+ 83 - 0
3rdparty/yaml-cpp/CMakeLists.txt

@@ -0,0 +1,83 @@
+cmake_minimum_required(VERSION 2.8)
+
+## start setting
+SET (this_target yaml-cpp)
+PROJECT(${this_target})
+
+find_path( YAML_INCLUDE_DIRS "yaml-cpp/yaml.h"
+	PATHS "${CMAKE_CURRENT_SOURCE_DIR}/include"
+	NO_DEFAULT_PATH )
+find_path( YAML_SOURCE_DIR "regex_yaml.cpp"
+	PATHS "${CMAKE_CURRENT_SOURCE_DIR}/src"
+	NO_DEFAULT_PATH )
+mark_as_advanced( YAML_INCLUDE_DIRS )
+mark_as_advanced( YAML_SOURCE_DIR )
+
+set( YAML_HEADERS
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/yaml.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/traits.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/stlemitter.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/parser.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/ostream_wrapper.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/null.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/noncopyable.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/mark.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/exceptions.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/eventhandler.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/emitterstyle.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/emittermanip.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/emitter.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/emitterdef.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/emitfromevents.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/dll.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/binary.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/anchor.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/type.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/ptr.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/parse.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/node.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/iterator.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/impl.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/emit.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/node/convert.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/contrib/graphbuilder.h"
+    "${YAML_INCLUDE_DIRS}/yaml-cpp/contrib/anchordict.h"
+    CACHE INTERNAL "yaml headers" )
+set( YAML_SOURCES
+	"${YAML_SOURCE_DIR}/binary.cpp"
+  "${YAML_SOURCE_DIR}/convert.cpp"
+  "${YAML_SOURCE_DIR}/directives.cpp"
+  "${YAML_SOURCE_DIR}/emit.cpp"
+  "${YAML_SOURCE_DIR}/emitfromevents.cpp"
+  "${YAML_SOURCE_DIR}/emitter.cpp"
+  "${YAML_SOURCE_DIR}/emitterstate.cpp"
+  "${YAML_SOURCE_DIR}/emitterutils.cpp"
+  "${YAML_SOURCE_DIR}/exceptions.cpp"
+  "${YAML_SOURCE_DIR}/exp.cpp"
+  "${YAML_SOURCE_DIR}/memory.cpp"
+  "${YAML_SOURCE_DIR}/nodebuilder.cpp"
+  "${YAML_SOURCE_DIR}/node.cpp"
+  "${YAML_SOURCE_DIR}/node_data.cpp"
+  "${YAML_SOURCE_DIR}/nodeevents.cpp"
+  "${YAML_SOURCE_DIR}/null.cpp"
+  "${YAML_SOURCE_DIR}/ostream_wrapper.cpp"
+  "${YAML_SOURCE_DIR}/parse.cpp"
+  "${YAML_SOURCE_DIR}/parser.cpp"
+  "${YAML_SOURCE_DIR}/regex_yaml.cpp"
+  "${YAML_SOURCE_DIR}/scanner.cpp"
+  "${YAML_SOURCE_DIR}/scanscalar.cpp"
+  "${YAML_SOURCE_DIR}/scantag.cpp"
+  "${YAML_SOURCE_DIR}/scantoken.cpp"
+  "${YAML_SOURCE_DIR}/simplekey.cpp"
+  "${YAML_SOURCE_DIR}/singledocparser.cpp"
+  "${YAML_SOURCE_DIR}/stream.cpp"
+  "${YAML_SOURCE_DIR}/tag.cpp"
+  "${YAML_SOURCE_DIR}/contrib/graphbuilderadapter.cpp"
+  "${YAML_SOURCE_DIR}/contrib/graphbuilder.cpp"
+	CACHE INTERNAL "yaml sources" )
+set( YAML_DEFINITIONS
+	"-std=c++11"
+	CACHE INTERNAL "yaml definitions" )
+include_directories(${YAML_INCLUDE_DIRS} ${YAML_SOURCE_DIR})
+message(STATUS "YAML_INCLUDE_DIRS : ${YAML_INCLUDE_DIRS}, YAML_SOURCE_DIR=${YAML_SOURCE_DIR}")
+ADD_LIBRARY(${this_target} STATIC ${YAML_SOURCES} )

+ 35 - 55
CMakeLists.txt

@@ -28,20 +28,39 @@
 #   changes to some CPack generators
 #   CYGWIN no longer defines WIN32
 #   CMP0017: Prefer files from the CMake module directory when including from there.
+# Update to 3.1 for CMAKE_CXX_STANDARD cross support definition
 set( CMAKE_LEGACY_CYGWIN_WIN32 0 )
-cmake_minimum_required( VERSION 2.8.8 )
-project( rAthena C )
+cmake_minimum_required( VERSION 3.1 )
+project( rAthena )
 if( CYGWIN )
 	unset( WIN32 )
 endif()
+set(CMAKE_CXX_STANDARD 11) # C++11...
+set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required...
+#set(CMAKE_CXX_EXTENSIONS OFF) #...without compiler extensions like gnu++11
 
+#actually this might be misleading for arm...
+if( CMAKE_SIZEOF_VOID_P EQUAL 4 )
+	set(architecture x86)
+elseif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
+	set(architecture x64)
+else()
+	message( FATAL_ERROR "unexpected architecture (CMAKE_SIZEOF_VOID_P is ${CMAKE_SIZEOF_VOID_P})" )
+endif()
 
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/${suffixInstallStr})
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib/${suffixInstallStr})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
+set(CMAKE_C_CREATE_SHARED_LIBRARY)
+set(CMAKE_CXX_CREATE_SHARED_LIBRARY)
+set(CMAKE_DEBUG_POSTFIX "d")
+set(CMAKE_RELEASE_POSTFIX "r")
 #
 # Prevent building in the source directory by default
 #
+option( ALLOW_SAME_DIRECTORY "Allow CMake to build in the source directory." OFF )
 if( ALLOW_SAME_DIRECTORY )
 elseif( "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}" )
-	option( ALLOW_SAME_DIRECTORY "Allow CMake to build in the source directory." OFF )
 	message( FATAL_ERROR
 		"Do not use the source directory to build your files, instead delete CMakeCache.txt, create a separate folder and build there.\n"
 		"Example: (build in subdir 'build' and install to source dir)\n"
@@ -105,47 +124,12 @@ if(GIT_FOUND)
 	endif()
 endif()
 
-#
-# Find svnversion
-#
-message( STATUS "Detecting svnversion" )
-find_program( SVNVERSION_EXECUTABLE svnversion )
-mark_as_advanced( SVNVERSION_EXECUTABLE )
-if( SVNVERSION_EXECUTABLE )
-	message( STATUS "Found svnversion: ${SVNVERSION_EXECUTABLE}" )
-endif()
-message( STATUS "Detecting svnversion - done" )
-#
-# Find Subversion
-#
-message( STATUS "Detecting Subversion" )
-find_package( Subversion )
-message( STATUS "Detecting Subversion - done" )
-#
-# SVNVERSION
-#
-if( SVNVERSION_EXECUTABLE )
-	message( STATUS "Getting svn version" )
-	execute_process( COMMAND ${SVNVERSION_EXECUTABLE} ${PROJECT_SOURCE_DIR}
-		OUTPUT_VARIABLE SVNVERSION
-		OUTPUT_STRIP_TRAILING_WHITESPACE )
-	if( SVNVERSION MATCHES "^Unversioned" )
-		set( SVNVERSION )
-	endif()
-	string( REGEX REPLACE "[^1234567890MSexported]" "_" SVNVERSION "${SVNVERSION}" )
-	message( STATUS "Found SVNversion: ${SVNVERSION}" )
-	message( STATUS "Getting svn version - done" )
-endif()
-if( Subversion_FOUND AND SVNVERSION )
-	message( STATUS "Getting svn branch" )
-	Subversion_WC_INFO( ${PROJECT_SOURCE_DIR} rAthena )
-	if( rAthena_WC_URL )
-		string( REGEX MATCH "[^/]+$" BRANCH ${rAthena_WC_URL} )
-		set( SVNVERSION "${BRANCH}-${SVNVERSION}" )
-		message( STATUS "Found branch: ${BRANCH}" )
-	endif()
-	message( STATUS "Getting svn branch - done" )
-endif()
+include(GetGitVersion)
+get_git_version()
+
+#include(GetSvnVersion)
+#get_svn_version(SVN_VERSION)
+#message( STATUS "SVN_VERSION: ${SVN_VERSION}" )
 
 
 #
@@ -198,12 +182,12 @@ endif()
 #
 if( NOT MSVC )
 message( STATUS "Detecting networking library (socket/nsl/ws2_32)" )
-set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} )
-find_function_library( bind FUNCTION_BIND_LIBRARIES socket ws2_32 )
-if( FUNCTION_BIND_LIBRARIES )
-	message( STATUS "Adding global library: ${FUNCTION_BIND_LIBRARIES}" )
-	set_property( CACHE GLOBAL_LIBRARIES  PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_BIND_LIBRARIES} )
-endif()
+#set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} )
+#find_function_library( bind FUNCTION_BIND_LIBRARIES socket ws2_32 )
+#if( FUNCTION_BIND_LIBRARIES )
+#	message( STATUS "Adding global library: ${FUNCTION_BIND_LIBRARIES}" )
+#	set_property( CACHE GLOBAL_LIBRARIES  PROPERTY VALUE ${GLOBAL_LIBRARIES} ${FUNCTION_BIND_LIBRARIES} )
+#endif()
 set( CMAKE_REQUIRED_LIBRARIES ${GLOBAL_LIBRARIES} )
 find_function_library( gethostbyname FUNCTION_GETHOSTBYNAME_LIBRARIES nsl )
 if( FUNCTION_GETHOSTBYNAME_LIBRARIES )
@@ -590,11 +574,7 @@ add_subdirectory( src )
 #####################################################################
 # final checks and warnings
 #
-if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
-	message( WARNING "64bit should work, but is not recommended." )
-elseif( NOT CMAKE_SIZEOF_VOID_P EQUAL 4 )
-	message( FATAL_ERROR "unexpected architecture (CMAKE_SIZEOF_VOID_P is ${CMAKE_SIZEOF_VOID_P})" )
-endif()
+
 list( LENGTH  TARGET_LIST  _LEN )
 if( _LEN EQUAL 0 )
 	message( FATAL_ERROR "no targets available" )

+ 5 - 4
conf/battle/items.conf

@@ -106,10 +106,11 @@ item_flooritem_check: yes
 // 4 - Character
 default_bind_on_equip: 4
 
-// Allow selling of bound items as Itemshop currency?
-// no = Bound items are unable to be sold at Itemshops
-// yes = Bound items are able to be sold at Itemshops
-allow_bound_sell: no
+// Allow selling of bound/sell restricted items as Itemshop currency? (Note 3)
+// 0x0 = Bound/sell restricted items are unable to be sold at Itemshops
+// 0x1 = Bound items are able to be sold at Itemshops
+// 0x2 = Sell restricted items are able to be sold at Itemshops
+allow_bound_sell: 0x0
 
 // Turn on event refine chance (see db/{pre-}re/refine_db.yml)
 // no = normal refine chances in effect (official/default value)

+ 1 - 1
conf/char_athena.conf

@@ -112,7 +112,7 @@ save_log: yes
 // Max number of start points is MAX_STARTPOINT in char.h (default 5)
 // Location is randomly picked on character creation.
 // NOTE: For Doram, this requires client 20151001 or newer.
-start_point: iz_int,97,90:iz_int01,97,90:iz_int02,97,90:iz_int03,97,90:iz_int04,97,90
+start_point: iz_int,18,26:iz_int01,18,26:iz_int02,18,26:iz_int03,18,26:iz_int04,18,26
 start_point_pre: new_1-1,53,111:new_2-1,53,111:new_3-1,53,111:new_4-1,53,111:new_5-1,53,111
 start_point_doram: lasa_fild01,48,297
 

+ 4 - 3
conf/msg_conf/map_msg.conf

@@ -753,7 +753,7 @@
 719: Personal rate information will be shown.
 
 //Skill messages
-720: %s is required.
+//720: Free
 721: [%s] Poison effect was applied to the weapon.
 //722: Free
 
@@ -1621,7 +1621,8 @@
 1475: ---- My Channels ----
 1476: You have not joined any channels.
 
-//1477 free
+// @effect
+1477: Please enter a valid effect id in the range from %d to %d.
 
 // @partysharelvl
 1478: Party share level range has been changed successfully.
@@ -1667,4 +1668,4 @@
 1504: You've entered a PK Zone (safe until level %d).
 
 //Custom translations
-//import: conf/msg_conf/import/map_msg_eng_conf.txt
+import: conf/msg_conf/import/map_msg_eng_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_chn.conf

@@ -1498,4 +1498,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Custom translations
-//import: conf/msg_conf/import/map_msg_chn_conf.txt
+import: conf/msg_conf/import/map_msg_chn_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_frn.conf

@@ -1490,4 +1490,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Custom translations
-//import: conf/msg_conf/import/map_msg_frn_conf.txt
+import: conf/msg_conf/import/map_msg_frn_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_idn.conf

@@ -1606,4 +1606,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Bila ada terjemahan lain
-//import: conf/msg_conf/import/map_msg_idn_conf.txt
+import: conf/msg_conf/import/map_msg_idn_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_por.conf

@@ -1467,4 +1467,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Custom translations
-//import: conf/msg_conf/import/map_msg_por_conf.txt
+import: conf/msg_conf/import/map_msg_por_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_rus.conf

@@ -1490,4 +1490,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 // Ďîëüçîâŕňĺëüńęčé ďĺđĺâîä
-//import: conf/msg_conf/import/map_msg_rus_conf.txt
+import: conf/msg_conf/import/map_msg_rus_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_spn.conf

@@ -1470,4 +1470,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Traducciones personalizadas
-//import: conf/msg_conf/import/map_msg_spn_conf.txt
+import: conf/msg_conf/import/map_msg_spn_conf.txt

+ 1 - 1
conf/msg_conf/map_msg_tha.conf

@@ -1509,4 +1509,4 @@
 1498: You cannot create a guild because you are in a clan.
 
 //Custom translations
-//import: conf/msg_conf/import/map_msg_tha_conf.txt
+import: conf/msg_conf/import/map_msg_tha_conf.txt

Datei-Diff unterdrückt, da er zu groß ist
+ 140 - 548
configure


+ 2 - 1
configure.in

@@ -4,6 +4,8 @@
 AC_INIT(rAthena)
 AC_REVISION($Revision$)
 AC_PREREQ([2.59])
+AC_LANG([C++])
+AC_LANG_COMPILER_REQUIRE
 AC_CONFIG_SRCDIR([src/common/cbasetypes.h])
 AC_CONFIG_FILES([Makefile src/common/Makefile])
 AC_CONFIG_FILES([3rdparty/mt19937ar/Makefile 3rdparty/libconfig/Makefile 3rdparty/yaml-cpp/Makefile])
@@ -437,7 +439,6 @@ AC_PROG_CXX
 AC_PATH_PROG(AR, ar)
 AC_LANG([C++])
 
-
 CFLAGS="$CFLAGS -pipe -ffast-math -Wall"
 CPPFLAGS="$CPPFLAGS -I../common"
 CXXFLAGS="$CXXFLAGS -std=c++11"

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1152
db/const.txt


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

@@ -1526,7 +1526,7 @@
 2704,Golden_Accessory,Golden Accessories,4,20,,100,,4,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bMdef,4; },{},{}
 2705,Golden_Accessory2,Golden Accessories,4,20,,100,,4,,0,0xFFFFFFFF,7,2,136,,,,,{ bonus2 bAddMonsterDropItem,12018,500; },{},{}
 2706,Handcuff,Arrest Handcuffs,4,0,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
-2707,GUSLI,GUSLI,4,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
+2707,Gusli,GUSLI,4,20,,100,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{},{},{}
 2708,Chinese_Handicraft,Chinese Handicraft,4,0,,50,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus3 bAutoSpell,"MG_FIREBOLT",5,300; },{},{}
 2709,5_Anniversary_Coin,5th Anniversary Coin,4,2,,0,,0,,0,0xFFFFFFFF,7,2,136,,0,0,0,{ bonus bAtkRate,5; bonus bMatkRate,5; },{},{}
 2710,Bloody_Iron_Ball_C,Bloody Iron Ball,4,1,,0,,0,,0,0xFFFFFFFE,7,2,136,,0,0,0,{ bonus bBaseAtk,30; },{},{}
@@ -2084,7 +2084,7 @@
 4448,Cornus_Card,Cornus Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5; },{},{}
 4449,Dark_Shadow_Card,Dark Shadow Card,6,20,,10,,,,,,,,32,,,,,{ bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5; },{},{}
 4450,Banshee_Master_Card,Banshee Master Card,6,20,,10,,,,,,,,16,,,,,{ bonus bInt,1; bonus bMatk,10; },{},{}
-4451,Entweihen_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,100; },{},{}
+4451,Ant_Buyanne_Card,Entweihen Crothen Card,6,20,,10,,,,,,,,16,,,,,{ bonus bMatk,100; },{},{}
 4452,Centipede_Larva_Card,Centipede Larva Card,6,20,,10,,,,,,,,2,,,,,{ bonus bInt,1; bonus bMatk,3; },{},{}
 4453,Hilsrion_Card,Hillsrion Card,6,20,,10,,,,,,,,2,,,,,{ bonus bBaseAtk,25; },{},{}
 // Armor Enchant System
@@ -2149,8 +2149,8 @@
 4757,Luck8,LUK+8,6,20,,10,,,,,,,,,,,,,{ bonus bLuk,8; },{},{}
 4758,Luck9,LUK+9,6,20,,10,,,,,,,,,,,,,{ bonus bLuk,9; },{},{}
 4759,Luck10,LUK+10,6,20,,10,,,,,,,,,,,,,{ bonus bLuk,10; },{},{}
-4760,Magic_Attack1,MATK+1%,6,20,,10,,,,,,,,,,,,,{ bonus bMatkRate,1; },{},{}
-4761,Magic_Attack2,MATK+2%,6,20,,10,,,,,,,,,,,,,{ bonus bMatkRate,2; },{},{}
+4760,Matk1,MATK+1%,6,20,,10,,,,,,,,,,,,,{ bonus bMatkRate,1; },{},{}
+4761,Matk2,MATK+2%,6,20,,10,,,,,,,,,,,,,{ bonus bMatkRate,2; },{},{}
 4762,Evasion6,FLEE+6,6,20,,10,,,,,,,,,,,,,{ bonus bFlee,6; },{},{}
 4763,Evasion12,FLEE+12,6,20,,10,,,,,,,,,,,,,{ bonus bFlee,12; },{},{}
 4764,Critical5,CRI+5,6,20,,10,,,,,,,,,,,,,{ bonus bCritical,5; },{},{}
@@ -2750,10 +2750,10 @@
 //5571,Rasta_Wig,Rasta_Wig,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,552,{ bonus bStr,1; },{},{}
 5572,Savage_Baby_Hat,Savage Babe Hat,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,1,1,553,{ bonus bVit,2; },{},{}
 5573,Bogy_Horn,Dokebi Horn,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,554,{},{},{}
-5574,Pencil_in_Mouth,Well-Chewed Pencil,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,10,0,555,{ bonus bdex,2; bonus bHitRate,3; },{},{}
+5574,Pencil_In_Mouth,Well-Chewed Pencil,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,10,0,555,{ bonus bdex,2; bonus bHitRate,3; },{},{}
 5575,Onigiri_Hat,Rice Ball Hat,4,20,,100,,6,,1,0xFFFFFFFF,7,2,256,,30,0,556,{},{},{}
 //5576,Japan_Winecup,Wine Cup,4,20,,100,,1,,0,0xFFFFFFFF,7,2,1,,0,0,557,{},{},{}
-5577,Dark_Knight_Mask_,Dark Knight Mask,4,,,3000,,5,,0,0xFFFFFFFF,7,2,769,,80,1,479,{ bonus bStr,3; },{},{}
+5577,Dark_Knight_MaskB,Dark Knight Mask,4,,,3000,,5,,0,0xFFFFFFFF,7,2,769,,80,1,479,{ bonus bStr,3; },{},{}
 5578,Voyage_Hat,Voyage_Hat,4,200,,10,,1,,0,0xFFFFFFFF,7,2,256,,0,1,236,{ bonus bAgi,2; },{},{}
 5579,Wanderer's_Sakkat,Wanderer's Sakkat,4,20,,300,,2,,1,0xFFFFFFFF,7,2,768,,70,1,558,{ bonus bAgi,2; },{},{}
 //5580,Red_Beret,Red Beret,4,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,0,559,{ bonus bAllStats,3; bonus bMdef,3; },{},{}
@@ -2768,8 +2768,8 @@
 //5589,Leo_Diadem,Leo Diadem,4,20,,300,,3,,0,0xFFFFFFFF,7,2,256,,70,1,566,{ bonus bDex,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bFlee,10; bonus bAspdRate,3; autobonus "{ bonus bSplashRange,1; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; } },{},{}
 5590,K_Poring_Cake_Cap,Poring Cake Hat,4,20,,200,,1,,0,0xFFFFFFFF,7,2,256,,0,1,417,{},{},{}
 //5591,Desert_Prince,Desert Prince,4,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,30,0,567,{},{},{}
-5592,Sigrun's_Wings,Sigrun's Wings,4,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,80,0,568,{ if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bStr,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||class==Job_Ninja||class==Job_Soul_Linker) bonus bInt,1; else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bDex,1; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,80; bonus bMaxSP,30; } },{},{}
-5593,Rabbit_Bonnet_,Rabbit Bonnet,4,20,,200,,1,,1,0xFFFFFFFF,7,2,768,,1,1,549,{},{},{}
+5592,Sigrun's_Wing,Sigrun's Wings,4,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,80,0,568,{ if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bStr,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||class==Job_Ninja||class==Job_Soul_Linker) bonus bInt,1; else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bDex,1; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,80; bonus bMaxSP,30; } },{},{}
+5593,K_Rabbit_Bonnet,Rabbit Bonnet,4,20,,200,,1,,1,0xFFFFFFFF,7,2,768,,1,1,549,{},{},{}
 5594,Donut_In_Mouth,Donut In Mouth,4,20,,50,,1,,0,0xFFFFFFFF,7,2,1,,1,0,569,{},{},{}
 //5595,Eye_Of_Juno,Eye Of Juno,4,20,,400,,2,,1,0xFFFFFFFF,7,2,256,,1,1,570,{ bonus bMdef,2; },{},{}
 5596,4Leaf_Clover_In_Mouth,4Leaf Clover In Mouth,4,20,,0,,2,,0,0xFFFFFFFF,7,2,1,,1,0,571,{ bonus bMdef,2; },{},{}
@@ -2835,7 +2835,7 @@
 //5656,Scooter_Hat_J,Scooter Helmet,4,20,,1000,,7,,1,0xFFFFFFFF,7,2,256,,50,1,588,{ bonus bUnbreakableHelm,0; },{},{}
 //5657,Antique_Pipe_J,Captain's Pipe,4,20,,100,,0,,0,0xFFFFFFFF,7,2,1,,30,0,383,{},{},{}
 5658,Imp_Hat,Imp Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,589,{ bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5; },{},{}
-5659,Sleeper_Hat,Sleeper Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{}
+5659,Sleepr_Hat,Sleeper Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,590,{ bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5; },{},{}
 5660,Gryphon_Hat,Gryphon Hat,4,20,,400,,1,,0,0xFFFFFFFF,7,2,256,,1,1,591,{ bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5; },{},{}
 //5661,Red_Pirate_Bandana,Red Pirate Banada,4,0,,0,,3,,0,0xFFFFFFFF,7,2,256,,10,1,592,{ bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bCastRate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,30; },{},{}
 //5662,Libra_Crown,Libra Crown,4,10,,300,,3,,0,0xFFFFFFFF,7,2,256,,1,1,593,{ bonus bDex,3; },{},{}
@@ -4221,7 +4221,7 @@
 7853,Pass_F3,iPod nano Raffle Ticket,3,20,,10,,,,,,,,,,,,,{},{},{}
 7854,Pass_CF,Comodo Festival Ticket,3,20,,10,,,,,,,,,,,,,{},{},{}
 7855,Heart,Heart,3,20,,10,,,,,,,,,,,,,{},{},{}
-7856,Girl_Bunch_Of_Flower,Girl's Bouquet,3,20,,50,,,,,,,,,,,,,{},{},{}
+7856,Girl_Bunch_Of_Flower_,Girl's Bouquet,3,20,,50,,,,,,,,,,,,,{},{},{}
 7857,Handmade_Kitty_Doll,Hand-made Kitty Doll,3,20,,30,,,,,,,,,,,,,{},{},{}
 7858,Dragonball_Yellow_,Dragonball Yellow,3,20,,10,,,,,,,,,,,,,{},{},{}
 7859,Game_Ticket,Game Ticket,3,20,,100,,,,,,,,,,,,,{},{},{}
@@ -4551,7 +4551,7 @@
 11529,MAAMOUL_,Maamoul,0,500,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 120,60; },{},{}
 11530,Jujube,Jujube,0,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 30,0; },{},{}
 11531,Coffee,Coffee,0,10,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 0,10; },{},{}
-11701,Girl_Bunch_Of_Flower_,Girl's Bouquet,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(105,145),0; },{},{}
+11701,Girl_Bunch_Of_Flower,Girl's Bouquet,0,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(105,145),0; },{},{}
 11702,Moon_Cookie,Moon Cookie,0,0,,300,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 11703,Mysterious_Blood,Mystery Blood,0,0,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal 0,rand(25,35); },{},{}
 11704,KETUPAT_F,Ketupat,0,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemheal rand(70,90),0; },{},{}
@@ -4953,9 +4953,9 @@
 12389,Runstone_Storm,Pertz Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_STORMBLAST",1; } */ },{},{}
 12390,Runstone_Millennium,Verkana Runestone For Apprentice,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ /* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */ },{},{}
 12391,Lucky_Egg_C,Lucky Egg,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-12392,Repair_A,Repair A,2,220,,100,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(200,300),0; } },{},{}
-12393,Repair_B,Repair B,2,500,,140,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(300,400),0; } },{},{}
-12394,Repair_C,Repair C,2,1100,,180,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(400,500),0; } },{},{}
+12392,RepairA,Repair A,2,220,,100,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(200,300),0; } },{},{}
+12393,RepairB,Repair B,2,500,,140,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(300,400),0; } },{},{}
+12394,RepairC,Repair C,2,1100,,180,,,,,0x00000400,8,2,,,,,,{ if ( checkmadogear() ) { itemheal rand(400,500),0; } },{},{}
 12395,Tantanmen,Tantan Noodle,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1519; },{},{}
 12396,Fools_Day_Box,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "AL_TELEPORT",1; else if(.@rnd==2) itemskill "AL_TELEPORT",3; else if(.@rnd==3) percentheal 50,0; else if(.@rnd==4) percentheal 0,50; else if(.@rnd==5) end; else if(.@rnd==6) getitem 512,1; else if(.@rnd==7) itemskill "ALL_REVERSEORCISH",1; else if(.@rnd==8) specialeffect2 EF_MAPPILLAR2; else if(.@rnd==9) specialeffect2 EF_ANGEL2; else specialeffect2 EF_COIN; },{},{}
 12397,Fools_Day_Box2,Gift Box?,11,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ .@rnd = rand(1,10); if(.@rnd==1) itemskill "TF_DETOXIFY",1; else if(.@rnd==2) itemskill "TF_PICKSTONE",1; else if(.@rnd==3) itemskill "BA_FROSTJOKER",1; else if(.@rnd==4) itemskill "DC_SCREAM",1; else if(.@rnd==5) end; else if(.@rnd==6) getitem 909,1; else if(.@rnd==7) itemskill "AL_RUWACH",1; else if(.@rnd==8) specialeffect2 EF_BEGINASURA; else if(.@rnd==9) specialeffect2 EF_MVP; else specialeffect2 EF_CURSEATTACK; },{},{}
@@ -4964,7 +4964,7 @@
 12400,Water_Of_Blessing_,Water Of Blessing,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12401,Rune_Kn_Test_Int,Rune Kn Test Int,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_INCINT,300000,40; },{},{}
 12402,29Fruit,29Fruit,2,0,,0,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 5,5; },{},{}
-12403,Lucky_Egg2,Lucky Egg2,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+12403,Lucky_Egg_C2,Lucky Egg2,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12404,Acti_Potion,Acti Potion,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12405,Underripe_Yggseed,Underripe Yggseed,2,20,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 30,30; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,140000,5; },{},{}
 12406,Psychic_ArmorS,Psychic ArmorS,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
@@ -4982,23 +4982,23 @@
 12418,Full_SwingK,Full SwingK,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FULL_SWING_K,500000,50; },{},{}
 12419,Mana_Plus,Mana Plus,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MANA_PLUS,500000,50; },{},{}
 12420,Stamina_Up_M,Stamina Up M,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MUSTLE_M,500000,5; },{},{}
-12421,Falmons_F,Falmons F,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LIFE_FORCE_F,500000,5; },{},{}
+12421,Digestive_F,Falmons F,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LIFE_FORCE_F,500000,5; },{},{}
 12422,HP_Increase_PotionS,HP Increase Potion (Small),2,100,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,1; percentheal 1,0; },{},{}
 12423,HP_Increase_PotionM,HP Increase Potion (Medium),2,100,,40,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,2; percentheal 2,0; },{},{}
 12424,HP_Increase_PotionL,HP Increase Potion (Large),2,100,,80,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,3; percentheal 5,0; },{},{}
 12425,SP_Increase_PotionS,SP Increase Potion (Small),2,100,,20,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,1; percentheal 0,2; },{},{}
 12426,SP_Increase_PotionM,SP Increase Potion (Medium),2,100,,40,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,2; percentheal 0,4; },{},{}
 12427,SP_Increase_PotionL,SP Increase Potion (Large),2,100,,80,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,3; percentheal 0,8; },{},{}
-12428,Concentrated_White_Potion_Z,Concentrated White Potion Z,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXTRACT_WHITE_POTION_Z,500000,20; heal 1000,0; },{},{}
-12429,Savage_Full_Roast,Savage Full Roast,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SAVAGE_STEAK,300000,20; },{},{}
-12430,Cocktail_Warg_Blood,Cocktail Warg Blood,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_COCKTAIL_WARG_BLOOD,300000,20; },{},{}
-12431,Minor_Stew,Minor Stew,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MINOR_BBQ,300000,20; },{},{}
-12432,Siroma_Iced_Tea,Siroma Iced Tea,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SIROMA_ICE_TEA,300000,20; },{},{}
-12433,Drosera_Herb_Salad,Drosera Herb Salad,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DROCERA_HERB_STEAMED,300000,20; },{},{}
-12434,Petite_Tail_Noodles,Petite Tail Noodles,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_PUTTI_TAILS_NOODLES,300000,20; },{},{}
-12435,Black_Mass,Black Mass,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_STOMACHACHE,60000,rand(5,10); },{},{}
-12436,Vitata_500,Vitata 500,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_VITATA_500,500000,0; itemheal 0,200; },{},{}
-12437,Concentrated_Ceromain_Soup,Concentrated Ceromain Soup,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXTRACT_SALAMINE_JUICE,500000,10; },{},{}
+12428,Enrich_White_PotionZ,Concentrated White Potion Z,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXTRACT_WHITE_POTION_Z,500000,20; heal 1000,0; },{},{}
+12429,Savage_BBQ,Savage Full Roast,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SAVAGE_STEAK,300000,20; },{},{}
+12430,Wug_Blood_Cocktail,Cocktail Warg Blood,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_COCKTAIL_WARG_BLOOD,300000,20; },{},{}
+12431,Minor_Brisket,Minor Stew,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MINOR_BBQ,300000,20; },{},{}
+12432,Siroma_Icetea,Siroma Iced Tea,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_SIROMA_ICE_TEA,300000,20; },{},{}
+12433,Drocera_Herb_Stew,Drosera Herb Salad,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DROCERA_HERB_STEAMED,300000,20; },{},{}
+12434,Petti_Tail_Noodle,Petite Tail Noodles,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_PUTTI_TAILS_NOODLES,300000,20; },{},{}
+12435,Black_Thing,Black Mass,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_STOMACHACHE,60000,rand(5,10); },{},{}
+12436,Vitata500,Vitata 500,0,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_VITATA_500,500000,0; itemheal 0,200; },{},{}
+12437,Enrich_Celermine_Juice,Concentrated Ceromain Soup,2,10,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXTRACT_SALAMINE_JUICE,500000,10; },{},{}
 12438,F_Giant_Fly_Wing,F Giant Fly Wing,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12439,F_Battle_Manual,F Battle Manual,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12440,F_Insurance,F Insurance,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
@@ -5141,7 +5141,7 @@
 12579,Ring_Of_Valkyrie_Box,Ring Of Valkyrie Box,2,20,,0,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12580,Vending_Search_Scroll,Universal Catalog Silver,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,0; },{},{}
 12581,Vending_Search_Scroll2,Universal Catalog Gold,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,1; },{},{}
-12591,Vending_Search_Scroll3,Universal Catalog Bronze,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,1; },{},{}
+12591,Uni_Catalog_Bz,Universal Catalog Bronze,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ searchstores 10,1; },{},{}
 12701,Old_Blue_Box_F,Old Blue Box,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 12702,Old_Bleu_Box,Old Navy Box,2,0,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getrandgroupitem(IG_BleuBox),1; getrandgroupitem(IG_BleuBox),1; },{},{}
 12703,Holy_Egg_2,Holy Egg,11,0,,50,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
@@ -5162,7 +5162,7 @@
 12717,Poison_Paralysis,Paralyze,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_PARALYSE,300000,0,10,0; },{},{}
 12718,Poison_Leech,Leech End,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_LEECHESEND,300000,0,10,0; },{},{}
 12719,Poison_Oblivion,Oblivion Curse,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_OBLIVIONCURSE,300000,0,10,0; },{},{}
-12720,Poison_Disheart,Disheart,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DEATHHURT,300000,0,10,0; },{},{}
+12720,Poison_Contamination,Disheart,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DEATHHURT,300000,0,10,0; },{},{}
 12721,Poison_Numb,Toxin,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_TOXIN,300000,0,10,0; },{},{}
 12722,Poison_Fever,Pyrexia,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_PYREXIA,300000,0,10,0; },{},{}
 12723,Poison_Laughing,Magic Mushroom,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_MAGICMUSHROOM,300000,0,10,0; },{},{}
@@ -5530,8 +5530,8 @@
 13518,Weapon_Card_Scroll_Box,Weapon Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13558,1; },{},{}
 13519,Armor_Card_Scroll_Box,Armor Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13559,1; },{},{}
 13520,Helmet_Card_Scroll_Box,Helmet Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13560,1; },{},{}
-13521,Garment_Card_Scroll_Box,Garment Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13561,1; },{},{}
-13522,Shield_Card_Scroll_Box,Shield Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13562,1; },{},{}
+13521,Hood_Card_Scroll_Box,Garment Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13561,1; },{},{}
+13522,Hood_Card_Scroll_Box2,Shield Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13562,1; },{},{}
 13523,Shoes_Card_Scroll_Box,Shoes Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13563,1; },{},{}
 13524,Accy_Card_Scroll_Box,Accessory Card Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 13564,1; },{},{}
 13525,Zeny_Scroll_Box,Zeny Pet Egg Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14508,1; },{},{}
@@ -5920,10 +5920,10 @@
 13908,Deviruchi_Set_Box,XM Deviruchi Set Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5227,1; getitem 5228,1; getitem 5229,1; },{},{}
 13909,MVP_Hunt_Box,MVP Hunting Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 7621,1; getitem 12210,1; getitem 12221,1; getitem 12214,3; },{},{}
 13910,Brewing_Box,XM Brewing Set Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12204,10; getitem 12205,10; getitem 12206,10; },{},{}
-13911,Christmas_Pet_Scroll,Christmas Pet Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-13912,Pty_Blessing_Box,Party Blessing 10 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14588,10; },{},{}
-13913,Pty_Inc_Agi_Box,Party Increase Agi 10 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14589,10; },{},{}
-13914,Pty_Assumptio_Box,Party Assumptio 5 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14590,10; },{},{}
+13911,Xmas_Pet_Scroll,Christmas Pet Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+13912,Party_Blessing_Box,Party Blessing 10 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14588,10; },{},{}
+13913,Party_Inc_Agi_Box,Party Increase Agi 10 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14589,10; },{},{}
+13914,Party_Assumptio_Box,Party Assumptio 5 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14590,10; },{},{}
 13915,Love_Angel_Box,Love Angel Magic Powder Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 12287,604800; },{},{}
 13916,Squirrel_Box,Squirrel Magic Powder Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 12288,604800; },{},{}
 13917,Gogo_Box,Gogo Magic Powder Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 12289,604800; },{},{}
@@ -5945,21 +5945,21 @@
 13933,Undine_Box,Undine Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 4350,4; },{},{}
 13934,Salamander_Box,Salamander Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 4380,4; },{},{}
 13935,Soul_Box,Soul Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 4388,4; },{},{}
-13936,Noum_Box,Gnome Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 4335,4; },{},{}
+13936,Noum_Bpx,Gnome Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 4335,4; },{},{}
 13937,Robo_Eye_Box,Robo Eye Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5325,1; },{},{}
 13938,Twin_Ribbon_Box,Maiden's Twin Ribbon Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5187,1; },{},{}
 //13939,Diadem_Box,Diadem Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5313,1; },{},{}
 13940,Siege_Tele_Scroll_Box,WoE Teleport Scroll 100 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14591,100; },{},{}
-13941,TW_Valentine_Scroll,Taiwan Valentine Scroll,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+13941,Valentine_Scroll_TW,Taiwan Valentine Scroll,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 13942,Love_Angel_Box_1m,Love Angel Magic Powder Box 30 Days,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14009,1; },{},{}
 13943,Squirrel_Box_1m,Squirrel Magic Powder Box 30 Days,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14010,1; },{},{}
 13944,Gogo_Box_1m,Gogo Magic Powder Box 30 Days,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14011,1; },{},{}
-13945,BRO_SM_Package,Brazil Swordsman Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2317,1; getitem 2106,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 2229,1; getitem 2266,1; },{},{}
-13946,BRO_MG_Package,Brazil Magician Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2322,1; getitem 2102,1; getitem 2104,1; getitem 2504,1; getitem 4003,1; getitem 4077,1; getitem 2607,2; getitem 5027,1; },{},{}
-13947,BRO_AC_Package,Brazil Acolyte Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2326,1; getitem 2104,1; getitem 2404,1; getitem 2504,1; getitem 4003,1; getitem 4100,1; getitem 2607,2; getitem 2217,1; },{},{}
-13948,BRO_AR_Package,Brazil Archer package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2331,1; getitem 1716,1; getitem 2406,1; getitem 2504,1; getitem 4064,1; getitem 4102,1; getitem 2607,2; getitem 2285,1; },{},{}
-13949,BRO_MC_Package,Brazil Merchant Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2315,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 5021,1; },{},{}
-13950,BRO_TF_Package,Brazil Thief Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2336,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4097,1; getitem 4102,1; getitem 2607,2; getitem 2274,1; },{},{}
+13945,Br_SwordPackage,Brazil Swordsman Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2317,1; getitem 2106,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 2229,1; getitem 2266,1; },{},{}
+13946,Br_MagePackage,Brazil Magician Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2322,1; getitem 2102,1; getitem 2104,1; getitem 2504,1; getitem 4003,1; getitem 4077,1; getitem 2607,2; getitem 5027,1; },{},{}
+13947,Br_AcolPackage,Brazil Acolyte Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2326,1; getitem 2104,1; getitem 2404,1; getitem 2504,1; getitem 4003,1; getitem 4100,1; getitem 2607,2; getitem 2217,1; },{},{}
+13948,Br_ArcherPackage,Brazil Archer package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2331,1; getitem 1716,1; getitem 2406,1; getitem 2504,1; getitem 4064,1; getitem 4102,1; getitem 2607,2; getitem 2285,1; },{},{}
+13949,Br_MerPackage,Brazil Merchant Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2315,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 5021,1; },{},{}
+13950,Br_ThiefPackage,Brazil Thief Package,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 2336,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4097,1; getitem 4102,1; getitem 2607,2; getitem 2274,1; },{},{}
 13951,Wasteland_Outlaw_Box,Western Outlaw Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13109,604800; },{},{}
 13952,Lever_Action_Rifle_Box,Lever Action Rifle Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 13170,604800; },{},{}
 13953,All_In_One_Ring_Box,All In One Ring Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ rentitem 2741,604800; },{},{}
@@ -6007,9 +6007,9 @@
 13995,Speed_Up_Potion_Box10,Speed Potion 10 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12016,10; },{},{}
 13996,Big_Bun_Box100,Big Bun 100 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14522,100; },{},{}
 13997,Big_Bun_Box500,Big Bun 500 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14522,500; },{},{}
-13998,Giant_Flywing_Box500,Giant Fly Wing 500 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12212,500; },{},{}
-13999,Pill_Box100,Pill 100 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14523,100; },{},{}
-14000,Pill_Box500,Pill 500 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14523,500; },{},{}
+13998,Giant_Fly_Wing_Box500,Giant Fly Wing 500 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12212,500; },{},{}
+13999,Pill__Box100,Pill 100 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14523,100; },{},{}
+14000,Pill__Box500,Pill 500 Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14523,500; },{},{}
 14001,Basic_Siege_Supply_Box,Recruit Siege Supply Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 11503,25; getitem 11504,10; },{},{}
 14002,Adv_Siege_Supply_Box,Veteran Siege Supply Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 11503,50; getitem 11504,20; },{},{}
 14003,Elite_Siege_Supply_Box,Elite Siege Supply Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 11503,100; getitem 11504,50; },{},{}
@@ -6311,7 +6311,7 @@
 14301,Ifrit's_Ear_Box,Ears Of Ifrit Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5421,1; },{},{}
 14304,Scuba_Mask_Box,Scuba Mask Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5397,1; },{},{}
 14314,Phreeoni_Scroll_Box,Phreeoni Scroll Box,2,,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14597,10; },{},{}
-14315,Ghostring_Scroll_Box,Ghostring Scroll Box,2,,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14598,10; },{},{}
+14315,GhostringS_Box,Ghostring Scroll Box,2,,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 14598,10; },{},{}
 14316,July7_Scroll,July7 Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14317,Bacsojin_Scroll,Bacsojin Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14343,Spiked_Scarf_Box,Spiked Scarf Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 5462,1; },{},{}
@@ -6378,7 +6378,7 @@
 14545,Battle_Manual_X3,Field Manual 300%,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_EXPBOOST,1800000,300; },{},{}
 14546,Fire_Cracker_Love,I Love You Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14547,Fire_Cracker_Wday,Whiteday Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-14548,Fire_Cracker_Valentine,Valentine's Day Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+14548,Fire_Cracker_Vday,Valentine's Day Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14549,Fire_Cracker_Bday,Birthday Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14550,Fire_Cracker_Xmas,Xmas Firecracker,2,2,,20,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 14551,Str_Dish01_,Fried Grasshopper Legs,0,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_STRFOOD,1200000,1; percentheal 5,0; },{},{}
@@ -6463,10 +6463,10 @@
 //16251,Gemini_Diadem_Box
 //16252,Gemini_Crown_Box
 16257,Buddah_Scroll,Buddah Scroll,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
-16258,HD_Bradium_5_Box,HD Bradium 5 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6226,5; },{},{}
-16259,HD_Carnium_5_Box,HD Carnium 5 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6225,5; },{},{}
-16260,HD_Bradium_10_Box,HD Bradium 10 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6226,10; },{},{}
-16261,HD_Carnium_10_Box,HD Carnium 10 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6225,10; },{},{}
+16258,HD_Bradium_Box5,HD Bradium 5 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6226,5; },{},{}
+16259,HD_Carnium_Box5,HD Carnium 5 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6225,5; },{},{}
+16260,HD_Bradium_Box10,HD Bradium 10 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6226,10; },{},{}
+16261,HD_Carnium_Box10,HD Carnium 10 Box,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 6225,10; },{},{}
 //16262,HD_Bradium_5_Box,
 //16263,HD_Carnium_5_Box,
 //16264,HD_Bradium_10_Box,
@@ -6475,7 +6475,7 @@
 //16268,HE_Bubble_Gum_Box
 //16269,Cancer_Diadem_Box
 //16270,Cancer_Crown_Box,
-16304,Evil_Incarnation,Evil Incarnation,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
+16304,Evil_Incarnation_Disable,Evil Incarnation,2,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
 //16343,Leo_Crown_Box
 //16344,Leo_Diadem_Box
 //16345,Leo_Crown_Box
@@ -6545,14 +6545,14 @@
 18003,Soul_Cannon_Ball,Soul Cannon Ball,10,200,,10,120,,,,0x00040400,8,2,32768,,99,,8,{ bonus bAtkEle,Ele_Ghost; },{},{}
 18004,Iron_Cannon_Ball,Iron Cannon Ball,10,500,,10,250,,,,0x00040400,8,2,32768,,99,,8,{},{},{}
 // More Bows
-18100,Shooting_Star,Shooting Star,5,20,,0,190,,5,0,0x00080800,7,2,34,4,1,1,11,{ bonus bLongAtkRate,20; },{},{}
+18100,Shooting_Star_C,Shooting Star,5,20,,0,190,,5,0,0x00080800,7,2,34,4,1,1,11,{ bonus bLongAtkRate,20; },{},{}
 18101,F_Bow_Of_Rudra_C,Rudra Bow,5,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{}
 18102,E_Bow_Of_Rudra_C,Rudra Bow,5,2,,0,185,,5,0,0x000A0848,7,2,34,4,0,0,11,{ bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000; },{},{}
 // More Headgears
 18500,Cheer_Scarf6,Cheer Scarf6,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
 18501,Cheer_Scarf8,Cheer Scarf8,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
 18502,Cheer_Scarf10,Cheer Scarf10,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1,,1,0,369,{},{},{}
-18503,Majestic_Devil,Small Devil Horns,4,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,1,0,562,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bMaxHPRate,10; bonus bMaxSPRate,10; },{},{}
+18503,Small_Horn_Of_Devil,Small Devil Horns,4,20,,100,,2,,0,0xFFFFFFFF,7,2,512,,1,0,562,{ bonus bAtkRate,5; bonus bMatkRate,5; bonus bMaxHPRate,10; bonus bMaxSPRate,10; },{},{}
 18505,Umbala_Spirit,Umbala Spirit,4,0,,200,,1,,1,0xFFFFFFFF,7,2,1,,30,0,675,{ bonus bVit,1; },{},{}
 18506,Hattah_Black,Hattah Black,4,12000,,4000,,2,,1,0xFFFFFFFF,7,2,769,,1,1,676,{},{},{}
 18507,Elven_Ears_,Elven Ears,4,20,,100,,0,,1,0xFFFFFFFE,7,2,512,,70,0,73,{},{},{}
@@ -6561,16 +6561,16 @@
 //
 18595,Horn_Of_Ancient,Horn of Ancient,4,40,,200,,8,,1,0xFFFFFFFF,7,2,256,,50,1,757,{ autobonus "{ bonus bBaseAtk,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }"; },{},{}
 18596,Sprout_Hat,Sprout Hat,4,20,,200,,4,,0,0xFFFFFFFF,7,2,256,,70,1,758,{ skill "WZ_HEAVENDRIVE",3; },{},{}
-18597,Mercury_Riser,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,7,2,256,,0,1,759,{ bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
+18597,Mercury_Helm,Mercury Riser,4,40,,200,,10,,1,0xFFFFFFFF,7,2,256,,0,1,759,{ bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }},{},{}
 //
-18600,Cat_Ear_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{}
+18600,Cat_Ears_Beret,Cat Ear Beret,4,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,761,{ bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; } },{},{}
 //
 18612,White_Musang_Hat,White Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,770,{ bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0; },{},{}
 18613,Black_Musang_Hat,Black Musang Hat,4,40,,200,,3,,1,0xFFFFFFFF,7,2,256,,0,1,771,{ bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0; },{},{}
 //
-18620,Heart_Eye_Patch,Heart Eyepatch,4,5,,200,,2,,0,0xFFFFFFFF,7,2,512,,20,1,779,{},{},{}
+18620,Heart_Eyepatch,Heart Eyepatch,4,5,,200,,2,,0,0xFFFFFFFF,7,2,512,,20,1,779,{},{},{}
 //
-18656,Witch's_Pumpkin_Hat,Witch's Pumpkin Hat,4,20,,300,,10,,0,0xFFFFFFFF,7,2,256,,20,1,717,{ bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; },{},{}
+18656,Wit_Pumpkin_Hat,Witch's Pumpkin Hat,4,20,,300,,10,,0,0xFFFFFFFF,7,2,256,,20,1,717,{ bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15; },{},{}
 
 // Costume System
 19500,T_Mr_Smile,T Mr Smile,4,0,,0,,0,,0,0xFFFFFFFF,7,2,6144,,0,0,65,{ bonus bStr,2; },{},{}
@@ -6578,4 +6578,4 @@
 19504,T_Sunglasses,T Sunglasses,4,0,,0,,0,,0,0xFFFFFFFF,7,2,2048,,0,0,12,{},{},{}
 19505,T_Cigarette,T Cigarette,4,0,,0,,0,,0,0xFFFFFFFF,7,2,4096,,0,0,54,{},{},{}
 19506,T_Valkyrie_Feather_Band,T Valkyrie Feather Band,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1024,,0,1,300,{},{},{}
-19507,Clear_Sun,Clear Sun,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1024,,1,0,654,{},{},{}
+19507,Fine_Sun,Clear Sun,4,0,,0,,0,,0,0xFFFFFFFF,7,2,1024,,1,0,654,{},{},{}

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

@@ -280,7 +280,7 @@
 // Oboro
 4212,	26000,80   ,  0  ,540  ,400  ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000
 // Rebellion
-4215,	28000,89   ,  0  ,469  ,500  ,2000, 2000, 2000, 2000, 2000, 2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 700 , 750 , 700 ,1500 ,1500 ,2000 ,2000
+4215,	28000,90   ,650  ,469  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480  ,610  ,540  ,940  ,1040 ,2000 ,2000
 // Summoner - Placeholder
 4218,	20000,0    ,500  ,100  ,500  ,650  ,700  ,2000 ,2000 ,2000 ,800  ,2000 ,700  ,700  ,650  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650
 // Baby Summoner - Placeholder

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

@@ -1638,43 +1638,43 @@
 //-- RL_RICHS_COIN
 2552,0,1000,0,600000,0,3000
 //-- RL_MASS_SPIRAL
-2553,1000,1000,0,0,30000,10000
+2553,2000,1000,0,0,30000,2000
 //-- RL_BANISHING_BUSTER
-2554,3000:2500:2000:1500:1000,0,0,0,0,10000
+2554,3000:2500:2000:1500:1000,2000,0,0,0,10000
 //-- RL_B_TRAP
-2555,0,0,0,10000:11000:12000:13000:14000,6000:7000:8000:9000:10000,0
+2555,0,2500:2000:1500:1000:500,0,10000,9000:14000:19000:24000:29000,10000
 //-- RL_FLICKER
 2556,0,0,0,0,0,10000
 //-- RL_S_STORM
-2557,3000:2500:2000:1500:1000,0,0,0,0,2000
+2557,3000:2500:2000:1500:1000,2000,0,0,0,2000
 //-- RL_E_CHAIN
-2558,0,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,5000
+2558,1000,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,0
 //-- RL_QD_SHOT
-2559,0,1000,0,1500,0,5000
+2559,0,0,0,1500,0,0
 //-- RL_C_MARKER
 2560,0,0,0,30000,0,1000
 //-- RL_FIREDANCE
-2561,0,2000,0,0,0,5000
+2561,0,500,0,0,0,5000
 //-- RL_H_MINE
-2562,1500,0,0,30000,15000,5000:4500:4000:3500:3000
+2562,1000,1000,0,50000,15000,5000:4500:4000:3500:3000
 //-- RL_P_ALTER
-2563,0,1000,0,30000:45000:60000:75000:90000,0,5000
+2563,0,0,0,30000:45000:60000:75000:90000,0,0
 //-- RL_FALLEN_ANGEL
-2564,500,1500,0,0,0,10000:8000:6000:4000:2000
+2564,0,0,0,2000,0,0
 //-- RL_R_TRIP
-2565,0,1000,0,0,0,1000
+2565,0,1000,0,0,0,3000:2500:2000:1500:1000
 //-- RL_D_TAIL
-2566,500,2000,0,0,0,5000
+2566,1200:1400:1600:1800:2000,2000,0,0,0,5000
 //-- RL_FIRE_RAIN
-2567,1800:1600:1400:1200:1000,2000,0,100,0,5000
+2567,0,1000,0,100,0,5000
 //-- RL_HEAT_BARREL
-2568,0,1000,0,60000,10000,10000
+2568,2000,1000,0,60000,0,100000:95000:90000:85000:80000
 //-- RL_AM_BLAST
 2569,2000,1000,0,0,6000:7000:8000:9000:10000,5000
 //-- RL_SLUGSHOT
-2570,5000:6000:7000:8000:9000,1000,0,0,2000,10000
+2570,5000:6000:7000:8000:9000,1000,0,0,2000,5000
 //-- RL_HAMMER_OF_GOD
-2571,8000,2000,0,0,3000:3000:4000:4000:5000,30000
+2571,0,2000,0,0,3000:3000:4000:4000:5000,30000
 //-- RL_R_TRIP_PLUSATK
 //2572,0,0,0,0,0,0
 //-- RL_B_FLICKER_ATK

+ 20 - 15
db/pre-re/skill_db.txt

@@ -1269,25 +1269,25 @@
 // Rebellion
 //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0,	RL_GLITTERING_GREED,Flip The Coin Greed
 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RL_RICHS_COIN,Rich's Coin
-2553,15,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_MASS_SPIRAL,Mass Spiral
-2554,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
-2555,3,6,2,0,0x1,1,5,1,no,0,0,3,misc,0,0x0,	RL_B_TRAP,Bind Trap
+2553,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_MASS_SPIRAL,Mass Spiral
+2554,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
+2555,3:4:4:5:5,6,2,0,0x1,1,5,1,no,0,0,1,misc,0,0x0,	RL_B_TRAP,Bind Trap
 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0,	RL_FLICKER,Flicker
-2557,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
+2557,-9,6,1,-1,0x2,2:2:2:2:3,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
 2558,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,	RL_E_CHAIN,Eternal Chain
-2559,-9,6,4,-1,0x3,21,1,1,no,0,0x0,0,weapon,0,0x0,	RL_QD_SHOT,Quick Draw Shot
-2560,11,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0,	RL_C_MARKER,Crimson Marker
-2561,0,6,4,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_FIREDANCE,Fire Dance
-2562,7:8:9:10:11,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_H_MINE,Howling Mine
+2559,-9,6,4,-1,0x0,10,1,1,no,0,0x0,0,weapon,0,0x0,	RL_QD_SHOT,Quick Draw Shot
+2560,-9,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0,	RL_C_MARKER,Crimson Marker
+2561,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	RL_FIREDANCE,Fire Dance
+2562,-9,6,1,-1,0x0,2,5,1,no,0,0,0,weapon,0,0x0,	RL_H_MINE,Howling Mine
 2563,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_P_ALTER,Platinum Alter
-2564,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_FALLEN_ANGEL,Fallen Angel
-2565,0,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0,	RL_R_TRIP,Round Trip
-2566,0,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0,	RL_D_TAIL,Dragon Tail
-2567,9,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0,	RL_FIRE_RAIN,Fire Rain
+2564,-9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_FALLEN_ANGEL,Fallen Angel
+2565,5,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0,	RL_R_TRIP,Round Trip
+2566,5,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0,	RL_D_TAIL,Dragon Tail
+2567,2,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0,	RL_FIRE_RAIN,Fire Rain
 2568,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_HEAT_BARREL,Heat Barrel
-2569,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_AM_BLAST,Anti-Material Blast
-2570,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_SLUGSHOT,Slug Shot
-2571,7:8:9:10:11,6,2,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_HAMMER_OF_GOD,Hammer of God
+2569,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_AM_BLAST,Anti-Material Blast
+2570,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,6,0x0,	RL_SLUGSHOT,Slug Shot
+2571,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_HAMMER_OF_GOD,Hammer of God
 2572,0,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0,	RL_R_TRIP_PLUSATK,Round Trip Plus Attack
 //2573,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0,	RL_B_FLICKER_ATK,Bind Flicker Attack
 //2574,0,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0,	RL_GLITTERING_GREED_ATK,Flip The Coin Greed Attack
@@ -1397,6 +1397,11 @@
 5055,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,	SU_CHATTERING,Chattering
 5056,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,	SU_SPIRITOFSEA,Spirit of Sea
 
+// Wedding Skills 3
+5063,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,	WE_CALLALLFAMILY,Call All Family
+5064,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,	WE_ONEFOREVER,One Forever
+5065,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,	WE_CHEERUP,Cheer Up
+
 //****
 // Homunculus S
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	HLIF_HEAL,Healing Touch

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

@@ -888,26 +888,26 @@
 //****
 // Rebellion
 //2551,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_GLITTERING_GREED
-2552,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_RICHS_COIN
-2553,0,0,80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_MASS_SPIRAL
-2554,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_BANISHING_BUSTER
-2555,0,0,30:32:34:36:38,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_B_TRAP
-2556,0,0,2,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FLICKER
-2557,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_S_STORM
-2558,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_E_CHAIN
-2559,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_QD_SHOT
-2560,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_C_MARKER
-2561,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_FIREDANCE
-2562,0,0,45:50:55:60:65,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_H_MINE
-2563,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_P_ALTER
-2564,0,0,90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FALLEN_ANGEL
-2565,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_R_TRIP
-2566,0,0,60:70:80:90:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_D_TAIL
-2567,0,0,70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FIRE_RAIN
-2568,0,0,30:40:50:60:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_HEAT_BARREL
-2569,0,0,80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_AM_BLAST
-2570,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_SLUGSHOT
-2571,0,0,70:80:90:100:110,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_HAMMER_OF_GOD
+2552,0,0,10,0,0,100,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_RICHS_COIN
+2553,0,0,40:44:48:52:56,0,0,0,18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_MASS_SPIRAL
+2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_BANISHING_BUSTER
+2555,0,0,30:32:34:36:38,0,0,0,17:18:19:20:21,0,0,none,0,1,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_B_TRAP
+2556,0,0,2,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FLICKER
+2557,0,0,50:55:60:65:70,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_S_STORM
+2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_E_CHAIN
+2559,0,0,5,0,0,0,17:18:19:20:21,3:4:5,1,none,SC_QD_SHOT_READY,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_QD_SHOT
+2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_C_MARKER
+2561,0,0,12:14:16:18:20,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_FIREDANCE
+2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_H_MINE
+2563,0,0,20:24:28:32:36,0,0,0,99,3,1,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13201				//RL_P_ALTER
+2564,0,0,10,0,0,0,17,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FALLEN_ANGEL
+2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_R_TRIP
+2566,0,0,60:70:80:90:100,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_D_TAIL
+2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_FIRE_RAIN
+2568,0,0,30,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_HEAT_BARREL
+2569,0,0,80:84:88:92:96,0,0,0,18,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_AM_BLAST
+2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_SLUGSHOT
+2571,0,0,35:40:45:50:55,0,0,0,18,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_HAMMER_OF_GOD
 2572,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_R_TRIP_PLUSATK
 //2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_B_FLICKER_ATK
 //2574,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_GLITTERING_GREED_ATK

+ 17 - 17
db/pre-re/skill_tree.txt

@@ -5627,11 +5627,11 @@
 4215,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
 4215,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin#
 4215,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling#
-4215,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
-4215,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
-4215,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
-4215,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment#
-4215,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
+4215,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
+4215,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
+4215,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
+4215,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment#
+4215,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
 4215,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet#
 4215,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker#
 4215,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action#
@@ -5645,26 +5645,26 @@
 4215,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
 4215,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
 4215,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
-4215,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
+4215,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 4215,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
 4215,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 4215,2552,1,500,5,0,0,0,0,0,0,0,0 //RL_RICHS_COIN#Rich's Coin#
 4215,2553,5,514,1,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL#Mass Spiral#
 4215,2554,5,2557,1,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER#Banishing Buster#
-4215,2555,5,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap#
-4215,2556,1,501,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker#
+4215,2555,5,2556,1,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap#
+4215,2556,1,500,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker#
 4215,2557,5,513,1,518,1,0,0,0,0,0,0 //RL_S_STORM#Shatter Storm#
-4215,2558,10,511,10,0,0,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain#
-4215,2559,1,2558,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot#
-4215,2560,1,506,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker#
-4215,2561,5,2564,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance#
-4215,2562,5,520,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine#
-4215,2563,5,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter#
-4215,2564,5,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel#
+4215,2558,10,500,1,511,10,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain#
+4215,2559,1,511,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot#
+4215,2560,1,500,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker#
+4215,2561,5,516,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance#
+4215,2562,5,521,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine#
+4215,2563,5,2552,1,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter#
+4215,2564,1,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel#
 4215,2565,5,2567,1,0,0,0,0,0,0,0,0 //RL_R_TRIP#Round Trip#
 4215,2566,5,2560,1,2562,3,0,0,0,0,0,0 //RL_D_TAIL#Dragon Tail#
 4215,2567,5,517,1,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN#Fire Rain#
-4215,2568,5,2561,2,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel#
+4215,2568,5,2552,1,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel#
 4215,2569,5,2553,1,0,0,0,0,0,0,0,0 //RL_AM_BLAST#Anti-Material Blast#
 4215,2570,5,2554,3,0,0,0,0,0,0,0,0 //RL_SLUGSHOT#Slug Shot#
-4215,2571,5,2569,3,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God#
+4215,2571,5,2552,1,2569,3,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God#

+ 1 - 0
db/re/instance_db.txt

@@ -23,3 +23,4 @@
 16,Horror Toy Factory,3600,300,1@xm_d,111,22
 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

+ 1 - 0
db/re/item_combo_db.txt

@@ -636,6 +636,7 @@
 24249:24254,{ bonus2 bMagicAddRace,RC_All,1; bonus bMaxSPrate,1; if (getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_ACC_L)>=10) { bonus2 bMagicAddRace,RC_All,2; bonus bMaxSPrate,2; } }
 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; }
 28315:28317,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28316:28318,{ bonus2 bAddClass,Class_All,4; bonus bMatkRate,4; }
 28326:28327,{ bonus bInt,8; bonus bStr,8; }

Datei-Diff unterdrückt, da er zu groß ist
+ 216 - 211
db/re/item_db.txt


+ 1 - 0
db/re/item_delay.txt

@@ -85,6 +85,7 @@
 12970,300000,SC_REUSE_LIMIT_RECALL	//Emergency_Scroll3
 
 // Misc
+12135,10000	//Green_Ale
 //12202,60000	//Str_Dish10_
 //12203,60000	//Agi_Dish10_
 //12204,60000	//Int_Dish10_

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
db/re/job_basehpsp_db.txt


+ 1 - 1
db/re/job_db1.txt

@@ -270,7 +270,7 @@
 // Oboro
 4212,	26000,75   ,500  ,540  ,400  ,500  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000 ,500
 // Rebellion
-4215,   28000,90   ,650  ,469  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520  ,620  ,570  ,970  ,1070 ,2000 ,2000 ,600
+4215,	28000,90   ,650  ,469  ,540  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480  ,610  ,540  ,940  ,1040 ,2000 ,2000 ,600
 // Summoner
 4218,	20000,70   ,500  ,500  ,490  ,570  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,2000 ,2000 ,2000 ,2000 ,470  ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590  ,590
 // Baby Summoner

+ 8 - 8
db/re/job_exp.txt

@@ -13,12 +13,12 @@
 //Base - Adv Jobs
 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999
 
-//Base - 3rd Jobs, Baby 3rds, Summoner
+//Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, & Summoner
 //Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.)
-175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4218:4220,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
+175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
 
-//Base - Expanded Super Novice, Expanded Super Baby, Oboro/Kagerou, & Rebellion
-160,4190:4191:4211:4212:4215:4223:4224:4229,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
+//Base - Expanded Super Novice & Expanded Super Baby
+160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999
 
 //Job - Novice & Baby Novice
 10,0:4023,1,10,18,28,40,91,151,205,268,340,999999999
@@ -38,11 +38,11 @@
 //Job - Adv Second Classes
 70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999
 
-//Job - 3rd Jobs & Baby 3rds
-60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999
+//Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, & Rebellion
+60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999
 
-//Job - Expanded Super Novice, Expanded Super Baby, Oboro/Kagerou, & Rebellion
-50,4190:4191:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999
+//Job - Expanded Super Novice & Expanded Super Baby
+50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999
 
 //Job - Ninja/Gunslinger
 70,24:25:4222:4228,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999

BIN
db/re/map_cache.dat


+ 146 - 21
db/re/mob_db.txt

@@ -951,12 +951,12 @@
 1879,ECLIPSE_P,Eclipse Pet,Eclipse,6,1800,0,0,0,1,20,26,0,40,1,36,6,0,11,80,10,12,1,2,60,0x6203695,200,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 // Moscovia
-1880,WOOD_GOBLIN,Wood Goblin,Leshij,81,5499,1,1106,1245,1,193,208,144,12,73,19,56,15,56,25,10,12,1,3,62,0x81,320,2304,840,360,0,0,0,0,0,0,0,2719,5,7203,4000,7201,2000,907,2000,916,500,7032,500,574,50,0,0,0,0,0,0
-1881,LES,Les,Lesavka,82,6216,1,1205,1356,1,270,300,123,30,63,20,35,25,52,30,10,12,1,3,82,0x1089,230,1728,720,576,0,0,0,0,0,0,0,7100,2000,511,1000,711,1000,905,2500,2270,1,521,500,510,50,0,0,0,0,0,0
-1882,VAVAYAGA,Baba Yaga,Baba-Yaga,87,6498,1,1188,1337,2,282,353,63,60,69,45,30,60,51,35,10,12,1,7,21,0x3885,270,1536,600,420,0,0,0,0,0,0,0,7099,1000,7762,5000,1630,10,7226,150,539,1500,519,1500,580,1500,0,0,0,0,0,0
-1883,UZHAS,Uzhas,Kikimora,85,7140,1,1294,1455,1,271,306,49,8,69,14,41,30,55,20,10,12,1,7,61,0x3885,200,576,672,384,0,0,0,0,0,0,0,520,900,1573,5,621,100,522,100,918,3500,579,1500,603,3,0,0,0,0,0,0
-1884,MAVKA,Mavka,Mavka,84,5421,1,1253,1530,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,1572,5,629,300,707,300,710,50,747,1500,748,300,510,3000,0,0,0,0,0,0
-1885,GOPINICH,Gopinich,Gopinich,97,1120500,1,714240,580320,3,1988,3849,355,121,127,102,143,102,152,76,10,12,2,2,62,0x6283695,150,1536,864,432,357120,607,5500,617,5000,617,5000,617,4000,2621,200,12080,1000,1737,100,1417,5,7444,5000,5007,1,0,0,0,0,0,0
+1880,WOOD_GOBLIN,Wood Goblin,Leshij,81,5499,1,1106,1245,1,193,208,144,12,73,19,56,15,56,25,10,12,1,3,62,0x81,320,2304,840,360,0,0,0,0,0,0,0,2719,5,7203,4000,7201,2000,907,2000,916,500,7032,500,574,50,0,0,0,0,27157,1
+1881,LES,Les,Lesavka,82,6216,1,1205,1356,1,270,300,123,30,63,20,35,25,52,30,10,12,1,3,82,0x1089,230,1728,720,576,0,0,0,0,0,0,0,7100,2000,511,1000,711,1000,905,2500,2270,1,521,500,510,50,0,0,0,0,27158,1
+1882,VAVAYAGA,Baba Yaga,Baba-Yaga,87,6498,1,1188,1337,2,282,353,63,60,69,45,30,60,51,35,10,12,1,7,21,0x3885,270,1536,600,420,0,0,0,0,0,0,0,7099,1000,7762,5000,1630,10,7226,150,539,1500,519,1500,580,1500,0,0,0,0,27160,1
+1883,UZHAS,Uzhas,Kikimora,85,7140,1,1294,1455,1,271,306,49,8,69,14,41,30,55,20,10,12,1,7,61,0x3885,200,576,672,384,0,0,0,0,0,0,0,520,900,1573,5,621,100,522,100,918,3500,579,1500,603,3,0,0,0,0,27159,1
+1884,MAVKA,Mavka,Mavka,84,5421,1,1253,1530,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,1572,5,629,300,707,300,710,50,747,1500,748,300,510,3000,0,0,0,0,27161,1
+1885,GOPINICH,Gopinich,Gopinich,97,1120500,1,714240,580320,3,1988,3849,355,121,127,102,143,102,152,76,10,12,2,2,62,0x6283695,150,1536,864,432,357120,607,5500,617,5000,617,5000,617,4000,2621,200,12080,1000,1737,100,1417,5,7444,5000,5007,1,0,0,0,0,27162,1
 1886,G_MAVKA,Mavka,Mavka,84,5421,1,0,0,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
 // Additional Monsters
@@ -2279,7 +2279,7 @@
 //3122,CHARLESTON1
 //3123,CHARLESTON2
 //3124,CHARLESTON3
-3125,STEP,Step,Step,130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,234894485,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3125,STEP,Step,Step,130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,0x2000000,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //3126,ROCK_STEP
 //3127,KICK_STEP
 //3128,KICK_AND_KICK
@@ -2323,8 +2323,8 @@
 //3166,M_E_DEVILING
 //3167,E_POPORING_CRO
 //3168,POURING_SEA_FES
-3169,J_REB_SHECIL1,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-3170,J_REB_SHECIL2,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3169,J_REB_SHECIL1,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3170,J_REB_SHECIL2,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 //3171,EVENT_MONEMUS01
 //3172,EVENT_MONEMUS02
 //3173,EVENT_FIREFOX
@@ -2344,17 +2344,17 @@
 //3187,E2_G_S_NYDHOG
 //3188,E2_FELOCK
 //3189,WOLF_MOON
-//3190,MM_SARAH
-//3191,MM_M_GIGAN1
-//3192,MM_M_GIGAN2
-//3193,MM_M_GIGAN3
-//3194,MM_L_GIGAN1
-//3195,MM_L_GIGAN2
-//3196,MM_L_GIGAN3
-//3197,MM_M_GARGOYLE
-//3198,MM_M_GALION
-//3199,MM_M_MUTANT_DRAGON
-//3200,MM_M_CHIMERA
+3190,MM_SARAH,Sarah,Sarah Irene,160,100000000,1,0,0,12,1090,2755,276,255,43,161,6,188,225,136,10,12,0,0,20,0x87700A4,2000,500,500,0,0,0,0,0,0,0,0,15121,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4610,1
+3191,MM_M_GIGAN1,Gigantes,Gigantes,160,6653400,1,0,1,2,4635,4755,64,112,156,151,30,62,265,21,10,12,1,6,47,0x62D3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3192,MM_M_GIGAN2,Gigantes,Gigantes,160,9870000,1,0,0,2,5128,5217,89,175,212,138,43,21,227,15,10,12,1,6,47,0x62A3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3193,MM_M_GIGAN3,Ancient Medium Gigantes,Ancient Medium Gigantes,160,1126300,1,0,0,2,3967,4132,113,155,121,125,45,35,271,15,10,12,1,6,47,0x6283885,300,500,500,600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3194,MM_L_GIGAN1,Large Gigantes,Large Gigantes,160,2482000,1,0,0,2,4172,4254,55,177,135,135,12,72,220,91,10,12,2,6,47,0x62D3885,200,500,500,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
+3195,MM_L_GIGAN2,Large Gigantes,Large Gigantes,160,2784175,1,0,0,2,3641,3757,71,140,102,119,18,45,275,71,10,12,2,6,47,0x62A3885,200,500,500,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
+3196,MM_L_GIGAN3,Ancient Gigantes,Ancient Gigantes,160,12063464,1,0,0,2,8957,9018,48,190,203,141,1,66,355,103,10,12,2,6,47,0x6283885,330,800,800,500,0,0,0,0,0,0,0,6803,10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+3197,MM_M_GARGOYLE,Gargoyle,Mutant Gargoyle,150,256780,1,0,0,9,712,801,124,43,147,110,66,57,191,70,10,12,1,6,64,0x2002085,200,1020,720,384,0,0,0,0,0,0,0,912,1940,1039,250,1746,3,0,0,2619,1,1769,1000,757,119,0,0,0,0,0,0
+3198,MM_M_GALION,Galion,Mutant Galion,150,293165,1,0,0,1,801,878,166,71,133,142,71,45,166,45,10,12,1,2,44,0x020108F,150,864,624,360,0,0,0,0,0,0,0,7564,1500,919,1500,996,5,2531,3,0,0,0,0,0,0,0,0,0,0,0,0
+3199,MM_M_MUTANT_DRAGON,Mutant Dragon,Wicked Mutant Dragon,150,324891,1,0,0,4,1176,1274,185,86,175,161,66,68,201,35,10,12,2,9,43,0x0203695,250,1280,1080,240,0,0,0,0,0,0,0,7054,2425,1035,250,1036,250,930,250,1559,50,7296,750,2527,25,0,0,0,0,0,0
+3200,MM_M_CHIMERA,Wicked Chimera,Wicked Chimera,150,301158,1,0,0,1,1029,1177,199,10,166,175,110,88,188,85,10,12,2,2,63,0x0203695,200,772,672,360,0,0,0,0,0,0,0,7054,2668,1048,1250,568,500,1306,1,7295,750,1364,1,984,80,0,0,0,0,0,0
 //3201,LUCKYCASE,Poring,Poring,1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,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
 3202,ORGANIC_JAKK,Organic Pumpkin,Organic Pumpkin,10,40,1,20,13,1,100,100,160,99,1,1,1,1,999,1,0,0,0,3,21,0x4370001,200,0,0,0,0,0,0,0,0,0,0,6804,5000,6804,5000,6804,1000,2267,100,1062,1000,664,100,546,1000,12192,100,0,0,0,0
 3203,INORGANIC_JAKK,Inorganic Pumpkin,Inorganic Pumpkin,10,40,1,20,13,1,100,100,160,99,1,1,1,1,999,1,0,0,0,3,21,0x4370001,200,0,0,0,0,0,0,0,0,0,0,6805,5000,6805,5000,6805,1000,2267,100,1062,1000,664,100,546,1000,12192,100,0,0,0,0
@@ -3061,7 +3061,12 @@
 //3901,MD_ORK_HERO
 //3902,MD_ORC_LORD
 //3903,MD_ORC_FLOWER
-
+//3904,DUCKLING
+//3905,BIG_DUCKLING
+//3906,IA_LOLI_RURI
+//3907,IA_TEDDY_BEAR
+//3908,IA_MIYABI_NINGYO
+//3909,IA_MARIONETTE
 //3910,E_EMPEL_1
 //3911,E_GIBBET
 //3912,E_LOLI_RURI
@@ -3100,3 +3105,123 @@
 //3945,JP_E_MONSTER_103
 //3946,JP_E_MONSTER_104
 //3947,JP_E_MONSTER_105
+//3948,ORC_WARRIOR_MJ
+//3949,ORC_LADY_MJ
+//3950,ORC_BABY_MJ
+//3951,HIGH_ORC_MJ
+//3952,ORC_ARCHER_MJ
+//3953,ORC_HERO_MJ
+//3954,ORC_LORD_MJ
+//3955,E_SAVAGE
+//3956,E_ELDER_WILOW
+//3957,HORNET_MJ
+//3958,MANTIS_MJ
+//3959,ARGOS_MJ
+//3960,MISTRESS_MJ
+//3961,BIGFOOT_MJ
+//3962,SNAKE_MJ
+//3963,WOLF_MJ
+//3964,EDDGA_MJ
+//3965,FRILLDORA_MJ
+//3966,SANDMAN_MJ
+//3967,HODE_MJ
+//3968,PHREEONI_MJ
+//3969,MD_RED_MUSHROOM
+//3970,MD_BLACK_MUSHROOM
+//3971,SKELION
+//3972,MD_THIEF_BUG__
+//3973,MD_THIEF_BUG
+//3974,MD_THIEF_BUG_EGG
+//3975,MD_GOLDEN_BUG
+//3976,EIRA_BRZ
+//3977,AB_MOB_051
+//3978,AB_MOB_052
+//3979,AB_MOB_053
+//3980,AB_MOB_054
+//3981,AB_MOB_055
+//3982,AB_MOB_056
+//3983,AB_MOB_057
+//3984,AB_MOB_058
+//3985,AB_MOB_059
+//3986,AB_MOB_060
+//3987,AB_MOB_061
+//3988,AB_MOB_062
+//3989,AB_MOB_063
+//3990,AB_MOB_064
+//3991,AB_MOB_065
+//3992,AB_MOB_066
+//3993,AB_MOB_067
+//3994,AB_MOB_068
+//3995,AB_MOB_069
+//3996,AB_MOB_070
+//3997,AB_MOB_071
+//3998,AB_MOB_072
+
+// New Monster Range
+//20021,AB_MOB_073
+//20022,AB_MOB_074
+//20023,AB_MOB_075
+//20024,AB_MOB_076
+//20025,JP_CM_MOB_001
+//20026,JP_CM_MOB_002
+//20027,JP_CM_MOB_003
+//20028,JP_CM_MOB_004
+//20029,JP_CM_MOB_005
+//20030,JP_CM_MOB_006
+//20031,JP_CM_MOB_007
+//20032,JP_CM_MOB_008
+//20033,JP_CM_MOB_009
+//20034,JP_CM_MOB_010
+//20035,JP_CM_MOB_011
+//20036,JP_CM_MOB_012
+//20037,JP_CM_MOB_013
+//20038,JP_CM_MOB_014
+//20039,JP_CM_MOB_015
+//20040,JP_CM_MOB_016
+//20041,JP_CM_MOB_017
+//20042,JP_CM_MOB_018
+//20043,JP_CM_MOB_019
+//20044,JP_CM_MOB_020
+//20045,JP_CM_MOB_021
+//20046,JP_CM_MOB_022
+//20047,JP_CM_MOB_023
+//20048,JP_CM_MOB_024
+//20049,JP_CM_MOB_025
+//20050,JP_CM_MOB_026
+//20051,JP_CM_MOB_027
+//20052,JP_CM_MOB_028
+//20053,JP_CM_MOB_029
+//20054,JP_CM_MOB_030
+//20055,JP_CM_MOB_031
+//20056,JP_CM_MOB_032
+//20057,JP_CM_MOB_033
+//20058,JP_CM_MOB_034
+//20059,JP_CM_MOB_035
+//20060,JP_CM_MOB_036
+//20061,EVT_BAPHOMET
+//20062,EVT_BAPHO_JR
+//20063,EVT_V_WOLF
+//20064,EVT_ECLIPSE
+//20065,EVT_VOCAL
+//20066,EVT_UNGOLIANT
+//20067,EVT_GEOGRAPHER
+//20068,EVT_MANTIS
+//20069,EVT_GRIZZLY
+//20070,EVT_KINDOFBEETLE
+//20071,EVT_BIGFOOT
+//20072,EVT_COCO
+//20073,E_SIROMA
+//20074,E_MYSTCASE
+//20075,E_X_PORING
+//20076,MD_MAYA
+//20077,MD_DENIRO
+//20078,MD_VITATA
+//20079,MD_ANDRE
+//20080,MD_PIERE
+//20081,MD_IZ_COELACANTH
+//20082,MD_IZ_MARSE
+//20083,MD_IZ_MERMAN
+//20084,MD_IZ_OBEAUNE
+//20085,MD_IZ_CORNUTUS
+//20086,RED_ERUMA_MJ
+//20087,SIORAVA_MJ

+ 5 - 0
db/re/mob_skill_db.txt

@@ -11054,3 +11054,8 @@
 3074,Time Holder@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,,
 3074,Time Holder@NPC_SUMMONSLAVE,attack,196,5,1000,700,10000,no,self,slavele,0,2917,,,,,,
 3074,Time Holder@NPC_SUMMONSLAVE,idle,196,5,1000,700,10000,no,self,slavele,0,2917,,,,,,
+
+3200,Wicked Chimera@WZ_HEAVENDRIVE,attack,91,5,500,1200,5000,yes,target,always,0,,,,,,6,
+3200,Wicked Chimera@WZ_HEAVENDRIVE,chase,91,5,500,1200,5000,yes,target,always,0,,,,,,6,
+3200,Wicked Chimera@CR_AUTOGUARD,attack,249,5,500,0,300000,yes,self,always,0,,,,,,,
+3200,Wicked Chimera@CR_AUTOGUARD,chase,249,5,2000,0,300000,yes,self,longrangeattacked,,,,,,,,

+ 23 - 10
db/re/quest_db.txt

@@ -1847,6 +1847,15 @@
 9260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Survey investigation notes"
 9262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Mystery Robbery Incident 16"
 
+// Academy 14.2
+9264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
+9265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
+9266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
+9267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 1"
+9268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 2"
+9269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 3"
+9270,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 4"
+
 //Geffen Magic Tournament
 9284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen"
 9285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen"
@@ -1882,15 +1891,6 @@
 9315,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen"
 9316,82800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Geffen"
 
-// Academy 14.2
-9264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
-9265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
-9266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Job change to Mage"
-9267,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 1"
-9268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 2"
-9269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 3"
-9270,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The way to be a strong Mage - 4"
-
 //9327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //9328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //9329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
@@ -1900,6 +1900,11 @@
 //9333,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 //9334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,""
 
+// Sarah Fenrir memorial
+9335,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Search for shards of Gigantes"
+9336,604800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Go back to Professor Bernhard"
+9337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Wrapping up the Adventure"
+
 10000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"To the Prontera Royal Court"
 10001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Qualification Test"
 10002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Qualification Review"
@@ -2694,6 +2699,13 @@
 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"
 
+12340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
+12341,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
+12342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
+12343,0,3169,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest"
+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"
+
 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"
@@ -3341,7 +3353,8 @@
 19129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The Eye of Hellion"
 
 21001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Escape the Wreck"
-21002,0,0,0,0,0,0,0,1002,6008,10000,0,0,0,0,0,0,"The first battle"
+21002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"The first battle"
+21008,0,0,0,0,0,0,0,2401,6008,10000,0,0,0,0,0,0,"The first battle"
 
 50000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Pirate Dagger materials"
 50001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Weather Beaten Old Man"

+ 29 - 20
db/re/skill_cast_db.txt

@@ -853,11 +853,11 @@
 //-- GS_INCREASING
 506,0,1000,0,60000,0,0,0
 //-- GS_MAGICALBULLET
-507,0,500,0,0,0,0,0
+507,0,500,0,30000,0,0,0
 //-- GS_CRACKER
 508,0,1000,0,0,5000,0,0
 //-- GS_TRACKING
-512,600:700:800:900:1000:1100:1200:1300:1400:1500,1500,0,0,0,0,600:700:800:900:1000:1100:1200:1300:1400:1500
+512,0,1500,0,0,0,0,600:700:800:900:1000:1100:1200:1300:1400:1500
 //-- GS_DISARM
 513,1600,1000,0,30000,0,0,400
 //-- GS_PIERCINGSHOT
@@ -869,11 +869,11 @@
 //-- GS_GATLINGFEVER
 517,800,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0,0,200
 //-- GS_DUST
-518,1200,1000,0,0,0,0,300
+518,0,1000,0,0,0,0,-1
 //-- GS_FULLBUSTER
 519,800,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,10000,0,200
 //-- GS_SPREADATTACK
-520,800,1000,0,0,0,0,200
+520,0,1000,0,0,0,0,-1
 //-- GS_GROUNDDRIFT (Upkeep2 times are duration of: Stun(lv1), Blind(lv2), Poison(lv3) and Freeze(lv4))
 521,800,1000,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,5000:20000:20000:30000,0,200
 //==========================================
@@ -1654,43 +1654,43 @@
 //-- RL_RICHS_COIN
 2552,0,1000,0,600000,0,3000,-1
 //-- RL_MASS_SPIRAL
-2553,1000,1000,0,0,30000,10000,2000
+2553,2000,1000,0,0,30000,2000,1000
 //-- RL_BANISHING_BUSTER
-2554,3000:2500:2000:1500:1000,0,0,0,0,10000,-1
+2554,3000:2500:2000:1500:1000,2000,0,0,0,10000,-1
 //-- RL_B_TRAP
-2555,0,0,0,10000:11000:12000:13000:14000,6000:7000:8000:9000:10000,0,-1
+2555,0,2500:2000:1500:1000:500,0,10000,9000:14000:19000:24000:29000,10000,-1
 //-- RL_FLICKER
 2556,0,0,0,0,0,10000,-1
 //-- RL_S_STORM
-2557,3000:2500:2000:1500:1000,0,0,0,0,2000,-1
+2557,3000:2500:2000:1500:1000,2000,0,0,0,2000,1000
 //-- RL_E_CHAIN
-2558,0,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,5000,-1
+2558,1000,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,0,-1
 //-- RL_QD_SHOT
-2559,0,1000,0,1500,0,5000,-1
+2559,0,0,0,1500,0,0,-1
 //-- RL_C_MARKER
 2560,0,0,0,30000,0,1000,-1
 //-- RL_FIREDANCE
-2561,0,2000,0,0,0,5000,-1
+2561,0,500,0,0,0,5000,-1
 //-- RL_H_MINE
-2562,1500,0,0,30000,15000,5000:4500:4000:3500:3000,500
+2562,1000,1000,0,50000,15000,5000:4500:4000:3500:3000,-1
 //-- RL_P_ALTER
-2563,0,1000,0,30000:45000:60000:75000:90000,0,5000,-1
+2563,0,0,0,30000:45000:60000:75000:90000,0,0,-1
 //-- RL_FALLEN_ANGEL
-2564,500,1500,0,0,0,10000:8000:6000:4000:2000,500
+2564,0,0,0,2000,0,0,-1
 //-- RL_R_TRIP
-2565,0,1000,0,0,0,1000,-1
+2565,0,1000,0,0,0,3000:2500:2000:1500:1000,-1
 //-- RL_D_TAIL
-2566,500,2000,0,0,0,5000,500
+2566,1200:1400:1600:1800:2000,2000,0,0,0,5000,-1
 //-- RL_FIRE_RAIN
-2567,1800:1600:1400:1200:1000,2000,0,100,0,5000,200
+2567,0,1000,0,100,0,5000,-1
 //-- RL_HEAT_BARREL
-2568,0,1000,0,60000,10000,10000,-1
+2568,2000,1000,0,60000,0,100000:95000:90000:85000:80000,-1
 //-- RL_AM_BLAST
 2569,2000,1000,0,0,6000:7000:8000:9000:10000,5000,1000
 //-- RL_SLUGSHOT
-2570,5000:6000:7000:8000:9000,1000,0,0,2000,10000,1000
+2570,5000:6000:7000:8000:9000,1000,0,0,2000,5000,1000
 //-- RL_HAMMER_OF_GOD
-2571,8000,2000,0,0,3000:3000:4000:4000:5000,30000,2000
+2571,0,2000,0,0,3000:3000:4000:4000:5000,30000,-1
 //-- RL_R_TRIP_PLUSATK
 //2572,0,0,0,0,0,0,-1
 //-- RL_B_FLICKER_ATK
@@ -1827,6 +1827,15 @@
 5055,0,1000,0,5000,10000,140000:120000:100000:80000:60000,0
 //==========================================
 
+//===== Wedding Skills 3 ===================
+//-- WE_CALLALLFAMILY
+5063,1500,0,0,0,0,0,1500
+//-- WE_ONEFOREVER
+5064,1500,0,0,0,0,0,1500
+//-- WE_CHEERUP
+5065,1500,0,0,60000,0,0,1500
+//==========================================
+
 //===== Homunculus Skills ==================
 //-- HLIF_HEAL
 8001,0,2000,0,0,0,0,-1

+ 4 - 0
db/re/skill_castnodex_db.txt

@@ -36,6 +36,10 @@
 512,3	//GS_TRACKING
 1014,1	//PR_REDEMPTIO
 
+5063,1	//WE_CALLALLFAMILY
+5064,1	//WE_ONEFOREVER
+5065,1	//WE_CHEERUP
+
 2012,7	//RK_CRUSHSTRIKE
 2013,7	//RK_REFRESH
 2014,7	//RK_GIANTGROWTH

+ 15 - 10
db/re/skill_db.txt

@@ -735,7 +735,7 @@
 504,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		GS_MADNESSCANCEL,Madness Canceller
 505,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		GS_ADJUSTMENT,AdJustment
 506,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0,		GS_INCREASING,Increasing Accuracy
-507,-9,6,1,8,0x20,0,1,1,no,0,0,0,misc,0,0x0,		GS_MAGICALBULLET,Magical Bullet
+507,0,6,4,0,0x1,0,1,1,no,0,0,0,magic,0,0x0,		GS_MAGICALBULLET,Magical Bullet
 508,-9,6,1,-1,0x1,0,1,1,no,0,0,0,weapon,0,0x0,	GS_CRACKER,Cracker
 509,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		GS_SINGLEACTION,Single Action
 510,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0,		GS_SNAKEEYE,Snake Eye
@@ -744,7 +744,7 @@
 513,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,		GS_DISARM,Disarm
 514,-9,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,0,0x100,	GS_PIERCINGSHOT,Piercing Shot
 515,-9,8,1,-1,0,0,10,-5,no,0,0,0,weapon,0,0x100,	GS_RAPIDSHOWER,Rapid Shower
-516,0,8,4,-1,0x2,3,10,1,no,0,0,0,weapon,0,0x0,	GS_DESPERADO,Desperado
+516,5,8,4,-1,0x2,3,10,1,no,0,0,0,weapon,0,0x0,	GS_DESPERADO,Desperado
 517,0,6,4,-1,0x1,0,10,1,no,0,0,0,weapon,0,0x0,	GS_GATLINGFEVER,Gatling Fever
 518,2,6,1,-1,0,0,10,1,no,0,0,0,weapon,5,0x0,		GS_DUST,Dust
 519,-9,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x100,	GS_FULLBUSTER,Full Buster
@@ -1273,24 +1273,24 @@
 //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0,	RL_GLITTERING_GREED,Flip The Coin Greed
 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0,	RL_RICHS_COIN,Rich's Coin
 2553,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_MASS_SPIRAL,Mass Spiral
-2554,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
+2554,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x10020,	RL_BANISHING_BUSTER,Banishing Buster
 2555,3:4:4:5:5,6,2,0,0x1,1,5,1,no,0,0,1,misc,0,0x0,	RL_B_TRAP,Bind Trap
 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0,	RL_FLICKER,Flicker
-2557,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
+2557,-9,6,1,-1,0x2,2:2:2:2:3,5,1,no,0,0,0,weapon,0,0x0,	RL_S_STORM,Shatter Storm
 2558,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0,	RL_E_CHAIN,Eternal Chain
 2559,-9,6,4,-1,0x0,10,1,1,no,0,0x0,0,weapon,0,0x0,	RL_QD_SHOT,Quick Draw Shot
 2560,-9,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0,	RL_C_MARKER,Crimson Marker
-2561,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	RL_FIREDANCE,Fire Dance
+2561,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0,	RL_FIREDANCE,Fire Dance
 2562,-9,6,1,-1,0x0,2,5,1,no,0,0,0,weapon,0,0x0,	RL_H_MINE,Howling Mine
 2563,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_P_ALTER,Platinum Alter
 2564,-9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_FALLEN_ANGEL,Fallen Angel
-2565,0,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0,	RL_R_TRIP,Round Trip
-2566,0,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0,	RL_D_TAIL,Dragon Tail
-2567,-9,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0,	RL_FIRE_RAIN,Fire Rain
+2565,5,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0,	RL_R_TRIP,Round Trip
+2566,5,6,4,0,0x30,-1,5,1,no,0,0,0,weapon,0,0x0,	RL_D_TAIL,Dragon Tail
+2567,2,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0,	RL_FIRE_RAIN,Fire Rain
 2568,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0,	RL_HEAT_BARREL,Heat Barrel
 2569,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0,	RL_AM_BLAST,Anti-Material Blast
-2570,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,6,0x0,	RL_SLUGSHOT,Slug Shot
-2571,-9,6,2,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_HAMMER_OF_GOD,Hammer of God
+2570,-9,6,1,0,0,0,5,1,no,0,0,0,weapon,6,0x0,	RL_SLUGSHOT,Slug Shot
+2571,-9,6,1,0,0x2,2,5,1,no,0,0,0,weapon,0,0x0,	RL_HAMMER_OF_GOD,Hammer of God
 2572,0,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0,	RL_R_TRIP_PLUSATK,Round Trip Plus Attack
 //2573,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0,	RL_B_FLICKER_ATK,Bind Flicker Attack
 //2574,0,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0,	RL_GLITTERING_GREED_ATK,Flip The Coin Greed Attack
@@ -1400,6 +1400,11 @@
 5055,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0,0x0,		SU_CHATTERING,Chattering
 5056,0,0,0,0,0,0,1,0,no,0,0,0,none,0,0x0,		SU_SPIRITOFSEA,Spirit of Sea
 
+// Wedding Skills 3
+5063,1,6,4,0,0x1,0,1,1,yes,0,0x4,0,none,0,0,	WE_CALLALLFAMILY,Call All Family
+5064,3,6,16,0,0x1,0,1,1,yes,0,0x4,0,none,0,0,	WE_ONEFOREVER,One Forever
+5065,1,6,4,0,0x3,3,1,1,yes,0,0x4,0,none,0,0,	WE_CHEERUP,Cheer Up
+
 //****
 // Homunculus S
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,0x0,	HLIF_HEAL,Healing Touch

+ 4 - 0
db/re/skill_nocast_db.txt

@@ -56,6 +56,7 @@
 691,4	//CASH_ASSUMPTIO
 2284,4	//SC_FATALMENACE
 2300,4	//SC_DIMENSIONDOOR
+5063,4	//WE_CALLALLFAMILY
 
 //----------------------------------------------------------------------------
 // Battlegrounds
@@ -93,6 +94,7 @@
 691,8	//CASH_ASSUMPITO
 2284,8	//SC_FATALMENACE
 2300,8	//SC_DIMENSIONDOOR
+5063,8	//WE_CALLALLFAMILY
 
 //----------------------------------------------------------------------------
 // Mixed
@@ -133,6 +135,7 @@
 // 2296,16	// SC_UNLUCKY
 // 2494,16	// GN_CHANGEMATERIAL
 // 2462,16	// SO_EL_ANALYSIS
+5063,16	//WE_CALLALLFAMILY
 
 //----------------------------------------------------------------------------
 // Zone 1 - Aldebaran Turbo Track
@@ -218,3 +221,4 @@
 336,4096 // WE_CALLPARTNER
 409,4096 // WE_CALLPARENT
 410,4096 // WE_CALLBABY
+5063,4096	//WE_CALLALLFAMILY

+ 31 - 26
db/re/skill_require_db.txt

@@ -489,7 +489,7 @@
 501,0,0,10,0,0,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_FLING
 502,0,0,20,0,0,0,99,99,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_TRIPLEACTION
 503,0,0,30,0,0,0,99,99,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_BULLSEYE
-504,0,0,30,0,0,0,99,0,0,none,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_MADNESSCANCEL
+504,0,0,30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_MADNESSCANCEL
 505,0,0,15,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_ADJUSTMENT
 506,0,0,30,0,0,0,99,0,0,none,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_INCREASING
 507,0,0,7,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//GS_MAGICALBULLET
@@ -497,13 +497,13 @@
 512,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_TRACKING
 513,0,0,15:20:25:30:35,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//GS_DISARM
 514,0,0,11:12:13:14:15,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//GS_PIERCINGSHOT
-515,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_RAPIDSHOWER
+515,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,17,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_RAPIDSHOWER
 516,0,0,32:34:36:38:40:42:44:46:48:50,0,0,0,17,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_DESPERADO
 517,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,19,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_GATLINGFEVER
 518,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//GS_DUST
-519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2:2:4:4:6:6:8:8:10:10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_FULLBUSTER
-520,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,20:21,3:5,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK
-521,0,0,4:8:12:16:20:24:28:32:36:40,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//GS_GROUNDDRIFT
+519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//GS_FULLBUSTER
+520,0,0,13:16:19:22:25:28:31:34:37:40,0,0,0,20:21,3:5,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK
+521,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//GS_GROUNDDRIFT
 
 //****
 // NJ Ninja
@@ -684,20 +684,20 @@
 2259,0,0,20,0,0,0,99,0,0,mado,0,0,2139,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_FLAMELAUNCHER
 2260,0,0,20,0,0,0,99,0,0,mado,0,0,6146,1,6147,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_COLDSLOWER
 2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//NC_ARMSCANNON
-2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,2800,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//NC_ACCELERATION
+2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2800					//NC_ACCELERATION
 2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2801						//NC_HOVERING
 2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//NC_F_SIDESLIDE
 2265,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//NC_B_SIDESLIDE
 
-2267,0,0,200,0,0,0,99,0,0,mado,0,0,2802,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_SELFDESTRUCTION
-2268,0,0,100,0,0,0,99,0,0,mado,0,0,6360,3,6363,3,6362,3,6361,3,2803,0,0,0,0,0,0,0,0,0,6146,2,0			//NC_SHAPESHIFT
-2269,0,0,20,0,0,0,99,0,0,mado,0,0,2804,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_EMERGENCYCOOL
+2267,0,0,200,0,0,0,99,0,0,mado,0,0,6146,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2802						//NC_SELFDESTRUCTION
+2268,0,0,100,0,0,0,99,0,0,mado,0,0,6360,3,6363,3,6362,3,6361,3,6146,2,0,0,0,0,0,0,0,0,0,0,2803			//NC_SHAPESHIFT
+2269,0,0,20,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2804						//NC_EMERGENCYCOOL
 2270,0,0,45,0,0,0,99,0,0,mado,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//NC_INFRAREDSCAN
 2271,0,0,30,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//NC_ANALYZE
-2272,0,0,60:70:80,0,0,0,99,0,0,mado,0,0,2805,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_MAGNETICFIELD
-2273,0,0,80:90:100,0,0,0,99,0,0,mado,0,0,2806,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//NC_NEUTRALBARRIER
-2274,0,0,80:100:120,0,0,0,99,0,0,mado,0,0,2808,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//NC_STEALTHFIELD
-2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,12392,1,12392,1,12393,1,12393,1,12394,1,0,0,0,0,0,0,0,0,2807,0,0			//NC_REPAIR
+2272,0,0,60:70:80,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2805						//NC_MAGNETICFIELD
+2273,0,0,80:90:100,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2806						//NC_NEUTRALBARRIER
+2274,0,0,80:100:120,0,0,0,99,0,0,mado,0,0,6146,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2808				//NC_STEALTHFIELD
+2275,0,0,25:30:35:40:45,0,0,0,99,0,0,mado,0,0,12392,1,12392,1,12393,1,12393,1,12394,1,0,0,0,0,0,0,0,0,0,0,2807			//NC_REPAIR
 
 2278,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//NC_AXEBOOMERANG
 2279,0,0,20:22:24:26:28,0,0,0,6:7,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//NC_POWERSWING
@@ -892,25 +892,25 @@
 // Rebellion
 //2551,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_GLITTERING_GREED
 2552,0,0,10,0,0,100,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_RICHS_COIN
-2553,0,0,80:84:88:92:96,0,0,0,18,3,1,none,0,1,7663,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_MASS_SPIRAL
-2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_BANISHING_BUSTER
+2553,0,0,40:44:48:52:56,0,0,0,18,3,1,none,0,0,7663,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_MASS_SPIRAL
+2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_BANISHING_BUSTER
 2555,0,0,30:32:34:36:38,0,0,0,17:18:19:20:21,0,0,none,0,1,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_B_TRAP
-2556,0,0,2,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FLICKER
-2557,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_S_STORM
-2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_E_CHAIN
+2556,0,0,2,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FLICKER
+2557,0,0,50:55:60:65:70,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_S_STORM
+2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_E_CHAIN
 2559,0,0,5,0,0,0,17:18:19:20:21,3:4:5,1,none,SC_QD_SHOT_READY,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//RL_QD_SHOT
-2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_C_MARKER
-2561,0,0,10:15:20:25:30,0,0,0,17,3,5,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_FIREDANCE
-2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,1,7664,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_H_MINE
-2563,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_P_ALTER
+2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_C_MARKER
+2561,0,0,12:14:16:18:20,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_FIREDANCE
+2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,0,7664,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_H_MINE
+2563,0,0,20:24:28:32:36,0,0,0,99,3,1,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13201:13220:13221				//RL_P_ALTER
 2564,0,0,10,0,0,0,17,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_FALLEN_ANGEL
-2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_R_TRIP
+2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_R_TRIP
 2566,0,0,60:70:80:90:100,0,0,0,21,5,1,none,0,0,7665,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_D_TAIL
 2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_FIRE_RAIN
 2568,0,0,30,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_HEAT_BARREL
-2569,0,0,80:84:88:92:96,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0		//RL_AM_BLAST
-2570,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_SLUGSHOT
-2571,0,0,70:80:90:100:110,0,0,0,18,3,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_HAMMER_OF_GOD
+2569,0,0,80:84:88:92:96,0,0,0,18,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//RL_AM_BLAST
+2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,13214,1,13213,1,13212,1,13211,1,13210,1,0,0,0,0,0,0,0,0,0,0,0	//RL_SLUGSHOT
+2571,0,0,35:40:45:50:55,0,0,0,18,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//RL_HAMMER_OF_GOD
 2572,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//RL_R_TRIP_PLUSATK
 //2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_B_FLICKER_ATK
 //2574,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//RL_GLITTERING_GREED_ATK
@@ -1006,6 +1006,11 @@
 5053,0,0,100:90:80:70:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//SU_MEOWMEOW
 5055,0,0,50:45:40:35:30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//SU_CHATTERING
 
+// Wedding Skills 3
+5063,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//WE_CALLALLFAMILY
+5064,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//WE_ONEFOREVER
+5065,0,0,50,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//WE_CHEERUP
+
 8001,0,0,13:16:19:22:25,0,0,0,99,0,0,none,0,0,545,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//HLIF_HEAL
 8002,0,0,20:25:30:35:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//HLIF_AVOID
 8004,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0							//HLIF_CHANGE

+ 97 - 44
db/re/skill_tree.txt

@@ -597,6 +597,8 @@
 22,335,1,0,0,0,0,0,0,0,0,0,0 //WE_FEMALE#I Look up to You#
 22,336,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARTNER#I miss You#
 22,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
+22,5063,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLALLFAMILY#Call All Family#
+22,5064,1,0,0,0,0,0,0,0,0,0,0 //WE_ONEFOREVER#One Forever#
 //SuperNovice
 23,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 23,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -657,11 +659,11 @@
 24,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
 24,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin#
 24,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling#
-24,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
-24,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
-24,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
-24,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment#
-24,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
+24,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
+24,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
+24,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
+24,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment#
+24,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
 24,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet#
 24,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker#
 24,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action#
@@ -675,7 +677,7 @@
 24,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
 24,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
 24,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
-24,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
+24,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 24,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
 24,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 //Ninja
@@ -1387,6 +1389,7 @@
 4023,143,1,0,0,0,0,0,0,0,0,0,0 //NV_TRICKDEAD#Act Dead#
 4023,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4023,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4023,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Swordman
 4024,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4024,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1402,6 +1405,7 @@
 4024,146,1,0,0,0,0,0,0,0,0,0,0 //SM_AUTOBERSERK#Auto Berserk#
 4024,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4024,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4024,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Magician
 4025,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4025,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1421,6 +1425,7 @@
 4025,157,1,0,0,0,0,0,0,0,0,0,0 //MG_ENERGYCOAT#Energy Coat#
 4025,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4025,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4025,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Archer
 4026,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4026,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1433,6 +1438,7 @@
 4026,148,1,0,0,0,0,0,0,0,0,0,0 //AC_CHARGEARROW#Arrow Repel#
 4026,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4026,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4026,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Acolyte
 4027,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4027,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1453,6 +1459,7 @@
 4027,156,1,0,0,0,0,0,0,0,0,0,0 //AL_HOLYLIGHT#Holy Light#
 4027,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4027,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4027,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Merchant
 4028,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4028,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1470,6 +1477,7 @@
 4028,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4028,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4028,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4028,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Thief
 4029,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4029,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1485,6 +1493,7 @@
 4029,152,1,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE#Stone Fling#
 4029,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
 4029,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4029,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Knight
 4030,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4030,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1512,6 +1521,7 @@
 4030,64,5,63,1,0,0,0,0,0,0,0,0 //KN_CAVALIERMASTERY#Cavalier Mastery#
 4030,1001,1,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#Charge Attack#
 4030,495,1,60,10,0,0,0,0,0,0,0,0	//KN_ONEHAND#Onehand Quicken#
+4030,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Priest
 4031,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4031,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1551,6 +1561,7 @@
 4031,78,1,76,5,0,0,0,0,0,0,0,0 //PR_LEXAETERNA#Lex Aeterna#
 4031,79,10,12,1,78,1,77,3,0,0,0,0 //PR_MAGNUS#Magnus Exorcismus#
 4031,1014,1,0,0,0,0,0,0,0,0,0,0 //PR_REDEMPTIO#Redemptio#
+4031,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Wizard
 4032,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4032,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1584,6 +1595,7 @@
 4032,92,5,91,1,0,0,0,0,0,0,0,0 //WZ_QUAGMIRE#Quagmire#
 4032,93,1,0,0,0,0,0,0,0,0,0,0 //WZ_ESTIMATION#Sense#
 4032,1006,1,0,0,0,0,0,0,0,0,0,0 //WZ_SIGHTBLASTER#Sight Blaster#
+4032,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Blacksmith
 4033,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4033,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1625,6 +1637,7 @@
 4033,459,1,111,5,0,0,0,0,0,0,0,0	//BS_ADRENALINE2#Full Adrenaline Rush#
 4033,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4033,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4033,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Hunter
 4034,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4034,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1656,6 +1669,7 @@
 4034,131,5,124,1,127,1,0,0,0,0,0,0 //HT_SPRINGTRAP#Spring Trap#
 4034,1009,1,0,0,0,0,0,0,0,0,0,0 //HT_PHANTASMIC#Phantasmic Arrow#
 4034,499,1,46,10,0,0,0,0,0,0,0,0	//HT_POWER#Beast Strafing#
+4034,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Assassin
 4035,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4035,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1683,6 +1697,7 @@
 4035,141,10,139,5,140,5,0,0,0,0,0,0 //AS_SPLASHER#Venom Splasher#
 4035,1003,1,0,0,0,0,0,0,0,0,0,0 //AS_SONICACCEL#Sonic Acceleration#
 4035,1004,1,0,0,0,0,0,0,0,0,0,0 //AS_VENOMKNIFE#Throw Venom Knife#
+4035,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Knight(Peco)
 4036,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4036,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1710,6 +1725,7 @@
 4036,64,5,63,1,0,0,0,0,0,0,0,0 //KN_CAVALIERMASTERY#Cavalier Mastery#
 4036,1001,1,0,0,0,0,0,0,0,0,0,0 //KN_CHARGEATK#Charge Attack#
 4036,495,1,60,10,0,0,0,0,0,0,0,0	//KN_ONEHAND#Onehand Quicken#
+4036,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Crusader
 4037,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4037,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1744,6 +1760,7 @@
 4037,257,5,251,1,0,0,0,0,0,0,0,0 //CR_DEFENDER#Defending Aura#
 4037,258,10,55,10,0,0,0,0,0,0,0,0 //CR_SPEARQUICKEN#Spear Quicken#
 4037,1002,1,0,0,0,0,0,0,0,0,0,0 //CR_SHRINK#Shrink#
+4037,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Monk
 4038,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4038,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1781,6 +1798,7 @@
 4038,273,5,272,3,0,0,0,0,0,0,0,0 //MO_COMBOFINISH#Raging Thrust#
 4038,1015,1,0,0,0,0,0,0,0,0,0,0 //MO_KITRANSLATION#Ki Translation#
 4038,1016,1,0,0,0,0,0,0,0,0,0,0 //MO_BALKYOUNG#Ki Explosion#
+4038,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Sage
 4039,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4039,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1825,6 +1843,7 @@
 4039,1017,1,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTGROUND#Elemental Change Earth#
 4039,1018,1,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTFIRE#Elemental Change Fire#
 4039,1019,1,0,0,0,0,0,0,0,0,0,0 //SA_ELEMENTWIND#Elemental Change Wind#
+4039,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Rogue
 4040,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4040,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1861,6 +1880,7 @@
 4040,224,5,223,1,0,0,0,0,0,0,0,0 //RG_COMPULSION#Haggle#
 4040,225,10,219,5,0,0,0,0,0,0,0,0 //RG_PLAGIARISM#Intimidate#
 4040,1005,1,0,0,0,0,0,0,0,0,0,0 //RG_CLOSECONFINE#Close Confine#
+4040,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Alchemist
 4041,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4041,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1898,6 +1918,7 @@
 4041,498,1,228,10,0,0,0,0,0,0,0,0	//AM_TWILIGHT3#Twilight Alchemy 3#
 4041,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4041,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4041,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Bard
 4042,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4042,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1929,6 +1950,7 @@
 4042,312,1,306,1,0,0,0,0,0,0,0,0 //BD_INTOABYSS#Power Chord#
 4042,313,5,321,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4042,1010,1,0,0,0,0,0,0,0,0,0,0 //BA_PANGVOICE#Pang Voice#
+4042,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Dancer
 4043,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4043,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1960,6 +1982,7 @@
 4043,312,1,306,1,0,0,0,0,0,0,0,0 //BD_INTOABYSS#Power Chord#
 4043,313,5,329,10,0,0,0,0,0,0,0,0 //BD_SIEGFRIED#Acoustic Rhythm#
 4043,1011,1,0,0,0,0,0,0,0,0,0,0 //DC_WINKCHARM#Wink of Charm#
+4043,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Crusader(Peco)
 4044,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4044,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -1994,6 +2017,7 @@
 4044,257,5,251,1,0,0,0,0,0,0,0,0 //CR_DEFENDER#Defending Aura#
 4044,258,10,55,10,0,0,0,0,0,0,0,0 //CR_SPEARQUICKEN#Spear Quicken#
 4044,1002,1,0,0,0,0,0,0,0,0,0,0 //CR_SHRINK#Shrink#
+4044,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Super Baby
 4045,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4045,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -2050,6 +2074,7 @@
 4045,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4045,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4045,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4045,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Taekwon
 4046,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4046,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4417,6 +4442,7 @@
 4096,2020,5,57,2,0,0,0,0,0,0,0,0 //RK_PHANTOMTHRUST#Phantom Thrust#
 4096,5004,10,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONBREATH_WATER#Dragon Breath(Water)#
 4096,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4096,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Warlock
 4097,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4097,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4475,6 +4501,7 @@
 4097,2232,5,0,0,0,0,0,0,0,0,0,0 //WL_FREEZE_SP#Freeze Spell#
 4097,5012,5,2202,5,0,0,0,0,0,0,0,0 //WL_TELEKINESIS_INTENSE#Intense Telekinesis#
 4097,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4097,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Ranger
 4098,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4098,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4530,6 +4557,7 @@
 4098,2254,5,2237,1,0,0,0,0,0,0,0,0 //RA_ICEBOUNDTRAP#Icebound Trap#
 4098,5002,5,2234,5,0,0,0,0,0,0,0,0 //RA_UNLIMIT#Unlimit#
 4098,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4098,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Arch Bishop
 4099,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4099,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4590,6 +4618,7 @@
 4099,2515,5,2044,1,2053,1,0,0,0,0,0,0 //AB_SECRAMENT#Secrament#
 4099,5011,5,2051,2,0,0,0,0,0,0,0,0 //AB_OFFERTORIUM#Offertorium#
 4099,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4099,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Mechanic
 4100,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4100,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4662,6 +4691,7 @@
 4100,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
 4100,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4100,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4100,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Guillotine Cross
 4101,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4101,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4708,6 +4738,7 @@
 4101,2037,5,2036,1,0,0,0,0,0,0,0,0 //GC_CROSSRIPPERSLASHER#Cross Ripper Slasher#
 4101,5001,5,2023,5,0,0,0,0,0,0,0,0 //GC_DARKCROW#Dark Claw#
 4101,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4101,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Royal Guard
 4102,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4102,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4763,6 +4794,7 @@
 4102,2325,5,2315,3,2321,4,2322,5,0,0,0,0 //LG_INSPIRATION#Inspiration#
 4102,5013,5,2311,5,0,0,0,0,0,0,0,0 //LG_KINGS_GRACE#King's Grace#
 4102,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4102,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Sorcerer
 4103,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4103,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4835,6 +4867,7 @@
 4103,2468,3,2460,3,0,0,0,0,0,0,0,0 //SO_EARTH_INSIGNIA#Earth Insignia#
 4103,5008,5,2456,3,0,0,0,0,0,0,0,0 //SO_ELEMENTAL_SHIELD#Elemental Shield#
 4103,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4103,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Minstrel
 4104,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4104,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4892,6 +4925,7 @@
 4104,2434,5,2429,1,2433,1,0,0,0,0,0,0 //WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
 4104,5007,5,2412,2,0,0,0,0,0,0,0,0 //WM_FRIGG_SONG#
 4104,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4104,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Wanderer
 4105,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4105,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -4949,6 +4983,7 @@
 4105,2434,5,2429,1,2433,1,0,0,0,0,0,0 //WM_UNLIMITED_HUMMING_VOICE#Unlimited Humming Voice#
 4105,5007,5,2412,2,0,0,0,0,0,0,0,0 //WM_FRIGG_SONG#
 4105,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4105,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Sura
 4106,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4106,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5010,6 +5045,7 @@
 4106,2518,5,267,3,0,0,0,0,0,0,0,0 //SR_RIDEINLIGHTNING#Ride In Lightening#
 4106,5009,5,2326,3,2329,3,2330,1,2327,1,0,0 //SR_FLASHCOMBO#Flash Combo#
 4106,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4106,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Genetic
 4107,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4107,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5068,6 +5104,7 @@
 4107,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
 4107,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4107,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4107,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Shadow Chaser
 4108,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4108,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5127,6 +5164,7 @@
 4108,2304,3,2300,3,0,0,0,0,0,0,0,0 //SC_FEINTBOMB#Feint Bomb#
 4108,5010,5,2288,2,0,0,0,0,0,0,0,0 //SC_ESCAPE#Emergency Escape#
 4108,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4108,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Rune Knight (Dragon)
 4109,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4109,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5167,6 +5205,7 @@
 4109,2020,5,57,2,0,0,0,0,0,0,0,0 //RK_PHANTOMTHRUST#Phantom Thrust#
 4109,5004,10,2007,2,0,0,0,0,0,0,0,0 //RK_DRAGONBREATH_WATER#Dragon Breath(Water)#
 4109,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4109,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Royal Guard (Gryphon)
 4110,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4110,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5222,6 +5261,7 @@
 4110,2325,5,2315,3,2321,4,2322,5,0,0,0,0 //LG_INSPIRATION#Inspiration#
 4110,5013,5,2311,5,0,0,0,0,0,0,0,0 //LG_KINGS_GRACE#King's Grace#
 4110,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4110,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Ranger (Warg)
 4111,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4111,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5277,6 +5317,7 @@
 4111,2254,5,2237,1,0,0,0,0,0,0,0,0 //RA_ICEBOUNDTRAP#Icebound Trap#
 4111,5002,5,2234,5,0,0,0,0,0,0,0,0 //RA_UNLIMIT#Unlimit#
 4111,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
+4111,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Mechanic (Mado)
 4112,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4112,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5349,6 +5390,7 @@
 4112,5014,5,0,0,0,0,0,0,0,0,0,0 //ALL_FULL_THROTTLE#Full Throttle#
 4112,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4112,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4112,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Super Novice (Expanded)
 4190,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4190,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5518,6 +5560,7 @@
 4191,365,1,9,1,0,0,0,0,0,0,0,0 //HW_MAGICCRASHER#Stave Crasher#
 4191,2535,1,41,1,0,0,0,0,0,0,0,0 //ALL_BUYING_STORE#Open Buying Store#
 4191,2544,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTDECORATE#Cart Decorate#
+4191,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Kagerou
 4211,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4211,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5627,11 +5670,11 @@
 4215,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
 4215,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin#
 4215,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling#
-4215,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
-4215,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
-4215,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
-4215,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment#
-4215,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
+4215,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action#
+4215,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye#
+4215,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler#
+4215,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment#
+4215,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy#
 4215,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet#
 4215,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker#
 4215,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action#
@@ -5645,29 +5688,29 @@
 4215,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever#
 4215,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust#
 4215,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
-4215,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
+4215,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 4215,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
 4215,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 4215,2552,1,500,5,0,0,0,0,0,0,0,0 //RL_RICHS_COIN#Rich's Coin#
 4215,2553,5,514,1,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL#Mass Spiral#
 4215,2554,5,2557,1,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER#Banishing Buster#
-4215,2555,5,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap#
-4215,2556,1,501,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker#
+4215,2555,5,2556,1,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap#
+4215,2556,1,500,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker#
 4215,2557,5,513,1,518,1,0,0,0,0,0,0 //RL_S_STORM#Shatter Storm#
-4215,2558,10,511,10,0,0,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain#
-4215,2559,1,2558,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot#
-4215,2560,1,506,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker#
-4215,2561,5,2564,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance#
-4215,2562,5,520,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine#
-4215,2563,5,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter#
-4215,2564,5,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel#
+4215,2558,10,500,1,511,10,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain#
+4215,2559,1,511,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot#
+4215,2560,1,500,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker#
+4215,2561,5,516,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance#
+4215,2562,5,521,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine#
+4215,2563,5,2552,1,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter#
+4215,2564,1,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel#
 4215,2565,5,2567,1,0,0,0,0,0,0,0,0 //RL_R_TRIP#Round Trip#
 4215,2566,5,2560,1,2562,3,0,0,0,0,0,0 //RL_D_TAIL#Dragon Tail#
 4215,2567,5,517,1,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN#Fire Rain#
-4215,2568,5,2561,2,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel#
+4215,2568,5,2552,1,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel#
 4215,2569,5,2553,1,0,0,0,0,0,0,0,0 //RL_AM_BLAST#Anti-Material Blast#
 4215,2570,5,2554,3,0,0,0,0,0,0,0,0 //RL_SLUGSHOT#Slug Shot#
-4215,2571,5,2569,3,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God#
+4215,2571,5,2552,1,2569,3,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God#
 //Summoner
 4218,5018,1,0,0,0,0,0,0,0,0,0,0 //SU_BASIC_SKILL##
 4218,5019,1,5018,1,0,0,0,0,0,0,0,0 //SU_BITE##
@@ -5704,8 +5747,7 @@
 4218,5054,1,100,0,5048,5,0,0,0,0,0,0,0,0 //SU_SPIRITOFLAND##
 4218,5055,5,100,0,5025,1,0,0,0,0,0,0,0,0 //SU_CHATTERING##
 4218,5056,1,100,0,5051,5,0,0,0,0,0,0,0,0 //SU_SPIRITOFSEA##
-4218,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4218,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby#
 //Baby Summoner
 4220,5018,1,0,0,0,0,0,0,0,0,0,0 //SU_BASIC_SKILL##
 4220,5019,1,5018,1,0,0,0,0,0,0,0,0 //SU_BITE##
@@ -5729,8 +5771,9 @@
 4220,5039,5,5038,3,0,0,0,0,0,0,0,0 //SU_TUNAPARTY##
 4220,5040,5,5041,3,0,0,0,0,0,0,0,0 //SU_BUNCHOFSHRIMP##
 4220,5041,5,5024,1,0,0,0,0,0,0,0,0 //SU_FRESHSHRIMP##
-4220,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4220,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4220,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4220,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Ninja
 4222,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4222,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5757,8 +5800,9 @@
 4222,542,5,533,10,541,5,0,0,0,0,0,0 //NJ_KAMAITACHI#NJ_KAMAITACHI#
 4222,543,5,533,5,0,0,0,0,0,0,0,0 //NJ_NEN#NJ_NEN#
 4222,544,10,522,7,530,5,543,1,0,0,0,0 //NJ_ISSEN#NJ_ISSEN#
-4222,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4222,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4222,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4222,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Kagerou
 4223,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4223,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5785,7 +5829,8 @@
 4223,542,5,533,10,541,5,0,0,0,0,0,0 //NJ_KAMAITACHI#NJ_KAMAITACHI#
 4223,543,5,533,5,0,0,0,0,0,0,0,0 //NJ_NEN#NJ_NEN#
 4223,544,10,522,7,530,5,543,1,0,0,0,0 //NJ_ISSEN#NJ_ISSEN#
-4223,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
+4223,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4223,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4223,3001,1,530,5,0,0,0,0,0,0,0,0 //KO_YAMIKUMO##
 4223,3002,5,0,0,0,0,0,0,0,0,0,0 //KO_RIGHT##
 4223,3003,5,0,0,0,0,0,0,0,0,0,0 //KO_LEFT##
@@ -5811,7 +5856,7 @@
 4223,3023,5,3012,1,0,0,0,0,0,0,0,0 //KG_KAGEHUMI##
 4223,3024,5,3023,2,0,0,0,0,0,0,0,0 //KG_KYOMU##
 4223,3025,5,3024,3,0,0,0,0,0,0,0,0 //KG_KAGEMUSYA##
-
+4223,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Oboro
 4224,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4224,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5838,7 +5883,8 @@
 4224,542,5,533,10,541,5,0,0,0,0,0,0 //NJ_KAMAITACHI#NJ_KAMAITACHI#
 4224,543,5,533,5,0,0,0,0,0,0,0,0 //NJ_NEN#NJ_NEN#
 4224,544,10,522,7,530,5,543,1,0,0,0,0 //NJ_ISSEN#NJ_ISSEN#
-4224,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
+4224,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4224,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4224,3001,1,530,5,0,0,0,0,0,0,0,0 //KO_YAMIKUMO##
 4224,3002,5,0,0,0,0,0,0,0,0,0,0 //KO_RIGHT##
 4224,3003,5,0,0,0,0,0,0,0,0,0,0 //KO_LEFT##
@@ -5864,7 +5910,7 @@
 4224,3026,5,3021,1,0,0,0,0,0,0,0,0 //OB_ZANGETSU##
 4224,3027,5,3029,3,0,0,0,0,0,0,0,0 //OB_OBOROGENSOU##
 4224,3029,5,3026,2,0,0,0,0,0,0,0,0 //OB_AKAITSUKI##
-
+4224,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Taekwon
 4225,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4225,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5885,8 +5931,9 @@
 4225,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind#
 4225,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump#
 4225,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission#
-4225,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4225,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4225,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4225,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Star Gladiator
 4226,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4226,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5907,6 +5954,8 @@
 4226,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind#
 4226,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump#
 4226,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission#
+4226,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4226,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4226,427,3,0,0,0,0,0,0,0,0,0,0	//SG_FEEL#Feeling the Sun, Moon and Stars#
 4226,428,3,427,1,0,0,0,0,0,0,0,0	//SG_SUN_WARM#Warmth of the Sun#
 4226,429,3,427,2,0,0,0,0,0,0,0,0	//SG_MOON_WARM#Warmth of the Moon#
@@ -5925,8 +5974,7 @@
 4226,442,3,0,0,0,0,0,0,0,0,0,0	//SG_FRIEND#Friend of the Sun, Moon and Stars#
 4226,443,10,0,0,0,0,0,0,0,0,0,0	//SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars#
 4226,444,1,443,9,0,0,0,0,0,0,0,0	//SG_FUSION#Union of the Sun, Moon and Stars#
-4226,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4226,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Soul Linker
 4227,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4227,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -5947,6 +5995,8 @@
 4227,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind#
 4227,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump#
 4227,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission#
+4227,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4227,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4227,445,5,0,0,0,0,0,0,0,0,0,0	//SL_ALCHEMIST#Spirit of the Alchemist#
 4227,447,5,0,0,0,0,0,0,0,0,0,0	//SL_MONK#Spirit of the Monk#
 4227,448,5,0,0,0,0,0,0,0,0,0,0	//SL_STAR#Spirit of the Star Knight#
@@ -5974,8 +6024,7 @@
 4227,471,3,452,1,0,0,0,0,0,0,0,0	//SL_SKE#Esk#
 4227,472,3,447,1,0,0,0,0,0,0,0,0	//SL_SKA#Eska#
 4227,494,5,451,1,0,0,0,0,0,0,0,0	//SL_HIGH#Spirit of Rebirth#
-4227,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4227,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Gunslinger
 4228,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4228,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -6001,8 +6050,9 @@
 4228,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
 4228,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 4228,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
-4228,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
-
+4228,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4228,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
+4228,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Rebellion
 4229,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4229,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -6028,7 +6078,8 @@
 4229,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster#
 4229,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack#
 4229,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift#
-4229,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
+4229,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4229,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4229,2552,1,500,5,0,0,0,0,0,0,0,0 //RL_RICHS_COIN#Rich's Coin#
 4229,2553,5,514,1,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL#Mass Spiral#
 4229,2554,5,2557,1,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER#Banishing Buster#
@@ -6049,7 +6100,7 @@
 4229,2569,5,2553,1,0,0,0,0,0,0,0,0 //RL_AM_BLAST#Anti-Material Blast#
 4229,2570,5,2554,3,0,0,0,0,0,0,0,0 //RL_SLUGSHOT#Slug Shot#
 4229,2571,5,2569,3,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God#
-
+4229,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#
 //Baby Star Gladiator (Union)
 4238,1,9,0,0,0,0,0,0,0,0,0,0 //NV_BASIC#Basic Skill#
 4238,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid#
@@ -6070,6 +6121,8 @@
 4238,425,7,422,5,423,5,424,5,0,0,0,0 //TK_SEVENWIND#Warm Wind#
 4238,426,5,0,0,0,0,0,0,0,0,0,0 //TK_HIGHJUMP#High Jump#
 4238,493,1,424,5,0,0,0,0,0,0,0,0 //TK_MISSION#Taekwon Mission#
+4238,408,1,0,0,0,0,0,0,0,0,0,0 //WE_BABY#Baby#
+4238,409,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLPARENT#Call Parent#
 4238,427,3,0,0,0,0,0,0,0,0,0,0	//SG_FEEL#Feeling the Sun, Moon and Stars#
 4238,428,3,427,1,0,0,0,0,0,0,0,0	//SG_SUN_WARM#Warmth of the Sun#
 4238,429,3,427,2,0,0,0,0,0,0,0,0	//SG_MOON_WARM#Warmth of the Moon#
@@ -6088,4 +6141,4 @@
 4238,442,3,0,0,0,0,0,0,0,0,0,0	//SG_FRIEND#Friend of the Sun, Moon and Stars#
 4238,443,10,0,0,0,0,0,0,0,0,0,0	//SG_KNOWLEDGE#Knowledge of the Sun, Moon and Stars#
 4238,444,1,443,9,0,0,0,0,0,0,0,0	//SG_FUSION#Union of the Sun, Moon and Stars#
-4238,681,1,0,0,0,0,0,0,0,0,0,0 //ALL_INCCARRY#Enlarge Weight Limit R#
+4238,5065,1,0,0,0,0,0,0,0,0,0,0 //WE_CHEERUP#Cheer Up#

+ 1 - 0
db/skill_copyable_db.txt

@@ -181,6 +181,7 @@ GC_DARKCROW,2      // Dark Claw
 // Arch Bishop
 AB_JUDEX,2        // Judex
 AB_ADORAMUS,2     // Adoramus
+AB_RENOVATIO,2    // Renovatio
 AB_HIGHNESSHEAL,2 // Highness Heal
 AB_DUPLELIGHT,2   // Duple Light
 AB_DUPLELIGHT_MELEE,2	// Dummy skill for Duple Light

+ 15 - 5
doc/atcommands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20160313
+//= 20171011
 //===== Description: =========================================
 //= List of available atcommands and their functions.
 //============================================================
@@ -226,14 +226,24 @@ New warp NPC 'my_warp_sample' created.
 @effect <effect ID>
 
 Creates a visual effect on or around the character.
-A list of IDs can be found in '/db/const.txt'.
-Descriptions of the effects can be found in '/doc/effect_list.txt'.
+A list of IDs and descriptions of the effects can be found in '/doc/effect_list.txt'.
 
 ---------------------------------------
 
-@misceffect
+@misceffect <effect ID>
 
-Does some visual effect on the character (more info needed).
+Does some visual effect on the character.
+Possible effect IDs:
+	0 = base level up
+	1 = job level up
+	2 = refine failure
+	3 = refine success
+	4 = game over
+	5 = pharmacy success
+	6 = pharmacy failure
+	7 = base level up (super novice)
+	8 = job level up (super novice)
+	9 = base level up (taekwon)
 
 ---------------------------------------
 

+ 2 - 2
doc/effect_list.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20120822
+//= 20171011
 //===== Description: =========================================
 //= A list of client-side effects sorted by ID.
 //============================================================
@@ -11,7 +11,7 @@
 The following is a compiled list of visual and sound effects which the client
 can produce when receiving a packet with id 0x1f3 (01f3 <ID>.l <type>.l).
 Each list entry contains a number and a short description of the effect.
-You can produce these effects ingame by doing "@effect <number> 22" (22=self).
+You can produce these effects ingame by doing "@effect <number>".
 It's also possible to attach effects to item/npc scripts by using 'misceffect'.
 
 Number	Description

+ 42 - 12
doc/script_commands.txt

@@ -3,7 +3,7 @@
 //===== By:==================================================
 //= rAthena Dev Team
 //===== Last Updated:========================================
-//= 20161206
+//= 20171011
 //===== Description:=========================================
 //= A reference manual for the rAthena scripting language.
 //= Commands are sorted depending on their functionality.
@@ -6552,15 +6552,30 @@ The label "OnBuyItem" sets the following arrays:
 	@bought_quantity - amount bought
 
 The label "OnSellItem" sets the following arrays:
-	@sold_nameid     - item ID sold
-	@sold_quantity   - amount sold
-	@sold_refine     - refine count
-	@sold_attribute  - if the item is broken (1) or not (0)
-	@sold_identify   - if the item is identified (1) or not (0)
-	@sold_card1      - card slot 1
-	@sold_card2      - card slot 2
-	@sold_card3      - card slot 3
-	@sold_card4      - card slot 4
+	@sold_nameid        - item ID sold
+	@sold_quantity      - amount sold
+	@sold_refine        - refine count
+	@sold_attribute     - if the item is broken (1) or not (0)
+	@sold_identify      - if the item is identified (1) or not (0)
+	@sold_card1         - card slot 1
+	@sold_card2         - card slot 2
+	@sold_card3         - card slot 3
+	@sold_card4         - card slot 4
+	@sold_option_id1    - random option ID 1
+	@sold_option_val1   - random option value 1
+	@sold_option_param1 - random option param 1
+	@sold_option_id2    - random option ID 2
+	@sold_option_val2   - random option value 2
+	@sold_option_param2 - random option param 2
+	@sold_option_id3    - random option ID 3
+	@sold_option_val3   - random option value 3
+	@sold_option_param3 - random option param 3
+	@sold_option_id4    - random option ID 4
+	@sold_option_val4   - random option value 4
+	@sold_option_param4 - random option param 4
+	@sold_option_id5    - random option ID 5
+	@sold_option_val5   - random option value 5
+	@sold_option_param5 - random option param 5
 
 Note: These labels will only be triggered if an npcshop* command is executed because these
 commands set a special data on the shop NPC, named master_nd in the source. The above labels
@@ -7313,6 +7328,7 @@ The commands can also run without an attached rid.
 This command will bind a NPC event label to an atcommand. Upon execution of the
 atcommand, the user will invoke the NPC event label. Each atcommand is only allowed
 one binding. If you rebind, it will override the original binding.
+Note: The default level for atcommand is 0 while the default level for charcommand is 100.
 
 The following variables are set upon execution:
 	.@atcmd_command$       =  The name of the @command used.
@@ -7328,7 +7344,7 @@ Example:
 		bindatcmd "test",strnpcinfo(3) + "::OnAtcommand";
 		end;
 	OnAtcommand:
-		specialeffect2 338;
+		specialeffect2 EF_ANGEL2;
 		end;
 	}
 
@@ -7983,6 +7999,19 @@ Example:
 
 ---------------------------------------
 
+*round(<number>,<precision>);
+*ceil(<number>,<precision>);
+*floor(<number>,<precision>);
+
+Returns <number> rounded to multiple of <precision>.
+
+`round` function will round the <number> up if its division with <precision> yield a remainder
+with a value equals to or more than half of <precision>. Otherwise, it rounds the <number> down.
+`ceil` always round the <number> up.
+`floor` always round the <number> down.
+
+---------------------------------------
+
 *md5("<string>")
 
 Returns the md5 checksum of a number or string.
@@ -9562,7 +9591,8 @@ solution rather than sending the map and the monster_id.
 
 This will set a Hat Effect onto the player. The state field allows you to
 enable (true) or disable (false) the effect on the player.
-The Hat Effect constants can be found in db/const.txt starting with HAT_EF_*.
+The Hat Effect constants can be found in 'src/map/script_constants.h' starting
+with HAT_EF_*.
 
 Requires client 2015-05-13aRagEXE or newer.
 

+ 40 - 34
doc/status_change.txt

@@ -939,22 +939,29 @@ SC_MIRACLE	()
 	desc:
 	val1:
 
-SC_MADNESSCANCEL	()
-	desc:
+SC_MADNESSCANCEL	(SI_MADNESSCANCEL)
+	desc: Increases some statuses (Base ATK, ASPD)
 	val1:
 
-SC_ADJUSTMENT	()
-	desc:
+SC_ADJUSTMENT	(SI_ADJUSTMENT)
+	desc: Increases some statuses (Hit, Flee)
 	val1:
 
 SC_INCREASING	(SI_ACCURACY)
-	desc: Increase some statuses (hit, dex, agi), GS_INCREASING effect
-	val1: (hardocded)
+	desc: Increase some statuses (Hit, Dex, Agi), GS_INCREASING effect
+	val1:
 
-SC_GATLINGFEVER	()
-	desc:
+SC_MAGICALBULLET	(SI_GS_MAGICAL_BULLET)
+	desc: Increases damage based on source's MATK and is reduced by target's MDEF
 	val1:
 
+SC_GATLINGFEVER	(SI_GATLINGFEVER)
+	desc: Increases some statuses (Base ATK, Flee, Movement Speed, ASPD)
+	val1: SkillLv
+	val2: ASPD increase (20 * val1)
+	val3: Base ATK (20 + 10 * val1) [pre-renewal]
+	val4: Flee decrease (5 * val1)
+
 SC_TATAMIGAESHI	()
 	desc:
 	val1:
@@ -1065,8 +1072,11 @@ SC_ITEMBOOST	(SI_ITEMBOOST)
 	val1: +% Drop
 
 SC_BOSSMAPINFO	(SI_BOSSMAPINFO)
-	desc:
-	val1:
+	desc: Used to display Boss location on minimap
+	val1: Boss game ID
+	val2: Used to keep timer message from spamming chat window
+	val3:
+	val4: Remaining tick
 
 SC_LIFEINSURANCE	(SI_LIFEINSURANCE)
 	desc: Remove death pleanlties
@@ -2398,47 +2408,43 @@ SC_SUPER_STAR	(SI_SUPER_STAR)
 	desc: Visual effect
 	val1:
 
-SC_HEAT_BARREL	()
-	desc: (Rebellion) Reduce fixed cast time, add ASPD rate, & reduce flee
-	val1:
-	val2: -Fixed Casttime
-	val3: +% ASPD
-	val4: -Flee
-
-SC_HEAT_BARREL_AFTER	(SI_HEAT_BARREL_AFTER)
-	desc: (Rebellion) Heat Barrel after-effect, can't do anything in this effect (like Extremity Fist after-effect)
-	val1:
+SC_HEAT_BARREL	(SI_HEAT_BARREL)
+	desc: (Rebellion) Reduce fixed cast time, add ASPD rate, and reduce FLEE
+	val1: SkillLv
+	val2: -Fixed Casttime (5 * val1)
+	val3: +% ASPD (6 + val1 * 2)
+	val4: -FLEE (25 + val1 * 5)
 
 SC_P_ALTER	(SI_P_ALTER)
-	desc: Increase attack ratio & def againts Undead monster
-	val1:
-	val2: +ATK ratio
-	val3: +Def
+	desc: Increase attack ratio and creates a barrier like Kyrie
+	val1: SkillLv
+	val2: +ATK ratio (10 * Coin Count)
+	val3: Barrier HP (Max HP * (val1 * 5) / 100)
 
 SC_E_CHAIN	(SI_E_CHAIN)
 	desc: (Rebellion) Has chance to trigger Chain Action for any weapon
-	val1:
-	val2: Coins used for succes rate. (5*val)
+	val1: SkillLv
+	val2: Coins used for success rate. (5 * val)
 
 SC_C_MARKER	(SI_C_MARKER)
 	desc: (Rebellion) Crimson Marker effect, also sends the target location to the caster
-	val1:
+	val1: SkillLv
 	val2:
-	val3: -Flee
+	val3: -FLEE (10)
 
 SC_ANTI_M_BLAST	(SI_ANTI_M_BLAST)
 	desc: (Rebellion) Anti-Material effect, reduce resistance of Neutral attack
-	val1: Level for duration look up
-	val2: Reduction ratio
+	val1: SkillLv
+	val2: Reduction ratio (10 * val1)
 
 SC_B_TRAP	(SI_B_TRAP)
-	desc: (Rebellion) Bind Trap effect, waiting for Flicker being used
-	val1:
+	desc: (Rebellion) Bind Trap effect, waiting for Flicker to be used
+	val1: SkillLv
 	val2:
-	val3: -Walk Speed (Unstackable penalty)
+	val3: -Walk Speed (Unstackable penalty) (25 * val1)
 
 SC_H_MINE	(SI_H_MINE)
-	desc: (Rebellion) Howling Mine effect, waiting for Flicker being used
+	desc: (Rebellion) Howling Mine effect, waiting for Flicker to be used
 	val1:
 
 SC_QD_SHOT_READY	(SI_E_QD_SHOT_READY)

+ 2 - 2
npc/custom/events/holiday/valentinesdayexp.txt

@@ -62,9 +62,9 @@ M_INFO:
 
 OnInit:
 	//559,Hand-made_Chocolate
-	setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
+	setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
 	//560,Hand-made_White_Chocolate
-	setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
+	setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
 
 	//2634,Wedding_Ring_M,Wedding Ring,5,,10,0,,0,,0,127918079,7,1,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; }
 	setitemscript 2634,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(DT_HOUR)+1 && ispartneron()){ bonus2 bExpAddRace,5,50; bonus2 bExpAddRace,6,50; bonus2 bExpAddRace,7,50; bonus2 bExpAddRace,8,50; bonus2 bExpAddRace,1,50; } }";

+ 1 - 1
npc/custom/events/holiday/xmas_rings_event.txt

@@ -91,7 +91,7 @@ M_QUEST:
 
 OnInit:
 //Santa's Hat
-	setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 410; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 72;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 338;}}";
+	setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_RAINBOW; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_SPHERE;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_ANGEL2;}}";
 //Gold Xmas Ring
 	setitemscript 2636,"{ bonus bLoseSPWhenUnequip,30; if(isequipped(2236)==0)end; if(getskilllv(\"AL_HEAL\")){skill \"TF_HIDING\",4+isequipped(2637);}else{skill \"AL_HEAL\",1+4*isequipped(2637);} }";
 //Silver Xmas Ring

+ 427 - 243
npc/custom/jobmaster.txt

@@ -1,29 +1,95 @@
 //===== rAthena Script =======================================
 //= Job Master
-//===== By: ==================================================
-//= Euphy
-//===== Current Version: =====================================
-//= 1.4
-//===== Compatible With: ===================================== 
-//= rAthena Project
 //===== Description: =========================================
 //= A fully functional job changer.
 //===== Additional Comments: =================================
-//= 1.0 Initial script.
+//= 1.0 Initial script. [Euphy]
 //= 1.1 Fixed reset on Baby job change.
 //= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support.
 //= 1.3 Kagerou/Oboro added.
 //= 1.4 Rebellion added.
+//= 1.5 Added option to disable RebirthClass. [mazvi]
+//= 1.6 Added option to get job related equipment on change. [Braniff]
+//= 1.7 Readability changes. Also added BabyExpanded and BabySummoner classes. [Jey]
+//= 1.8 Added option to disable Baby Novice Only but Baby Class can be Enabled [mazvi]
+//= 1.9 Migrate/Integrate to Global Functions Platinum Skills. [mazvi]
 //============================================================
 
 prontera,153,193,6	script	Job Master	123,{
-function Job_Menu;
-
-	mes "[Job Master]";
-	if (Class > Job_Soul_Linker) {
-		mes "No more jobs are available.";
+function Get_Job_Equip;
+// Checks if the Player has the required level.
+// closes if not, returns if yes
+function	Require_Level	{
+	if (BaseLevel < getarg(0) || JobLevel < getarg(1)) {
+		.@blvl = getarg(0) - BaseLevel;
+		.@jlvl = getarg(1) - JobLevel;
+		mes "Level requirement:";
+		mes ((getarg(0)>1)? 
+			"^bb0000"+getarg(0)+"^000000 (^bb0000Base^000000) / ":"")+"^00bb00"+
+			getarg(1)+"^000000 (^00bb00Job^000000)";
+		mes "You need " +
+			((.@blvl > 0) ? "^bb0000"+.@blvl+"^000000 more base levels " + 
+				((.@jlvl > 0) ? "and " : "") : "") +
+			((.@jlvl > 0) ? "^00bb00"+.@jlvl+"^000000 more job levels " : "") +
+			"to continue.";
 		close;
 	}
+	return;
+}
+
+// Checks if the given eac is a baby class
+function Is_Baby	{
+	return ((getarg(0, eaclass())&EAJL_BABY)>0);
+}
+
+// Checks if the player can change to third class.
+// Note: This does not include the level checks.
+function	Can_Change_Third	{
+	// To change to third class you either need to be:
+	// * Second Class
+	// * Transcendent Second Class
+	// * Baby Second Class
+	if( !.ThirdClass )
+		return false; // Third job change disabled
+	if( !(eaclass()&EAJL_2) )
+		return false; // Not second Class
+	if( eaclass()&EAJL_THIRD )
+		return false; // Already Third Class
+	if( roclass(eaclass()|EAJL_THIRD) < 0 )
+		return false; // Job has no third Class
+	if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE )
+		return false; // Exp. Super Novice equals 3rd Cls, but has it's own case
+	if( Is_Baby() && (!.BabyClass || !.BabyThird) )
+		return false; // No Baby (Third) change allowed
+	return true;
+}
+
+function	Can_Rebirth	{
+	// To rebirth, you need to be:
+	// * Second Class
+	if( !.RebirthClass )
+		return false; // Rebirth disabled
+	if( !(eaclass()&EAJL_2) )
+		return false; // Not second Class
+	if( eaclass()&EAJL_UPPER )
+		return false; // Already Rebirthed
+	if( roclass(eaclass()|EAJL_UPPER) < 0 )
+		return false; // Job has no transcended class
+	if( Is_Baby() && !.BabyClass )
+		return false; // No Baby changes allowed
+	return true;
+}
+
+// Checks if the given eac is a first class
+function	Is_First_Cls	{
+	return (getarg(0) <= EAJ_TAEKWON);
+}
+
+function	Check_Riding	{
+	// Note: Why we should always check for Riding:
+	// Mounts are considered as another class, which
+	// would make this NPC bigger just to handle with
+	// those special cases.
 	if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
 		mes "Please remove your " +
 			((checkfalcon()) ? "falcon" : "") +
@@ -33,274 +99,392 @@ function Job_Menu;
 			" before proceeding.";
 		close;
 	}
+	return;
+}
+function	Check_SkillPoints	{
 	if (.SkillPointCheck && SkillPoint) {
 		mes "Please use all your skill points before proceeding.";
 		close;
 	}
+	return;
+}
+
+// addJobOptions is essentially the same like
+// setarray .@array[getarraysize(.@array)],opt1,opt2,...;
+// It's just easier to read, since we're using it very often
+function	Job_Options	{
+	.@argcount = getargcount();
+	.@arr_size = getarraysize(getarg(0));
+	for( .@i = 1; .@i < .@argcount; .@i++) {
+		setarray getelementofarray(getarg(0), .@arr_size++),getarg(.@i);
+	}
+}
 
+// Begin of the NPC
+	mes .NPCName$;
+	Check_Riding();
+	Check_SkillPoints();
+
+	// initialisation
+	deletearray .@job_opt[0],getarraysize(.@job_opt);
 	.@eac = eaclass();
-	.@i = ((.ThirdClass) ? roclass(.@eac&EAJ_UPPERMASK) : Class);
-	if (.@i >= Job_Knight && .@i <= Job_Crusader2) {
-		if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
-			.@blvl = .Rebirth[0] - BaseLevel;
-			.@jlvl = .Rebirth[1] - JobLevel;
-			mes "You need " +
-				((.@blvl > 0) ? .@blvl + " more base levels " + ((.@jlvl > 0) ? "/ " : "") : "") +
-				((.@jlvl > 0) ? .@jlvl + " more job levels " : "") + "to continue.";
-			close;
-		}
-		if (Class > Job_Crusader2) {
-			mes "Switch to third class?";
-			next;
-			Job_Menu(roclass(.@eac|EAJL_THIRD));
-			close;
-		}
-		while(1) {
-			mes "Select an option.";
-			next;
-			.@i = select(" ~ ^0055FFRebirth^000000:" + ((.ThirdClass) ? " ~ ^FF0000Third Class^000000" : "") + ": ~ ^777777Cancel^000000");
-			if (.@i == 3)
-				close;
-			mes "[Job Master]";
-			mes "Are you sure?";
-			next;
-			Job_Menu(((.@i == 1) ? Job_Novice_High : roclass(.@eac|EAJL_THIRD)));
-			mes "[Job Master]";
-		}
+	.@third_possible = Can_Change_Third();
+	.@rebirth_possible = Can_Rebirth();
+	.@first_eac = .@eac&EAJ_BASEMASK;
+	.@second_eac = .@eac&EAJ_UPPERMASK;
+	// Note: These are already set in pc.c
+	// BaseClass = roclass(.@eac&EAJ_BASEMASK) which is the players First Class
+	// BaseJob = roclass(.@eac&EAJ_UPPERMASK) which is the players Second Class
+	//dispbottom "Debug: eac ("+.@eac+"), third ("+.@third_possible+"), rebirth("+.@rebirth_possible+"), BaseClass ("+BaseClass+"), BaseJob ("+BaseJob+")";
+		
+	// From here on the jobmaster checks the current class
+	// and fills the the array `.@job_opt` with possible
+	// job options for the player.
+	
+	if( .@rebirth_possible ) {
+		// Rebirth option (displayed on the top of the menu)
+		Require_Level(.Req_Rebirth[0], .Req_Rebirth[1]);
+		Job_Options(.@job_opt, Job_Novice_High);
 	}
-	.@j1 = roclass(.@eac|EAJL_2_1);
-	.@j2 = roclass(.@eac|EAJL_2_2);
-	if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE)
-		setarray .@exp[0], roclass(.@eac|EAJL_THIRD), 99;
-	if (Class == Job_Ninja || Class == Job_Gunslinger)
-		setarray .@exp[0], .@j1, 70;
-	if (.@exp[0] && .SecondExpanded) {
-		if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
-			.@blvl = .Rebirth[0] - BaseLevel;
-			.@jlvl = .@exp[1] - JobLevel;
-			mes "You need " +
-				((.@blvl > 0) ? .@blvl + " more base levels " + ((.@jlvl > 0) ? "/ " : "") : "") +
-				((.@jlvl > 0) ? .@jlvl + " more job levels " : "") + "to continue.";
-			close;
+	if( .@third_possible ) {
+		// Third Job change (displayed below rebirth)
+		Require_Level(.Req_Third[0], .Req_Third[1]);
+		Job_Options(.@job_opt, roclass(.@eac|EAJL_THIRD));
+	}
+	 
+	if (.SecondExpanded && 
+	   (.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE && // is Super Novice
+	   !(eaclass()&EAJL_THIRD) ) {				 	// not already Expanded SN
+		// (Baby) Super Novice to Expanded (Baby) Super Novice
+	   	if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
+			// .BabyClass & .BabyExpanded must be enabled if the is a baby
+			Require_Level(.Req_Exp_SNOVI[0], .Req_Exp_SNOVI[1]);
+			Job_Options(.@job_opt,roclass(.@eac|EAJL_THIRD)); // Expanded SN is "third" cls
 		}
-		mes "Switch to " + jobname(.@exp[0]) + "?";
-		next;
-		Job_Menu(.@exp[0]);
-		close;
 	}
-	if (.@eac&EAJL_2)
-		if ((.@eac&(EAJL_UPPER|EAJL_BABY)) || roclass(.@eac|EAJL_UPPER) == -1) {
-			mes "No more jobs are available.";
-			close;
+	
+	if (.SecondExpanded && 
+		((.@eac&(~EAJL_BABY)) == EAJ_NINJA || 		// is (Baby) Ninja
+		(.@eac&(~EAJL_BABY)) == EAJ_GUNSLINGER)) {	// is (Baby) Gunslinger
+		// (Baby) Ninja to (Baby) Kagerou / Oboro
+		// (Baby) Gunslinger to (Baby) Rebellion
+		if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) {
+			// .BabyClass & .BabyExpanded must be enabled if the is a baby
+			Require_Level(.Req_Exp_NJ_GS[0], .Req_Exp_NJ_GS[1]);
+			// Kagerou, Oboro, Rebellion are considered as a 2-1 class
+			Job_Options(.@job_opt, roclass(.@eac|EAJL_2_1));
 		}
-	if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
-		if (JobLevel < .JobReq[0])
-			mes "A job level of " + .JobReq[0] + " is required to change into the 1st Class.";
-		else if (Class == Job_Novice_High && .LastJob && lastJob) {
-			mes "Switch classes now?";
-			next;
-			Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
-		} else {
-			switch(Class) {
+	}
+	
+	// Player is Job_Novice, Job_Novice_High or Job_Baby
+	if (.@first_eac == EAJ_NOVICE && .@second_eac != EAJ_SUPER_NOVICE) {
+		// MAPID_NOVICE, MAPID_SUPER_NOVICE, MAPID_NOVICE_HIGH, MAPID_BABY
+		Require_Level(.Req_First[0], .Req_First[1]);
+		switch(Class) {
 			case Job_Novice:
-				Job_Menu(
-					Job_Swordman,
-					Job_Mage,
-					Job_Archer,
-					Job_Acolyte,
-					Job_Merchant,
-					Job_Thief,
-					Job_Super_Novice,
-					Job_Taekwon,
-					Job_Gunslinger,
-					Job_Ninja,
-					Job_Baby
-				);
+				// First job change
+				Job_Options(.@job_opt,Job_Swordman,
+					Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief,
+					Job_Super_Novice, Job_Taekwon, Job_Gunslinger, Job_Ninja);
+				if( .BabyNovice )
+					Job_Options(.@job_opt, Job_Baby);
 				break;
 			case Job_Novice_High:
-				Job_Menu(
-					Job_Swordman_High,
-					Job_Mage_High,
-					Job_Archer_High,
-					Job_Acolyte_High,
-					Job_Merchant_High,
-					Job_Thief_High
-				);
+				// Job change after rebirth
+				if( .LastJob && lastJob )
+					Job_Options(.@job_opt,
+						roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
+				else
+					Job_Options(.@job_opt, 
+						Job_Swordman_High, Job_Mage_High, Job_Archer_High,
+						Job_Acolyte_High, Job_Merchant_High, Job_Thief_High);
 				break;
 			case Job_Baby:
-				Job_Menu(
-					Job_Baby_Swordman,
-					Job_Baby_Mage,
-					Job_Baby_Archer,
-					Job_Baby_Acolyte,
-					Job_Baby_Merchant,
-					Job_Baby_Thief,
-					Job_Super_Baby
-				);
+				if( !.BabyClass )
+					break;
+				// First job change as a baby
+				Job_Options(.@job_opt, Job_Baby_Swordman, Job_Baby_Mage,
+					Job_Baby_Archer,Job_Baby_Acolyte, Job_Baby_Merchant,
+					Job_Baby_Thief);
+				if( .BabyExpanded )
+					Job_Options(.@job_opt, Job_Super_Baby, Job_Baby_Taekwon,
+						Job_Baby_Gunslinger, Job_Baby_Ninja);
+				if( .BabySummoner )
+					Job_Options(.@job_opt, Job_Baby_Summoner);
 				break;
 			default:
 				mes "An error has occurred.";
-				break;
+				close;
+		}
+	} else if( Is_First_Cls(.@eac) || 				// First Class
+			   Is_First_Cls(.@eac&(~EAJL_UPPER)) ||	// Trans. First Cls
+			   (.BabyClass && Is_First_Cls(.@eac&(~EAJL_BABY))) ) {	// Baby First Cls
+		// Player is First Class (not Novice)
+		// most jobs should have two options here  (2-1 and 2-2)
+		.@class1 = roclass(.@eac|EAJL_2_1); // 2-1
+		.@class2 = roclass(.@eac|EAJL_2_2); // 2-2
+		// dispbottom "Debug: Classes: class1 ("+.@class1+"), class2 ("+.@class2+")";
+		if(.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
+			// Player is rebirth Cls and linear class changes are enforced
+			Require_Level(.Req_Second[0], .Req_Second[1]);
+			Job_Options(.@job_opt, lastJob + Job_Novice_High);
+		} else {
+			// Class is not enforced, player can decide.
+			if( .@class1 > 0 ) { // 2-1
+				Require_Level(.Req_Second[0], .Req_Second[1]);
+				Job_Options(.@job_opt, .@class1);
+			}
+			if( .@class2 > 0 ) { // 2-2
+				Require_Level(.Req_Second[0], .Req_Second[1]);
+				Job_Options(.@job_opt, .@class2);
 			}
 		}
-		close;
 	}
-	if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)
-		mes "No more jobs are available.";
-	else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])
-		mes "A job level of " + .JobReq[1] + " is required to change into the 2nd Class.";
-	else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
-		mes "Switch classes now?";
-		next;
-		Job_Menu(lastJob + Job_Novice_High);
-	} else
-		Job_Menu(.@j1, .@j2);
+	
+	// Displaying the Job Menu defined by .@job_opt.
+	// .@job_opt should not be changed below this line.
+	function Job_Menu;
+	Job_Menu(.@job_opt);
 	close;
 
-function Job_Menu {
-	while(1) {
-		if (getargcount() > 1) {
+// Displays the job menu
+function	Job_Menu	{
+	// getarg(0) is the .@job_opt array holding all available job changes.
+	function Confirm_Change;
+	while(true) {
+		.@opt_cnt =  getarraysize(getarg(0));
+		if( .@opt_cnt <= 0 ) {
+			mes "No more jobs are available.";
+			close;
+		}
+
+		.@selected = 0; // Just a single job class given, no select needed
+		if (.@opt_cnt > 1) {
+			// Multiple job classes given. Select one and save it to .@class
+			// After that confirm .@class
 			mes "Select a job.";
 			.@menu$ = "";
-			for (.@i = 0; .@i < getargcount(); .@i++)
-				.@menu$ = .@menu$ + " ~ " + jobname(getarg(.@i)) + ":";
+			for (.@i = 0; .@i < .@opt_cnt; .@i++) {
+				if( getelementofarray(getarg(0), .@i) == Job_Novice_High)
+					.@jobname$ = "^0055FFRebirth^000000";
+				else
+					.@jobname$ = jobname(getelementofarray(getarg(0), .@i));
+				.@menu$ = .@menu$ + " ~ " + .@jobname$ + ":";
+			}
 			.@menu$ = .@menu$+" ~ ^777777Cancel^000000";
-			next;
-			.@i = getarg(select(.@menu$) - 1, 0);
-			if (!.@i)
+			.@selected = select(.@menu$) - 1;
+			if( .@selected < 0 || .@selected >= .@opt_cnt )
 				close;
-			if ((.@i == Job_Super_Novice || .@i == Job_Super_Baby) && BaseLevel < .SNovice) {
-				mes "[Job Master]";
-				mes "A base level of " + .SNovice + " is required to turn into a " + jobname(.@i) + ".";
-				close;
-			}
-			mes "[Job Master]";
-			mes "Are you sure?";
 			next;
-		} else
-			.@i = getarg(0);
-		if (select(" ~ Change into ^0055FF" + jobname(.@i) + "^000000 class: ~ ^777777" + ((getargcount() > 1) ? "Go back" : "Cancel") + "^000000") == 1) {
-			mes "[Job Master]";
-			mes "You are now " + callfunc("F_InsertArticle", jobname(.@i)) + "!";
-			if (.@i == Job_Novice_High && .LastJob)
-				lastJob = Class;
-			jobchange .@i;
-			if (.@i == Job_Novice_High)
-				resetlvl(1);
-			else if (.@i == Job_Baby) {
-				resetstatus;
-				resetskill;
-				set SkillPoint,0;
-			}
-			specialeffect2 EF_ANGEL2;
-			specialeffect2 EF_ELECTRIC;
-			if (.Platinum)
-				callsub Get_Platinum;
-			close;
+			mes .NPCName$;
 		}
-		if (getargcount() == 1)
+		.@class = getelementofarray(getarg(0), .@selected);
+		if ((.@class == Job_Super_Novice || .@class == Job_Super_Baby) &&
+				BaseLevel < .SNovice) {
+			// Special Level Requirement because Super Novice and
+			// Supber Baby can both be selected in one of the first class
+			// changes. That's why the Levelrequirement is after and not before
+			// the selection.
+			mes "A base level of " + .SNovice +
+				" is required to turn into a " + jobname(.@class) + ".";
 			return;
-		mes "[Job Master]";
+		}
+		// Confirm the Class
+		Confirm_Change(.@class, .@opt_cnt > 1);
+		next;
+		mes .NPCName$;
 	}
-	end;
+	return;
+}
+
+
+// Executes the actual jobchange and closes.
+function	Job_Change	{
+	.@to_cls = getarg(0);
+	next;
+	mes .NPCName$;
+	mes "You are now " + callfunc("F_InsertArticle", jobname(.@to_cls)) + "!";
+	if (.@to_cls == Job_Novice_High && .LastJob)
+		lastJob = Class; // Saves the lastJob for rebirth
+	jobchange .@to_cls;
+	if (.@to_cls == Job_Novice_High)
+		resetlvl(1);
+	else if (.@to_cls == Job_Baby) {
+		resetstatus;
+		resetskill;
+		set SkillPoint,0;
+	}
+	specialeffect2 EF_ANGEL2;
+	specialeffect2 EF_ELECTRIC;
+	if (.Platinum)
+		callfunc "F_GetPlatinumSkills";
+	if (.GetJobEquip)
+		Get_Job_Equip();
+	close; // Always closes after the change
 }
 
-Get_Platinum:
-	skill "NV_FIRSTAID",1,SKILL_PERM;
-	switch (BaseClass) {
-	case Job_Novice:
-		if (Class != Job_Super_Novice)
-			skill "NV_TRICKDEAD",1,SKILL_PERM;
-		break;
-	case Job_Swordman:
-		skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
-		skill "SM_FATALBLOW",1,SKILL_PERM;
-		skill "SM_AUTOBERSERK",1,SKILL_PERM;
-		break;
-	case Job_Mage:
-		skill "MG_ENERGYCOAT",1,SKILL_PERM;
-		break;
-	case Job_Archer:
-		skill "AC_MAKINGARROW",1,SKILL_PERM;
-		skill "AC_CHARGEARROW",1,SKILL_PERM;
-		break;
-	case Job_Acolyte:
-		skill "AL_HOLYLIGHT",1,SKILL_PERM;
-		break;
-	case Job_Merchant:
-		skill "MC_CARTREVOLUTION",1,SKILL_PERM;
-		skill "MC_CHANGECART",1,SKILL_PERM;
-		skill "MC_LOUD",1,SKILL_PERM;
-		break;
-	case Job_Thief:
-		skill "TF_SPRINKLESAND",1,SKILL_PERM;
-		skill "TF_BACKSLIDING",1,SKILL_PERM;
-		skill "TF_PICKSTONE",1,SKILL_PERM;
-		skill "TF_THROWSTONE",1,SKILL_PERM;
-		break;
-	default:
-		break;
+function	Confirm_Change	{
+	// Player confirms he want to change into .@class
+	.@class = getarg(0, -1);
+	.@back = getarg(1, false);
+	if( .@class < 0 ) {
+		mes "Unknow Class Error.";
+		close;
 	}
-	switch (BaseJob) {
-	case Job_Knight:
-		skill "KN_CHARGEATK",1,SKILL_PERM;
-		break;
-	case Job_Priest:
-		skill "PR_REDEMPTIO",1,SKILL_PERM;
-		break;
-	case Job_Wizard:
-		skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
-		break;
-	case Job_Blacksmith:
-		skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
-		skill "BS_GREED",1,SKILL_PERM;
-		break;
-	case Job_Hunter:
-		skill "HT_PHANTASMIC",1,SKILL_PERM;
-		break;
-	case Job_Assassin:
-		skill "AS_SONICACCEL",1,SKILL_PERM;
-		skill "AS_VENOMKNIFE",1,SKILL_PERM;
-		break;
-	case Job_Crusader:
-		skill "CR_SHRINK",1,SKILL_PERM;
-		break;
-	case Job_Monk:
-		skill "MO_KITRANSLATION",1,SKILL_PERM;
-		skill "MO_BALKYOUNG",1,SKILL_PERM;
-		break;
-	case Job_Sage:
-		skill "SA_CREATECON",1,SKILL_PERM;
-		skill "SA_ELEMENTWATER",1,SKILL_PERM;
-		skill "SA_ELEMENTGROUND",1,SKILL_PERM;
-		skill "SA_ELEMENTFIRE",1,SKILL_PERM;
-		skill "SA_ELEMENTWIND",1,SKILL_PERM;
-		break;
-	case Job_Rogue:
-		skill "RG_CLOSECONFINE",1,SKILL_PERM;
-		break;
-	case Job_Alchemist:
-		skill "AM_BIOETHICS",1,SKILL_PERM;
-		break;
-	case Job_Bard:
-		skill "BA_PANGVOICE",1,SKILL_PERM;
-		break;
-	case Job_Dancer:
-		skill "DC_WINKCHARM",1,SKILL_PERM;
-		break;
-	default:
-		break;
+	mes "Do you want to change into ^0055FF"+jobname(.@class)+"^000000 class?";
+	.@job_option$ = " ~ Change into ^0055FF"+jobname(.@class)+"^000000 class";
+	if( .@class == Job_Novice_High)
+		.@job_option$ = " ~ ^0055FFRebirth^000000";
+	
+	if (select(.@job_option$+": ~ ^777777" + 
+			((.@back) ?"Go back" : "Cancel") + "^000000") == 1) {
+		Job_Change(.@class);
 	}
+	if (!.@back)
+		close; // "Cancel" pressed
 	return;
+}
+
+// Function which gives a job related item to the player
+// the items are the rewards from the original job change quests
+function	Get_Job_Equip	{
+	// Note: The item is dropping, when the player can't hold it.
+	// But that's better than not giving the item at all.
+	.@eac = eaclass();
+	if( .@eac&EAJL_THIRD ) {
+		// Third Class Items
+		getitem 2795,1;	//	Green Apple Ring for every 3rd Class
+		switch(BaseJob) {
+			// BaseJob of Third Cls
+			// For Normal Third, Baby Third and Transcended Third Cls
+			case Job_Knight:
+				getitem 5746,1;	break;	//	Rune Circlet [1]
+			case Job_Wizard:
+				getitem 5753,1;	break;	//	Magic Stone Hat [1]
+			case Job_Hunter:
+				getitem 5748,1;	break;	//	Sniper Goggle [1]
+			case Job_Priest:
+				getitem 5747,1;	break;	//	Mitra [1]
+			case Job_Blacksmith:
+				getitem 5749,1;	break;	//	Driver Band [1]
+			case Job_Assassin:
+				getitem 5755,1;	break;	//	Silent Executor [1]
+			case Job_Crusader:
+				getitem 5757,1;	break;	//	Dip Schmidt Helm [1]
+			case Job_Sage:
+				getitem 5756,1;	break;	//	Wind Whisper [1]
+			case Job_Bard:
+				getitem 5751,1;	break;	//	Maestro Song's Hat [1]
+			case Job_Dancer:
+				getitem 5758,1;	break;	//	Dying Swan [1]
+			case Job_Monk:
+				getitem 5754,1;	break;	//	Blazing Soul [1]
+			case Job_Alchemist:
+				getitem 5752,1;	break;	//	Midas Whisper[1]
+			case Job_Rogue:
+				getitem 5750,1; 		//	Shadow Handicraft [1]
+				getitem 6121,1;			//	Makeover Brush
+				getitem 6122,1;	break;	//	Paint Brush
+		}
+	} else if (.@eac&EAJL_2) {
+		// Second Class (And not Third Class)
+		switch(BaseJob) {
+			// Second Class
+			case Job_Knight:
+				getitem 1163,1;	break;	//	Claymore [0]
+			case Job_Priest:
+				getitem 1522,1;	break;	//	Stunner [0]
+			case Job_Wizard:
+				getitem 1617,1;	break;	//	Survivor's Rod [0]
+			case Job_Blacksmith:
+				getitem 1360,1;	break;	//	Two-Handed-Axe [1]
+			case Job_Hunter:
+				getitem 1718,1;	break;	//	Hunter Bow [0]
+			case Job_Assassin:
+				getitem 1254,1;	break;	//	Jamadhar [0]
+			case Job_Crusader:
+				getitem 1410,1;	break;	//	Lance [0]
+			case Job_Monk:
+				getitem 1807,1;	break;	//	Fist [0]
+			case Job_Sage:
+				getitem 1550,1;	break;	//	Book [3]
+			case Job_Rogue:
+				getitem 1222,1;	break;	//	Damascus [1]
+			case Job_Alchemist:
+				getitem 1126,1;	break;	//	Saber [2]
+			case Job_Bard:
+				getitem 1907,1;	break;	//	Guitar [0]
+			case Job_Dancer:
+				getitem 1960,1;	break;	//	Whip [1]
+			case Job_Super_Novice:
+				getitem 1208,1;	break;	//	Main Gauche [4]
+			case Job_Gunslinger:
+				getitem 13101,1; break;	//	Six Shooter [2]
+			case Job_Ninja:
+				getitem 13010,1; break;	//	Asura [2]
+			case Job_Star_Gladiator:
+				getitem 1550,1;	break;	//	Book [3]
+			case Job_Soul_Linker:
+				getitem 1617,1;	break;	//	Survivor's Rod [0]
+		}
+	} else {
+		// Neither Second or Third Cls
+		// => First Cls or not covered by the switch
+		switch(BaseClass) {
+			// First Class
+			case Job_Swordman:
+				getitem 1108,1;	break;	//	Blade [4]
+			case Job_Mage:
+				getitem 1602,1;	break;	//	Rod [4]
+			case Job_Archer:
+				getitem 1705,1;	break;	//	Composite Bow [4]
+			case Job_Acolyte:
+				getitem 1505,1;	break;	//	Mace [4]
+			case Job_Merchant:
+				getitem 1302,1;	break;	//	Axe [4]
+			case Job_Thief:
+				getitem 1208,1;	break;	//	Main Gauche [4]
+		}
+	}
+	return;
+}
 
 OnInit:
-	setarray .Rebirth[0],99,50;	// Minimum base level, job level to rebirth OR change to third class
-	setarray .JobReq[0],10,40;	// Minimum job level to turn into 1st class, 2nd class
-	.ThirdClass = 1;			// Enable third classes? (1: yes / 0: no)
-	.SecondExpanded = 1;		// Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no)
-	.SNovice = 45;				// Minimum base level to turn into Super Novice
-	.LastJob = 1;				// Enforce linear class changes? (1: yes / 0: no)
-	.SkillPointCheck = 1;		// Force player to use up all skill points? (1: yes / 0: no)
-	.Platinum = 1;				// Get platinum skills automatically? (1: yes / 0: no)
+	// Initialisation, do not edit these
+	.NPCName$ = "[Job Master]";
+	
+	// Settings
+	.ThirdClass = true;			// Enable third classes?
+	.RebirthClass = true;			// Enable rebirth classes?
+	.SecondExpanded = true;		// Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion?
+	.BabyNovice = true;	// Enable Baby novice classes? Disable it if you like player must have parent to get job baby.
+	.BabyClass = true;				// Enable Baby classes?
+	.BabyThird = true;				// Enable Baby third classes?
+	.BabyExpanded = true;			// Enable Baby Expanded classes: Ex. Baby Ninja, Baby Taekwon, etc.
+	.BabySummoner = true;			// Enable Baby Summoner?
+	.LastJob = true;				// Enforce linear class changes?
+	.SkillPointCheck = true;		// Force player to use up all skill points?
+	.Platinum = true;				// Get platinum skills automatically?
+	.GetJobEquip = false;			// Get job equipment (mostly weapons) on job change?
+
+	// Level Requirements
+	setarray .Req_First[0],1,10; 		// Minimum base level, job level to turn into 1st class
+	setarray .Req_Second[0],1,40; 		// Minimum base level, job level to turn into 2nd class
+	setarray .Req_Rebirth[0],99,50;		// Minimum base level, job level to rebirth
+	setarray .Req_Third[0],99,50;		// Minimum base level, job level to change to third class
+	setarray .Req_Exp_NJ_GS[0],99,70; 	// Minimum base level, job level to turn into Expanded Ninja and Gunslinger
+	setarray .Req_Exp_SNOVI[0],99,99; 	// Minimum base level, job level to turn into Expanded Super Novice
+	.SNovice = 45;						// Minimum base level to turn into Super Novice
+	
+	// Setting adjustments by PACKETVER
+	if( PACKETVER < 20161207 ) {
+		if( .BabyExpanded )
+			debugmes "jobmaster: BabyExpanded is disabled due to outdated PACKETVER.";
+		if( .BabySummoner )
+			debugmes "jobmaster: BabySummoner is disabled due to outdated PACKETVER.";
+		.BabyExpanded = false;
+		.BabySummoner = false;
+	}
 	end;
 }
+

+ 57 - 56
npc/custom/official/GeffenMagicTournament.txt

@@ -183,12 +183,13 @@ OnTimer2500:
 	.@r = rand(0,1);
 	if (.@r != 0 ) { stopnpctimer; initnpctimer; end; }
 	stopnpctimer;
-	specialeffect .effects[rand(0,18)],AREA,instance_npcname(strnpcinfo(0));
+	specialeffect .effects[rand(getarraysize(.effects))],AREA,instance_npcname(strnpcinfo(0));
 	initnpctimer;
 	end;
 
 OnInit:
-	setarray .effects,97,255,28,256,29,257,244,92,32,195,258,22,62,234,89,30,225,116,94;
+	setarray .effects[0],EF_FIREPILLARBOMB,EF_FLAMELAUNCHER,EF_FROSTDIVER2,EF_FROSTWEAPON,EF_LIGHTBOLT,EF_LIGHTNINGLOADER,EF_MAGICROD,EF_METEORSTORM,EF_NAPALMBEAT;
+	setarray .effects[9],EF_PETRIFYATTACK,EF_SEISMICWEAPON,EF_SIGHT,EF_SIGHTRASHER,EF_SPELLBREAKER,EF_STORMGUST,EF_THUNDERSTORM,EF_VOLCANO,EF_WATERBALL,EF_YUFITELHIT;
 	hideonnpc strnpcinfo(0);
 	end;
 	
@@ -2289,7 +2290,7 @@ OnEnd:
 	mes "Enjoy.";
 	mes "Good luck on the next round!";
 	percentheal 100,100;
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close2;
 	hideonnpc instance_npcname("Tournament Healer#1"); // 83649
 	end;
@@ -2303,13 +2304,13 @@ end;
 OnStart:
 	initnpctimer;
 		for ( .@i = 11; .@i <= 20; .@i++ ) {
-			specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" +.@i);
+			specialeffect .effect[rand(getarraysize(.effect))], AREA, instance_npcname("#fireworks_" +.@i);
 		}
 	end;
 OnTimer6000:
 	initnpctimer;
 		for ( .@i = 0; .@i < 5; .@i++) {
-			specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" + rand(11,20));
+			specialeffect .effect[rand(getarraysize(.effect))], AREA, instance_npcname("#fireworks_" + rand(11,20));
 		}
 	end;
 
@@ -2319,23 +2320,23 @@ OnTurn:
 
 OnWin:
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 90, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_LORD, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 3000;
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 62, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_SIGHTRASHER, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 500;
 	for ( .@i = 1; .@i <= 5; .@i++ ){
-		specialeffect 89, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_STORMGUST, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 3000;
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 237, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_VIOLENTGALE, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	end;
 OnInstanceInit:
-	setarray .effect, 30, 89, 92;
+	setarray .effect, EF_THUNDERSTORM, EF_STORMGUST, EF_METEORSTORM;
 	end;
 }
 
@@ -4098,9 +4099,9 @@ OnTimer1000:
 	
 	switch('gmt_timer_evt1) {
 		case 1:
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#3");
 			npctalk "Geffen Gangster : You're pretty good...!", instance_npcname("Geffen Gangster#1");
 			npctalk "Geffen Gangster : We should stop playing around...", instance_npcname("Geffen Gangster#2");
 			npctalk "Geffen Gangster : You're gonna pay the price!", instance_npcname("Geffen Gangster#3");
@@ -4112,7 +4113,7 @@ OnTimer1000:
 			break;
 		case 8: npctalk "Iris : That's enough.", instance_npcname("Iris#Gef1"); break;
 		case 11: npctalk "Iris : I won't forgive you~!", instance_npcname("Iris#Gef1"); break;
-		case 13: specialeffect 204, AREA, instance_npcname("Iris#Gef1"); break;
+		case 13: specialeffect EF_POTION1, AREA, instance_npcname("Iris#Gef1"); break;
 		case 14:
 			npctalk "Geffen Gangster : Why hello there, are you scared?", instance_npcname("Geffen Gangster#1");
 			npctalk "Geffen Gangster : You're pretty cute. Do you want to play with us too?", instance_npcname("Geffen Gangster#2");
@@ -4128,23 +4129,23 @@ OnTimer1000:
 			break;
 		case 22: mapannounce instance_mapname("1@gef"), "Stop right there! Jerks!", 0x00ebff; break;
 		case 23: hideoffnpc instance_npcname("Chaos#Gef1"); break;
-		case 25: specialeffect 218, AREA, instance_npcname("Chaos#Gef1"); break;
+		case 25: specialeffect EF_POTION_CON, AREA, instance_npcname("Chaos#Gef1"); break;
 		case 26: npctalk "Chaos : Are you clowns harassing Iris?", instance_npcname("Chaos#Gef1"); break;
 		case 30: npctalk "Chaos : I think I need to teach someone a lesson!", instance_npcname("Chaos#Gef1"); break;
 		case 31:
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#11");
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#22");
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#33");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#11");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#22");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#33");
 			npctalk "Chaos : Come and fight me!", instance_npcname("Chaos#Gef2");
 			hideonnpc instance_npcname("Chaos#Gef1");
 			hideoffnpc instance_npcname("Chaos#Gef2");
 			break;
 		case 34:
 			npctalk "Chaos : Bash~!!!", instance_npcname("Chaos#Gef2");
-			specialeffect 1, AREA, instance_npcname("Chaos#Gef2");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#11");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#22");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#33");
+			specialeffect EF_HIT2, AREA, instance_npcname("Chaos#Gef2");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#11");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#22");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#33");
 			hideonnpc instance_npcname("Geffen Gangster#11");
 			hideonnpc instance_npcname("Geffen Gangster#22");
 			hideonnpc instance_npcname("Geffen Gangster#33");
@@ -4165,14 +4166,14 @@ OnTimer1000:
 			break;
 		case 42:
 			npctalk "Chaos : I'm not done yet!! Magnum Break~!", instance_npcname("Chaos#3");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#3");
 			break;
 		case 43:
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#3");
 			hideonnpc instance_npcname("Geffen Gangster#1");
 			hideonnpc instance_npcname("Geffen Gangster#2");
 			hideonnpc instance_npcname("Geffen Gangster#3");
@@ -4314,7 +4315,7 @@ OnTimer1000:
 		case 9:
 			unittalk 'gmt_account_id, "I have to help!";
 			attachrid 'gmt_account_id;
-			specialeffect2 60;
+			specialeffect2 EF_LOCKON;
 			detachrid;
 			monster instance_mapname("1@gef"), 75, 172, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
 			monster instance_mapname("1@gef"), 76, 170, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
@@ -4338,9 +4339,9 @@ OnMobKilled:
 		//completequest 9286;
 		//setquest 9287;
 		sleep2 500;
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#1");
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#2");
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#3");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#1");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#2");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#3");
 		
 		$gmt_timer_evt2 = -1;
 		
@@ -4364,7 +4365,7 @@ OnMobKilled:
 				case 10: npctalk "Fenrir : This is really uncomfortable. I can't just sit back and watch.", instance_npcname("Fenrir#1"); break;
 				case 13:
 					npctalk "Fenrir : Stop harassing her. I won't forgive you.", instance_npcname("Fenrir#1");
-					specialeffect 204, AREA, instance_npcname("Fenrir#1");
+					specialeffect EF_POTION1, AREA, instance_npcname("Fenrir#1");
 					break;
 				case 15: npctalk "Geffen Bully : Hey~ You look rich, you must have a lot of zeny right?", instance_npcname("Geffen Bully#1"); break;
 				case 17: npctalk "Geffen Bully : What's a rich girl like you doing around here?~", instance_npcname("Geffen Bully#2"); break;
@@ -4384,16 +4385,16 @@ OnMobKilled:
 				case 25:
 					hideoffnpc instance_npcname("Loki#1");
 					sleep2 500;
-					specialeffect 126, AREA, instance_npcname("Loki#1");
+					specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#1");
 					sleep2 1500;
-					specialeffect 121, AREA, instance_npcname("Loki#1");
+					specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#1");
 					npctalk "Loki : Hmph!", instance_npcname("Loki#1");
 					sleep2 500;
-					specialeffect 124, AREA, instance_npcname("Loki#1");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#33");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#1");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#33");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#33");
 					hideonnpc instance_npcname("Geffen Bully#33");
 					hideoffnpc instance_npcname("Geffen Bully#3");
 					break;
@@ -4404,11 +4405,11 @@ OnMobKilled:
 					sleep2 750;
 					npctalk "Loki : Take this.", instance_npcname("Loki#2");
 					sleep2 500;
-					specialeffect 271, AREA, instance_npcname("Geffen Bully#22");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#22");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_STRIPARMOR, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#22");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#22");
 					hideonnpc instance_npcname("Geffen Bully#22");
 					hideoffnpc instance_npcname("Geffen Bully#2");
 					break;
@@ -4419,11 +4420,11 @@ OnMobKilled:
 					sleep2 750;
 					npctalk "Loki : Change your mind yet?", instance_npcname("Loki#3");
 					sleep2 500;
-					specialeffect 270, AREA, instance_npcname("Geffen Bully#11");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#11");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_STRIPSHIELD, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#11");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#11");
 					hideonnpc instance_npcname("Geffen Bully#11");
 					hideoffnpc instance_npcname("Geffen Bully#1");
 					break;
@@ -4435,18 +4436,18 @@ OnMobKilled:
 				case 40: npctalk "Geffen Bully : Let's get away!~!!!!!", instance_npcname("Geffen Bully#3"); break;
 				case 41:
 					npctalk "Loki : You have 10 seconds.", instance_npcname("Loki#3");
-					specialeffect 121, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#3");
 					break;
 				case 43:
-					specialeffect 136, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SLOWPOISON, AREA, instance_npcname("Loki#3");
 					npctalk "Loki : 10... 9...", instance_npcname("Loki#3");
 					sleep2 500;
-					specialeffect 269, AREA, instance_npcname("Loki#3");
-					specialeffect 126, AREA, instance_npcname("Loki#3");
-					specialeffect 127, AREA, instance_npcname("Loki#3");
+					specialeffect EF_STRIPWEAPON, AREA, instance_npcname("Loki#3");
+					specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#3");
+					specialeffect EF_POISONREACT2, AREA, instance_npcname("Loki#3");
 					break;
 				case 45:
-					specialeffect 125, AREA, instance_npcname("Loki#3");
+					specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("Loki#3");
 					sleep2 500;
 					emotion e_gg, 0, instance_npcname("Loki#3");
 					npctalk "Loki : 3... 2...", instance_npcname("Loki#3");
@@ -4456,8 +4457,8 @@ OnMobKilled:
 					npctalk "Geffen Bully : I will have my revenge~!!", instance_npcname("Geffen Bully#3");
 					break;
 				case 46:
-					specialeffect 361, AREA, instance_npcname("Loki#3");
-					specialeffect 124, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SOULBREAKER, AREA, instance_npcname("Loki#3");
+					specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#3");
 					npctalk "Loki : 1...", instance_npcname("Loki#3");
 					sleep2 330;
 					hideonnpc instance_npcname("Geffen Bully#1");
@@ -4644,7 +4645,7 @@ OnTimer1000:
 	'gmt_timer_evt3++;
 	
 	switch('gmt_timer_evt3) {
-		case 1: specialeffect 20, AREA, instance_npcname("Geffen Shoplifter#1"); break;
+		case 1: specialeffect EF_PATTACK, AREA, instance_npcname("Geffen Shoplifter#1"); break;
 		case 4: npctalk "Geffen Shoplifter : Ugh, I shouldn't fight toe to toe with anyone...", instance_npcname("Geffen Shoplifter#1"); break;
 		case 7: unittalk 'gmt_account_id, "Don't want to be in a fair fight, huh thief?"; break;
 		case 10: npctalk "Geffen Shoplifter : Umm... stealing zeny is my job~ I did nothing wrong~!", instance_npcname("Geffen Shoplifter#1"); break;

+ 8 - 95
npc/custom/platinum_skills.txt

@@ -1,23 +1,20 @@
 //===== rAthena Script =======================================
 //= Platinum Skills
-//===== By: ==================================================
-//= Keichii, DarkChild
-//===== Current Version: =====================================
-//= 2.8
-//===== Compatible With: =====================================
-//= rAthena Project
 //===== Description: =========================================
 //= Single NPC that assigns quests skills for all classes
 //===== Additional Comments: =================================
-//= 2.0 Added advanced classes by ShadowLady.
-//= 2.1 Added baby clases by Midas
-//= 2.2 Simplified Job Checks [Silentdragon]
-//= 2.3 Thehell? Cleaned up script removed the nastiness. Also added rebirth skills. [Spre]
+//= 1.0 Initial release. [Keichii] [DarkChild]
+//= 2.0 Added advanced classes. [ShadowLady]
+//= 2.1 Added baby classes. [Midas]
+//= 2.2 Simplified Job Checks. [Silentdragon]
+//= 2.3 Thehell? Cleaned up script, removed the nastiness. Also added rebirth skills. [Spre]
 //= 2.4 Added Advanced skills. [Spre]
 //= 2.5 Added dialog for if the user is none of the listed jobs. [Kisuka]
 //= 2.6 Fixed 2nd advanced classes not being able to get their advanced skills. [Ancyker]
 //= 2.7 Rewrote to give all correct skills to all proper classes. [Paradox924X]
 //= 2.8 Clustered conditionals replaced with switch to include all Upper types. [Euphy]
+//= 2.9 Added MC_CARTDECORATE for Merchant class. [mazvi]
+//= 3.0 Migrate/Integrate to Global Functions. [mazvi]
 //============================================================
 
 prontera,128,200,6	script	Platinum Skill NPC	94,{
@@ -30,91 +27,7 @@ prontera,128,200,6	script	Platinum Skill NPC	94,{
 		mes "Have a nice day... >.>";
 		close;
 	}
-	skill "NV_FIRSTAID",1,SKILL_PERM;
-	switch (BaseClass) {
-	case Job_Novice:
-		if (Class != Job_Super_Novice)
-			skill "NV_TRICKDEAD",1,SKILL_PERM;
-		break;
-	case Job_Swordman:
-		skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
-		skill "SM_FATALBLOW",1,SKILL_PERM;
-		skill "SM_AUTOBERSERK",1,SKILL_PERM;
-		break;
-	case Job_Mage:
-		skill "MG_ENERGYCOAT",1,SKILL_PERM;
-		break;
-	case Job_Archer:
-		skill "AC_MAKINGARROW",1,SKILL_PERM;
-		skill "AC_CHARGEARROW",1,SKILL_PERM;
-		break;
-	case Job_Acolyte:
-		skill "AL_HOLYLIGHT",1,SKILL_PERM;
-		break;
-	case Job_Merchant:
-		skill "MC_CARTREVOLUTION",1,SKILL_PERM;
-		skill "MC_CHANGECART",1,SKILL_PERM;
-		skill "MC_LOUD",1,SKILL_PERM;
-		break;
-	case Job_Thief:
-		skill "TF_SPRINKLESAND",1,SKILL_PERM;
-		skill "TF_BACKSLIDING",1,SKILL_PERM;
-		skill "TF_PICKSTONE",1,SKILL_PERM;
-		skill "TF_THROWSTONE",1,SKILL_PERM;
-		break;
-	default:
-		break;
-	}
-	switch (BaseJob) {
-	case Job_Knight:
-		skill "KN_CHARGEATK",1,SKILL_PERM;
-		break;
-	case Job_Priest:
-		skill "PR_REDEMPTIO",1,SKILL_PERM;
-		break;
-	case Job_Wizard:
-		skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
-		break;
-	case Job_Blacksmith:
-		skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
-		skill "BS_GREED",1,SKILL_PERM;
-		break;
-	case Job_Hunter:
-		skill "HT_PHANTASMIC",1,SKILL_PERM;
-		break;
-	case Job_Assassin:
-		skill "AS_SONICACCEL",1,SKILL_PERM;
-		skill "AS_VENOMKNIFE",1,SKILL_PERM;
-		break;
-	case Job_Crusader:
-		skill "CR_SHRINK",1,SKILL_PERM;
-		break;
-	case Job_Monk:
-		skill "MO_KITRANSLATION",1,SKILL_PERM;
-		skill "MO_BALKYOUNG",1,SKILL_PERM;
-		break;
-	case Job_Sage:
-		skill "SA_CREATECON",1,SKILL_PERM;
-		skill "SA_ELEMENTWATER",1,SKILL_PERM;
-		skill "SA_ELEMENTGROUND",1,SKILL_PERM;
-		skill "SA_ELEMENTFIRE",1,SKILL_PERM;
-		skill "SA_ELEMENTWIND",1,SKILL_PERM;
-		break;
-	case Job_Rogue:
-		skill "RG_CLOSECONFINE",1,SKILL_PERM;
-		break;
-	case Job_Alchemist:
-		skill "AM_BIOETHICS",1,SKILL_PERM;
-		break;
-	case Job_Bard:
-		skill "BA_PANGVOICE",1,SKILL_PERM;
-		break;
-	case Job_Dancer:
-		skill "DC_WINKCHARM",1,SKILL_PERM;
-		break;
-	default:
-		break;
-	}
+	callfunc "F_GetPlatinumSkills";
 	mes "[Platinum Skill NPC]";
 	mes "There you go!";
 	close;

+ 2 - 2
npc/guild2/agit_main_se.txt

@@ -1003,11 +1003,11 @@ OnInit:
 			mes "their Magic properties by";
 			mes "their casting effect.^000000";
 			next;
-			setarray .@effect[0],56,54,225;
+			setarray .@effect[0],EF_BEGINSPELL4,EF_BEGINSPELL2,EF_VOLCANO;
 			setarray .@color$[0],"Red","Yellow","Blue";
 			while(1) {
 				if (.@roof0 > 7) break;
-				set .@i, rand(3);
+				set .@i, rand(getarraysize(.@effect));
 				specialeffect .@effect[.@i];
 				mes "^3355FFThe Gemstones must";
 				mes "be arranged in the correct";

+ 4 - 0
npc/merchants/advanced_refiner.txt

@@ -58,6 +58,10 @@ payon,157,146,6	script	Suhnbi#cash	85,{
 	.@price = getequiprefinecost(.@part, REFINE_COST_ENRICHED, REFINE_ZENY_COST);
 	.@material = getequiprefinecost(.@part, REFINE_COST_ENRICHED, REFINE_MATERIAL_ID);
 
+	// Make sure you have the neccessary items and Zeny to refine your items
+	// Determines chance of failure and verifies that you want to continue.
+	callsub S_RefineValidate,getequipweaponlv(.@part),.@material,.@price,.@part;
+
 	mes "[Suhnbi]";
 	mes "Clang! Clang! Clang!";
 	if (getequippercentrefinery(.@part, true) > rand(100)) {

+ 8 - 0
npc/merchants/refine.txt

@@ -612,6 +612,14 @@ function	script	refinemain	{
 	.@price = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_ZENY_COST);
 	.@material = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_MATERIAL_ID);
 
+	switch (getequipweaponlv(.@part)) {
+		case 1: .@safe = 7; break;
+		case 2: .@safe = 6; break;
+		case 3: .@safe = 5; break;
+		case 4:
+		default: .@safe = 4; break;
+	}
+
 	// If the VIP system is enabled, the prices for non-VIP players are considerably higher.
 	if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
 		switch(getequipweaponlv(.@part)) {

+ 96 - 6
npc/other/Global_Functions.txt

@@ -1,14 +1,9 @@
 //===== rAthena Script ======================================= 
 //= Global Functions
-//===== By: ================================================== 
-//= Lupus, kobra_k88
-//===== Current Version: ===================================== 
-//= 2.25
-//===== Compatible With: ===================================== 
-//= rAthena Project
 //===== Description: ========================================= 
 //= General script functions.
 //===== Additional Comments: ================================= 
+//= 1.0 Initial script. [Lupus] [kobra_k88]
 //= Added F_ClearJobVar - on getting a new job it clears all Job Quest variables
 //= Removed individual job check functions as they were redundant [kobra_k88]
 //= 1.3 Added Job Change Function for Baby/Normal Classes
@@ -49,6 +44,7 @@
 //= 2.24 Added functions to check for equipment swap hacks. [Euphy]
 //= 2.25 Added "F_CanOpenStorage" and "F_CanChangeJob". [secretdataz]
 //= 2.26 Added "F_getpositionname". [Capuche]
+//= 2.27 Added "F_GetPlatinumSkills". [mazvi]
 //============================================================ 
 
 //////////////////////////////////////////////////////////////////////////////////
@@ -659,3 +655,97 @@ function	script	F_getpositionname	{
 			return "Unknown";
 	}
 }
+
+//////////////////////////////////////////////////////////////////////////////////
+// Gives attached player their Platinum Skill based on their class.
+//////////////////////////////////////////////////////////////////////////////////
+function	script	F_GetPlatinumSkills	{
+	skill "NV_FIRSTAID",1,SKILL_PERM;
+	switch (BaseClass) {
+	case Job_Novice:
+		if (Class != Job_Super_Novice)
+			skill "NV_TRICKDEAD",1,SKILL_PERM;
+		break;
+	case Job_Swordman:
+		skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
+		skill "SM_FATALBLOW",1,SKILL_PERM;
+		skill "SM_AUTOBERSERK",1,SKILL_PERM;
+		break;
+	case Job_Mage:
+		skill "MG_ENERGYCOAT",1,SKILL_PERM;
+		break;
+	case Job_Archer:
+		skill "AC_MAKINGARROW",1,SKILL_PERM;
+		skill "AC_CHARGEARROW",1,SKILL_PERM;
+		break;
+	case Job_Acolyte:
+		skill "AL_HOLYLIGHT",1,SKILL_PERM;
+		break;
+	case Job_Merchant:
+		skill "MC_CARTREVOLUTION",1,SKILL_PERM;
+		skill "MC_CHANGECART",1,SKILL_PERM;
+		skill "MC_LOUD",1,SKILL_PERM;
+		if(PACKETVER >= 20150826)
+			skill "MC_CARTDECORATE",1,SKILL_PERM;
+		break;
+	case Job_Thief:
+		skill "TF_SPRINKLESAND",1,SKILL_PERM;
+		skill "TF_BACKSLIDING",1,SKILL_PERM;
+		skill "TF_PICKSTONE",1,SKILL_PERM;
+		skill "TF_THROWSTONE",1,SKILL_PERM;
+		break;
+	default:
+		break;
+	}
+	switch (BaseJob) {
+	case Job_Knight:
+		skill "KN_CHARGEATK",1,SKILL_PERM;
+		break;
+	case Job_Priest:
+		skill "PR_REDEMPTIO",1,SKILL_PERM;
+		break;
+	case Job_Wizard:
+		skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
+		break;
+	case Job_Blacksmith:
+		skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
+		skill "BS_GREED",1,SKILL_PERM;
+		break;
+	case Job_Hunter:
+		skill "HT_PHANTASMIC",1,SKILL_PERM;
+		break;
+	case Job_Assassin:
+		skill "AS_SONICACCEL",1,SKILL_PERM;
+		skill "AS_VENOMKNIFE",1,SKILL_PERM;
+		break;
+	case Job_Crusader:
+		skill "CR_SHRINK",1,SKILL_PERM;
+		break;
+	case Job_Monk:
+		skill "MO_KITRANSLATION",1,SKILL_PERM;
+		skill "MO_BALKYOUNG",1,SKILL_PERM;
+		break;
+	case Job_Sage:
+		skill "SA_CREATECON",1,SKILL_PERM;
+		skill "SA_ELEMENTWATER",1,SKILL_PERM;
+		skill "SA_ELEMENTGROUND",1,SKILL_PERM;
+		skill "SA_ELEMENTFIRE",1,SKILL_PERM;
+		skill "SA_ELEMENTWIND",1,SKILL_PERM;
+		break;
+	case Job_Rogue:
+		skill "RG_CLOSECONFINE",1,SKILL_PERM;
+		break;
+	case Job_Alchemist:
+		skill "AM_BIOETHICS",1,SKILL_PERM;
+		break;
+	case Job_Bard:
+		skill "BA_PANGVOICE",1,SKILL_PERM;
+		break;
+	case Job_Dancer:
+		skill "DC_WINKCHARM",1,SKILL_PERM;
+		break;
+	default:
+		break;
+	}
+	return;
+}

+ 3 - 3
npc/other/arena/arena_point.txt

@@ -62,7 +62,7 @@ prt_are_in,103,11,3	script	Arena Point Manager	732,{
 			mes "To cancel, enter ''^3355FF0^000000.''";
 			next;
 			input .@input;
-			if (.@input == 0) {
+			if (.@input <= 0) {
 				mes "[Arena Point Manager]";
 				mes "You have";
 				mes "canceled";
@@ -113,8 +113,8 @@ prt_are_in,103,11,3	script	Arena Point Manager	732,{
 					mes "into 5 Arena Points " + .@input + " times.";
 					mes "A total of " + .@want_point1 + " Turbo Track Points were converted into";
 					mes "" + .@want_point +" Arena Points.";
-					set tt_point,tt_point - .@want_point1;
-					set arena_point,arena_point+.@want_point;
+					set tt_point, .@my_turbo_all;
+					set arena_point, .@my_arena_all;
 					next;
 					mes "[Arena Point Manager]";
 					mes "" + strcharinfo(0) + ",";

+ 2 - 2
npc/other/arena/arena_room.txt

@@ -999,7 +999,7 @@ function	script	Func_Are_Rew	{
 	mes "If you wish to cancel, please enter 0. If you don't, please enter how many ^3131FFtimes^000000 of arena points you wish to spend.";
 	next;
 	input .@reward;
-	if (.@reward == 0) {
+	if (.@reward <= 0) {
 		mes "[Givu]";
 		mes "You have canceled your request.";
 		close;
@@ -1008,7 +1008,7 @@ function	script	Func_Are_Rew	{
 		mes "You have exceeded the maximum capacity.";
 		close;
 	}
-	if (arena_point < .@reward * .@arena_point) {
+	if (arena_point < (.@reward * .@arena_point)) {
 		mes "[Givu]";
 		mes "You do not have enough arena points.";
 		mes "Please check the total amount of arena points you have.";

+ 1 - 0
npc/other/gm_npcs.txt

@@ -104,6 +104,7 @@ List of GM Management NPCs (incomplete)
 - Button Girl#sura
 - Battle Test Control#ko
 - Guide#ko_helper
+- Admin1
 --------------------------
 - Soul Linker Var
 - 1st Job Quest Reset

+ 1 - 1
npc/other/turbo_track.txt

@@ -4492,7 +4492,7 @@ turbo_room,106,117,3	script	Point Manager#tt	833,{
 			mes "is 20. To cancel, enter '^3355FF0^000000.'";
 			next;
 			input .@input;
-			if (.@input == 0) {
+			if (.@input <= 0) {
 				mes "[Turbo Track Point Manager]";
 				mes "You have";
 				mes "canceled";

+ 4 - 4
npc/quests/thana_quest.txt

@@ -2099,19 +2099,19 @@ OnTouch_:
 	// .@j$: FragmentName
 	switch(.@seal) {
 	case 1:
-		setarray .@i[0],7437,1711,217,167,238;
+		setarray .@i[0],7437,1711,217,167,EF_LANDPROTECTOR;
 		set .@j$,"Misery";
 		break;
 	case 2:
-		setarray .@i[0],7436,1712,202,75,102;
+		setarray .@i[0],7436,1712,202,75,EF_CRASHEARTH;
 		set .@j$,"Agony";
 		break;
 	case 3:
-		setarray .@i[0],7438,1709,80,76,101;
+		setarray .@i[0],7438,1709,80,76,EF_REPAIRWEAPON;
 		set .@j$,"Hatred";
 		break;
 	case 4:
-		setarray .@i[0],7439,1710,62,171,100;
+		setarray .@i[0],7439,1710,62,171,EF_REMOVETRAP;
 		set .@j$,"Despair";
 		break;
 	}

+ 4 - 4
npc/re/custom/lasagna/lasagna_npcs.txt

@@ -3934,7 +3934,7 @@ lasagna,85,93,5	script	Shaman meow#dorcon	4_DR_KID_01,{
 			mes "[Shaman meow]";
 			mes "I'll tell you today's talisman. It is...";
 			next;
-			specialeffect 330;
+			specialeffect EF_HITLINE;
 			mes "[Shaman meow]";
 			.@quest_id = rand(14560,14562);
 			switch( .@quest_id ) {
@@ -6910,7 +6910,7 @@ conch_in,181,61,5	script	Boatswain#dorcon	4_M_BOSSCAT,{
 		next;
 		mes "[Boatswain]";
 		mes "This... This is...";
-		specialeffect 66;
+		specialeffect EF_CURE;
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "What do you think?";
@@ -6991,7 +6991,7 @@ conch_in,181,61,5	script	Boatswain#dorcon	4_M_BOSSCAT,{
 			mes "This is the amulet for today! Give me all the Basilrocks you have.";
 			next;
 			mes "[Boatswain]";
-			specialeffect 66;
+			specialeffect EF_CURE;
 			if (isbegin_quest(14560) == 1) {
 				mes "It feels like watching the blue horizon on a clear and windless day. It is refreshing.";
 				next;
@@ -8228,7 +8228,7 @@ lasa_dun03,161,292,5	script	Lord Imuk#dorcon	4_NFWISP,{
 		next;
 		mes "[???]";
 		mes "How dare you treat me like a ghost! I have lived for ^0000cd2,500 years^000000!";
-		specialeffect2 29;
+		specialeffect2 EF_LIGHTBOLT;
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "Oww...that hurts. I'm sorry if I've offended you, but are you Imoogi, the chief of the Basilisk?";

+ 2322 - 0
npc/re/instances/SarahAndFenrir.txt

@@ -0,0 +1,2322 @@
+//===== rAthena Script =======================================
+//= Sarah and Fenrir
+//===== Description: =========================================
+//= [Walkthrough Conversion]
+//= Sarah and Fenrir Instance
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Capuche]
+//============================================================
+
+dali02,97,142,3	script	Professor Bernhard#a1	4_LGTSCIENCE,{
+	if (BaseLevel < 145) {
+		mes "- You may proceed after reaching level 145 or over -";
+		close;
+	}
+	switch( checkquest(9336,PLAYTIME) ) {
+	case -1:
+		switch( isbegin_quest(9335) ) {
+		case 0:// First time doing instance
+			mes "[Professor Bernhard]";
+			mes "I would say I am Professor Bernhard, the best weapons researcher in Schwaltzvalt.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "After endless research I have created various weapons, but I felt something was missing so I found the ancient texts.";
+			mes "I found out about the Dimensional Device during my research.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "I also realized that relics from the glorious past were also needed to create more powerful and superior weapons.";
+			mes "That is why..I need you..";
+			next;
+			mes "[Professor Bernhard]";
+			if (getpartyleader(getcharid(1),2) != getcharid(0)) {
+				mes "A longing for accomplishing a powerful weapon as a genuine professor!";
+				mes "In order to accomplish that, we need shards of Gigantes that once appeared in the past battle of Fenrir and Sarah.";
+				next;
+				mes "[Professor Bernhard]";
+				mes "I cannot leave my post.";
+				mes "I need a warrior who can bring me the shards instead..";
+				mes "You seem capable.";
+				next;
+				mes "[Professor Bernhard]";
+				mes "I will continue discussing this further with your party leader rather than with you.";
+				close;
+			}
+			mes "I need a warrior who can bring me the shard of Gigantes instead..";
+			mes "You seem capable.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "What do you think?";
+			mes "Would you go to the past and bring me back the shards of Gigantes?";
+			mes "I will make sure to compensate you sufficiently.";
+			next;
+			if (select( "No", "Yes" ) == 1) {
+				mes "[Professor Bernhard]";
+				mes "Visit me again if you change your mind.";
+				close;
+			}
+			mes "[Professor Bernhard]";
+			mes "I set the Dimensional Device to Glast Heim of the past, where Fenrir and Sarah once fought.";
+			mes "The operating time isn't long so hurry up and come back.";
+			instance_create("Fenrir and Sarah");
+			close;
+		case 1:
+			mes "[Professor Bernhard]";
+			mes "Did you successfully bring back the shards of Gigantes?";
+			mes "You probably faced a lot of danger so thank you for the effort.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "I don't expect to receive the shards for nothing when you have risked your life for them!";
+			if (sarah_fenrir == 0) {
+				mes "I will give you a useful looking earring from the relics I have happened to have obtained during my previous research.";
+				next;
+				mes "- The left earring of Sarah -";
+				mes "Usable for Heal 1Lv";
+				mes "- The right earring of Sarah -";
+				mes "Usable for Teleport 1Lv";
+				next;
+				.@s = select( "The left earring of Sarah", "The right earring of Sarah" ) - 1;
+			}
+			mes "[Professor Bernhard]";
+			mes "If you hand the shards of Gigantes to my chief assistant, I will make sure the earrings will be correspondingly great through an enchantment.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "The more shards of Gigantes are collected, the better.";
+			mes "However, there isn't a stable supply of energy needed to work the Dimensional Device.";
+			next;
+			mes "[Professor Bernhard]";
+			mes "Come back and find me after one week has passed for the supply of Dimensional Device energy.";
+			mes "I need you to find shards of Gigantes again.";
+			erasequest 9335;// Search for shards of Gigantes
+			setquest 9336;// Go back to Professor Bernhard
+			if (isbegin_quest(9337) > 0)
+				erasequest 9337;// Wrapping up the Adventure
+			if (sarah_fenrir == 0) {
+				sarah_fenrir = 1;
+				getitem (28310+.@s),1;
+			}
+			close;
+		case 2:
+			end;
+		}
+	case 0:
+	case 1:
+		mes "[Professor Bernhard]";
+		mes "We lack the shards of Gigantes in order to make powerful weapons.";
+		mes "Because a lot of energy is needed to open a dimension device, come back and find me when the energy has accumulated.";
+		close;
+	case 2:
+		mes "[Professor Bernhard]";
+		mes "I have been waiting.";
+		mes "How is everything going?";
+		mes "While you were gone I have succeeded in accumulating dimensional energy.";
+		mes "We can open the dimension device again.";
+		next;
+		mes "[Professor Bernhard]";
+		mes "A longing for accomplishing a powerful weapon as a genuine professor!";
+		mes "In order to accomplish that, we need shards of Gigantes that once appeared in the past battle of Fenrir and Sarah.";
+		next;
+		mes "[Professor Bernhard]";
+		mes "Because I cannot leave my post, ";
+		mes "I need a warrior who can bring me the shards instead.";
+		mes "I think you can assist me once again..";
+		next;
+		mes "[Professor Bernhard]";
+		mes "There, all the preparations are finished.";
+		mes "Can you go back in time again and bring me the shards of Gigantes?";
+		mes "I will make sure to compensate you sufficiently.";
+		if (getpartyleader(getcharid(1),2) == getcharid(0)) {
+			next;
+			if (select( "No", "Yes" ) == 1) {
+				mes "[Professor Bernhard]";
+				mes "I set the Dimensional Device to Glast Heim of the past, where Fenrir and Sarah once were.";
+				mes "It won't last long so hurry up and come back.";
+				close;
+			}
+			instance_create("Fenrir and Sarah");
+		}
+		close;
+	}
+}
+
+dali02,99,148,3	script	Dimensional Device#XX1	PORTAL,{
+	if (BaseLevel < 145) {
+		mes "- You must be level 145 or over";
+		mes "It seems entry is possible. -";
+		close;
+	}
+	switch( checkquest(9336,PLAYTIME) ) {
+	case -1:
+		break;
+	case 0:
+	case 1:
+		mes "- The Dimensional Device has closed.";
+		mes "It seems entry is not possible. -";
+		close;
+	case 2:
+		break;
+	}
+	if (isbegin_quest(9335) > 0) {
+		mes "- The Dimensional Device has closed.";
+		mes "It seems entry is not possible. -";
+		close;
+	}
+	if (select( "Do not enter the device.", "Enter the time device" ) == 1) {
+		if (getcharid(1) > 0) {
+			mes "- It seems the Dimensional Device ";
+			mes "will contort space time -";
+			close;
+		}
+		mes "- There is a damp presence. -";
+		close;
+	}
+	.@md_name$ = "Fenrir and Sarah";
+	switch( instance_enter(.@md_name$) ) {
+	case IE_OTHER:
+		mes "An unknown error occurred.";
+		close;
+	case IE_NOINSTANCE:
+		mes "Memorial Dungeon " + .@md_name$ + " does not exist.";
+		mes "The party leader has not created the Memorial Dungeon.";
+		close;
+	case IE_NOMEMBER:
+		mes "Only party members can enter the Memorial Dungeon.";
+		close;
+	case IE_OK:
+		mapannounce "dali02", "Party member " + strcharinfo(0) + " of party's " + getpartyname( getcharid(1) ) + " enters Room " + .@md_name$ + "", bc_map,0xFF99,FW_NORMAL,12;
+		setquest 9335;// Search for shards of Gigantes
+		if (isbegin_quest(9336) > 0)
+			erasequest 9336;
+		// warp "1@glast",367,304;
+		end;
+	}
+}
+
+dali02,93,146,6	script	Assistant Professor#a1	4_M_REPAIR,{
+	if (sarah_fenrir == 0)
+		end;
+	disable_items;
+	mes "[Chief Assistant]";
+	mes "I've heard about you from the professor.";
+	mes "The professor has told me to sufficiently compensate you for risking your life and bringing the shards of Gigantes.";
+	next;
+	switch( select( "Enchant earring.", "Purchase earring", "Exit conversation" ) ) {
+	case 1:
+		mes "[Chief Assistant]";
+		mes "Sarah's earrings we have discovered at the archaeological site must certainly have great potential.";
+		next;
+		switch( select( "Enchant Sarah's earrings", "Initialize enchantment on Sarah's earrings", "Exit conversation" ) ) {
+		case 1:
+			mes "[Chief Assistant]";
+			mes "2 enchantments are possible on one earring.";
+			mes "Which earring do you wish to enchant?";
+			next;
+			switch( select( "The left earring of Sarah", "The right earring of Sarah", "Quit" ) ) {
+			case 1:
+				.@sarah_item_id = 28310;
+				.@sarah_earring$ = "left";
+				break;
+			case 2:
+				.@sarah_item_id = 28311;
+				.@sarah_earring$ = "right";
+				break;
+			case 3:
+				mes "[Chief Assistant]";
+				mes "If you want an enchantment ";
+				mes "on Sarah's earrings, ";
+				mes "come and find me again.";
+				close;
+			}
+			mes "[Chief Assistant]";
+			mes "You must equip the item to make enchantment possible.";
+			mes "Which column do you wish to enchant?";
+			next;
+			if (select( "Left column", "Right column" ) == 1) {
+				.@part = EQI_ACC_L;
+				.@column$ = "left";
+				.@bonus_size = 4;		// 4 possibilities
+				.@bonus_chance = 20;	// 20% per possibility
+			}
+			else {
+				.@part = EQI_ACC_R;
+				.@column$ = "right";
+				.@bonus_size = 6;		// 6 possibilities
+				.@bonus_chance = 10;	// 10% per possibility
+			}
+			.@equip_id = getequipid(.@part);
+			if (.@equip_id != .@sarah_item_id) {
+				mes "[Chief Assistant]";
+				mes "If you wish to enchant, you must equip Sarah's " + .@sarah_earring$ + " earring.";
+				close;
+			}
+			setarray .@card[0], getequipcardid(.@part,3), getequipcardid(.@part,2);
+			if (.@card[1] > 0) {// 2 enchants
+				mes "[Chief Assistant]";
+				mes "A fully enchanted earring of Sarah cannot be enchanted any further.";
+				close;
+			}
+			if (.@card[0] < 1) {// none enchant
+				mes "[Chief Assistant]";
+				mes "Sarah's Earring is currently in a state without enchantment.";
+				.@slot = 0;
+			}
+			else {// 1 enchant
+				mes "[Chief Assistant]";
+				mes "Sarah's Earring is currently in a state of enchantment in slot 4.";
+				.@slot = 1;
+			}
+			next;
+			mes "[Chief Assistant]";
+			mes "Which ability do you want as an enchantment on slot " + (4-.@slot) + "?";
+			next;
+			switch( select( "CRI or Critical", "Expert archer or Bleed", "Conservation or MATK", "Delay Attack or Delay Skill" ) ) {
+			case 1:
+				setarray .@bonus[0],
+					4863,	// Fatal1
+					4864,	// Fatal2
+					4939,	// Critical2
+					4940,	// Critical3
+					4941,	// Critical4
+					4865;	// Fatal3
+				mes "[Chief Assistant]";
+				mes "Selected for CRI or Critical Enchantment slot " + (4-.@slot) + ".";
+				break;
+			case 2:
+				setarray .@bonus[0],
+					4832,	// Expert_Archer1
+					4833,	// Expert_Archer2
+					4942,	// Dodge1
+					4943,	// Dodge2
+					4944,	// Dodge3
+					4834;	// Expert_Archer3
+				mes "[Chief Assistant]";
+				mes "Selected for Expert Archer or Bleed Enchantment slot " + (4-.@slot) + ".";
+				break;
+			case 3:
+				setarray .@bonus[0],
+					4945,	// Thrift1
+					4946,	// Thrift2
+					4897,	// Matk3p
+					4898,	// Matk4p
+					4947,	// Thrift3
+					4899;	// Matk5p
+				mes "[Chief Assistant]";
+				mes "Selected for Conservation or MATK Enchantment slot " + (4-.@slot) + ".";
+				break;
+			case 4:
+				setarray .@bonus[0],
+					4869,	// Attack_Delay_1
+					4872,	// Attack_Delay_2
+					4948,	// Skill_Delay1
+					4949,	// Skill_Delay2
+					4950,	// Skill_Delay3
+					4873;	// Attack_Delay_3
+				mes "[Chief Assistant]";
+				mes "Selected for Delay Attack or Delay Skill Enchantment slot " + (4-.@slot) + ".";
+				break;
+			}
+			next;
+			mes "[Chief Assistant]";
+			mes "4 shards of Gigantes is required for one enchantment.";
+			next;
+			mes "[Chief Assistant]";
+			mes "Because enchantment is a high risk process, there is risk of Sarah's earring being destroyed.";
+			mes "Do you still want to do it?";
+			next;
+			if (select( "No", "Yes" ) == 1) {
+				mes "[Chief Assistant]";
+				mes "Please speak to me again after making a clear decision!";
+				close;
+			}
+			if (countitem(6803) < 4) {
+				mes "[Chief Assistant]";
+				mes "There are not enough shards of Gigantes.";
+				mes "4 shards of Gigantes is required to do one enchantment.";
+				close;
+			}
+			mes "[Chief Assistant]";
+			mes "Good. I will start the enchantment!";
+			mes "I wish you luck~!";
+			next;
+			mes "[Chief Assistant]";
+			mes "Aahhhh!!";
+			next;
+			progressbar "000000",5;
+			specialeffect2 EF_MAGICALATTHIT;
+			specialeffect2 EF_POTION2;
+			delitem 6803,4;// Shard of Gigantes
+			delequip .@part;
+			.@r = rand(100);
+			for ( .@i = 0; .@i < .@bonus_size && (.@bonus_chance * (.@i+1)) < .@r; .@i++ );
+			if (.@i == .@bonus_size) {
+				specialeffect2 EF_CRASHEARTH;
+				specialeffect2 EF_MAXPOWER;
+				mes "[Chief Assistant]";
+				mes "Sadly... it is..";
+				mes "destroyed...";
+				mes "Whew.. ";
+				mes "enchantment is not an easy task..";
+				close;
+			}
+			.@card[.@slot] = .@bonus[.@i];
+			specialeffect2 EF_ANGEL2;
+			getitem2 .@sarah_item_id,1,1,0,0,0,0,.@card[1],.@card[0];
+			mes "[Chief Assistant]";
+			mes "Enchantment completed!";
+			close;
+		case 2:
+			mes "[Chief Assistant]";
+			mes "Which earring do you wish to initialize?";
+			next;
+			switch( select( "The left earring of Sarah", "The right earring of Sarah", "Quit" ) ) {
+			case 1:
+				.@sarah_item_id = 28310;
+				.@sarah_earring$ = "left";
+				break;
+			case 2:
+				.@sarah_item_id = 28311;
+				.@sarah_earring$ = "right";
+				break;
+			case 3:
+				mes "[Chief Assistant]";
+				mes "If you want to initialize an enchantment on Sarah's earrings, come and find me again.";
+				close;
+			}
+			mes "[Chief Assistant]";
+			mes "On Sarah's earring. 1 shard of Gigantes is required to initialize the enchantment..";
+			next;
+			if (countitem(6803) < 1) {
+				mes "[Chief Assistant]";
+				mes "There are not enough shards of Gigantes.";
+				mes "You will need them in order for initialization to take place.";
+				close;
+			}
+			mes "[Chief Assistant]";
+			mes "You must equip the item to make initialization possible.";
+			mes "Which column's earring do you wish to initialize?";
+			next;
+			if (select( "Left column", "Right column" ) == 1) {
+				.@part = EQI_ACC_L;
+				.@column$ = "left";
+			}
+			else {
+				.@part = EQI_ACC_R;
+				.@column$ = "right";
+			}
+			.@equip_id = getequipid(.@part);
+			if (.@equip_id == -1) {
+				mes "[Chief Assistant]";
+				mes "To initialize an enchantment, the relevant column must be equipped with gear.";
+				close;
+			}
+			if (.@equip_id != .@sarah_item_id) {
+				mes "[Chief Assistant]";
+				mes "To initialize an enchantment, the relevant column must be equipped with Sarah's earring.";
+				close;
+			}
+			if (getequipcardid(.@part,3) < 1) {
+				mes "[Chief Assistant]";
+				mes "Sarah's earring without an enchantment cannot be initialized.";
+				close;
+			}
+			mes "[Chief Assistant]";
+			mes "You have selected Sarah's " + .@sarah_earring$ + " earring on the " + .@column$ + " column.";
+			mes "It is impossible to restore abilities that are gone after initialization.";
+			mes "Do you still want to proceed?";
+			next;
+			if (select( "No", "Yes" ) == 2) {
+				mes "[Chief Assistant]";
+				mes "Yes sir. Initialization will start.";
+				next;
+				progressbar "000000",5;
+				specialeffect2 EF_MAGICALATTHIT;
+				specialeffect2 EF_POTION2;
+				specialeffect2 EF_ANGEL2;
+				delitem 6803,1;// Shard of Gigantes
+				delequip .@part;
+				getitem .@sarah_item_id,1;
+				mes "[Chief Assistant]";
+				mes "Initialization completed.";
+				mes "Please find me if you need me.";
+			}
+			close;
+		case 3:
+			mes "[Chief Assistant]";
+			mes "If you want an enchantment on Sarah's earrings, come and find me again.";
+			close;
+		}
+	case 2:
+		mes "[Chief Assistant]";
+		mes "Related to Glast Heim, this is an unique and rare earring found during an excavation with the professor.";
+		next;
+		mes "[Chief Assistant]";
+		mes "I think this has been worn by Sarah in the past and seems to have a great ability to draw out potential strength.";
+		next;
+		mes "[Chief Assistant]";
+		mes "I will specially trade it for 1 shard since you are the warrior who brought shards of Gigantes for the professor's work.";
+		next;
+		mes "[Chief Assistant]";
+		mes "- The left earring of Sarah -";
+		mes "Usable for Heal 1Lv";
+		mes "- The right earring of Sarah -";
+		mes "Usable for Teleport 1Lv";
+		mes "-----------------------";
+		mes "Which one do you wish?";
+		next;
+		.@s = select( "The left earring of Sarah", "The right earring of Sarah", "Exit conversation" ) - 1;
+		if (.@s < 2) {
+			if (countitem(6803) < 1) {
+				mes "[Chief Assistant]";
+				mes "There are not enough shards of Gigantes.";
+				mes "You will need them for me to trade with you.";
+				close;
+			}
+			delitem 6803,1;// Shard of Gigantes
+			getitem (28310+.@s),1;
+		}
+		mes "[Chief Assistant]";
+		mes "Professor Bernhard is the professor I respect the most.";
+		mes "Do you have someone you respect?";
+		close;
+	case 3:
+		mes "[Chief Assistant]";
+		mes "I've heard about you from the professor.";
+		mes "The professor has told me to sufficiently compensate you for risking your life and bringing the shards of Gigantes.";
+		close;
+	}
+}
+
+1@glast,360,295,0	script	#glast_event_1	HIDDEN_WARP_NPC,8,8,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_1");
+	mes "";
+	specialeffect2 EF_HIT2;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Huh? Somebody there? Hello~ You must be a traveler.";
+	sleep2 3000;
+	cutin "fenrir_a.bmp",2;
+	npctalk "Fenrith Fenrir: This is strange.. I don't recall Glast Heim castle being filled with such a dark presence..", 'fenrir_1$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Greetings can come later! Careful! It seems somebody has summoned a monster!", 'fenrir_1$;
+	sleep2 3000;
+	cutin "",255;
+	specialeffect EF_LOCKON, AREA, 'fenrir_1$;
+	.@label$ = instance_npcname("#glast_event_1") + "::OnMobDead";
+	monster 'map_glast$,355,300, "Mutant Galion",3198,1, .@label$;	// MM_M_GALION
+	monster 'map_glast$,358,300, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,361,300, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,355,289, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,358,289, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,364,294, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,364,297, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,364,291, "Mutant Galion",3198,1, .@label$;
+	monster 'map_glast$,353,290, "Mutant Galion",3198,1, .@label$;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : What are these things?";
+	npctalk "Fenrith Fenrir: Buy me some time while I cast magic! I will handle this!", 'fenrir_1$;
+	donpcevent instance_npcname("#glast_event_1") + "::OnBar";
+	donpcevent instance_npcname("#glast_event_1") + "::OnEvent";
+	end;
+OnBar:
+	progressbar_npc "000000",10, 'fenrir_1$;
+	end;
+
+OnEvent:
+	// npctalk "Fenrith Fenrir: Buy me some time while I cast magic! I will handle this!", 'fenrir_1$;// double on official
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Wrath of the true sky.", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Thunderbolt that may split the earth!", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Fall before me now!", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Aaah!! Thunder Storm!!!!!", 'fenrir_1$;
+	for ( .@i = 1; .@i < 8; .@i++ )
+		specialeffect EF_THUNDERSTORM, AREA, instance_npcname( "#effect_glast_event01_" + .@i );
+	killmonster 'map_glast$, instance_npcname("#glast_event_1") + "::OnMobDead";
+	sleep 4000;
+	npctalk "Fenrith Fenrir: Glast Heim, once the cathedral for the Asgard gods..", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Now it has completely become a habitat for monsters..", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Wait.. Come to think of it, something is strange..", 'fenrir_1$;
+	sleep 3000;
+	npctalk "Fenrith Fenrir: Galions are the monsters that habit this vicinity..", 'fenrir_1$;
+	sleep 3000;
+	enablenpc instance_npcname("#glast_event_3");
+	end;
+
+OnMobDead:
+	end;
+}
+
+1@glast,360,295,0	script	#glast_event_3	HIDDEN_WARP_NPC,8,8,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_3");
+	mes "";
+	cutin "fenrir_a.bmp",2;
+	npctalk "Fenrith Fenrir: By the way, I know it was sudden but thank you for helping.", 'fenrir_1$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Anyway, who are you?", 'fenrir_1$;
+	sleep2 2000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Ah.. that is....";
+	sleep2 2000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : .. I am a traveler who wanders around the world!";
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Is that so..? I see.. I guess it does not matter.", 'fenrir_1$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: This place seems quite dangerous now. It is not too late to turn back.", 'fenrir_1$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: There is an object I need to find. I need to hurry before it is too late.", 'fenrir_1$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Perhaps you can help me...", 'fenrir_1$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: No.. Then thank you! I hope we can meet again later!", 'fenrir_1$;
+	sleep2 3000;
+	cutin "",255;
+	specialeffect EF_LOCKON, AREA, 'fenrir_1$;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Did that.. person.. really happen to be.. the.. Fenrir..? No way.. probably not..";
+
+	disablenpc 'fenrir_1$;
+	for ( .@i = 1; .@i < 8; .@i++ )
+		disablenpc instance_npcname("#effect_glast_event01_" + .@i);
+	enablenpc instance_npcname("#glast_move_01");
+	enablenpc instance_npcname("#glast_event_5");
+	enablenpc 'fenrir_2$;
+	end;
+}
+
+1@glast,359,296,4	script	#effect_glast_event01_1	CLEAR_NPC,{ end; }
+1@glast,353,294,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_2	CLEAR_NPC
+1@glast,360,304,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_3	CLEAR_NPC
+1@glast,366,295,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_4	CLEAR_NPC
+1@glast,352,304,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_5	CLEAR_NPC
+1@glast,356,284,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_6	CLEAR_NPC
+1@glast,345,283,4	duplicate(#effect_glast_event01_1)	#effect_glast_event01_7	CLEAR_NPC
+
+1@glast,359,294,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_01	4_F_FENRIR
+
+// Warps
+// From entrance
+1@glast,352,279,0	script	#glast_move_01	WARPNPC,4,4,{
+	end;
+OnTouch:
+	if ('back_to_entrance == 0)
+		warp 'map_glast$,347,265;
+	else {
+		disablenpc instance_npcname("#glast_move_01");
+		initnpctimer;
+	}
+	end;
+
+OnTimer1500:
+	specialeffect EF_FIREPILLARON2, AREA, 'sarah_ego$;
+	end;
+OnTimer2000:
+	hideoffnpc 'sarah_ego$;
+	specialeffect EF_WHITEBODY, AREA, 'sarah_ego$;
+	end;
+OnTimer3000:
+	npctalk "Sarah Irene: Impressive Fenrith Fenrir, you cleverly escaped", 'sarah_ego$;
+	end;
+OnTimer7500:
+	npctalk "Sarah Irene: Mm.. today I will make you stand down", 'sarah_ego$;
+	end;
+OnTimer8000:
+	npctalk "Fenrith Fenrir: Today I hope to end our ill fated relationship.", 'fenrir_11$;
+	end;
+OnTimer11000:
+	npctalk "Sarah Irene: However, do not think this is the end", 'sarah_ego$;
+	end;
+OnTimer14000:
+	npctalk "Sarah Irene: You will surely see me again!!!", 'sarah_ego$;
+	end;
+OnTimer14500:
+	npctalk "Fenrith Fenrir: Mm... I look forward to it Sarah Irene..", 'fenrir_11$;
+	specialeffect EF_FIREPILLARON2, AREA, 'sarah_ego$;
+	end;
+OnTimer15500:
+	stopnpctimer;
+	disablenpc 'sarah_ego$;
+	end;
+}
+
+// Fenrir left side
+// 1@glast,42,350,0	warp2	#glast_event_warp_1	10,10,1@glast,105,369
+// 1@glast,52,346,0	warp2	#glast_event_warp_2	10,10,1@glast,105,369
+// 1@glast,35,364,0	warp2	#glast_event_warp_3	10,10,1@glast,105,369
+// 1@glast,41,364,0	warp2	#glast_event_warp_4	10,10,1@glast,105,369
+// 1@glast,44,371,0	warp2	#glast_event_warp_5	10,10,1@glast,105,369
+// 1@glast,54,362,0	warp2	#glast_event_warp_6	10,10,1@glast,105,369
+// 1@glast,44,358,0	warp2	#glast_event_warp_7	10,10,1@glast,105,369
+
+// To stairs final room
+1@glast,199,237,0	script	#glast_move_03	WARPNPC,2,2,{
+	end;
+OnTouch:
+	if (getcharid(0) == getpartyleader(getcharid(1),2))
+		warpparty 'map_glast$,197,263, getcharid(1), 'map_glast$,1,1;
+	end;
+}
+
+// To final room
+1@glast,199,294,0	script	#glast_move_03a	WARPNPC,3,3,{
+	end;
+OnTouch:
+	if (getcharid(0) == getpartyleader(getcharid(1),2))
+		warpparty 'map_glast$,188,334, getcharid(1), 'map_glast$,1,1;
+	end;
+}
+
+// Exit final room
+//1@glast,189,331,0	warp2	#glast_event_warp_11	10,10,1@glast,197,221
+//1@glast,206,337,0	warp2	#glast_event_warp_12	10,10,1@glast,197,221
+//1@glast,205,330,0	warp2	#glast_event_warp_13	10,10,1@glast,197,221
+//1@glast,193,337,0	warp2	#glast_event_warp_14	10,10,1@glast,197,221
+//1@glast,210,331,0	warp2	#glast_event_warp_15	10,10,1@glast,197,221
+//1@glast,194,330,0	warp2	#glast_event_warp_16	10,10,1@glast,197,221
+
+// Back to entrance
+1@glast,351,269,0	script	#glast_move_04	WARPNPC,3,3,{
+	end;
+OnTouch:
+	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
+		donpcevent instance_npcname("#sarah_wrath") + "::OnStop";
+		warpparty 'map_glast$,349,282, getcharid(1), 'map_glast$,1,1;
+	}
+	end;
+}
+
+// Exit
+1@glast,376,303,0	warp2	#glast_move_05	2,2,dali02,91,140
+
+// Fenrir bottom
+1@glast,216,48,0	script	#glast_event_5	HIDDEN_WARP_NPC,6,6,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_5");
+	mes "";
+	cutin "fenrir_a.bmp",2;
+	npctalk "Fenrith Fenrir: You are still in Glast Heim? Why aren't you leaving this dangerous place?", 'fenrir_2$;
+	sleep2 2000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : I know it's dangerous but I thought it would be fun so I couldn't help myself..";
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Hm.. Adventurers..", 'fenrir_2$;
+	sleep2 2000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : You don't have to worry~! I am fairly strong myself!";
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Oh.. really? Do you think you can assist me then?", 'fenrir_2$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: The object I am looking for is located somewhere in Glast Heim!", 'fenrir_2$;
+	viewpoint 1,47,270,1,0xFF0000;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: But others looking for the object will arrive there soon!", 'fenrir_2$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: This is urgent because there isn't enough time. We have to arrive there soon. 5 minutes at the latest!", 'fenrir_2$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: I will be waiting! If you are late I will have to go by myself!", 'fenrir_2$;
+	sleep2 2000;
+	npctalk "Fenrith Fenrir: Alright, I will go on ahead and you decide if you are going to assist me!", 'fenrir_2$;
+	sleep2 3000;
+	cutin "",255;
+	disablenpc 'fenrir_2$;
+	sleep2 1000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Hm.. what should I do..? I need shards of Gigantes as requested by Professor Bernhard..";
+	sleep2 2000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Should I help that person.. Or should I look for Gigantes to take the shards as requested by Professor Bernhard..?";
+	sleep2 2000;
+	donpcevent instance_npcname("#fenrir_left_final_2") + "::OnStart";// timer (5 mins)
+	for ( .@i = 1; .@i < 7; .@i++ )
+		enablenpc instance_npcname("Ancient Gigantes#glast_" + .@i);
+	enablenpc 'fenrir_3$;
+	enablenpc instance_npcname("#glast_event_7");
+	disablenpc instance_npcname("#glast_move_01");	// officially player can be stucked in entrance
+	end;
+}
+
+1@glast,216,52,6	script	Fenrith Fenrir#glast_02	4_F_FENRIR,{ end; }
+
+// Fenrir left side, entrance
+1@glast,47,270,0	script	#glast_event_7	HIDDEN_WARP_NPC,5,5,{
+	end;
+OnTouch:
+	if (getcharid(0) != getpartyleader(getcharid(1),2))
+		npctalk "Fenrith Fenrir: I would like your party leader to come and help me!", 'fenrir_3$;
+	else {
+		mes "";
+		disablenpc instance_npcname("#glast_event_7");
+		npctalk "Fenrith Fenrir: You came! I was waiting!", 'fenrir_3$;
+		sleep2 2000;
+		npctalk "Fenrith Fenrir: We don't have much time! We have to go search for it now! Let's go in!", 'fenrir_3$;
+		sleep2 2000;
+		if ('skip_left_part == 0) {// 5 mins have passed?
+			donpcevent instance_npcname("#fenrir_left_final_2") + "::OnStop";
+			disablenpc 'fenrir_3$;
+			enablenpc 'fenrir_4$;
+			enablenpc instance_npcname("#glast_event_9");
+			warpparty 'map_glast$,41,348, getcharid(1), 'map_glast$,1,1;
+		}
+	}
+	end;
+}
+
+1@glast,47,270,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_03	4_F_FENRIR
+
+// Fenrir left side, inside
+1@glast,44,357,0	script	#glast_event_9	HIDDEN_WARP_NPC,3,3,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_9");
+	mes "";
+	cutin "fenrir_a.bmp",2;
+	npctalk "Fenrith Fenrir: The sword of Baldur, Sentinel Breeze... even after 1000 years..", 'fenrir_4$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: I can feel the evil of monsters in this place.. as if they are being controlled by someone..", 'fenrir_4$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Then there is someone else here other than me?", 'fenrir_4$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: That will do.. Now all I have to do is use Sentinel Breeze to find Baldur's whereabouts..", 'fenrir_4$;
+	sleep2 3000;
+	enablenpc 'sarah_10$;
+	enablenpc instance_npcname("Gigantes#semi1");
+	enablenpc instance_npcname("Gigantes#semi2");
+	sleep2 1000;
+	cutin "sarah_hero3.bmp",0;
+	npctalk "Sarah Irene: Hehe.. I see... just as I expected.", 'sarah_10$;
+	sleep2 3000;
+	npctalk "Sarah Irene: Was that blade the clue?", 'sarah_10$;
+	sleep2 3000;
+	npctalk "Sarah Irene: Then, Fenrith Fenrir, that means a 1000 year old seal can be broken with it?", 'sarah_10$;
+	sleep2 3500;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Could it be he was the real Fenrir?";
+	npctalk "Fenrith Fenrir: Could this be.. Valkyrie! Now it is not fun anymore", 'fenrir_4$;
+	cutin "fenrir_b.bmp",2;
+	sleep2 5000;
+	npctalk "Sarah Irene: Belated salutations, my name is Sarah Irene, one of the 12 Valkyries of Valhalla.", 'sarah_10$;
+	cutin "sarah_hero3.bmp",0;
+	sleep2 3000;
+	npctalk "Sarah Irene: Anyway, also to achieve Freyja's will.. hehe..", 'sarah_10$;
+	npctalk "Fenrith Fenrir: Two Gigantes! This will not be an easy fight. Help me and defeat the Gigantes!", 'fenrir_4$;
+	cutin "fenrir_b.bmp",2;
+	sleep2 3000;
+	npctalk "Sarah Irene: Go forth! Gigantes! And my loyal monsters!", 'sarah_10$;
+	npctalk "Fenrith Fenrir: Sarah will hide and continuously summon monsters! I will take care of that monster, you face the Gigantes!", 'fenrir_4$;
+	cutin "fenrir_b.bmp",255;
+	sleep2 2000;
+	disablenpc 'sarah_10$;
+	disablenpc instance_npcname("Gigantes#semi1");
+	disablenpc instance_npcname("Gigantes#semi2");
+	enablenpc instance_npcname("#fenrir_left_final_1");
+	monster 'map_glast$,49,363, "Gigantes#semi1", 3191,1, instance_npcname("#fenrir_left_final_1") + "::OnMobDead";// MM_M_GIGAN1
+	monster 'map_glast$,41,363, "Gigantes#semi2", 3192,1, instance_npcname("#fenrir_left_final_1") + "::OnMobDead";// MM_M_GIGAN2
+	donpcevent instance_npcname("#glast_event_9") + "::OnEvent";
+	end;
+OnEvent:
+	sleep 15000;
+	'timer_left_side = 0;
+	donpcevent instance_npcname("#glast_event_9") + "::OnStart";
+	end;
+
+OnStart:
+	initnpctimer;
+	npctalk "Fenrith Fenrir: Currents vibrating in the atmosphere! Show me your strength!", 'fenrir_4$;
+	callsub S_Spawn,1,3198;// MM_M_GALION
+
+	progressbar_npc "000000",5, 'fenrir_4$;	// note: display effect after dead of Gigantes
+	npctalk "Fenrith Fenrir: Light Bolt!!!", 'fenrir_4$;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		specialeffect EF_LIGHTBOLT, AREA, instance_npcname("#effect_glast_event02_" + .@i);
+	end;
+OnTimer6000:
+	killmonster 'map_glast$, instance_npcname("#glast_event_9") + "::OnMobDead";
+	end;
+OnTimer15000:
+	npctalk "Fenrith Fenrir: Devour this evil presence with the fire pit of the universe!", 'fenrir_4$;
+	callsub S_Spawn,2,3198;// MM_M_GALION
+	progressbar_npc "000000",5, 'fenrir_4$;
+	npctalk "Fenrith Fenrir: Hell fire that can swallow even space! Meteor storm~!!!!!", 'fenrir_4$;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		specialeffect EF_METEORSTORM, AREA, instance_npcname("#effect_glast_event02_" + .@i);
+	end;
+OnTimer21000:
+	killmonster 'map_glast$, instance_npcname("#glast_event_9") + "::OnMobDead";
+	end;
+OnTimer30000:
+	npctalk "Fenrith Fenrir: Currents vibrating in the atmosphere! Show me your strength!", 'fenrir_4$;
+	callsub S_Spawn,1,3199;// MM_M_MUTANT_DRAGON
+	progressbar_npc "000000",5, 'fenrir_4$;
+	npctalk "Fenrith Fenrir: Light Bolt!!!", 'fenrir_4$;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		specialeffect EF_LIGHTBOLT, AREA, instance_npcname("#effect_glast_event02_" + .@i);
+	end;
+OnTimer36000:
+	killmonster 'map_glast$, instance_npcname("#glast_event_9") + "::OnMobDead";
+	end;
+OnTimer45000:
+	npctalk "Fenrith Fenrir: Freeze the evil presence with frost wind!!!", 'fenrir_4$;
+	callsub S_Spawn,2,3199;// MM_M_MUTANT_DRAGON
+	progressbar_npc "000000",5, 'fenrir_4$;
+	npctalk "Fenrith Fenrir: A storm that can freeze even the soul!! Storm gust~!!!!!", 'fenrir_4$;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		specialeffect EF_STORMGUST, AREA, instance_npcname("#effect_glast_event02_" + .@i);
+	end;
+OnTimer51000:
+	killmonster 'map_glast$, instance_npcname("#glast_event_9") + "::OnMobDead";
+	end;
+OnTimer55000:
+	'timer_left_side++;
+	if ('timer_left_side == 5) {
+		stopnpctimer;
+		donpcevent instance_npcname("#fenrir_left_vermilion") + "::OnEvent";
+	}
+	end;
+OnTimer60000:
+	donpcevent instance_npcname("#glast_event_9") + "::OnStart";
+	end;
+
+OnStop:
+	stopnpctimer;
+	end;
+
+OnMobDead:
+	end;
+
+S_Spawn:
+	.@mob_id = getarg(1);
+	.@label$ = instance_npcname("#glast_event_9") + "::OnMobDead";
+	if (getarg(0) == 1) {
+		monster 'map_glast$,43,355, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,39,361, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,48,361, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,43,363, "--ja--", .@mob_id,1, .@label$;
+	}
+	else {
+		monster 'map_glast$,37,360, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,37,362, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,37,364, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,37,366, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,37,368, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,41,371, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,50,360, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,50,362, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,50,364, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,50,366, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,50,368, "--ja--", .@mob_id,1, .@label$;
+		monster 'map_glast$,46,371, "--ja--", .@mob_id,1, .@label$;
+	}
+	return;
+}
+
+1@glast,1,1,0	script	#fenrir_left_vermilion	HIDDEN_WARP_NPC,{
+	end;
+OnEvent:
+	enablenpc instance_npcname("#fenrir_left_vermilion");
+	initnpctimer;
+	npctalk "Fenrith Fenrir: They are endless. I should finish this absolutely.", 'fenrir_4$;
+	progressbar_npc "000000",10, 'fenrir_4$;
+	end;
+OnTimer2000:
+	npctalk "Fenrith Fenrir: Limitlessly distant monarch with the beautiful scarlet breath!!", 'fenrir_4$;
+	end;
+OnTimer4000:
+	npctalk "Fenrith Fenrir: Where you have passed will only be filled with nothingness.", 'fenrir_4$;
+	end;
+OnTimer7000:
+	npctalk "Fenrith Fenrir: Power to shake the earth's axis! Show your grace right here and now!!!", 'fenrir_4$;
+	end;
+OnTimer10000:
+	stopnpctimer;
+	npctalk "Fenrith Fenrir: Road of Vermilion!!!!", 'fenrir_4$;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		specialeffect EF_LORD, AREA, instance_npcname("#effect_glast_event02_" + .@i);
+	killmonster 'map_glast$, instance_npcname("#fenrir_left_final_1") + "::OnMobDead";
+	donpcevent instance_npcname("#fenrir_left_final_1") + "::OnStart";
+	disablenpc instance_npcname("#fenrir_left_vermilion");
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("#fenrir_left_vermilion");
+	end;
+}
+
+1@glast,1,1,0	script	#fenrir_left_final_1	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer2000:
+	npctalk "Fenrith Fenrir: Alright! We have defeated a Gigantes!", 'fenrir_4$;
+	enablenpc 'sarah_10$;
+	end;
+OnTimer4000:
+	npctalk "Sarah Irene: As expected, Fenrith Fenrir, you do not yield easily!", 'sarah_10$;
+	end;
+OnTimer7000:
+	npctalk "Fenrith Fenrir: Get away from the Sentinel Breeze immediately!", 'fenrir_4$;
+	end;
+OnTimer9000:
+	npctalk "Sarah Irene: Hehe.. I can't do that!", 'sarah_10$;
+	specialeffect EF_WL_TELEKINESIS_INTENSE, AREA, instance_npcname("#effect_glast_event02_bis");
+	end;
+OnTimer11000:
+	npctalk "Sarah Irene: If you want it back come to Glast Heim Castle! I shall be waiting!", 'sarah_10$;
+	end;
+OnTimer13000:
+	specialeffect EF_FIREPILLARON2, AREA, 'sarah_10$;
+	end;
+OnTimer14000:
+	disablenpc 'sarah_10$;
+	end;
+OnTimer16000:
+	npctalk "Fenrith Fenrir: We must follow quickly to retrieve the sword! I shall use a group space movement spell!", 'fenrir_4$;
+	end;
+OnTimer19000:
+	npctalk "Fenrith Fenrir: Simultaneous large scale warp!", 'fenrir_4$;
+	end;
+OnTimer20000:
+	stopnpctimer;
+	//for ( .@i = 1; .@i < 8; .@i++ )
+	//	enablenpc instance_npcname("#glast_event_warp_" + .@i);	// warp to 105,369
+	areawarp 'map_glast$,26,338,59,375, 'map_glast$,105,369;
+	for ( .@i = 1; .@i < 9; .@i++ )
+		disablenpc instance_npcname("#effect_glast_event02_" + .@i);
+	disablenpc instance_npcname("#effect_glast_event02_bis");
+	disablenpc instance_npcname("#fenrir_left_final_1");
+	disablenpc 'fenrir_4$;
+	enablenpc instance_npcname("#glast_event_13");
+	enablenpc 'fenrir_5$;
+	end;
+
+OnMobDead:
+	if (mobcount( 'map_glast$, instance_npcname("#fenrir_left_final_1") + "::OnMobDead" ) < 1) {
+		donpcevent instance_npcname("#glast_event_9") + "::OnStop";
+		donpcevent instance_npcname("#fenrir_left_vermilion") + "::OnStop";
+		donpcevent instance_npcname("#fenrir_left_final_1") + "::OnStart";
+	}
+	end;
+}
+
+1@glast,44,357,8	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_04	4_F_FENRIR
+1@glast,49,363,4	duplicate(#effect_glast_event01_1)	Gigantes#semi1	4_GIGANTES_SMALL
+1@glast,41,363,4	duplicate(#effect_glast_event01_1)	Gigantes#semi2	4_GIGANTES_SMALL
+1@glast,46,364,4	duplicate(#effect_glast_event01_1)	Sarah Irene#glast_10	4_F_SARAH
+
+1@glast,52,345,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_1	CLEAR_NPC
+1@glast,44,350,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_2	CLEAR_NPC
+1@glast,35,360,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_3	CLEAR_NPC
+1@glast,44,360,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_4	CLEAR_NPC
+1@glast,52,360,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_5	CLEAR_NPC
+1@glast,35,368,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_6	CLEAR_NPC
+1@glast,53,368,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_7	CLEAR_NPC
+1@glast,44,371,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_8	CLEAR_NPC
+1@glast,44,366,4	duplicate(#effect_glast_event01_1)	#effect_glast_event02_bis	CLEAR_NPC
+
+// Event top side
+1@glast,133,365,0	script	#glast_event_13	HIDDEN_WARP_NPC,8,8,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_13");
+	//for ( .@i = 1; .@i < 8; .@i++ )
+	//	disablenpc instance_npcname("#glast_event_warp_" + .@i);
+	mes "";
+	cutin "fenrir_a.bmp",2;
+	sleep2 1000;
+	npctalk "Fenrith Fenrir: I need to go to Glast Heim Castle to retrieve the sword of Baldur.", 'fenrir_5$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: It could be difficult alone, I would gratefully accept your help.", 'fenrir_5$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Since there isn't enough time, we can't wait long.", 'fenrir_5$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: I will wait in the central castle of Glast Heim for about 5 minutes.", 'fenrir_5$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Since it is dangerous you do not have to feel obligated to help me. I will try by myself if I have to.", 'fenrir_5$;
+	viewpoint 1,199,237,1,0xFF0000;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Then I will go on ahead! Warp!", 'fenrir_5$;
+	cutin "",255;
+	donpcevent instance_npcname("#glast_event_13") + "::OnBar";
+	end;
+OnBar:
+	progressbar_npc "000000",3, 'fenrir_5$;
+	disablenpc 'fenrir_5$;
+	donpcevent instance_npcname("#fenrir_boss_final_2") + "::OnStart";// timer (5 mins)
+	enablenpc instance_npcname("#glast_move_03");
+	enablenpc instance_npcname("#glast_event_15");
+	enablenpc 'fenrir_6$;
+	end;
+}
+
+1@glast,133,365,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_05	4_F_FENRIR
+
+// Skipped left side
+1@glast,1,1,0	script	#fenrir_left_final_2	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#fenrir_left_final_2");
+	initnpctimer;
+	end;
+OnTimer300000:
+	'skip_left_part = 1;
+	disablenpc instance_npcname("#glast_event_7");
+	disablenpc 'fenrir_3$;
+	mapannounce 'map_glast$, "Fenrith Fenrir: Alright! We have defeated a Gigantes!", bc_map,0xEBFF;
+	end;
+OnTimer302000:
+	mapannounce 'map_glast$, "Sarah Irene: As expected, Fenrith Fenrir, you do not yield easily!", bc_map,0xEBFF;
+	end;
+OnTimer305000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: Get away from the Sentinel Breeze immediately!", bc_map,0xEBFF;
+	end;
+OnTimer307000:
+	mapannounce 'map_glast$, "Sarah Irene: Hehe.. I can't do that!", bc_map,0xEBFF;
+	end;
+OnTimer309000:
+	mapannounce 'map_glast$, "Sarah Irene: If you want it back come to Glast Heim Castle! I shall be waiting!", bc_map,0xEBFF;
+	end;
+OnTimer311000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: I need to go to Glast Heim Castle to retrieve the sword of Baldur", bc_map,0xEBFF;
+	end;
+OnTimer313000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: It may be difficult alone. If you are listening I will gratefully accept your help.", bc_map,0xEBFF;
+	end;
+OnTimer315000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: Since there isn't enough time, we can't wait long.", bc_map,0xEBFF;
+	end;
+OnTimer317000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: I will wait in the central castle of Glast Heim for about 5 minutes.", bc_map,0xEBFF;
+	end;
+OnTimer319000:
+	stopnpctimer;
+	mapannounce 'map_glast$, "Fenrith Fenrir: Since it is dangerous you do not have to feel obligated to help me. I will try by myself if I have to.", bc_map,0xEBFF;
+	enablenpc instance_npcname("#glast_move_03");
+	enablenpc 'fenrir_6$;
+	enablenpc instance_npcname("#glast_event_15");
+	disablenpc instance_npcname("#fenrir_left_final_2");
+	donpcevent instance_npcname("#fenrir_boss_final_2") + "::OnStart";// timer (5 mins)
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("#fenrir_left_final_2");
+	end;
+}
+
+// Stairs final room
+1@glast,200,268,0	script	#glast_event_15	HIDDEN_WARP_NPC,7,7,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_move_03");
+	disablenpc instance_npcname("#glast_event_15");
+	donpcevent instance_npcname("#fenrir_boss_final_2") + "::OnStop";
+	mes "";
+	sleep2 1000;
+	npctalk "Fenrith Fenrir: I was waiting. Thank you for not being late.", 'fenrir_6$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Let us climb the castle to retrieve Sentinel Breeze! Sarah will be waiting!", 'fenrir_6$;
+	sleep2 3000;
+	disablenpc 'fenrir_6$;
+	enablenpc instance_npcname("#glast_move_03a");
+	enablenpc instance_npcname("#glast_event_18");
+	enablenpc instance_npcname("Sarah Irene#glast_17");
+	enablenpc 'fenrir_7$;
+	end;
+}
+
+1@glast,200,268,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_06	4_F_FENRIR
+
+// Final room
+1@glast,199,336,0	script	#glast_event_18	HIDDEN_WARP_NPC,10,10,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_18");
+	mes "";
+	cutin "sarah_hero3.bmp",0;
+	sleep2 1000;
+	npctalk "Sarah Irene: It seemed like forever waiting for you~ Fenrith Fenrir.", 'sarah_17$;
+	sleep2 3000;
+	cutin "fenrir_b.bmp",2;
+	npctalk "Fenrith Fenrir: No need for useless words, hand over the Sentinel Breeze now!", 'fenrir_7$;
+	sleep2 3000;
+	cutin "sarah_hero3.bmp",0;
+	npctalk "Sarah Irene: Try if you can.", 'sarah_17$;
+	sleep2 3000;
+	cutin "fenrir_b.bmp",2;
+	npctalk "Fenrith Fenrir: Sarah may be too difficult for you to face alone. I must face her!", 'fenrir_7$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Pure white shackles, eternal prison, make a deal with me now!", 'fenrir_7$;
+	donpcevent instance_npcname("#glast_event_18") + "::OnBar";
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: White Imprison!!", 'fenrir_7$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	sleep2 3000;
+	npctalk "Sarah Irene: Hurk.... he..", 'sarah_17$;
+	npctalk "Fenrith Fenrir: I will weaken Sarah with white imprison and face her while she's shackled,", 'fenrir_7$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: you take care of the monsters she summons. I'm counting on you.", 'fenrir_7$;
+	sleep2 3000;
+	unittalk getcharid(3), "" + strcharinfo(0) + " : Will do. Powerful enemies make my blood boil.";
+	sleep2 6000;
+	npctalk "Fenrith Fenrir: This is a strategy to attack at once and finish Sarah off while she is in critical condition. Remember, our opponent is strong.", 'fenrir_7$;
+	sleep2 3000;
+	cutin "sarah_hero3_2.bmp",0;
+	npctalk "Sarah Irene: So your plan was to tie me up with this sort of trick?", 'sarah_17$;
+	sleep2 3000;
+	npctalk "Sarah Irene: Furthermore you borrow the assistance of such rookie adventurers...", 'sarah_17$;
+	sleep2 3000;
+	npctalk "Sarah Irene: You need to disappear from here along with that worn out blade!!", 'sarah_17$;
+	sleep2 3000;
+	cutin "",255;
+	hideonnpc 'sarah_17$;
+	donpcevent instance_npcname("#glast_event_19") + "::OnEvent";
+	monster 'map_glast$,200,336, "Sarah Irene#1",3190,1, instance_npcname("#fenrir_boss_final_1") + "::OnBossDead";	// MM_SARAH
+	'boss_id = $@mobid[0];
+	end;
+OnBar:
+	progressbar_npc "000000",3, 'fenrir_7$;
+	end;
+}
+
+1@glast,200,336,4	duplicate(#effect_glast_event01_1)	Sarah Irene#glast_17	4_F_SARAH
+
+1@glast,197,330,8	script	Fenrith Fenrir#glast_07	4_F_FENRIR,{
+	end;
+OnStart:
+	initnpctimer;
+	end;
+OnTimer1000:
+	specialeffect EF_TETRACASTING;
+	initnpctimer;
+	end;
+OnStop:
+	stopnpctimer;
+	end;
+}
+
+1@glast,212,350,0	script	#glast_event_19	HIDDEN_WARP_NPC,{
+	end;
+OnEvent:
+	enablenpc instance_npcname("#glast_event_19");
+	enablenpc instance_npcname("#fenrir_boss_final_1");
+	initnpctimer;
+	specialeffect EF_PRIMECHARGE4, AREA, 'fenrir_7$;
+	npctalk "Fenrith Fenrir: Lethal poison, Dark clouds, appear before me and show a most painful death!", 'fenrir_7$;
+	monster 'map_glast$,190,341, "Large Gigantes#a1", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,214,331, "Large Gigantes#b2", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer1000:
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer10000:
+	callsub S_Hit,1;
+	npctalk "Fenrith Fenrir: Go! Cloud Kill!!!!!", 'fenrir_7$;
+	specialeffect EF_POISONSMOKE, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_POISONSMOKE, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer10500:
+	unittalk 'boss_id, "Sarah Irene: That was sudden Fenrir. Is that all you've got?";
+	end;
+OnTimer11000:
+	specialeffect EF_POISONSMOKE2, AREA, 'sarah_17$;
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_1");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_2");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_3");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_4");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_5");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_6");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_7");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_8");
+	end;
+OnTimer13000:
+	npctalk "Fenrith Fenrir: Lethal poison, Dark clouds, appear before me and show a most painful death!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE4, AREA, 'fenrir_7$;
+	specialeffect EF_POISONSMOKE2, AREA, 'sarah_17$;
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_1");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_2");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_3");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_4");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_5");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_6");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_7");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_8");
+	end;
+OnTimer20000:
+	callsub S_Hit,2;
+	npctalk "Fenrith Fenrir: Go! Cloud Kill!!!!!", 'fenrir_7$;
+	specialeffect EF_POISONSMOKE, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_POISONSMOKE, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	progressbar_npc "000000",30, 'fenrir_7$;
+	end;
+OnTimer20500:
+	unittalk 'boss_id, "Sarah Irene: Try to entertain me a little more!!";
+	end;
+OnTimer21000:
+	specialeffect EF_POISONSMOKE2, AREA, 'sarah_17$;
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_1");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_2");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_3");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_4");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_5");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_6");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_7");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_8");
+	end;
+OnTimer23000:
+	npctalk "Fenrith Fenrir: I speak to you who controls fire, I Fenrith, desire a fire that does not go out...", 'fenrir_7$;
+	specialeffect EF_BEGINSPELL_YB, AREA, 'fenrir_7$;
+	specialeffect EF_POISONSMOKE2, AREA, 'sarah_17$;
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_1");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_2");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_3");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_4");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_5");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_6");
+	specialeffect EF_POISONSMOKE2, AREA, instance_npcname("#effect_glast_event03_7");
+	specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("#effect_glast_event03_8");
+	end;
+OnTimer36000:
+	npctalk "Fenrith Fenrir: Endlessly burning conflagration, a fire that can scorch even the soul!! Appear before me now!!", 'fenrir_7$;
+	specialeffect EF_BEGINSPELL_YB, AREA, 'fenrir_7$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer50000:
+	callsub S_Hit,3;
+	npctalk "Fenrith Fenrir: Emerge!! Fire Insignia!!!!", 'fenrir_7$;
+	specialeffect EF_DEMONICFIRE, AREA, 'sarah_17$;
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer50500:
+	unittalk 'boss_id, "Sarah Irene: Oh... not bad? But not good enough!!";
+	end;
+OnTimer51000:
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer53000:
+	npctalk "Fenrith Fenrir: The root of earthshaking power!! Fear the power of the earth!!!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE4, AREA, 'fenrir_7$;
+	end;
+OnTimer60000:
+	callsub S_Hit,4;
+	npctalk "Fenrith Fenrir: Go forth!! Heaven's Drive!!!", 'fenrir_7$;
+	specialeffect EF_HEAVENSDRIVE, AREA, 'sarah_17$;
+	monster 'map_glast$,190,341, "Large Gigantes#a1", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,214,331, "Large Gigantes#b2", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer60500:
+	unittalk 'boss_id, "Sarah Irene: Why don't you stop your childish magic, Fenrir?";
+	end;
+OnTimer63000:
+	specialeffect EF_PRIMECHARGE4, AREA, 'fenrir_7$;
+	npctalk "Fenrith Fenrir: The root of earthshaking power!! Fear the power of the earth!!!", 'fenrir_7$;
+	end;
+OnTimer70000:
+	callsub S_Hit,5;
+	npctalk "Fenrith Fenrir: Go forth!! Heaven's Drive!!!", 'fenrir_7$;
+	specialeffect EF_HEAVENSDRIVE, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	progressbar_npc "000000",30, 'fenrir_7$;
+	end;
+OnTimer70500:
+	unittalk 'boss_id, "Sarah Irene: Do you think that is enough to beat me?";
+	end;
+OnTimer73000:
+	npctalk "Fenrith Fenrir: The mercilessly cold breath of the Northern winds,", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE2, AREA, 'fenrir_7$;
+	end;
+OnTimer85000:
+	npctalk "Fenrith Fenrir: Come like the silent dawn mist and freeze everything!!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE2, AREA, 'fenrir_7$;
+	end;
+OnTimer100000:
+	callsub S_Hit,6;
+	npctalk "Fenrith Fenrir: Appear!!! Frost Misty!!!!!", 'fenrir_7$;
+	specialeffect EF_FROSTMYSTY, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	specialeffect EF_FROSTMYSTY, AREA, 'sarah_17$;
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer100500:
+	unittalk 'boss_id, "Sarah Irene: Not bad but.. not even close!";
+	end;
+OnTimer103000:
+	npctalk "Fenrith Fenrir: The power of doubt, a powerful force, the power of deeply hidden secrets in the mind!!!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE, AREA, 'fenrir_7$;
+	end;
+OnTimer110000:
+	callsub S_Hit,7;
+	npctalk "Fenrith Fenrir: Now!!! Psychic Wave!!!!", 'fenrir_7$;
+	specialeffect EF_SPR_PLANT10, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer110500:
+	unittalk 'boss_id, "Sarah Irene: Ugh... that is no use Fenrir!";
+	end;
+OnTimer113000:
+	npctalk "Fenrith Fenrir: The power of doubt, a powerful force, the power of deeply hidden secrets in the mind!!!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE, AREA, 'fenrir_7$;
+	end;
+OnTimer120000:
+	callsub S_Hit,8;
+	npctalk "Fenrith Fenrir: Now!!! Psychic Wave!!!!", 'fenrir_7$;
+	specialeffect EF_SPR_PLANT10, AREA, 'sarah_17$;
+	monster 'map_glast$,190,341, "Large Gigantes#a1", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,214,331, "Large Gigantes#b2", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	progressbar_npc "000000",30, 'fenrir_7$;
+	end;
+OnTimer120500:
+	unittalk 'boss_id, "Sarah Irene: Hurk.. such an annoying magic bombardment!!";
+	end;
+OnTimer123000:
+	npctalk "Fenrith Fenrir: I speak to you who controls fire, I Fenrith, desire a fire that does not go out...", 'fenrir_7$;
+	specialeffect EF_BEGINSPELL_YB, AREA, 'fenrir_7$;
+	end;
+OnTimer135000:
+	npctalk "Fenrith Fenrir: Endlessly burning conflagration, a fire that can scorch even the soul!! Appear before me now!!", 'fenrir_7$;
+	specialeffect EF_BEGINSPELL_YB, AREA, 'fenrir_7$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer150000:
+	callsub S_Hit,9;
+	npctalk "Fenrith Fenrir: Emerge!! Fire Insignia!!!!", 'fenrir_7$;
+	specialeffect EF_DEMONICFIRE, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer150500:
+	unittalk 'boss_id, "Sarah Irene: I am Sarah Irene! I will not fall so easily!!!";
+	end;
+OnTimer153000:
+	npctalk "Fenrith Fenrir: True wrath of the sky, thunderbolt that may split the earth... Fall before me now!!", 'fenrir_7$;
+	specialeffect EF_DQ9_CHARGE3, AREA, 'fenrir_7$;
+	end;
+OnTimer160000:
+	callsub S_Hit,10;
+	npctalk "Fenrith Fenrir: Come now!! Thunder Storm!!!!!", 'fenrir_7$;
+	specialeffect EF_THUNDERSTORM2, AREA, 'sarah_17$;
+	unittalk 'boss_id, "Sarah Irene: Ugh...you are.. stronger than I predicted Fenrir...";
+	progressbar_npc "000000",10, 'fenrir_7$;
+	end;
+OnTimer160500:
+	unittalk 'boss_id, "Sarah Irene: Ugh...you are.. stronger than I predicted Fenrir...";
+	end;
+OnTimer163000:
+	npctalk "Fenrith Fenrir: True wrath of the sky, thunderbolt that may split the earth... Fall before me now!!", 'fenrir_7$;
+	specialeffect EF_DQ9_CHARGE3, AREA, 'fenrir_7$;
+	end;
+OnTimer170000:
+	callsub S_Hit,11;
+	npctalk "Fenrith Fenrir: Come now!! Thunder Storm!!!!!", 'fenrir_7$;
+	specialeffect EF_THUNDERSTORM2, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	progressbar_npc "000000",30, 'fenrir_7$;
+	end;
+OnTimer170500:
+	unittalk 'boss_id, "Sarah Irene: Argh!!!!!! Ahhh!!!!!";
+	end;
+OnTimer173000:
+	npctalk "Fenrith Fenrir: The mercilessly cold breath of the Northern winds,", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE2, AREA, 'fenrir_7$;
+	end;
+OnTimer180000:
+	monster 'map_glast$,190,341, "Large Gigantes#a1", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,185,331, "Large Gigantes#a2", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,209,341, "Large Gigantes#b1", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	monster 'map_glast$,214,331, "Large Gigantes#b2", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	end;
+OnTimer185000:
+	npctalk "Fenrith Fenrir: Come like the silent dawn mist and freeze everything!!", 'fenrir_7$;
+	specialeffect EF_PRIMECHARGE2, AREA, 'fenrir_7$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer200000:
+	callsub S_Hit,12;
+	npctalk "Fenrith Fenrir: Appear!!! Frost Misty!!!!!", 'fenrir_7$;
+	specialeffect EF_FROSTMYSTY, AREA, 'sarah_17$;
+	donpcevent 'fenrir_7$ + "::OnStart";
+	progressbar_npc "000000",50, 'fenrir_7$;
+	end;
+OnTimer200500:
+	unittalk 'boss_id, "Sarah Irene: Argh!!! I will kill you all!!!!!!";
+	specialeffect EF_FROSTMYSTY, AREA, 'sarah_17$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer203000:
+	npctalk "Fenrith Fenrir: Heaven's sword piercing the sky", 'fenrir_7$;
+	specialeffect EF_BLACKBODY, AREA, 'fenrir_7$;
+	specialeffect EF_RECOGNIZED, AREA, 'fenrir_7$;
+	end;
+OnTimer216000:
+	npctalk "Fenrith Fenrir: I wish to borrow your strength for a moment!!", 'fenrir_7$;
+	end;
+OnTimer230000:
+	npctalk "Fenrith Fenrir: Let fall here your extreme strength that can tear even the vacuum!!", 'fenrir_7$;
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer239000:
+	monster 'map_glast$,190,341, "Large Gigantes#a1", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,185,331, "Large Gigantes#a2", 3194,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN1
+	monster 'map_glast$,209,341, "Large Gigantes#b1", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	monster 'map_glast$,214,331, "Large Gigantes#b2", 3195,1, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";// MM_L_GIGAN2
+	end;
+OnTimer240000:
+	npctalk "Fenrith Fenrir: Sword that can control life and death, and pierce space time!!!", 'fenrir_7$;
+	end;
+OnTimer250000:
+	npctalk "Fenrith Fenrir: Come out Baretis Spear!!!!!!", 'fenrir_7$;
+	specialeffect EF_PRESSURE3, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_PRESSURE3, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	end;
+OnTimer253000:
+	setunitdata 'boss_id, UMOB_HP, 100;
+	specialeffect EF_PRESSURE3, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_PRESSURE3, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	npctalk "Fenrith Fenrir: Now! I put Sarah in critical condition! You have to finish her off! Attack her quickly! Sarah is strong!", 'fenrir_7$;
+	mapannounce 'map_glast$, "Fenrith Fenrir: Now! I put Sarah in critical condition! You have to finish her off!! Attack her quickly! Sarah is strong!", bc_map,0xEBFF;
+	npctalk "Sarah Irene: Hurk...this.. cannot happen!!! I cannot lose!!!!!", 'sarah_17$;
+	end;
+OnTimer263000:
+	npctalk "Fenrith Fenrir: Since you may not be able to finish her off alone, I will prepare one final spell!!", 'fenrir_7$;
+	progressbar_npc "000000",50, 'fenrir_7$;
+	end;
+OnTimer273000:
+	specialeffect EF_BOTTOM_BASILICA2, AREA, 'sarah_17$;
+	npctalk "Fenrith Fenrir: Heaven's sword piercing the sky", 'fenrir_7$;
+	specialeffect EF_RECOGNIZED, AREA, 'fenrir_7$;
+	specialeffect EF_BLACKBODY, AREA, 'fenrir_7$;
+	end;
+OnTimer283000:
+	npctalk "Fenrith Fenrir: I wish to borrow your strength for a moment!!", 'fenrir_7$;
+	end;
+OnTimer293000:
+	npctalk "Fenrith Fenrir: Let fall here your extreme strength that can tear even the vacuum!!";
+	end;
+OnTimer303000:
+	npctalk "Fenrith Fenrir: Sword that can control life and death, and pierce space time!!!";
+	end;
+OnTimer313000:
+	npctalk "Fenrith Fenrir: Come out Baretis Spear!!!!!!";
+	specialeffect EF_PRESSURE3, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_PRESSURE3, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	donpcevent 'fenrir_7$ + "::OnStop";
+	end;
+OnTimer316000:
+	specialeffect EF_PRESSURE3, AREA, 'sarah_17$;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_PRESSURE3, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	killmonster 'map_glast$, instance_npcname("#fenrir_boss_final_1") + "::OnBossDead";
+	donpcevent instance_npcname("#fenrir_boss_final_1") + "::OnBossDead";
+	end;
+
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("#glast_event_19");
+	end;
+
+S_Hit:
+	getunitdata 'boss_id, .@data;
+	.@hp = .@data[UMOB_MAXHP] - ((.@data[UMOB_MAXHP] * getarg(0)) / 13);
+	setunitdata 'boss_id, UMOB_HP, .@hp;
+	return;
+}
+
+1@glast,1,1,0	script	#fenrir_boss_final_1	HIDDEN_WARP_NPC,{
+	end;
+OnBossDead:
+	donpcevent instance_npcname("#glast_event_19") + "::OnStop";
+	initnpctimer;
+	end;
+OnTimer1000:
+	killmonster 'map_glast$, instance_npcname("#fenrir_boss_final_1") + "::OnMobDead";
+	end;
+OnTimer6000:
+	disablenpc 'sarah_17$;
+	disablenpc 'fenrir_7$;
+	enablenpc 'fenrir_8$;
+	enablenpc 'sarah_20$;
+	end;
+OnTimer9000:
+	npctalk "Fenrith Fenrir: Sentinel Breeze! I have it in my hand!", 'fenrir_8$;
+	end;
+OnTimer12000:
+	npctalk "Sarah Irene: Hurk....", 'sarah_20$;
+	end;
+OnTimer15000:
+	npctalk "Fenrith Fenrir: I can find Baldur with this!", 'fenrir_8$;
+	end;
+OnTimer18000:
+	npctalk "Sarah Irene: Not yet!!", 'sarah_20$;
+	progressbar_npc "000000",2, 'sarah_20$;
+	end;
+OnTimer21000:
+	specialeffect EF_FIREPILLARON, AREA, 'fenrir_8$;
+	disablenpc 'fenrir_8$;
+	enablenpc 'fenrir_9$;
+	end;
+OnTimer24000:
+	npctalk "Sarah Irene: Hehe... You evade well like a rat.", 'sarah_20$;
+	end;
+OnTimer27000:
+	npctalk "Sarah Irene: However, I cannot let you leave with that.", 'sarah_20$;
+	end;
+OnTimer30000:
+	npctalk "Sarah Irene: I will blow this entire castle away! Yaah!", 'sarah_20$;
+	progressbar_npc "000000",15, 'sarah_20$;
+	end;
+OnTimer33000:
+	npctalk "Fenrith Fenrir: She is planning to collapse this place! I must perform a large scale teleportation!!!", 'fenrir_9$;
+	progressbar_npc "000000",6, 'fenrir_9$;
+	end;
+OnTimer36000:
+	npctalk "Fenrith Fenrir: Farewell Valkyrie!! I shall take the Sentinel Breeze! So long!", 'fenrir_9$;
+	end;
+OnTimer39000:
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		specialeffect EF_LORD, AREA, instance_npcname("#effect_glast_event03_" + .@i);
+	disablenpc 'fenrir_9$;
+	end;
+OnTimer40000:
+	stopnpctimer;
+	enablenpc instance_npcname("#glast_event_24");
+	enablenpc instance_npcname("Fenrith Fenrir#glast_10");
+	//for ( .@i = 11; .@i <= 16; .@i++ )
+	//	enablenpc instance_npcname("#glast_event_warp_" + .@i);// warp to 197,221
+	areawarp 'map_glast$,181,326,218,352, 'map_glast$,197,221;
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		disablenpc instance_npcname("#effect_glast_event03_" + .@i);
+	disablenpc 'sarah_20$;
+	disablenpc instance_npcname("#fenrir_boss_final_1");
+	end;
+
+OnMobDead:
+	end;
+}
+
+1@glast,199,348,8	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_08	4_F_FENRIR
+1@glast,201,346,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_09	4_F_FENRIR
+1@glast,197,339,8	duplicate(#effect_glast_event01_1)	Sarah Irene#glast_20	4_F_SARAH
+
+1@glast,201,336,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_1	CLEAR_NPC
+1@glast,201,337,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_2	CLEAR_NPC
+1@glast,200,337,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_3	CLEAR_NPC
+1@glast,199,337,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_4	CLEAR_NPC
+1@glast,199,336,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_5	CLEAR_NPC
+1@glast,199,335,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_6	CLEAR_NPC
+1@glast,200,335,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_7	CLEAR_NPC
+1@glast,201,335,4	duplicate(#effect_glast_event01_1)	#effect_glast_event03_8	CLEAR_NPC
+
+// Outside final room
+1@glast,200,224,0	script	#glast_event_24	HIDDEN_WARP_NPC,7,7,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("#glast_event_24");
+	mes "";
+	sleep2 1500;
+	cutin "fenrir_b.bmp",2;
+	npctalk "Fenrith Fenrir: Hehe.. You are certainly skilled but I think you have underestimated me, Valkyrie.", 'fenrir_10$;
+	sleep2 3000;
+	mapannounce 'map_glast$, "Sarah Irene: You rather entertain me Fenrith...", bc_map,0xEBFF;
+	sleep2 3000;
+	mapannounce 'map_glast$, "Sarah Irene: Did you think you can escape that easily?", bc_map,0xEBFF;
+	sleep2 3000;
+	mapannounce 'map_glast$, "Sarah Irene: I shall turn Glast Heim into hell!!", bc_map,0xEBFF;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: If we don't escape now we will suffer a gruesome fate by Sarah's monsters and magic!", 'fenrir_10$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: Let's meet at Glast Heim entrance where we first met! If we flee that far it should be safe!", 'fenrir_10$;
+	sleep2 3000;
+	npctalk "Fenrith Fenrir: There is no time! Hurry!", 'fenrir_10$;
+	sleep2 3000;
+	cutin "",255;
+	disablenpc 'fenrir_10$;
+	donpcevent instance_npcname("#sarah_wrath") + "::OnStart";
+	end;
+}
+
+1@glast,200,224,4	duplicate(#effect_glast_event01_1)	Fenrith Fenrir#glast_10	4_F_FENRIR
+
+// Skipped final room
+1@glast,1,1,0	script	#fenrir_boss_final_2	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#fenrir_boss_final_2");
+	initnpctimer;
+	end;
+OnTimer300000:
+	disablenpc instance_npcname("#glast_move_03");
+	disablenpc instance_npcname("#glast_event_15");
+	disablenpc 'fenrir_6$;
+	end;
+OnTimer305000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: Sentinel Breeze! I have it in my hand!", bc_map,0xEBFF;
+	end;
+OnTimer308000:
+	mapannounce 'map_glast$, "Sarah Irene: Hurk....", bc_map,0xEBFF;
+	end;
+OnTimer311000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: Hehe.. You are certainly skilled but I think you have underestimated me, Valkyrie.", bc_map,0xEBFF;
+	end;
+OnTimer314000:
+	mapannounce 'map_glast$, "Sarah Irene: You rather entertain me Fenrith...", bc_map,0xEBFF;
+	end;
+OnTimer317000:
+	mapannounce 'map_glast$, "Sarah Irene: Did you think you can escape that easily?", bc_map,0xEBFF;
+	end;
+OnTimer320000:
+	mapannounce 'map_glast$, "Sarah Irene: I shall turn Glast Heim into hell!!", bc_map,0xEBFF;
+	end;
+OnTimer323000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: If we don't escape now we will suffer a gruesome fate by Sarah's monsters and magic!", bc_map,0xEBFF;
+	end;
+OnTimer326000:
+	mapannounce 'map_glast$, "Fenrith Fenrir: Let's meet at Glast Heim entrance where we first met! If we flee that far it should be safe!", bc_map,0xEBFF;
+	end;
+OnTimer329000:
+	stopnpctimer;
+	mapannounce 'map_glast$, "Fenrith Fenrir: There is no time! Hurry!", bc_map,0xEBFF;
+	donpcevent instance_npcname("#sarah_wrath") + "::OnStart";
+	end;
+OnStop:
+	stopnpctimer;
+	disablenpc instance_npcname("#fenrir_boss_final_2");
+	end;
+}
+
+// Bombs
+1@glast,1,1,0	script	#sarah_wrath	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("#sarah_wrath");
+	enablenpc instance_npcname("#glast_move_04");
+	enablenpc 'fenrir_11$;
+	enablenpc 'sarah_ego$;
+	hideonnpc 'sarah_ego$;
+	'back_to_entrance = 1;
+	enablenpc instance_npcname("#glast_move_01");
+	hideonnpc instance_npcname("#glast_move_01");
+	enablenpc instance_npcname("#glast_move_05");
+	initnpctimer;
+	end;
+OnTimer10000:
+	mapannounce 'map_glast$, "Sarah Irene: Absurd little thing, you think you can escape that easily?", bc_map,0xEBFF;
+	callsub S_Spawn,0;
+	end;
+OnTimer50000:
+	mapannounce 'map_glast$, "Sarah Irene: My minions will make sure to kill you!!!", bc_map,0xEBFF;
+	callsub S_Spawn,1;
+	end;
+OnTimer80000:
+	mapannounce 'map_glast$, "Sarah Irene: I cannot let you escape!!", bc_map,0xEBFF;
+	callsub S_Spawn,2;
+	end;
+OnTimer110000:
+	mapannounce 'map_glast$, "Sarah Irene: Fenrith Fenrir.... Did you think I couldn't track you because you fled?", bc_map,0xEBFF;
+	callsub S_Spawn,3;
+	end;
+OnTimer150000:
+	mapannounce 'map_glast$, "Sarah Irene: Absurd little thing, you think you can escape that easily?", bc_map,0xEBFF;
+	callsub S_Spawn,4;
+	end;
+OnTimer300000:
+	stopnpctimer;
+	mapannounce 'map_glast$, "Sarah Irene: Bwahahahahahaha!! Glast Heim is being filled with my wrath!!", bc_map,0xEBFF;
+	for ( .@i = 1; .@i <= 14; .@i++ )
+		enablenpc instance_npcname("#glast_bomb_" + (.@i < 10 ? ("0"+.@i) : .@i));
+	end;
+OnStop:
+	stopnpctimer;
+	end;
+
+S_Spawn:
+	// inaccurate
+	switch( getarg(0) ) {
+	case 0:
+		monster 'map_glast$,204,52,"Large Gigantes#aa1",3194,1;
+		monster 'map_glast$,201,55,"Large Gigantes#aa1",3194,1;
+		monster 'map_glast$,196,53,"Large Gigantes#aa1",3194,1;
+		monster 'map_glast$,205,80,"Large Gigantes#aa2",3195,1;
+		monster 'map_glast$,210,77,"Large Gigantes#aa2",3195,1;
+		monster 'map_glast$,205,73,"Large Gigantes#aa2",3195,1;
+		monster 'map_glast$,236,96,"Large Gigantes#aa5",3194,1;
+		monster 'map_glast$,234,96,"Large Gigantes#aa5",3194,1;
+		monster 'map_glast$,234,96,"Large Gigantes#aa5",3194,1;
+		monster 'map_glast$,185,79,"Large Gigantes#bb3",3194,1;
+		monster 'map_glast$,189,78,"Large Gigantes#bb3",3194,1;
+		monster 'map_glast$,194,85,"Large Gigantes#bb3",3194,1;
+		monster 'map_glast$,168,113,"Large Gigantes#bb4",3195,1;
+		monster 'map_glast$,174,122,"Large Gigantes#bb4",3195,1;
+		break;
+	case 1:
+		monster 'map_glast$,131,182,"Large Gigantes#bb11",3194,1;
+		monster 'map_glast$,133,174,"Large Gigantes#bb11",3194,1;
+		monster 'map_glast$,134,187,"Large Gigantes#bb11",3194,1;
+		monster 'map_glast$,202,196,"Large Gigantes#aa9",3194,1;
+		monster 'map_glast$,196,194,"Large Gigantes#aa9",3194,1;
+		monster 'map_glast$,199,190,"Large Gigantes#aa9",3194,1;
+		monster 'map_glast$,233,198,"Large Gigantes#bb8",3195,1;
+		monster 'map_glast$,231,193,"Large Gigantes#bb8",3195,1;
+		monster 'map_glast$,232,196,"Large Gigantes#bb8",3195,1;
+		monster 'map_glast$,258,196,"Large Gigantes#bb7",3194,1;
+		monster 'map_glast$,265,187,"Large Gigantes#bb7",3194,1;
+		monster 'map_glast$,263,195,"Large Gigantes#bb7",3194,1;
+		monster 'map_glast$,271,106,"Large Gigantes#aa6",3195,1;
+		monster 'map_glast$,266,107,"Large Gigantes#aa6",3195,1;
+		monster 'map_glast$,272,109,"Large Gigantes#aa6",3195,1;
+		break;
+	case 2:
+		monster 'map_glast$,127,204,"Large Gigantes#bb12",3195,1;
+		monster 'map_glast$,130,205,"Large Gigantes#bb12",3195,1;
+		monster 'map_glast$,130,213,"Large Gigantes#bb12",3195,1;
+		monster 'map_glast$,139,243,"Large Gigantes#bb19",3194,1;
+		monster 'map_glast$,143,241,"Large Gigantes#bb19",3194,1;
+		monster 'map_glast$,146,234,"Large Gigantes#bb19",3194,1;
+		monster 'map_glast$,199,218,"Large Gigantes#aa14",3195,1;
+		monster 'map_glast$,201,219,"Large Gigantes#aa14",3195,1;
+		monster 'map_glast$,193,212,"Large Gigantes#aa14",3195,1;
+		monster 'map_glast$,261,251,"Large Gigantes#aa18",3195,1;
+		monster 'map_glast$,257,254,"Large Gigantes#aa18",3195,1;
+		monster 'map_glast$,257,250,"Large Gigantes#aa18",3195,1;
+		monster 'map_glast$,146,45,"Large Gigantes#bb35",3194,1;
+		monster 'map_glast$,145,49,"Large Gigantes#bb35",3194,1;
+		monster 'map_glast$,144,44,"Large Gigantes#bb35",3194,1;
+		break;
+	case 3:
+		monster 'map_glast$,67,259,"Large Gigantes#aa29",3194,1;
+		monster 'map_glast$,68,261,"Large Gigantes#aa29",3194,1;
+		monster 'map_glast$,61,260,"Large Gigantes#aa29",3194,1;
+		monster 'map_glast$,64,208,"Large Gigantes#aa30",3195,1;
+		monster 'map_glast$,67,210,"Large Gigantes#aa30",3195,1;
+		monster 'map_glast$,63,204,"Large Gigantes#aa30",3195,1;
+		monster 'map_glast$,87,57,"Large Gigantes#aa33",3194,1;
+		monster 'map_glast$,81,64,"Large Gigantes#aa33",3194,1;
+		monster 'map_glast$,83,58,"Large Gigantes#aa33",3194,1;
+		monster 'map_glast$,107,47,"Large Gigantes#aa34",3195,1;
+		monster 'map_glast$,105,45,"Large Gigantes#aa34",3195,1;
+		monster 'map_glast$,102,48,"Large Gigantes#aa34",3195,1;
+		monster 'map_glast$,80,152,"Large Gigantes#bb31",3194,1;
+		monster 'map_glast$,82,149,"Large Gigantes#bb31",3194,1;
+		monster 'map_glast$,75,156,"Large Gigantes#bb31",3194,1;
+		monster 'map_glast$,85,106,"Large Gigantes#bb32",3195,1;
+		monster 'map_glast$,82,111,"Large Gigantes#bb32",3195,1;
+		monster 'map_glast$,78,112,"Large Gigantes#bb32",3195,1;
+		monster 'map_glast$,55,149,"Large Gigantes#bb36",3195,1;
+		monster 'map_glast$,56,143,"Large Gigantes#bb36",3195,1;
+		monster 'map_glast$,49,142,"Large Gigantes#bb36",3195,1;
+		break;
+	case 4:
+		monster 'map_glast$,262,215,"Large Gigantes#aa17",3194,1;
+		monster 'map_glast$,266,212,"Large Gigantes#aa17",3194,1;
+		monster 'map_glast$,260,219,"Large Gigantes#aa17",3194,1;
+		monster 'map_glast$,253,47,"Large Gigantes#aa26",3195,1;
+		monster 'map_glast$,263,42,"Large Gigantes#aa26",3195,1;
+		monster 'map_glast$,255,39,"Large Gigantes#aa26",3195,1;
+		monster 'map_glast$,202,219,"Large Gigantes#bb15",3194,1;
+		monster 'map_glast$,201,222,"Large Gigantes#bb15",3194,1;
+		monster 'map_glast$,201,220,"Large Gigantes#bb15",3194,1;
+		monster 'map_glast$,231,210,"Large Gigantes#bb16",3195,1;
+		monster 'map_glast$,345,117,"Large Gigantes#bb27",3194,1;
+		monster 'map_glast$,341,115,"Large Gigantes#bb27",3194,1;
+		monster 'map_glast$,351,121,"Large Gigantes#bb27",3194,1;
+		monster 'map_glast$,346,252,"Large Gigantes#bb28",3195,1;
+		monster 'map_glast$,351,256,"Large Gigantes#bb28",3195,1;
+		monster 'map_glast$,345,254,"Large Gigantes#bb28",3195,1;
+		break;
+	}
+	end;
+}
+
+1@glast,290,43,0	script	#glast_bomb_01	HIDDEN_WARP_NPC,10,10,{
+	end;
+OnTouch:
+	unitkill 0;
+	mapannounce 'map_glast$, "Sarah Irene: Bwahahahahahaha!! Glast Heim is being filled with my wrath!!", bc_map,0xEBFF;
+	specialeffect2 EF_LORD;
+	sleep2 1000;
+	specialeffect2 EF_LORD;
+	end;
+}
+
+1@glast,234,47,0	duplicate(#glast_bomb_01)	#glast_bomb_02	HIDDEN_WARP_NPC,10,10
+1@glast,265,175,0	duplicate(#glast_bomb_01)	#glast_bomb_03	HIDDEN_WARP_NPC,10,10
+1@glast,135,176,0	duplicate(#glast_bomb_01)	#glast_bomb_04	HIDDEN_WARP_NPC,10,10
+1@glast,146,238,0	duplicate(#glast_bomb_01)	#glast_bomb_05	HIDDEN_WARP_NPC,10,10
+1@glast,165,212,0	duplicate(#glast_bomb_01)	#glast_bomb_06	HIDDEN_WARP_NPC,10,10
+1@glast,232,212,0	duplicate(#glast_bomb_01)	#glast_bomb_07	HIDDEN_WARP_NPC,10,10
+1@glast,253,241,0	duplicate(#glast_bomb_01)	#glast_bomb_08	HIDDEN_WARP_NPC,10,10
+1@glast,268,290,0	duplicate(#glast_bomb_01)	#glast_bomb_09	HIDDEN_WARP_NPC,10,10
+1@glast,132,289,0	duplicate(#glast_bomb_01)	#glast_bomb_10	HIDDEN_WARP_NPC,10,10
+1@glast,199,115,0	duplicate(#glast_bomb_01)	#glast_bomb_11	HIDDEN_WARP_NPC,10,10
+1@glast,139,46,0	duplicate(#glast_bomb_01)	#glast_bomb_12	HIDDEN_WARP_NPC,10,10
+1@glast,82,86,0	duplicate(#glast_bomb_01)	#glast_bomb_13	HIDDEN_WARP_NPC,10,10
+1@glast,68,226,0	duplicate(#glast_bomb_01)	#glast_bomb_14	HIDDEN_WARP_NPC,10,10
+
+// Back to entrance
+// event in #glast_move_01
+1@glast,359,294,4	script	Fenrith Fenrir#glast_11	4_F_FENRIR,{
+	if (isbegin_quest(9337) == 0) {
+		cutin "fenrir_a.bmp",2;
+		mes "[Fenrith Fenrir]";
+		mes "You arrived safely!";
+		mes "The dangerous situation";
+		mes "had me worried.";
+		mes "It was difficult and dangerous work";
+		mes "so I am grateful for your help.";
+		next;
+		mes "[Fenrir]";
+		mes "I feel we will meet again";
+		mes "but perhaps it is just my imagination?";
+		mes "Mm.. that would be nice.";
+		next;
+		mes "[Fenrir]";
+		mes "We worked well together";
+		mes "so I hope we will meet again.";
+		mes "And watch for Sarah,";
+		mes "harm can come your way as well.";
+		setquest 9337;// Wrapping up the Adventure
+		getitem 607,1;// Yggdrasilberry
+		getitem 608,1;// Seed_Of_Yggdrasil
+		close2;
+		cutin "",255;
+		end;
+	}
+	mes "[Fenrir]";
+	mes "We worked well together";
+	mes "so I hope we will meet again.";
+	close;
+}
+
+1@glast,353,290,8	duplicate(#effect_glast_event01_1)	Sarah Irene's alter ego	4_F_SARAH
+
+// Shards Events
+1@glast,290,147,4	script	Ancient Gigantes#glast_1	4_GIGANTES_BIG,6,6,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_1");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_1") + "::OnMobDead";
+	monster 'map_glast$,290,147, "Ancient Gigantes#X1",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,290,146, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,288,147, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_01");
+	enablenpc instance_npcname("Stone Gargoyle#glast_02");
+	enablenpc instance_npcname("Stone Gargoyle#glast_03");
+	enablenpc instance_npcname("Stone Gargoyle#glast_04");
+	enablenpc instance_npcname("Stone Gargoyle#glast_05");
+	enablenpc instance_npcname("Stone Gargoyle#glast_06");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,300,248,4	script	Ancient Gigantes#glast_2	4_GIGANTES_BIG,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_2");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_2") + "::OnMobDead";
+	monster 'map_glast$,300,248, "Ancient Gigantes#X2",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,299,250, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,302,246, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_07");
+	enablenpc instance_npcname("Stone Gargoyle#glast_08");
+	enablenpc instance_npcname("Stone Gargoyle#glast_09");
+	enablenpc instance_npcname("Stone Gargoyle#glast_10");
+	enablenpc instance_npcname("Stone Gargoyle#glast_11");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,292,344,4	script	Ancient Gigantes#glast_3	4_GIGANTES_BIG,6,6,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_3");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_3") + "::OnMobDead";
+	monster 'map_glast$,292,344, "Ancient Gigantes#X3",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,290,346, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,291,344, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_12");
+	enablenpc instance_npcname("Stone Gargoyle#glast_13");
+	enablenpc instance_npcname("Stone Gargoyle#glast_14");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,107,147,6	script	Ancient Gigantes#glast_4	4_GIGANTES_BIG,6,6,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_4");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_4") + "::OnMobDead";
+	monster 'map_glast$,107,147, "Ancient Gigantes#X4",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,107,145, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,106,148, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_15");
+	enablenpc instance_npcname("Stone Gargoyle#glast_16");
+	enablenpc instance_npcname("Stone Gargoyle#glast_17");
+	enablenpc instance_npcname("Stone Gargoyle#glast_18");
+	enablenpc instance_npcname("Stone Gargoyle#glast_19");
+	enablenpc instance_npcname("Stone Gargoyle#glast_20");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,98,248,6	script	Ancient Gigantes#glast_5	4_GIGANTES_BIG,4,4,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_5");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_5") + "::OnMobDead";
+	monster 'map_glast$,98,248, "Ancient Gigantes#X5",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,96,250, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,98,247, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_21");
+	enablenpc instance_npcname("Stone Gargoyle#glast_22");
+	enablenpc instance_npcname("Stone Gargoyle#glast_23");
+	enablenpc instance_npcname("Stone Gargoyle#glast_24");
+	enablenpc instance_npcname("Stone Gargoyle#glast_25");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,107,344,6	script	Ancient Gigantes#glast_6	4_GIGANTES_BIG,6,6,{
+	end;
+OnTouch:
+	disablenpc instance_npcname("Ancient Gigantes#glast_6");
+	.@label$ = instance_npcname("Ancient Gigantes#glast_6") + "::OnMobDead";
+	monster 'map_glast$,107,344, "Ancient Gigantes#X6",3196,1, .@label$;		// MM_L_GIGAN3
+	monster 'map_glast$,107,344, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	monster 'map_glast$,109,346, "Ancient Medium Gigantes",3193,1, .@label$;	// MM_M_GIGAN3
+	unittalk getcharid(3), "" + strcharinfo(0) + " : The Ancient Gigantes that Professor Bernhard spoke of!!";
+	enablenpc instance_npcname("Stone Gargoyle#glast_26");
+	enablenpc instance_npcname("Stone Gargoyle#glast_27");
+	enablenpc instance_npcname("Stone Gargoyle#glast_28");
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,277,130,8	script	Stone Gargoyle#glast_01	4_GARGOYLE_STATUE,2,2,{
+	end;
+OnTouch:
+	getmapxy .@map$,.@x,.@y, UNITTYPE_NPC;
+	monster .@map$,.@x,.@y, "Mutant Gargoyle",3197,1, instance_npcname( strnpcinfo(0) ) + "::OnMobDead";	// MM_M_GARGOYLE
+	disablenpc instance_npcname( strnpcinfo(0) );
+	end;
+OnMobDead:
+	end;
+}
+
+1@glast,279,130,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_02	4_GARGOYLE_STATUE,2,2
+1@glast,281,130,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_03	4_GARGOYLE_STATUE,2,2
+1@glast,277,161,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_04	4_GARGOYLE_STATUE,2,2
+1@glast,279,161,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_05	4_GARGOYLE_STATUE,2,2
+1@glast,281,161,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_06	4_GARGOYLE_STATUE,2,2
+1@glast,277,250,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_07	4_GARGOYLE_STATUE,2,2
+1@glast,277,245,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_08	4_GARGOYLE_STATUE,2,2
+1@glast,272,248,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_09	4_GARGOYLE_STATUE,2,2
+1@glast,273,260,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_10	4_GARGOYLE_STATUE,2,2
+1@glast,273,235,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_11	4_GARGOYLE_STATUE,2,2
+1@glast,277,328,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_12	4_GARGOYLE_STATUE,2,2
+1@glast,279,328,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_13	4_GARGOYLE_STATUE,2,2
+1@glast,281,328,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_14	4_GARGOYLE_STATUE,2,2
+1@glast,122,132,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_15	4_GARGOYLE_STATUE,2,2
+1@glast,120,132,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_16	4_GARGOYLE_STATUE,2,2
+1@glast,118,132,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_17	4_GARGOYLE_STATUE,2,2
+1@glast,118,163,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_18	4_GARGOYLE_STATUE,2,2
+1@glast,120,163,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_19	4_GARGOYLE_STATUE,2,2
+1@glast,118,163,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_20	4_GARGOYLE_STATUE,2,2
+1@glast,122,250,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_21	4_GARGOYLE_STATUE,2,2
+1@glast,122,245,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_22	4_GARGOYLE_STATUE,2,2
+1@glast,126,248,4	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_23	4_GARGOYLE_STATUE,2,2
+1@glast,126,260,6	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_24	4_GARGOYLE_STATUE,2,2
+1@glast,126,235,8	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_25	4_GARGOYLE_STATUE,2,2
+1@glast,117,328,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_26	4_GARGOYLE_STATUE,2,2
+1@glast,119,328,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_27	4_GARGOYLE_STATUE,2,2
+1@glast,121,328,2	duplicate(Stone Gargoyle#glast_01)	Stone Gargoyle#glast_28	4_GARGOYLE_STATUE,2,2
+
+
+1@glast,1,1,0	script	#fenrir_spawn_chimera	HIDDEN_WARP_NPC,{
+	end;
+OnSpawn:
+	// Right side
+	monster 'map_glast$,351,259,"Wicked Chimera#bb28",3200,1;
+	monster 'map_glast$,353,250,"Wicked Chimera#bb28",3200,1;
+	monster 'map_glast$,351,243,"Wicked Chimera#bb28",3200,1;
+	monster 'map_glast$,351,246,"Wicked Chimera#bb28",3200,1;
+	monster 'map_glast$,355,248,"Wicked Chimera#bb28",3200,1;
+	monster 'map_glast$,360,245,"Wicked Chimera#bb28",3200,1;
+
+	monster 'map_glast$,298,209,"Wicked Chimera#aa14",3200,1;
+	monster 'map_glast$,303,199,"Wicked Chimera#aa14",3200,1;
+	monster 'map_glast$,298,198,"Wicked Chimera#aa14",3200,1;
+	monster 'map_glast$,295,211,"Wicked Chimera#aa14",3200,1;
+
+	monster 'map_glast$,307,163,"Wicked Chimera#bb15",3200,1;
+	monster 'map_glast$,315,158,"Wicked Chimera#bb15",3200,1;
+	monster 'map_glast$,318,163,"Wicked Chimera#bb15",3200,1;
+	monster 'map_glast$,318,169,"Wicked Chimera#bb15",3200,1;
+
+	monster 'map_glast$,337,119,"Wicked Chimera#bb27",3200,1;
+	monster 'map_glast$,344,115,"Wicked Chimera#bb27",3200,1;
+	monster 'map_glast$,353,117,"Wicked Chimera#bb27",3200,1;
+	monster 'map_glast$,352,121,"Wicked Chimera#bb27",3200,1;
+	monster 'map_glast$,345,114,"Wicked Chimera#bb27",3200,1;
+	monster 'map_glast$,346,115,"Wicked Chimera#bb27",3200,1;
+
+	monster 'map_glast$,264,36,"Wicked Chimera#aa26",3200,1;
+	monster 'map_glast$,257,46,"Wicked Chimera#aa26",3200,1;
+	monster 'map_glast$,253,44,"Wicked Chimera#aa26",3200,1;
+	monster 'map_glast$,256,39,"Wicked Chimera#aa26",3200,1;
+
+	// Bottom, left
+	monster 'map_glast$,207,46,"Wicked Chimera#aa1",3200,1;
+	monster 'map_glast$,197,49,"Wicked Chimera#aa1",3200,1;
+	monster 'map_glast$,190,52,"Wicked Chimera#aa1",3200,1;
+	monster 'map_glast$,200,64,"Wicked Chimera#aa1",3200,1;
+	monster 'map_glast$,206,76,"Wicked Chimera#aa2",3200,1;
+	monster 'map_glast$,207,83,"Wicked Chimera#aa2",3200,1;
+	monster 'map_glast$,186,82,"Wicked Chimera#bb3",3200,1;
+	monster 'map_glast$,200,87,"Wicked Chimera#aa2",3200,1;
+	monster 'map_glast$,188,86,"Wicked Chimera#bb3",3200,1;
+	monster 'map_glast$,215,77,"Wicked Chimera#aa2",3200,1;
+	monster 'map_glast$,183,90,"Wicked Chimera#bb3",3200,1;
+	monster 'map_glast$,192,85,"Wicked Chimera#bb3",3200,1;
+	monster 'map_glast$,154,36,"Wicked Chimera#bb35",3200,1;
+	monster 'map_glast$,150,47,"Wicked Chimera#bb35",3200,1;
+	monster 'map_glast$,138,52,"Wicked Chimera#bb35",3200,1;
+	monster 'map_glast$,152,36,"Wicked Chimera#bb35",3200,1;
+	monster 'map_glast$,105,50,"Wicked Chimera#aa34",3200,1;
+	monster 'map_glast$,100,48,"Wicked Chimera#aa34",3200,1;
+	monster 'map_glast$,106,52,"Wicked Chimera#aa34",3200,1;
+	monster 'map_glast$,82,52,"Wicked Chimera#aa33",3200,1;
+	monster 'map_glast$,85,51,"Wicked Chimera#aa33",3200,1;
+	monster 'map_glast$,80,65,"Wicked Chimera#aa33",3200,1;
+	monster 'map_glast$,79,58,"Wicked Chimera#aa33",3200,1;
+	monster 'map_glast$,82,69,"Wicked Chimera#aa33",3200,1;
+	monster 'map_glast$,97,41,"Wicked Chimera#aa34",3200,1;
+	monster 'map_glast$,86,103,"Wicked Chimera#bb32",3200,1;
+	monster 'map_glast$,82,102,"Wicked Chimera#bb32",3200,1;
+	monster 'map_glast$,78,108,"Wicked Chimera#bb32",3200,1;
+	monster 'map_glast$,85,109,"Wicked Chimera#bb32",3200,1;
+	monster 'map_glast$,82,111,"Wicked Chimera#bb32",3200,1;
+	monster 'map_glast$,80,144,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,72,152,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,88,159,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,73,152,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,83,160,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,77,150,"Wicked Chimera#bb31",3200,1;
+	monster 'map_glast$,62,207,"Wicked Chimera#aa30",3200,1;
+	monster 'map_glast$,70,215,"Wicked Chimera#aa30",3200,1;
+	monster 'map_glast$,58,209,"Wicked Chimera#aa30",3200,1;
+	monster 'map_glast$,68,204,"Wicked Chimera#aa30",3200,1;
+	monster 'map_glast$,67,214,"Wicked Chimera#aa30",3200,1;
+	monster 'map_glast$,58,250,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,64,257,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,70,251,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,65,247,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,65,256,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,60,255,"Wicked Chimera#aa29",3200,1;
+	monster 'map_glast$,50,144,"Wicked Chimera#bb36",3200,1;
+	monster 'map_glast$,52,143,"Wicked Chimera#bb36",3200,1;
+	monster 'map_glast$,54,146,"Wicked Chimera#bb36",3200,1;
+	monster 'map_glast$,55,140,"Wicked Chimera#bb36",3200,1;
+
+	// Left inside
+	monster 'map_glast$,177,88,"Wicked Chimera#bb4",3200,1;
+	monster 'map_glast$,163,108,"Wicked Chimera#bb4",3200,1;
+	monster 'map_glast$,147,113,"Wicked Chimera#bb4",3200,1;
+	monster 'map_glast$,136,179,"Wicked Chimera#bb11",3200,1;
+	monster 'map_glast$,136,181,"Wicked Chimera#bb11",3200,1;
+	monster 'map_glast$,125,190,"Wicked Chimera#bb11",3200,1;
+	monster 'map_glast$,134,200,"Wicked Chimera#bb12",3200,1;
+	monster 'map_glast$,134,190,"Wicked Chimera#bb11",3200,1;
+	monster 'map_glast$,127,203,"Wicked Chimera#bb12",3200,1;
+	monster 'map_glast$,151,206,"Wicked Chimera#aa13",3200,1;
+	monster 'map_glast$,125,209,"Wicked Chimera#bb12",3200,1;
+	monster 'map_glast$,134,204,"Wicked Chimera#bb12",3200,1;
+	monster 'map_glast$,135,244,"Wicked Chimera#bb19",3200,1;
+	monster 'map_glast$,149,250,"Wicked Chimera#bb19",3200,1;
+	monster 'map_glast$,138,249,"Wicked Chimera#bb19",3200,1;
+	monster 'map_glast$,136,251,"Wicked Chimera#bb19",3200,1;
+	monster 'map_glast$,127,291,"Wicked Chimera#bb20",3200,1;
+	monster 'map_glast$,126,288,"Wicked Chimera#bb20",3200,1;
+	monster 'map_glast$,124,291,"Wicked Chimera#bb20",3200,1;
+	monster 'map_glast$,135,309,"Wicked Chimera#aa21",3200,1;
+	monster 'map_glast$,138,316,"Wicked Chimera#aa21",3200,1;
+	monster 'map_glast$,139,324,"Wicked Chimera#aa22",3200,1;
+	monster 'map_glast$,132,331,"Wicked Chimera#aa22",3200,1;
+	monster 'map_glast$,129,315,"Wicked Chimera#aa21",3200,1;
+	monster 'map_glast$,127,338,"Wicked Chimera#aa22",3200,1;
+	monster 'map_glast$,126,327,"Wicked Chimera#aa22",3200,1;
+	monster 'map_glast$,132,288,"Wicked Chimera#bb20",3200,1;
+	monster 'map_glast$,138,309,"Wicked Chimera#aa21",3200,1;
+
+	// Center and right side
+	monster 'map_glast$,158,214,"Wicked Chimera#aa13",3200,1;
+	monster 'map_glast$,162,208,"Wicked Chimera#aa13",3200,1;
+	monster 'map_glast$,166,215,"Wicked Chimera#aa13",3200,1;
+	monster 'map_glast$,168,191,"Wicked Chimera#aa10",3200,1;
+	monster 'map_glast$,164,186,"Wicked Chimera#aa10",3200,1;
+	monster 'map_glast$,165,191,"Wicked Chimera#aa10",3200,1;
+	monster 'map_glast$,177,189,"Wicked Chimera#aa10",3200,1;
+	monster 'map_glast$,199,200,"Wicked Chimera#aa9",3200,1;
+	monster 'map_glast$,205,195,"Wicked Chimera#aa9",3200,1;
+	monster 'map_glast$,191,200,"Wicked Chimera#aa9",3200,1;
+	monster 'map_glast$,196,192,"Wicked Chimera#aa9",3200,1;
+	monster 'map_glast$,224,196,"Wicked Chimera#bb8",3200,1;
+	monster 'map_glast$,233,196,"Wicked Chimera#bb8",3200,1;
+	monster 'map_glast$,239,192,"Wicked Chimera#bb8",3200,1;
+	monster 'map_glast$,231,193,"Wicked Chimera#bb8",3200,1;
+	monster 'map_glast$,239,214,"Wicked Chimera#bb16",3200,1;
+	monster 'map_glast$,232,213,"Wicked Chimera#bb16",3200,1;
+	monster 'map_glast$,238,209,"Wicked Chimera#bb16",3200,1;
+	monster 'map_glast$,244,220,"Wicked Chimera#bb16",3200,1;
+	monster 'map_glast$,252,249,"Wicked Chimera#aa18",3200,1;
+	monster 'map_glast$,268,221,"Wicked Chimera#aa17",3200,1;
+	monster 'map_glast$,261,219,"Wicked Chimera#aa17",3200,1;
+	monster 'map_glast$,261,248,"Wicked Chimera#aa18",3200,1;
+	monster 'map_glast$,264,211,"Wicked Chimera#aa17",3200,1;
+	monster 'map_glast$,267,210,"Wicked Chimera#aa17",3200,1;
+	monster 'map_glast$,258,193,"Wicked Chimera#bb7",3200,1;
+	monster 'map_glast$,258,192,"Wicked Chimera#bb7",3200,1;
+	monster 'map_glast$,258,190,"Wicked Chimera#bb7",3200,1;
+	monster 'map_glast$,269,192,"Wicked Chimera#bb7",3200,1;
+	monster 'map_glast$,269,110,"Wicked Chimera#aa6",3200,1;
+	monster 'map_glast$,266,105,"Wicked Chimera#aa6",3200,1;
+	monster 'map_glast$,277,103,"Wicked Chimera#aa6",3200,1;
+	monster 'map_glast$,263,107,"Wicked Chimera#aa6",3200,1;
+	monster 'map_glast$,249,101,"Wicked Chimera#aa5",3200,1;
+	monster 'map_glast$,237,93,"Wicked Chimera#aa5",3200,1;
+	monster 'map_glast$,242,107,"Wicked Chimera#aa5",3200,1;
+	monster 'map_glast$,237,105,"Wicked Chimera#aa5",3200,1;
+	monster 'map_glast$,264,235,"Wicked Chimera#aa18",3200,1;
+	monster 'map_glast$,260,255,"Wicked Chimera#aa18",3200,1;
+	monster 'map_glast$,261,282,"Wicked Chimera#bb23",3200,1;
+	monster 'map_glast$,260,284,"Wicked Chimera#bb23",3200,1;
+	monster 'map_glast$,264,289,"Wicked Chimera#bb23",3200,1;
+	monster 'map_glast$,268,301,"Wicked Chimera#bb24",3200,1;
+	monster 'map_glast$,262,308,"Wicked Chimera#bb24",3200,1;
+	monster 'map_glast$,273,306,"Wicked Chimera#bb24",3200,1;
+	monster 'map_glast$,259,307,"Wicked Chimera#bb24",3200,1;
+	monster 'map_glast$,269,283,"Wicked Chimera#bb23",3200,1;
+	monster 'map_glast$,257,350,"Wicked Chimera#aa25",3200,1;
+	monster 'map_glast$,268,350,"Wicked Chimera#aa25",3200,1;
+	monster 'map_glast$,268,357,"Wicked Chimera#aa25",3200,1;
+	monster 'map_glast$,271,358,"Wicked Chimera#aa25",3200,1;
+	end;
+
+OnInstanceInit:
+	'skip_left_part = 0;
+	'back_to_entrance = 0;
+	'map_glast$ = instance_mapname("1@glast");
+	'fenrir_1$ = instance_npcname("Fenrith Fenrir#glast_01");
+	'fenrir_2$ = instance_npcname("Fenrith Fenrir#glast_02");
+	'fenrir_3$ = instance_npcname("Fenrith Fenrir#glast_03");
+	'fenrir_4$ = instance_npcname("Fenrith Fenrir#glast_04");
+	'fenrir_5$ = instance_npcname("Fenrith Fenrir#glast_05");
+	'fenrir_6$ = instance_npcname("Fenrith Fenrir#glast_06");
+	'fenrir_7$ = instance_npcname("Fenrith Fenrir#glast_07");
+	'fenrir_8$ = instance_npcname("Fenrith Fenrir#glast_08");
+	'fenrir_9$ = instance_npcname("Fenrith Fenrir#glast_09");
+	'fenrir_10$ = instance_npcname("Fenrith Fenrir#glast_10");
+	'fenrir_11$ = instance_npcname("Fenrith Fenrir#glast_11");
+	'sarah_10$ = instance_npcname("Sarah Irene#glast_10");
+	'sarah_17$ = instance_npcname("Sarah Irene#glast_17");
+	'sarah_20$ = instance_npcname("Sarah Irene#glast_20");
+	'sarah_ego$ = instance_npcname("Sarah Irene's alter ego");
+
+	// Entrance
+	disablenpc instance_npcname("#glast_event_3");
+	for ( .@i = 1; .@i < 8; .@i++ )
+		hideonnpc instance_npcname("#effect_glast_event01_" + .@i);
+	disablenpc instance_npcname("#glast_move_01");
+
+	// Fenrir bottom
+	disablenpc instance_npcname("#glast_event_5");
+	disablenpc 'fenrir_2$;
+
+	// Fenrir left side, entrance
+	disablenpc instance_npcname("#glast_event_7");
+	disablenpc 'fenrir_3$;
+
+	// Fenrir left side, inside
+	disablenpc 'fenrir_4$;
+	disablenpc 'sarah_10$;
+	disablenpc instance_npcname("Gigantes#semi1");
+	disablenpc instance_npcname("Gigantes#semi2");
+	disablenpc instance_npcname("#glast_event_9");
+	for ( .@i = 1; .@i < 9; .@i++ )
+		hideonnpc instance_npcname("#effect_glast_event02_" + .@i);
+	hideonnpc instance_npcname("#effect_glast_event02_bis");
+	//for ( .@i = 1; .@i < 8; .@i++ )
+	//	disablenpc instance_npcname("#glast_event_warp_" + .@i);
+	disablenpc instance_npcname("#fenrir_left_vermilion");
+	disablenpc instance_npcname("#fenrir_left_final_1");
+
+	// Event top side
+	disablenpc instance_npcname("#glast_event_13");
+	disablenpc 'fenrir_5$;
+
+	// Skipped left side
+	disablenpc instance_npcname("#fenrir_left_final_2");
+
+	// Stairs final room
+	disablenpc instance_npcname("#glast_move_03");
+	disablenpc instance_npcname("#glast_event_15");
+	disablenpc 'fenrir_6$;
+
+	// Final room
+	disablenpc instance_npcname("#glast_move_03a");
+	disablenpc instance_npcname("#glast_event_18");
+	disablenpc instance_npcname("Sarah Irene#glast_17");
+	disablenpc 'sarah_20$;
+	disablenpc 'fenrir_7$;
+	disablenpc 'fenrir_8$;
+	disablenpc 'fenrir_9$;
+	//for ( .@i = 11; .@i <= 16; .@i++ )
+	//	disablenpc instance_npcname("#glast_event_warp_" + .@i);
+	for ( .@i = 1; .@i <= 8; .@i++ )
+		hideonnpc instance_npcname("#effect_glast_event03_" + .@i);
+	disablenpc instance_npcname("#glast_event_19");
+	disablenpc instance_npcname("#fenrir_boss_final_1");
+
+	// Outside final room
+	disablenpc instance_npcname("#glast_event_24");
+	disablenpc 'fenrir_10$;
+
+	// Skipped final room
+	disablenpc instance_npcname("#fenrir_boss_final_2");
+
+	// Bombs
+	disablenpc instance_npcname("#sarah_wrath");
+	for ( .@i = 1; .@i <= 14; .@i++ )
+		disablenpc instance_npcname("#glast_bomb_" + (.@i < 10 ? ("0"+.@i) : .@i));
+
+	// Back to entrance
+	disablenpc instance_npcname("Sarah Irene's alter ego");
+	disablenpc 'fenrir_11$;
+	disablenpc instance_npcname("#glast_move_04");
+	disablenpc instance_npcname("#glast_move_05");
+
+	// Shards
+	for ( .@i = 1; .@i < 7; .@i++ )
+		disablenpc instance_npcname("Ancient Gigantes#glast_" + .@i);
+	for ( .@i = 1; .@i < 29; .@i++ )
+		disablenpc instance_npcname( "Stone Gargoyle#glast_" + (.@i < 10 ? ("0"+.@i) : .@i) );
+
+	// Spawn chimera
+	donpcevent instance_npcname("#fenrir_spawn_chimera") + "::OnSpawn";
+	end;
+}

+ 855 - 0
npc/re/jobs/2e/rebellion.txt

@@ -0,0 +1,855 @@
+//===== rAthena Script =======================================
+//= Rebellion Job Quest
+//===== Description: =========================================
+//= [Official Conversion]
+//= Job change Quest from Gunslinger -> Rebellion.
+//===== Changelogs: ==========================================
+//= 1.0 First version. [exneval]
+//= 1.1 Syntax change. [Capuche]
+//============================================================
+
+moc_fild12,261,318,3	script	Suspicious Man	4_M_MOCASS2,2,2,{
+	end;
+OnTouch:
+	if (Class == Job_Gunslinger && BaseLevel >= 99 && JobLevel >= 70) {
+		if (isbegin_quest(12340) == 0) {
+			mes "[Suspicious Man]";
+			mes "Finally I've found you, Vagabond Spike! Your neck is mine!";
+			next;
+			select("Say what?");
+			mes "[Suspicious Man]";
+			mes "*Snort* Don't pretend like you don't know. Look at this poster! You're in it!";
+			next;
+			select("I see the resemblance, but that's not me.");
+			mes "["+strcharinfo(0)+"]";
+			mes "Forget the resemblance. Where did you get that poster? I've never committed a crime.";
+			next;
+			mes "[Suspicious Man]";
+			mes "I knew you'd try to lie your way out.";
+			next;
+			mes "[Suspicious Man]";
+			mes "The ^0000ffEinbroch Private Pub^000000 has released that wanted poster. You have many bounty hunters like me on your heels.";
+			next;
+			mes "[Suspicious Man]";
+			mes "I don't care if you're the right one so long as you look it and I can take you dead or alive.";
+		}
+		else {
+			mes "[Suspicious Man]";
+			mes "It's you again! You've got guts to come back here!";
+		}
+		next;
+		if (select("Make a run for it.:Fight him.") == 1)
+			mes "^0000ffI should run for now and think about this later.^000000";
+		else
+			mes "^0000ffHe's not the only bounty hunter after me, if he's telling the truth. I need time to strategize.^000000";
+		close2;
+		if (isbegin_quest(12340) == 0)
+			setquest 12340;// Rebellion Job Change Quest
+		warp "moc_fild12",186,83;
+	}
+	end;
+}
+
+einbroch,54,97,3	script	Bouncer	4_M_REBELLION,{
+	if (BaseClass != Job_Gunslinger) {
+		mes "[Bouncer]";
+		mes "No loitering around the venue.";
+		close;
+	}
+	switch( isbegin_quest(12340) ) {
+	case 0:
+		mes "[Bouncer]";
+		mes "Under construction, can't get in.";
+		close;
+	case 1:
+		mes "[Bouncer]";
+		mes "*Gasp* You! I thought you were already captured. Ooh, doesn't matter now. You're my Get Out of Jail Free card!";
+		next;
+		select("I'm not the criminal you think I am!");
+		mes "[Bouncer]";
+		mes "You aren't?";
+		next;
+		mes "^0000ffThe bouncer examines your face.^000000";
+		next;
+		mes "[Bouncer]";
+		mes "Hm, you bear a striking resemblance, though you don't look not as menacing as that criminal Spike";
+		next;
+		select("I want to talk to the poster publisher.");
+		mes "[Bouncer]";
+		mes "Your problem is a bit out of my league. Get in. If I find out you're the real deal all along, I'll see that you'll never see the outside again.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	case 2:
+		mes "[Bouncer]";
+		mes "You're back. Why?";
+		next;
+		if (select("I want in.:I was passing by.") == 2) {
+			mes "[Bouncer]";
+			mes "You're silly.";
+			close;
+		}
+		mes "[Bouncer]";
+		mes "Go ahead. Stay out of trouble.";
+		close2;
+		warp "job_gun",70,28;
+		end;
+	}
+}
+
+job_gun,68,33,3	script	Ruthless Rebellion	4_F_REBELLION,{
+	mes "[Ruthless Rebellion]";
+	mes "Do you know how to use a gun?";
+	close;
+}
+
+job_gun,78,33,3	script	Suspicious Gunslinger	4_M_JOB_BLACKSMITH,{
+	mes "[Suspicious Gunslinger]";
+	mes "...";
+	next;
+	mes "[Quiet Gunslinger]";
+	mes "Don't say I look like a blacksmith you know.";
+	close;
+}
+
+job_gun,74,24,6	script	Drunken Man	4_M_LIEMAN,{
+	mes "[Drunken Man]";
+	mes "*Hiccups* Oh, I'm the owner here.";
+	mes "Oh wait, am I in the pub or someplace else? Zzz...";
+	close;
+}
+
+job_gun,64,33,6	script	Anxious Man	4_M_ALCHE_A,{
+	mes "[Anxious Man]";
+	mes "Maybe I'm in the wrong place. This place doesn't look like a pub.";
+	close;
+}
+
+job_gun,86,29,3	script	Kulbertinov	4_M_REBELLION,{
+	if (Class == Job_Rebellion) {
+		mes "[Kulbertinov]";
+		mes "Do you want to see the boss?";
+		next;
+		if (select("Yes.:No.") == 1) {
+			close2;
+			warp "job_gun",220,130;
+			end;
+		}
+		end;
+	}
+	if (Class != Job_Gunslinger) {
+		mes "[Kulbertinov]";
+		mes "Are you looking for me?";
+		close;
+	}
+	switch( isbegin_quest(12340) ) {
+	case 0:
+		mes "[Kulbertinov]";
+		mes "Can I help you?";
+		close;
+	case 1:
+		mes "[Kulbertinov]";
+		mes "What do you want?";
+		next;
+		select("I'm mistaken for a criminal!.");
+		mes "[Kulbertinov]";
+		mes "Wait a minute... Mwah hah hah!";
+		next;
+		mes "^0000ffHe scans your face, then guffaws.^000000";
+		next;
+		mes "[Kulbertinov]";
+		mes "I'm sorry. For a moment, I thought Spike came back to life. He was found dead three days ago.";
+		next;
+		select("He was captured already?");
+		mes "[Kulbertinov]";
+		mes "Yes, and the bounty hunter was already paid. The news hasn't spread, and you're the spitting image of him. Go figure.";
+		next;
+		select("You have to do something!");
+		mes "[Kulbertinov]";
+		mes "I'm sorry, but I can't talk to every single bounty hunter for you. Of course, I'm willing to compensate for your inconvenience.";
+		next;
+		mes "[Kulbertinov]";
+		mes "Hey, how about you join our ranks? At the very last, you won't get shot.";
+		next;
+		select("You want me become a bounty hunter?");
+		mes "[Kulbertinov]";
+		mes "No, bounty hunting is just a pastime. We're the experts of all the firearms in the world.";
+		next;
+		mes "[Kulbertinov]";
+		mes "Carefree spirits!";
+		mes "Magical spitfires!";
+		mes "We call ourselves the ^0000ffRebellion^000000.";
+		next;
+		mes "[Kulbertinov]";
+		mes "You look like you know how to use a gun. How'd you like to join our ranks? You won't have to worry about other bounty hunters anymore too.";
+		next;
+		if (select("Let me think it over.:I don't think I have a choice.") == 1) {
+			mes "[Kulbertinov]";
+			mes "You can think it over and over, but the answer won't change. Just take the offer.";
+		}
+		else {
+			mes "[Kulbertinov]";
+			mes "Good thinking. Might as well do it now and get it over with.";
+		}
+		next;
+		mes "[Kulbertinov]";
+		mes "Talk to Enwin Conick. She guides drifting spirits like you to the way of the Rebellion. I'll send word to her. Ah, and don't point your gun at her.";
+		completequest 12340;
+		setquest 12341;// Rebellion Job Change Quest
+		close2;
+		warp "job_gun",19,15;
+		end;
+	case 2:
+		mes "[Kulbertinov]";
+		mes "Do you have business with Elwin Conick?";
+		next;
+		if (select("No.:Send me to Elwin Conick.") == 1) {
+			mes "[Kulbertinov]";
+			mes "All right. Care for a shot of vodka?";
+			close;
+		}
+		mes "[Kulbertinov]";
+		mes "Okay, I'll let her know.";
+		close2;
+		warp "job_gun",19,15;
+		end;
+	}
+}
+
+job_gun,19,24,3	script	Elwin Conick#1	4_F_REBELLION,{
+	if (Class != Job_Gunslinger) {
+		mes "[Elwin Conick]";
+		mes "If you don't want to join Rebellions, just get out.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (isbegin_quest(12341) == 1) {
+		mes "[Elwin Conick]";
+		mes "Do you to join us Rebellions?";
+		next;
+		mes "^0000ffThe short woman with keen eyes stares into your eyes.^000000";
+		next;
+		mes "[Elwin Conick]";
+		mes "Sign here.";
+		next;
+		mes "^0000ffThe undersigned party '_____' will not speak of the test even if he or she suffers injury, mutilation, or death in an unforeseen accident that may occur during the test.^000000";
+		next;
+		select("WHAT?!");
+		mes "[Elwin Conick]";
+		mes "Do you want join us or not?";
+		next;
+		if (select("I give up.:...I'll sign.") == 1) {
+			mes "[Elwin Conick]";
+			mes "Your choice.";
+			close2;
+			warp "job_gun",81,29;
+			end;
+		}
+		mes "[Elwin Conick]";
+		mes "Good. Now, follow me.";
+		close2;
+		warp "job_gun",117,41;
+		end;
+	}
+	if (isbegin_quest(12342) == 1) {
+		mes "[Elwin Conick]";
+		mes "Do you want to try again?";
+		next;
+		if (select("I give up.:Do it.") == 1) {
+			mes "[Elwin Conick]";
+			mes "Your choice.";
+			close2;
+			warp "job_gun",81,29;
+			end;
+		}
+		mes "[Elwin Conick]";
+		mes "Follow me.";
+		close2;
+		warp "job_gun",117,41;
+		end;
+	}
+	if (isbegin_quest(12343) > 0) {
+		mes "[Elwin Conick]";
+		if (isbegin_quest(12343) == 1)
+			mes "You still have Ivan's shooting test, do you want to try again?";
+		else
+			mes "Ivan's shooting test have not finished yet, do you want to try again?";
+		next;
+		if (select("I give up.:Do it.") == 1) {
+			mes "[Elwin Conick]";
+			mes "It's not worth to give up, now go out and relax.";
+			close2;
+			warp "job_gun",81,29;
+			end;
+		}
+		mes "[Elwin Conick]";
+		mes "Remember to give your best.";
+		close2;
+		warp "job_gun",120,130;
+		end;
+	}
+	if (isbegin_quest(12345) == 1) {
+		mes "[Elwin Conick]";
+		mes "Ivan is waiting for you, go find him.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	mes "[Elwin Conick]";
+	mes "You have no more test to take. Why don't you go out and have a drink?";
+	close2;
+	warp "job_gun",81,29;
+	end;
+}
+
+job_gun,117,46,3	script	Elwin Conick#2	4_F_REBELLION,{
+	if (Class != Job_Gunslinger) {
+		mes "[Elwin Conick]";
+		mes "If you don't want to join Rebellions, just get out.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	.@emt_chk = getstatus(SC_MONSTER_TRANSFORM,1);
+	.@quest_12341 = isbegin_quest(12341);
+	.@quest_12342 = isbegin_quest(12342);
+	if (.@emt_chk == 3169) {
+		mes "^0000ffYou are already in the test form. If you have finished all your tests, report to Elwin Conick in the Assembly Room^000000.";
+		close;
+	}
+	if (.@emt_chk) {
+		mes "[Elwin Conick]";
+		mes "Look at yourself, do you really want to test?";
+		next;
+		mes "^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000";
+		next;
+		if (select("Wait.:Go away.") == 2) {
+			mes "[Elwin Conick]";
+			mes "Come back when you aren't in any form.";
+			close2;
+			warp "job_gun",81,29;
+			end;
+		}
+		mes "[Elwin Conick]";
+		mes "It's not worth to give up, now go out and relax.";
+		close;
+	}
+	if (.@quest_12341 == 1 || .@quest_12342 == 1) {
+		if (countitem(6746)) {
+			mes "[Elwin Conick]";
+			mes "Any leftover Steel Artifacts must be returned after the test.";
+			delitem 6746,countitem(6746);// Steel_Article
+			close;
+		}
+		if (countitem(6747)) {
+			mes "[Elwin Conick]";
+			mes "Any leftover Steel Artifacts must be returned after the test.";
+			delitem 6747,countitem(6747);// Steel_Article_
+			close;
+		}
+		if ((countitem(13118) - isequipped(13118)) > 0) {
+			mes "[Elwin Conick]";
+			mes "Time over. You failed the test. Let me take all your leftover test materials.";
+			delitem 13118,1;// Tiny_Flame
+			close;
+		}
+		if (.@quest_12342 == 1)
+			.@menu$ = "Got it.";
+		else {
+			.@menu$ = "Okay.";
+			setquest 12342;// Rebellion Job Change Quest
+			completequest 12341;
+		}
+		mes "[Elwin Conick]";
+		mes "Listen up. I'm not going to great lengths trying to explain the test to you.";
+		next;
+		select( .@menu$ );
+		mes "[Elwin Conick]";
+		if (.@quest_12341 == 1) {
+			mes "This is where the firearm molds are cast. Everywhere you can see Steel Artifacts are being produced.";
+			next;
+			mes "[Elwin Conick]";
+			mes "We Rebellions are weapon experts at heart. Here you will learn to create and assemble firearms.";
+			next;
+			mes "[Elwin Conick]";
+			mes "You'll be asked to control the furnace controller near the entrance and select 5 standard Steel Artifacts.";
+			next;
+			mes "[Elwin Conick]";
+			mes "You'll then take them to the next Assembly Room and assemble them info a firearm. You'll be given 3 minutes to do all that. You'd better be fast and focused, or you will fail the test.";
+			next;
+			mes "[Elwin Conick]";
+			mes "I'll be in the next room, waiting for you to bring me a complete firearm. To check the elapsed time, you'll be transformed into a different job. ^0000ffIf you pass 3 minutes and turn back to normal, go back to me and start the test again.^000000.";
+		}
+		else {
+			mes "You'll be asked to control switches on the machine and select 5 standard Steel Artifacts.";
+			next;
+			mes "[Elwin Conick]";
+			mes "You'll then take them to the next Assembly Room and assemble them into a complete firearm. You'll be given 3 minutes to finish all that. ^0000ffTo check the elapsed time, you'll be transformed into a different job^000000.";
+			next;
+			mes "[Elwin Conick]";
+			mes "I'll be in the next room, waiting for you to bring me a complete firearm. Remember, ^0000ffyou fail the test when your transformation expires after 3 minutes^000000.";
+		}
+		transform 3169,180000;
+		close;
+	}
+	mes "[Elwin Conick]";
+	mes "Ah? Are you lost? You need to register first and then get back here.";
+	close2;
+	warp "job_gun",81,29;
+	end;
+}
+
+job_gun,198,39,3	script	Elwin Conick#3	4_F_REBELLION,{
+	if (Class != Job_Gunslinger) {
+		mes "[Elwin Conick]";
+		mes "If you don't want to join Rebellions, just get out.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (isbegin_quest(12342) == 1) {
+		.@emt_chk = getstatus(SC_MONSTER_TRANSFORM,1);
+		if (.@emt_chk == 3169) {
+			if ((countitem(13118) - isequipped(13118)) < 1) {// don't count if equipped
+				mes "[Elwin Conick]";
+				mes "Are you done? I don't see any completed firearm in your inventory.";
+				close;
+			}
+			mes "[Elwin Conick]";
+			mes "It's shoddy but not bad, given the time. You passed.";
+			delitem 13118,1;// Tiny_Flame
+			next;
+			mes "[Elwin Conick]";
+			mes "Let me take all your leftover test materials.";
+			delitem 6746,countitem(6746);// Iron_Artifact
+			delitem 6747,countitem(6747);// Steel_Artifact
+			next;
+			mes "[Elwin Conick]";
+			mes "Now you can move on to the next course. Ivan Sidorenko will oversee your test.";
+			completequest 12342;
+			close2;
+			warp "job_gun",120,133;
+			end;
+		}
+		if (.@emt_chk) {
+			mes "[Elwin Conick]";
+			mes "Look at yourself, do you really want to test?";
+			next;
+			mes "^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000";
+			next;
+			if (select("Wait.:Go away.") == 2) {
+				mes "[Elwin Conick]";
+				mes "Come back when you aren't in any form.";
+				close2;
+				warp "job_gun",81,29;
+				end;
+			}
+			mes "[Elwin Conick]";
+			mes "It's not worth to give up, now go out and relax.";
+			close;
+		}
+		mes "[Elwin Conick]";
+		mes "Time over. You failed the test. Let me take all your leftover test materials.";
+		delitem 6746,countitem(6746);// Iron_Artifact
+		delitem 6747,countitem(6747);// Steel_Artifact
+		delitem 13118,(countitem(13118) - isequipped(13118));// Tiny_Flame
+		next;
+		mes "[Elwin Conick]";
+		mes "Let's start again.";
+		close2;
+		warp "job_gun",117,41;
+		end;
+	}
+	mes "[Elwin Conick]";
+	mes "Ah? Are you lost? You need to register first and then get back here.";
+	close2;
+	warp "job_gun",81,29;
+	end;
+}
+
+job_gun,165,18,0	script	Furnace Controller#1	CLEAR_NPC,{
+	if (Class != Job_Gunslinger) {
+		mes "Only authorized user can do the operation.";
+		close;
+	}
+	if (getstatus(SC_MONSTER_TRANSFORM,1) == 3169) {// J_REB_SHECIL1
+		if (isbegin_quest(12342) == 1) {
+			mes "Do you want to dredge the mold up from the furnace?";
+			next;
+			if (select("Quit.:Begin.") == 1) {
+				mes "Switch to the Standby mode.";
+				close;
+			}
+			mes "Initializing Furnace Controller ZX-3100...";
+			disablenpc "Furnace Controller#1";
+			donpcevent "Furnace Controller#2::OnStart";
+			close;
+		}
+	}
+	mes "Not an authorized user. Abort the operation.";
+	close;
+}
+
+job_gun,214,36,0	script	Auto Anvil#1	CLEAR_NPC,{
+	if (Class != Job_Gunslinger) {
+		mes "Only authorized user can do the operation.";
+		close;
+	}
+	if ((countitem(13118) - isequipped(13118)) > 0) {// Tiny_Flame
+		mes "Unauthorized firearm creation has been detected. Report to Manager Elwin.";
+		close;
+	}
+	if (getstatus(SC_MONSTER_TRANSFORM,1) == 3169) {
+		if (countitem(6747) < 5) {// Steel_Article_
+			mes "You do not have standard Steel Artifacts.";
+			close;
+		}
+		if (isbegin_quest(12342) == 1) {
+			mes "Do you want to use the auto anvil and shape the standard Steel Artifacts into a firearm?";
+			next;
+			if (select("Quit.:Begin.") == 1) {
+				mes "For your safety, please step away from the auto anvil.";
+				close;
+			}
+			if (rand(1,10) > 6) {
+				mes "You have successfully created a firearm using the auto anvil. ^ff0000Please report before your transformation expires^000000.";
+				specialeffect EF_REPAIRWEAPON;
+				getitem 13118,1;// Tiny_Flame
+			}
+			else {
+				mes "Failed to create a firearm.";
+				specialeffect EF_SUI_EXPLOSION;
+			}
+			delitem 6747,5;// Steel_Article_
+			close;
+		}
+	}
+	mes "Not an authorized user. Abort the operation.";
+	close;
+}
+
+job_gun,165,18,0	script	Furnace Controller#2	CLEAR_NPC,{
+	mes "The system is busy dredging a completed mold from the furnace.";
+	close;
+
+OnStart:
+	enablenpc "Furnace Controller#2";
+	sleep 3000;
+	mapannounce "job_gun","Furnace Controller: Dredging a mold up from the furnace... Workers, stand by at the production line.",bc_map,"0x00ff44";
+	sleep 500;
+	for ( .@i = 0; .@i < 30; ++.@i ) {
+		.@eff_rnd = rand(1,100);
+		if (.@eff_rnd < 33)
+			donpcevent "Heating Furnace#3::OnStart";
+		else if (.@eff_rnd > 66)
+			donpcevent "Heating Furnace#4::OnStart";
+		else
+			donpcevent "Heating Furnace#5::OnStart";
+		sleep 200;
+		.@d_itemx = rand(127,143);
+		.@d_itemy = rand(26,29);
+		makeitem 6746,1,"job_gun",.@d_itemx,.@d_itemy;// Steel_Article
+		if (rand(1,10) > 7)
+			makeitem 6747,1,"job_gun",.@d_itemx,.@d_itemy;// Steel_Article_
+		sleep 500;
+	}
+	sleep 2000;
+	mapannounce "job_gun","Furnace Controller: Finishing the operation... Entering Standby mode in 15 seconds.",bc_map,"0x00ff44";
+	sleep 15000;
+	disablenpc "Furnace Controller#2";
+	enablenpc "Furnace Controller#1";
+	end;
+OnInit:
+	disablenpc "Furnace Controller#2";
+	end;
+}
+
+job_gun,130,31,0	script	Heating Furnace#3	CLEAR_NPC,{
+	end;
+OnStart:
+	specialeffect EF_FIREPILLAR;
+	sleep 500;
+	specialeffect EF_FIREPILLARBOMB;
+	end;
+}
+job_gun,136,31,0	duplicate(Heating Furnace#3)	Heating Furnace#4	CLEAR_NPC
+job_gun,141,31,0	duplicate(Heating Furnace#3)	Heating Furnace#5	CLEAR_NPC
+
+job_gun,120,138,3	script	Ivan Sidorenko#1	4_M_REBELLION,{
+	if (Class != Job_Gunslinger) {
+		mes "[Ivan Sidorenko]";
+		mes "This is shooting test area, you can't come here as you like.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (isbegin_quest(12342) < 2) {
+		mes "[Ivan Sidorenko]";
+		mes "There seems to be a mistake, you can't stay here.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (isbegin_quest(12343) == 0) {
+		mes "[Ivan Sidorenko]";
+		mes "Hey, stay focused--we're using live ammo here, and you can get shot anytime.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "Let me make this quick. Basically you'll be running in this shooting range consisting of 5 sections.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "The objective is to find enemies in the midst of a crowd quickly and without fail.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "Among all the targets, you must shoot only the ^0000ffStandard-issue Targets^000000. If you make a mistake, you'll lose points.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "Let's try. There aren't many ^0000ffStandard-issue Targets^000000, so keep your eyes peeled.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "^0000ffYou have 3 minutes to finish this test. If you can't finish before your transformation expires^000000, you'll fail. If that happens, just follow the path back to me.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "^0000ffYou'll fail if you miss a Standard-issue Target, or shoot 3 incorrect targets^000000. Let's get started.";
+		setquest 12343;// Rebellion Job Change Quest
+		setquest 12344;// Rebellion Job Change Quest
+		transform 3169,180000;
+		close2;
+		warp "job_gun",102,146;
+		end;
+	}
+	if (isbegin_quest(12343) == 1) {
+		if (checkquest(12343,HUNTING) == 2)
+			.@j_r_s = 10;
+		if (checkquest(12344,HUNTING) == 2)
+			.@j_r_f = 2;
+		if (getstatus(SC_MONSTER_TRANSFORM,1) != 3169)
+			.@j_r_t = 5;
+		.@j_r_c = .@j_r_s - .@j_r_f - .@j_r_t;
+		if (.@j_r_c > 9) {
+			mes "[Ivan Sidorenko]";
+			mes "Good job. I didn't think you could pass so quickly.";
+			completequest 12343;
+			completequest 12344;
+			setquest 12345;// Rebellion Job Change Quest
+			next;
+			mes "[Ivan Sidorenko]";
+			mes "You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.";
+			close2;
+			warp "job_gun",210,132;
+			end;
+		}
+		if (.@j_r_c == 8) {
+			mes "[Ivan Sidorenko]";
+			mes "You're quick enough, but you shot too many incorrect targets. You failed.";
+		}
+		else if (.@j_r_c == 5) {
+			mes "[Ivan Sidorenko]";
+			mes "You accurate enough, but you took too much time. Slow Rebellions don't survive long enough.";
+		}
+		else if (.@j_r_c < 5) {
+			mes "[Ivan Sidorenko]";
+			mes "You failed at both speed and accuracy. How did you survive this long?";
+		}
+		else {
+			mes "[Ivan Sidorenko]";
+			mes "There's a problem, the statistic seems to be wrong. Well... This can happen sometimes.";
+		}
+		erasequest 12343;
+		erasequest 12344;
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "Let's try again. Be more careful this time.";
+		setquest 12343;
+		setquest 12344;
+		transform 3169,180000;
+		close2;
+		warp "job_gun",102,146;
+		end;
+	}
+	mes "[Ivan Sidorenko]";
+	mes "How did you not leave?";
+	next;
+	mes "[Ivan Sidorenko]";
+	mes "You may leave and wait outside. I'll bring other instructors' evaluation reports to see you.";
+	close2;
+	warp "job_gun",210,132;
+	end;
+}
+
+job_gun,1,4,0	script	#target	CLEAR_NPC,{
+	end;
+OnStart:
+	killmonster "job_gun","#target::OnMyMobDead";
+OnInit:
+OnMyMobDead:
+	hideonnpc "#target";
+	while( mobcount("job_gun","#target::OnMyMobDead") < 16 ) {
+		.@m_rg = rand(1,5);
+		if (.@m_rg == 1)
+			monster "job_gun",rand(88,99),rand(143,147),"Standard-issue Target",3169,1,"#target::OnMyMobDead";
+		else if (.@m_rg == 2)
+			monster "job_gun",rand(92,96),rand(95,122),"Standard-issue Target",3169,1,"#target::OnMyMobDead";
+		else if (.@m_rg == 3)
+			monster "job_gun",rand(143,159),rand(99,100),"Standard-issue Target",3169,1,"#target::OnMyMobDead";
+		else if (.@m_rg == 4)
+			monster "job_gun",rand(157,158),rand(137,160),"Standard-issue Target",3169,1,"#target::OnMyMobDead";
+		else
+			monster "job_gun",rand(119,134),rand(156,160),"Standard-issue Target",3169,1,"#target::OnMyMobDead";
+	}
+	end;
+}
+
+job_gun,1,5,0	script	#nontarget	CLEAR_NPC,{
+	end;
+OnStart:
+	killmonster "job_gun","#nontarget::OnMyMobDead";
+OnInit:
+OnMyMobDead:
+	hideonnpc "#nontarget";
+	while( mobcount("job_gun","#nontarget::OnMyMobDead") < 56 ) {
+		.@m_rg = rand(1,5);
+		if (.@m_rg == 1)
+			monster "job_gun",rand(88,99),rand(143,147),"Defective Target",3170,1,"#nontarget::OnMyMobDead";
+		else if (.@m_rg == 2)
+			monster "job_gun",rand(92,96),rand(95,122),"Defective Target",3170,1,"#nontarget::OnMyMobDead";
+		else if (.@m_rg == 3)
+			monster "job_gun",rand(143,159),rand(99,100),"Defective Target",3170,1,"#nontarget::OnMyMobDead";
+		else if (.@m_rg == 4)
+			monster "job_gun",rand(157,158),rand(137,160),"Defective Target",3170,1,"#nontarget::OnMyMobDead";
+		else
+			monster "job_gun",rand(119,134),rand(156,160),"Defective Target",3170,1,"#nontarget::OnMyMobDead";
+	}
+	end;
+}
+
+job_gun,220,132,3	script	Ivan Sidorenko#2	10062,{
+	if (!checkweight(1201,1)) {
+		mes "You have too many items, please reduce them to continue.";
+		close;
+	}
+	if ((MaxWeight - Weight) < 1000) {
+		mes "The items in your inventory are weighing you down. Lighten your weight first.";
+		close;
+	}
+	if (isbegin_quest(12345) == 0) {
+		mes "[Ivan Sidorenko]";
+		mes "There must have been a mistake. You aren't supposed to remain here.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (Class == Job_Gunslinger) {
+		if (BaseLevel < 99 || JobLevel < 70) {
+			mes "[Ivan Sidorenko]";
+			mes "Huh? You look so weak? I have nothing more to say.";
+			close;
+		}
+		if (SkillPoint) {
+			mes "[Ivan Sidorenko]";
+			mes "Oh no~ You still have Skill Points.";
+			close;
+		}
+		mes "[Ivan Sidorenko]";
+		mes "Kulbertinov, Elwin, and I've evaluated your Rebellion test results.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "And...";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "You've met all our requirements including the attitude and the test performance.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "That's right, you're now a member of the Rebellion. Get ready to be wowed.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "And Elwin wants you to have this. Take good care of it. He made it for you.";
+		jobchange Job_Rebellion;
+		completequest 12345;
+		getitem 13119,1;// Freedom_Flame
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "See you later.";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	if (Class == Job_Rebellion) {
+		mes "[Ivan Sidorenko]";
+		mes "This life should be fun, not boring.";
+		next;
+		mes "[Ivan Sidorenko]";
+		mes "And by becoming a Rebellion your life should be upgraded. So, go and create a great journey, make us proud!";
+		close2;
+		warp "job_gun",81,29;
+		end;
+	}
+	mes "[Ivan Sidorenko]";
+	mes "Do you have something to say to me, don't you?";
+	close;
+}
+
+job_gun,220,138,4	shop	Prop Vending Machine	2_VENDING_MACHINE1,13210:-1,13211:-1,13212:-1,13213:-1,13214:-1,7663:-1,7664:-1,7665:-1
+
+job_gun,216,138,4	script	Butler Karlex	1_M_01,{
+	mes "[Butler Karlex]";
+	mes "Use this temporary storage to keep your items safe while on the Advancement test.";
+	next;
+	.@s = select("Quit.:Open the storage.");
+	mes "[Butler Karlex]";
+	mes "Thank you for using the service.";
+	close2;
+	if (.@s == 2)
+		openstorage;
+	end;
+}
+
+job_gun,56,26,0	warp	rebelroom#1	2,2,einbroch,49,97
+job_gun,18,10,0	warp	rebelroom#2	2,2,job_gun,81,29
+job_gun,165,22,0	warp	rebelroom#3	2,2,job_gun,196,35
+job_gun,197,49,0	warp	rebelroom#4	2,2,job_gun,157,21
+job_gun,88,144,0	warp	shootingrange#1	3,3,job_gun,93,123
+job_gun,105,97,0	warp	shootingrange#2	3,3,job_gun,125,98
+job_gun,156,115,0	warp	shootingrange#3	3,3,job_gun,157,137
+job_gun,152,154,0	warp	shootingrange#4	3,3,job_gun,135,154
+job_gun,130,146,0	warp	shootingrange#5	3,3,job_gun,120,130
+
+
+job_gun,1,1,0	script	Admin1	CLEAR_NPC,{
+	callfunc "F_GM_NPC";
+	if (callfunc("F_GM_NPC",1854,0) != 1)
+		end;
+	mes "[Time Manager]";
+	mes "What time would you like to return?";
+	next;
+	switch( select("Cancel:Test monster spawn:Start from beginning:Furnace Zone:Shooting Zone:Complete the test") ) {
+	case 1:
+		end;
+	case 2:
+		donpcevent "#target::OnStart";
+		donpcevent "#nontarget::OnStart";
+		end;
+	case 3:
+		callsub S_Quest,0,0;
+	case 4:
+		callsub S_Quest,12341,12341;
+	case 5:
+		callsub S_Quest,12342,12342;
+	case 6:
+		callsub S_Quest,12345,12344;
+	}
+	end;
+
+S_Quest:
+	setarray .@arguments[0], getarg(0), getarg(1);
+	for ( .@quest = 12340; .@quest <= 12345; ++.@quest ) {
+		if (isbegin_quest(.@quest) > 0)
+			erasequest .@quest;
+		if (.@quest <= .@arguments[0])
+			setquest .@quest;
+		if (.@quest <= .@arguments[1])
+			completequest .@quest;
+	}
+	end;
+}

+ 351 - 135
npc/re/jobs/novice/academy.txt

@@ -13,166 +13,382 @@
 //= 1.0.0 Initial Release. [Kisuka]
 //= 1.0.1 Converted item constants to IDs and added hair coupon. [Kisuka]
 //= 2.0.0 Converted from Hercules Script to rAthena Script. [Capuche]
+//= 2.0.1 Add new Intro Renewal based on Hercules [Jenkijo]
 //==============================================================================
 
+//== Starting Point  (iz_int) =================================
+iz_int,18,30,0	script	iz_int#intro_start	HIDDEN_WARP_NPC,6,6,{
+	end;
+OnTouch:
+	navigateto("iz_int", 52, 30, NAV_NONE, 1); // Individual map name not required
+	if (getd(".start" + strnpcinfo(1)) == 0) {
+		setd ".start" + strnpcinfo(1), 1;
+		initnpctimer;
+		mapannounce strnpcinfo(4), "[Tip] You can move to the desired point by clicking the ground with the left mouse button.", bc_map,0xFF0000;
+	}
+	end;
+OnTimer9000:
+	mapannounce strnpcinfo(4), "[Tip] While holding down the right mouse button, drag to rotate the screen.", bc_map,0xFF0000;
+	end;
+OnTimer18000:
+	mapannounce strnpcinfo(4), "[Tip] You can leave through the bluish warp gate.", bc_map,0xFF0000;
+	emotion 0,0, "#room_out" + replacestr( strnpcinfo(4), "iz_int", "" );
+	end;
+OnTimer21000:
+	emotion 0,0, "#room_out" + replacestr( strnpcinfo(4), "iz_int", "" );
+	end;
+OnTimer24000:
+	emotion 0,0, "#room_out" + replacestr( strnpcinfo(4), "iz_int", "" );
+	end;
+OnTimer27000:
+	mapannounce strnpcinfo(4), "[Tip] Leave this area to continue.", bc_map,0xFF0000;
+	stopnpctimer;
+	setd ".start" + strnpcinfo(1), 0;
+	end;
+}
+iz_int01,18,30,0	duplicate(iz_int#intro_start)	iz_int01#intro_start	HIDDEN_WARP_NPC,6,6
+iz_int02,18,30,0	duplicate(iz_int#intro_start)	iz_int02#intro_start	HIDDEN_WARP_NPC,6,6
+iz_int03,18,30,0	duplicate(iz_int#intro_start)	iz_int03#intro_start	HIDDEN_WARP_NPC,6,6
+iz_int04,18,30,0	duplicate(iz_int#intro_start)	iz_int04#intro_start	HIDDEN_WARP_NPC,6,6
+
+iz_int,51,30,0	script	iz_int#intro_evt02	HIDDEN_WARP_NPC,1,1,{
+	end;
+OnTouch:
+	navigateto("int_land", 75, 100, NAV_NONE, 1);
+	end;
+}
+iz_int01,51,30,0	duplicate(iz_int#intro_evt02)	iz_int01#intro_evt02	HIDDEN_WARP_NPC,1,1
+iz_int02,51,30,0	duplicate(iz_int#intro_evt02)	iz_int02#intro_evt02	HIDDEN_WARP_NPC,1,1
+iz_int03,51,30,0	duplicate(iz_int#intro_evt02)	iz_int03#intro_evt02	HIDDEN_WARP_NPC,1,1
+iz_int04,51,30,0	duplicate(iz_int#intro_evt02)	iz_int04#intro_evt02	HIDDEN_WARP_NPC,1,1
+
+//== Wounded Swordsman (iz_int) =================================
+iz_int,56,32,3	script	Wounded Swordsman#intro_npc01_iz_int	4_TOWER_01,5,5,{
+	@intro_npc01 = 1;
+	npctalk "Oh...", "", bc_self;
+	classchange HIDDEN_WARP_NPC, "", bc_self;// todo: classchange self remain on map
+	classchange 4_TOWER_02, "Wounded Swordsman#intro_npc02_" + strnpcinfo(4), bc_self;
+	end;
+
+OnTouch:
+	if (@intro_npc01 == 0) {
+		npctalk "Urgh... please... help me...", "", bc_self;
+		sleep2 500;
+		npctalk "In order to talk with me.. click my body..", "", bc_self;
+	}
+	else {// debug
+		classchange HIDDEN_WARP_NPC, "", bc_self;
+		classchange 4_TOWER_02, "Wounded Swordsman#intro_npc02_" + strnpcinfo(4), bc_self;
+	}
+	end;
+
+OnInit:
+	questinfo 21001, QTYPE_QUEST, 1, Job_Novice;
+	end;
+}
+iz_int01,56,32,3	duplicate(Wounded Swordsman#intro_npc01_iz_int)	Wounded Swordsman#intro_npc01_iz_int01	4_TOWER_01,5,5
+iz_int02,56,32,3	duplicate(Wounded Swordsman#intro_npc01_iz_int)	Wounded Swordsman#intro_npc01_iz_int02	4_TOWER_01,5,5
+iz_int03,56,32,3	duplicate(Wounded Swordsman#intro_npc01_iz_int)	Wounded Swordsman#intro_npc01_iz_int03	4_TOWER_01,5,5
+iz_int04,56,32,3	duplicate(Wounded Swordsman#intro_npc01_iz_int)	Wounded Swordsman#intro_npc01_iz_int04	4_TOWER_01,5,5
+
+iz_int,56,32,3	script	Wounded Swordsman#intro_npc02_iz_int	HIDDEN_WARP_NPC,{
+	if (isbegin_quest(21001) == 0) {
+		mes "[Wounded]";
+		mes "Wow! Thanks a lot!";
+		mes "I don't know how this happened to our ship";
+		mes "but we should go to see the captain.";
+		next;
+		mes "[Wounded]";
+		mes "... ohh, it seems my body is too injured.";
+		mes "Maybe you can go without me?";
+		setquest 21001;
+		next;
+		cutin "tutorial02",4;
+		mes "^4d4dff!- Information -!^000000";
+		mes "NPC Quest Received.";
+	}
+	else {
+		mes "[Wounded]";
+		mes "Luckily the water has not entered the ship.";
+		mes "I will wait here, you should go see the captain.";
+		next;
+		mes "[Wounded]";
+		mes "I'm fine! I'm fine!";
+		mes "Don't worry about me, you should really go to the captain!";
+		next;
+		mes "^4d4dff!- Information -!^000000";
+	}
+	mes "^4d4dffQuestinfo Shortcut is Alt + U^000000";
+	mes "You can check your quest status there anytime.";
+	close2;
+	cutin "",255;
+	end;
+
+OnInit:
+	questinfo 21001, QTYPE_QUEST, 1, Job_Novice;
+	end;
+}
+iz_int01,56,32,3	duplicate(Wounded Swordsman#intro_npc02_iz_int)	Wounded Swordsman#intro_npc02_iz_int01	HIDDEN_WARP_NPC
+iz_int02,56,32,3	duplicate(Wounded Swordsman#intro_npc02_iz_int)	Wounded Swordsman#intro_npc02_iz_int02	HIDDEN_WARP_NPC
+iz_int03,56,32,3	duplicate(Wounded Swordsman#intro_npc02_iz_int)	Wounded Swordsman#intro_npc02_iz_int03	HIDDEN_WARP_NPC
+iz_int04,56,32,3	duplicate(Wounded Swordsman#intro_npc02_iz_int)	Wounded Swordsman#intro_npc02_iz_int04	HIDDEN_WARP_NPC
+
 // - Captain Carocc (Ship)
 // -----------------------------------------------------------------------------
-iz_int,100,91,3	script	Captain Carocc#iz_int	4_M_REINDEER,{
-	if (Class == Job_Novice) {
-		cutin "fly_trock", 2;
-		if (!isbegin_quest(7471)) {
-			mes "[Captain Carocc]";
-			mes "Had a good dream?";
-			mes "Soon, we will get to ^4d4fffIzlude^000000.";
-			next;
-			mes "[Captain Carocc]";
-			mes "And you can talk to other people like you just talked to me.";
-			next;
-			cutin "tutorial01",3;
-			mes "!- Information -!";
-			mes "^4d4fffLeft mouse click allows basic game controls.";
-			mes "Such as conversation with NPC, movement, and attacks.^000000";
-			next;
-			cutin "fly_trock",2;
-			mes "[Captain Carocc]";
-			mes "Many youngsters visit the ^4d4fffRune Midgard Kingdom^000000 to chase their dreams.";
-			mes "Izlude is a satellite city of Prontera, the capital of the Rune Midgard Kingdom.";
-			next;
-			mes "[Captain Carocc]";
-			mes "Izlude always welcomes young adventurers like you who have just started their journey to the World.";
-			mes "You are one of them of course.";
-			next;
-			mes "[Captain Carocc]";
-			mes "I would like to tell you more stories, but it's time to get ready for arrival.";
-			mes "There is an academy in Izlude for newcomers like yourself.";
-			next;
+int_land,78,103,5	script	Captain Carocc#intro_npc03	4_M_REINDEER,{
+	switch( isbegin_quest(21008) ) {
+	case 0:
+		mes "[Captain Carocc]";
+		mes "There are still people in the cabins?!";
+		mes "At least you are safe.";
+		mes "Are you alright?";
+		next;
+		if (select("I'm alright, but others need help.", "I think I am the last?") == 1) {
 			mes "[Captain Carocc]";
-			mes "Let me give you more details later.";
-			mes "See you back at the harbor deck.";
-			next;
+			mes "There are more people left?";
+			mes "I will send a rescue team to them.";
+			mes "Thank you for your report.";
+		} else {
 			mes "[Captain Carocc]";
-			mes "To get off this ship, you should enter the ^4d4fffShining Portal^000000 over there.";
-			mes "All transportation is made through the portals.";
-			setquest 7471;
-			completequest 7471;
-			close2;
-			cutin "", 255;
-			end;
+			mes "Alright, that's good.";
+			mes "The storm came unexpectedly but I never thought it would hit us that hard.";
 		}
+		next;
 		mes "[Captain Carocc]";
-		mes "Now, we are here in Izlude~";
-		mes "Go through that ^4d4fffShining Portal^000000 and exit outside.";
+		mes "At least most people made it to safety.";
 		next;
 		mes "[Captain Carocc]";
-		mes "Let's talk more when we get off to the deck.";
-		mes "There are lots of things I want to teach you.";
-		close2;
-		cutin "", 255;
-		end;
+		mes "Look at the trees there, ^4d4dfffollow them to the southwest^000000 to find a new ship.";
+		mes "The ship will take you to ^4d4dffIzlude^000000, our original destination.";
+		next;
+		mes "[Captain Carocc]";
+		mes "Ah! Speaking of it, those ^4d4dffPorings^000000 on this island drop several materials we could use for repairs.";
+		next;
+		mes "[Captain Carocc]";
+		mes "^4d4dffKill the Porings and bring 2 Lumbers to the southern crew^000000.";
+		next;
+		mes "[Captain Carocc]";
+		mes "It is a hard task, but you look tough enough.";
+		specialeffect2 EF_HEAL2;
+		heal 9999,0;
+		skilleffect 34,0;
+		sc_start SC_BLESSING,240000,10;
+		skilleffect 29,0;
+		sc_start SC_INCREASEAGI,240000,10;
+		if (isbegin_quest(21001) == 1) {
+			completequest 21001;
+			getexp 600,600;
+		}
+		setquest 21008;
+		next;
+		mes "[Captain Carocc]";
+		mes "Speaking of Porings, you have to equip your gears.";
+		mes "You should have a ^4d4dffweapon and an armor^000000 equipped.";
+		next;
+		cutin "tutorial03",4;
+		mes "!- Information -!";
+		mes "^4d4dffYou can equip gear or use items by simply double clicking them.";
+		mes "The item window can be opened by pressing Alt + E or using the menu button.^000000";
+		next;
+		mes "!- Information -!";
+		mes "^4d4dffEquipped Items can be seen by pressing Alt + Q.";
+		mes "Either double click or drag & drop to equip or unequip them.^000000";
+		next;
+		cutin "",255;
+		mes "[Captain Carlock]";
+		mes "Did you check all your equipment?";
+		mes "^4d4dffSkill distribution^000000 should be done.";
+		next;
+		mes "[Captain Carlock]";
+		mes "For a smooth battle, you have to distribute your abilities properly.";
+		mes "^4d4dffIf you want to increase your strength, you need to raise Str^000000. ^4d4dffIf you want to increase your hit, you must raise Dex^000000.";
+		break;
+	case 1:
+		mes "[Captain Carocc]";
+		specialeffect2 EF_HEAL2;
+		heal 9999, 0;
+		skilleffect 34,0;
+		sc_start SC_BLESSING,240000,10;
+		skilleffect 29,0;
+		sc_start SC_INCREASEAGI,240000,10;
+		mes "^4d4dffThe Ship^000000 is anchored in the southwest. It will take you to Izlude.";
+		mes "Don't forget to ^4d4dffget some Lumber^000000 for the ship.";
+		next;
+		mes "[Captain Carocc]";
+		mes "Don't forget to raise your ^4d4dffskills^000000.";
+		break;
+	case 2:
+		mes "[Captain Carocc]";
+		mes "Everything is ready to sail over to Izlude.";
+		mes "The ship is located at the south-western part of the island.";
+		close;
 	}
+	next;
+	mes "! - Information -!";
+	mes "^4d4dffYou get a stats bonus for every level you raise.";
+	mes "The status window can be opened and closed with the shortcut Alt + A^000000.";
+	next;
+	mes "! - Information -!";
+	mes "^4d4dffPlease properly allocate the stats you need to battle^000000.";
+	next;
+	mes "[Captain Carocc]";
+	mes "Kill Porings and bring the Lumber to the crew.";
+	mes "Good luck!";
+	close;
+
+OnInit:
+	questinfo 21008, QTYPE_QUEST, 1, Job_Novice;
+	end;
 }
 
-iz_int01,100,91,3	duplicate(Captain Carocc#iz_int)	Captain Carocc#iz_int01	4_M_REINDEER
-iz_int02,100,91,3	duplicate(Captain Carocc#iz_int)	Captain Carocc#iz_int02	4_M_REINDEER
-iz_int03,100,91,3	duplicate(Captain Carocc#iz_int)	Captain Carocc#iz_int03	4_M_REINDEER
-iz_int04,100,91,3	duplicate(Captain Carocc#iz_int)	Captain Carocc#iz_int04	4_M_REINDEER
+int_land01,78,103,5	duplicate(Captain Carocc#intro_npc03)	Captain Carocc#intro_npc03_01	4_M_REINDEER
+int_land02,78,103,5	duplicate(Captain Carocc#intro_npc03)	Captain Carocc#intro_npc03_02	4_M_REINDEER
+int_land03,78,103,5	duplicate(Captain Carocc#intro_npc03)	Captain Carocc#intro_npc03_03	4_M_REINDEER
+int_land04,78,103,5	duplicate(Captain Carocc#intro_npc03)	Captain Carocc#intro_npc03_04	4_M_REINDEER
 
-// - Lumin (Ship)
-// -----------------------------------------------------------------------------
-iz_int,91,81,3	script	Lumin#iz_int	4_M_NOV_RUMIN,{
-	if (Class == Job_Novice) {
-		if (!isbegin_quest(7471)) {
-			mes "[Lumin]";
-			mes "............";
-			mes "...?";
-			next;
-			cutin "fly_trock",2;
-			mes "[Captain Carocc]";
-			mes "Hey, you awake now?";
-			mes "That fella without much talk, I rescued him from the ocean.";
-			next;
-			mes "[Captain Carocc]";
-			mes "Think he lost his memory.";
-			mes "I gave him a new name 'Lumin'. But, just call him Lu...";
-			next;
-			mes "[Captain Carocc]";
-			mes "And you can talk to other people like you just talked to me.";
-			next;
-			cutin "tutorial01",3;
-			mes "!- Information -!";
-			mes "^4d4fffLeft mouse click allows basic game control.";
-			mes "Such as conversation with NPC, movement, and attacks.^000000";
-			next;
-			cutin "fly_trock",2;
-			mes "[Captain Carocc]";
-			mes "Many youngsters visit the ^4d4fffRune Midgard Kingdom^000000 to chase their dreams.";
-			mes "Izlude is a satellite city of Prontera, the capital of the Rune Midgard Kingdom.";
-			next;
-			mes "[Captain Carocc]";
-			mes "Izlude always welcomes young adventurers like you who have just started their journey to the World.";
-			mes "You are one of them of course.";
-			next;
-			mes "[Captain Carocc]";
-			mes "I would like to tell you more stories, but it's time to get ready for arrival.";
-			mes "There is an academy in Izlude for newcomers like yourself.";
-			next;
-			mes "[Captain Carocc]";
-			mes "Let me give you more detail later.";
-			mes "See you back at the harbor deck.";
-			next;
-			mes "[Captain Carocc]";
-			mes "To get off this ship, you should enter the ^4d4fffShining Portal^000000 over there.";
-			mes "All transportation is made through those portals.";
-			setquest 7471;
-			completequest 7471;
-			next;
-			cutin "nov_lumin01",0;
-			mes "[Lumin]";
-			mes "Yes.";
-			next;
-			cutin "fly_trock",2;
-			mes "[Carocc]";
-			mes "Oh, boy.";
-			mes "What cute reaction.";
-			close2;
-			cutin "", 255;
-			end;
-		}
-		cutin "nov_lumin01",0;
+//== Lumin (int_land) ==========================================
+int_land,73,100,3	script	Lumin#new_ship	4_M_NOV_RUMIN,{
+	if (isbegin_quest(7471) == 0) {
+		cutin "nov_lumin01.bmp",0;
 		mes "[Lumin]";
-		mes ".....";
+		mes ".............";
+		mes "..?";
 		next;
-		select("Should I introduce myself?", "My name is ~!");
-		mes "["+strcharinfo(0)+"]";
-		mes "I am "+strcharinfo(0)+"!";
+		cutin "fly_trock.bmp",2;
+		mes "[Captain Carocc]";
+		mes "Had a good dream?";
+		mes "Soon, we will get to Izlude. And you can talk to other people like you just talked to me.";
+		next;
+		mes "[Captain Carocc]";
+		mes "I think that guy over there lost his memory. I gave him a new name.";
+		mes "Lumin.";
+		next;
+		mes "[Captain Carocc]";
+		mes "Many youngsters visit the ^4d4dffRune-Midgarts Kingdom^000000 to chase their dreams.";
+		mes "Izlude is a satellite city of Prontera, the capital of the Rune-Midgarts Kingdom.";
 		next;
-		mes "[Lu]";
-		mes ".....";
+		mes "[Captain Carocc]";
+		mes "Izlude always welcomes young adventurers like you who have just started their journey through the world.";
+		mes "You are one of them, of course.";
 		next;
-		mes "[Lu]";
-		mes ".....";
-		mes "....So?";
+		mes "[Captain Carocc]";
+		mes "I would like to tell you more stories, but it's time to get ready for arrival.";
+		mes "There is an academy in Izlude for newcomers like yourself.";
 		next;
-		mes "- Lu just walked away with a cynical look on his face.";
+		mes "[Captain Carocc]";
+		mes "Let me give you more details later. See you back at the harbor deck.";
 		next;
-		cutin "fly_trock",2;
-		mes "[Carocc]";
-		mes "He's just shy, you know.";
-		mes "You will see him again in Izlude, be good to him please.";
+		mes "[Captain Carocc]";
+		mes "To get off this ship, you should enter the ^4d4dffShining Portal^000000 over there.";
+		mes "All transportation is made through the portals.";
+		setquest 7471;
+		completequest 7471;
 		next;
-		mes "[Carocc]";
-		mes "From now on, I'll be driving this ship around Izlude.";
-		mes "Let's go, shall we?";
+		cutin "nov_lumin01.bmp", 0;
+		mes "[Lumin]";
+		mes "Yes.";
+		next;
+		classchange HIDDEN_WARP_NPC, "", bc_self;// todo: classchange self remain on map
+		cutin "fly_trock.bmp",2;
+		mes "[Captain Carocc]";
+		mes "Oh boy.";
+		mes "What a cute reaction.";
 		close2;
-		cutin "", 255;
+		cutin "",255;
 		end;
 	}
+	cutin "nov_lumin01.bmp",0;
+	mes "[Lumin]";
+	mes ".....";
+	next;
+	select("Should I introduce myself?", "My name is ~!");
+	mes "[" + strcharinfo(0) + "]";
+	mes "I am " + strcharinfo(0) + "!";
+	next;
+	mes "[Lu]";
+	mes ".....";
+	next;
+	mes "[Lu]";
+	mes ".....";
+	mes "....So?";
+	next;
+	classchange HIDDEN_WARP_NPC, "", bc_self;// todo: classchange self remain on map
+	mes "- Lu just walked away with a cynical look on his face.";
+	next;
+	cutin "fly_trock.bmp",2;
+	mes "[Captain Carocc]";
+	mes "Looks like... he has a shy personality.";
+	mes "When you go to Izlude, will you check on him?";
+	next;
+	mes "[Captain Carocc]";
+	mes "From now on I'll be sailing the ship around the island.";
+	mes "Let's go, shall we?";
+	close2;
+	cutin "",255;
+	end;
+
+OnInit:
+	questinfo 7471, QTYPE_QUEST, 1, Job_Novice;
+	setquestinfo_req 7471,21008,1;
+	end;
+}
+int_land01,73,100,3	duplicate(Lumin#new_ship)	Lumin#new_ship01	4_M_NOV_RUMIN
+int_land02,73,100,3	duplicate(Lumin#new_ship)	Lumin#new_ship02	4_M_NOV_RUMIN
+int_land03,73,100,3	duplicate(Lumin#new_ship)	Lumin#new_ship03	4_M_NOV_RUMIN
+int_land04,73,100,3	duplicate(Lumin#new_ship)	Lumin#new_ship04	4_M_NOV_RUMIN
+
+int_land,58,69,5	script	Sailor#intro_npc04	4W_SAILOR,{
+	if (isbegin_quest(21008) == 1) {
+		if (countitem(6008) < 2) {
+			mes "[Sailor]";
+			mes "These Porings stole my materials to repair the ship. Can you help me to get them back?";
+			mes "There are plenty of Porings on this island.";
+			next;
+			mes "[Sailor]";
+			mes "I would really appreciate it if you help me.";
+			mes "I am not allowed to set foot on this island.";
+			mes "That's why I ask for your help~";
+			close;
+		}
+		mes "[Sailor]";
+		mes "Unbelievable, perfect! Any chance you want to join my crew?";
+		mes "Enough talking!!";
+		mes "Come on, we're ready to set sail!";
+		mes "Thank you so much!";
+		next;
+		mes "[Sailor]";
+		mes "If you want to sail with us to Izlude, jump on board!";
+		delitem 6008,2;
+		getexp 100,100;
+		getitem 611,5;
+		completequest 21008;
+		next;
+		mes "[Sailor]";
+		mes "Oh, and take these ^4d4dffMagnifiers^000000.";
+		mes "When you hunt monsters you can find ^4d4dffunidentified items^000000.";
+		next;
+		mes "[Sailor]";
+		mes "Using a Magnifier will identify the item.";
+		next;
+		mes "[Sailor]";
+		mes "Maybe you already have some unidentified items from your fights with those Porings?";
+		close;
+	}
+	mes "[Sailor]";
+	mes "The ship is heading to Izlude soon~!";
+	mes "I'll let you know when we set sail~!";
+	close;
+
+OnInit:
+	questinfo 21002, QTYPE_QUEST, 1, Job_Novice;
+	setquestinfo_req 21002,21008,1;
+	end;
 }
 
-iz_int01,91,81,3	duplicate(Lumin#iz_int)	Lumin#iz_int01	4_M_NOV_RUMIN
-iz_int02,91,81,3	duplicate(Lumin#iz_int)	Lumin#iz_int02	4_M_NOV_RUMIN
-iz_int03,91,81,3	duplicate(Lumin#iz_int)	Lumin#iz_int03	4_M_NOV_RUMIN
-iz_int04,91,81,3	duplicate(Lumin#iz_int)	Lumin#iz_int04	4_M_NOV_RUMIN
+int_land01,58,69,5	duplicate(Sailor#intro_npc04)	Sailor#intro_npc04_01	4W_SAILOR
+int_land02,58,69,5	duplicate(Sailor#intro_npc04)	Sailor#intro_npc04_02	4W_SAILOR
+int_land03,58,69,5	duplicate(Sailor#intro_npc04)	Sailor#intro_npc04_03	4W_SAILOR
+int_land04,58,69,5	duplicate(Sailor#intro_npc04)	Sailor#intro_npc04_04	4W_SAILOR
 
 // - Captain Carocc
 // -----------------------------------------------------------------------------
@@ -4900,7 +5116,7 @@ new_1-3,99,169,3	script	Friendly Poring#ac	4_PORING,{
 		mes "[Poring]";
 		mes "Dear oh dear...what do we have 'ere?";
 		next;
-		if (select("What happend?", "Ignore him/it?") == 2) {
+		if (select("What happened?", "Ignore him/it?") == 2) {
 			mes "[Poring]";
 			mes "Oh dear, oh dear...";
 			close;

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

@@ -23,6 +23,7 @@ job3_guil01	mapflag	nobranch
 job3_guil02	mapflag	nobranch
 job3_guil03	mapflag	nobranch
 job_ko	mapflag	nobranch
+job_gun	mapflag	nobranch
 job3_rang01	mapflag	nobranch
 job3_rang02	mapflag	nobranch
 job3_rune01	mapflag	nobranch
@@ -101,6 +102,7 @@ izlude_d	mapflag	nobranch
 1@gef	mapflag	nobranch
 1@gef_in	mapflag	nobranch
 1@ge_st	mapflag	nobranch
+1@glast	mapflag	nobranch
 dali	mapflag	nobranch
 dali02	mapflag	nobranch
 

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

@@ -38,6 +38,7 @@
 // Heroes' Trail Part 1 =======
 1@sara	mapflag	noicewall
 1@face	mapflag	noicewall
+1@glast	mapflag	noicewall
 
 // WOE:TE Maps ===================
 te_prtcas01	mapflag	noicewall

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

@@ -68,6 +68,7 @@ gld2_gef	mapflag	nomemo
 gld2_pay	mapflag	nomemo
 gld2_prt	mapflag	nomemo
 job_ko	mapflag	nomemo
+job_gun	mapflag	nomemo
 ma_scene01	mapflag	nomemo
 ma_in01	mapflag	nomemo
 ma_dun01	mapflag	nomemo
@@ -129,6 +130,7 @@ gl_cas02_	mapflag	nomemo
 1@face	mapflag	nomemo
 1@sara	mapflag	nomemo
 1@gef_in	mapflag	nomemo
+1@glast	mapflag	nomemo
 dali	mapflag	nomemo
 dali02	mapflag	nomemo
 

+ 1 - 0
npc/re/mapflag/nopenalty.txt

@@ -70,3 +70,4 @@ job3_gen01	mapflag	nopenalty
 // Ext --------------------
 job3_sha01	mapflag	nopenalty
 job_ko	mapflag	nopenalty
+job_gun	mapflag	nopenalty

+ 1 - 0
npc/re/mapflag/nopvp.txt

@@ -33,6 +33,7 @@
 1@sara	mapflag	pvp	off
 1@gef_in	mapflag	pvp	off
 1@xm_d	mapflag	pvp	off
+1@glast	mapflag	pvp	off
 
 // Cities ========================
 moc_para01	mapflag	pvp	off

+ 2 - 0
npc/re/mapflag/nosave.txt

@@ -28,6 +28,7 @@ job3_gen01	mapflag	nosave	SavePoint
 // Ext
 job3_sha01	mapflag	nosave	SavePoint
 job_ko	mapflag	nosave	SavePoint
+job_gun	mapflag	nosave	SavePoint
 
 //Guild Dungeons ==============================
 gld_dun01_2	mapflag	nosave	SavePoint
@@ -108,4 +109,5 @@ que_avan01	mapflag	nosave	SavePoint
 1@face	mapflag	nosave	SavePoint
 1@sara	mapflag	nosave	SavePoint
 1@gef_in	mapflag	nosave	SavePoint
+1@glast	mapflag	nosave	SavePoint
 dali	mapflag	nosave	SavePoint

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

@@ -58,6 +58,7 @@ ma_zif07	mapflag	noteleport
 ma_zif08	mapflag	noteleport
 ma_zif09	mapflag	noteleport
 job_ko	mapflag	noteleport
+job_gun	mapflag	noteleport
 ecl_in01	mapflag	noteleport
 ecl_in02	mapflag	noteleport
 ecl_in03	mapflag	noteleport
@@ -93,6 +94,8 @@ gl_cas02_	mapflag	noteleport
 1@sara	mapflag	monster_noteleport
 1@gef_in	mapflag	noteleport
 1@gef_in	mapflag	monster_noteleport
+1@glast	mapflag	noteleport
+1@glast	mapflag	monster_noteleport
 dali	mapflag	noteleport
 dali02	mapflag	noteleport
 

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

@@ -22,3 +22,5 @@ te_aldecas2	mapflag	nowarp
 te_aldecas3	mapflag	nowarp
 te_aldecas4	mapflag	nowarp
 te_aldecas5	mapflag	nowarp
+
+job_gun	mapflag	nowarp

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

@@ -8,8 +8,21 @@
 //===== Changelogs: ==========================================
 //= 1.0 Renewal split. [Euphy]
 //= 1.1 Added WOE:TE maps [Cydh]
+//= 1.2 Added Novice Island RE Maps. [mazvi]
 //============================================================
 
+// Novice Island ===================
+int_land	mapflag	nowarpto
+int_land01	mapflag	nowarpto
+int_land02	mapflag	nowarpto
+int_land03	mapflag	nowarpto
+int_land04	mapflag	nowarpto
+iz_int	mapflag	nowarpto
+iz_int01	mapflag	nowarpto
+iz_int02	mapflag	nowarpto
+iz_int03	mapflag	nowarpto
+iz_int04	mapflag	nowarpto
+
 // 14.1 Bifrost ==================
 1@mist	mapflag	nowarpto
 que_house_s	mapflag	nowarpto
@@ -53,6 +66,7 @@ gl_cas02_	mapflag	nowarpto
 1@face	mapflag	nowarpto
 1@sara	mapflag	nowarpto
 1@gef_in	mapflag	nowarpto
+1@glast	mapflag	nowarpto
 
 // WOE:TE Maps ===================
 te_prtcas01	mapflag	nowarpto
@@ -65,3 +79,5 @@ te_aldecas2	mapflag	nowarpto
 te_aldecas3	mapflag	nowarpto
 te_aldecas4	mapflag	nowarpto
 te_aldecas5	mapflag	nowarpto
+
+job_gun	mapflag	nowarpto

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

@@ -52,6 +52,7 @@
 1@face	mapflag	partylock
 1@sara	mapflag	partylock
 1@gef_in	mapflag	partylock
+1@glast	mapflag	partylock
 
 // Horror Toy Factory
 1@xm_d	mapflag	partylock

+ 1 - 0
npc/re/mapflag/restricted.txt

@@ -21,6 +21,7 @@
 1@ecl	mapflag	restricted	6
 1@xm_d	mapflag	restricted	6
 1@face	mapflag	restricted	6
+1@glast	mapflag	restricted	6
 
 // Towns =========================
 brasilis	mapflag	restricted	7

+ 1 - 0
npc/re/merchants/shops.txt

@@ -125,6 +125,7 @@ prt_in,109,68,4	shop	Trap Specialist#prt	66,7940:-1,12341:-1
 prt_in,175,137,4	shop	Black Marketeer#prt	49,2139:-1,2800:-1,2801:-1,2802:-1,2803:-1,2804:-1,2805:-1,2806:-1,2807:-1,18000:-1,18001:-1,18002:-1,18003:-1,18004:-1,12392:-1,12393:-1,12394:-1,6145:-1,6146:-1,6147:-1,6186:-1,2808:-1
 s_atelier,17,110,1	shop	Part-Timer#sc_prt	67,6123:-1,6120:-1
 prontera,96,209,4	shop	Rebellion Accessories	564,13210:-1,13211:-1,13212:-1,7663:-1,7664:-1,7665:-1,7940:300,13200:-1,13201:-1,13202:-1,13203:-1,13204:-1,13205:-1,13206:-1,13207:-1
+//prontera,96,209,4	shop	Rebellion Prop Vending	564,13210:-1,13211:-1,13212:-1,7663:-1,7664:-1,7665:-1,7940:300,13200:-1,13221:-1,13222:-1,13215:-1,13216:-1,13217:-1,13218:-1,13219:-1,13220:-1,13223:-1,13224:-1,13225:-1,13226:-1,13227:-1
 prontera,92,209,4	shop	Rebellion Weapons	564,13120:-1,13122:-1,13189:-1,13190:-1,13192:-1,13193:-1,13194:-1,13197:-1,13198:-1,28200:-1,28201:-1
 
 //=======================================================

+ 12 - 0
npc/re/mobs/int_land.txt

@@ -0,0 +1,12 @@
+//===== rAthena Script =======================================
+//= Beginner Area Monster Spawn Script
+//===== Changelogs: ==========================================
+//= 1.0 First version. [Ridley]
+//= 1.1 Export from Hercules to rAthena. [Jenkijo]
+//============================================================
+
+int_land,0,0	monster	Poring	2401,30,5000
+int_land01,0,0	monster	Poring	2401,30,5000
+int_land02,0,0	monster	Poring	2401,30,5000
+int_land03,0,0	monster	Poring	2401,30,5000
+int_land04,0,0	monster	Poring	2401,30,5000

+ 1 - 0
npc/re/scripts_athena.conf

@@ -63,6 +63,7 @@ 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/custom/official/GeffenMagicTournament.txt
 

+ 1 - 0
npc/re/scripts_jobs.conf

@@ -12,6 +12,7 @@ npc: npc/re/jobs/1-1/swordman.txt
 npc: npc/re/jobs/1-1/thief.txt
 // - 2e
 npc: npc/re/jobs/2e/kagerou_oboro.txt
+npc: npc/re/jobs/2e/rebellion.txt
 // - 3-1
 npc: npc/re/jobs/3-1/archbishop.txt
 npc: npc/re/jobs/3-1/mechanic.txt

+ 1 - 0
npc/re/scripts_monsters.conf

@@ -5,6 +5,7 @@
 //npc: npc/re/mobs/academy.txt
 npc: npc/re/mobs/championmobs.txt
 npc: npc/re/mobs/citycleaners.txt
+npc: npc/re/mobs/int_land.txt
 npc: npc/re/mobs/towns.txt
 
 // -------------------------- Dungeons --------------------------

+ 57 - 14
npc/re/warps/cities/izlude.txt

@@ -52,6 +52,63 @@ izlude_b,52,172,0	warp	iz04_b	2,2,izlude_in,74,161
 izlude_c,52,172,0	warp	iz04_c	2,2,izlude_in,74,161
 izlude_d,52,172,0	warp	iz04_d	2,2,izlude_in,74,161
 
+//= iz_int(Intro) & int_land(Secluded Island) ================
+iz_int,27,30,0	warp	#room_out	1,1,iz_int,51,30
+iz_int01,27,30,0	warp	#room_out01	1,1,iz_int01,51,30
+iz_int02,27,30,0	warp	#room_out02	1,1,iz_int02,51,30
+iz_int03,27,30,0	warp	#room_out03	1,1,iz_int03,51,30
+iz_int04,27,30,0	warp	#room_out04	1,1,iz_int04,51,30
+
+iz_int,47,30,0	warp	#room_in	1,1,iz_int,22,30
+iz_int01,47,30,0	warp	#room_in01	1,1,iz_int01,22,30
+iz_int02,47,30,0	warp	#room_in02	1,1,iz_int02,22,30
+iz_int03,47,30,0	warp	#room_in03	1,1,iz_int03,22,30
+iz_int04,47,30,0	warp	#room_in04	1,1,iz_int04,22,30
+
+iz_int,56,15,0	script	#ship_out	WARPNPC,1,1,{
+	end;
+OnTouch:
+	.@num$ = replacestr( strnpcinfo(2), "ship_out", "" );
+	.@map$ = "int_land" + .@num$;
+	savepoint .@map$,77,101;
+	warp .@map$,85,107;
+	end;
+}
+iz_int01,56,15,0	duplicate(#ship_out)	#ship_out01	WARPNPC,1,1
+iz_int02,56,15,0	duplicate(#ship_out)	#ship_out02	WARPNPC,1,1
+iz_int03,56,15,0	duplicate(#ship_out)	#ship_out03	WARPNPC,1,1
+iz_int04,56,15,0	duplicate(#ship_out)	#ship_out04	WARPNPC,1,1
+
+int_land,49,57,0	script	#intro_to_izlude	WARPNPC,2,2,{
+	end;
+OnTouch:
+	if (isbegin_quest(21008) == 1) {
+		mes "^4d4dffOnce you leave this island there is no way back.";
+		mes "Are you sure you want to go directly to Izlude?^000000";
+		next;
+		mes "^4d4dffIf you do, the quest will be deleted from your Quest Log.^000000";
+		next;
+		if (select("Do not go to Izlude yet", "Sail to Izlude!") == 1) {
+			mes "[Sailor]";
+			mes "You want to stay here longer?";
+			mes "Good, then I'll wait until you're ready~";
+			close;
+		}
+		completequest 21008;
+	}
+	mes "[Sailor]";
+	mes "Let's head towards Izlude!";
+	close2;
+	if (isbegin_quest(21001) == 1)
+		completequest 21001;
+	warp "izlude" + replacestr( strnpcinfo(2), "intro_to_izlude", "" ),196,209;
+	end;
+}
+int_land01,49,57,0	duplicate(#intro_to_izlude)	#intro_to_izlude_a	WARPNPC,2,2
+int_land02,49,57,0	duplicate(#intro_to_izlude)	#intro_to_izlude_b	WARPNPC,2,2
+int_land03,49,57,0	duplicate(#intro_to_izlude)	#intro_to_izlude_c	WARPNPC,2,2
+int_land04,49,57,0	duplicate(#intro_to_izlude)	#intro_to_izlude_d	WARPNPC,2,2
+
 //= Izlude Academy ===========================================
 izlude,125,257,0	warp	#to_ac01	2,2,iz_ac01,99,29
 izlude,130,257,0	warp	#to_ac02	2,2,iz_ac01,99,29
@@ -62,20 +119,6 @@ iz_ac02,94,27,0	warp	#to_ac1f01	2,2,iz_ac01,78,28
 iz_ac02,113,27,0	warp	#to_ac1f02	2,2,iz_ac01,122,28
 new_1-3,96,176,0	warp	#to_ac01-2	1,1,iz_ac01,49,73
 
-iz_int,96,73,0	script	iz_int_iz	WARPNPC,2,2,{
-	end;
-
-OnTouch:
-	savepoint "izlude",128,98,1,1;
-	warp "izlude"+strnpcinfo(2)+"", 195, 209;
-	end;
-}
-
-iz_int01,96,73,0	duplicate(iz_int_iz)	iz_int_iz#_a	WARPNPC,2,2
-iz_int02,96,73,0	duplicate(iz_int_iz)	iz_int_iz#_b	WARPNPC,2,2
-iz_int03,96,73,0	duplicate(iz_int_iz)	iz_int_iz#_c	WARPNPC,2,2
-iz_int04,96,73,0	duplicate(iz_int_iz)	iz_int_iz#_d	WARPNPC,2,2
-
 //= Izlude Academy Duplicates ================================
 izlude_a,125,257,0	warp	#to_ac01_a	2,2,iz_ac01_a,99,29
 izlude_b,125,257,0	warp	#to_bc01_b	2,2,iz_ac01_b,99,29

+ 3 - 0
npc/re/warps/other/dimensional_gap.txt

@@ -62,3 +62,6 @@ dali,149,82,0	warp	dg001	2,2,mid_camp,210,289
 dali,122,48,0	warp	dg002	2,2,moc_fild22b,227,200
 dali,38,87,0	warp	dg003	2,2,bif_fild01,318,155
 dali,34,139,0	warp	dg004	2,2,dic_fild02,237,32
+
+dali,64,129,0	warp	#dali_to_dali02	1,1,dali02,66,101
+dali02,66,97,0	warp	#dali02_to_dali	1,1,dali,64,125

+ 59 - 59
sql-files/item_db.sql

@@ -1558,7 +1558,7 @@ REPLACE INTO `item_db` VALUES (2703,'Expert_Ring','Expert Ring',4,20,NULL,150,NU
 REPLACE INTO `item_db` VALUES (2704,'Golden_Accessory','Golden Accessories',4,20,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bMdef,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2705,'Golden_Accessory2','Golden Accessories',4,20,NULL,100,NULL,4,NULL,0,0xFFFFFFFF,7,2,136,NULL,NULL,NULL,NULL,'bonus2 bAddMonsterDropItem,12018,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2706,'Handcuff','Arrest Handcuffs',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (2707,'GUSLI','GUSLI',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (2707,'Gusli','GUSLI',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (2708,'Chinese_Handicraft','Chinese Handicraft',4,0,NULL,50,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus3 bAutoSpell,"MG_FIREBOLT",5,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2709,'5_Anniversary_Coin','5th Anniversary Coin',4,2,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,136,NULL,0,0,0,'bonus bAtkRate,5; bonus bMatkRate,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (2710,'Bloody_Iron_Ball_C','Bloody Iron Ball',4,1,NULL,0,NULL,0,NULL,0,0xFFFFFFFE,7,2,136,NULL,0,0,0,'bonus bBaseAtk,30;',NULL,NULL);
@@ -2116,7 +2116,7 @@ REPLACE INTO `item_db` VALUES (4447,'Centipede_Card','Centipede Card',6,20,NULL,
 REPLACE INTO `item_db` VALUES (4448,'Cornus_Card','Cornus Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Holy,20; bonus2 bAddEle,Ele_Holy,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4449,'Dark_Shadow_Card','Dark Shadow Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,32,NULL,NULL,NULL,NULL,'bonus2 bSubEle,Ele_Dark,20; bonus2 bAddEle,Ele_Dark,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4450,'Banshee_Master_Card','Banshee Master Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4451,'Entweihen_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatk,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4451,'Ant_Buyanne_Card','Entweihen Crothen Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16,NULL,NULL,NULL,NULL,'bonus bMatk,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4452,'Centipede_Larva_Card','Centipede Larva Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bInt,1; bonus bMatk,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4453,'Hilsrion_Card','Hillsrion Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bBaseAtk,25;',NULL,NULL);
 # Armor Enchant System
@@ -2181,8 +2181,8 @@ REPLACE INTO `item_db` VALUES (4756,'Luck7','LUK+7',6,20,NULL,10,NULL,NULL,NULL,
 REPLACE INTO `item_db` VALUES (4757,'Luck8','LUK+8',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bLuk,8;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4758,'Luck9','LUK+9',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bLuk,9;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4759,'Luck10','LUK+10',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bLuk,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4760,'Magic_Attack1','MATK+1%',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatkRate,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4761,'Magic_Attack2','MATK+2%',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatkRate,2;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4760,'Matk1','MATK+1%',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatkRate,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (4761,'Matk2','MATK+2%',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bMatkRate,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4762,'Evasion6','FLEE+6',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bFlee,6;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4763,'Evasion12','FLEE+12',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bFlee,12;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4764,'Critical5','CRI+5',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'bonus bCritical,5;',NULL,NULL);
@@ -2782,10 +2782,10 @@ REPLACE INTO `item_db` VALUES (5570,'Gemini_Crown','Gemini Crown',4,20,NULL,300,
 #REPLACE INTO `item_db` VALUES (5571,'Rasta_Wig','Rasta_Wig',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,552,'bonus bStr,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5572,'Savage_Baby_Hat','Savage Babe Hat',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,553,'bonus bVit,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5573,'Bogy_Horn','Dokebi Horn',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,554,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5574,'Pencil_in_Mouth','Well-Chewed Pencil',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,10,0,555,'bonus bdex,2; bonus bHitRate,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5574,'Pencil_In_Mouth','Well-Chewed Pencil',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,10,0,555,'bonus bdex,2; bonus bHitRate,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5575,'Onigiri_Hat','Rice Ball Hat',4,20,NULL,100,NULL,6,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,0,556,NULL,NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5576,'Japan_Winecup','Wine Cup',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,0,0,557,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5577,'Dark_Knight_Mask_','Dark Knight Mask',4,NULL,NULL,3000,NULL,5,NULL,0,0xFFFFFFFF,7,2,769,NULL,80,1,479,'bonus bStr,3;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5577,'Dark_Knight_MaskB','Dark Knight Mask',4,NULL,NULL,3000,NULL,5,NULL,0,0xFFFFFFFF,7,2,769,NULL,80,1,479,'bonus bStr,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5578,'Voyage_Hat','Voyage_Hat',4,200,NULL,10,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,236,'bonus bAgi,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5579,'Wanderer\'s_Sakkat','Wanderer\'s Sakkat',4,20,NULL,300,NULL,2,NULL,1,0xFFFFFFFF,7,2,768,NULL,70,1,558,'bonus bAgi,2;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5580,'Red_Beret','Red Beret',4,20,NULL,100,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,0,559,'bonus bAllStats,3; bonus bMdef,3;',NULL,NULL);
@@ -2800,8 +2800,8 @@ REPLACE INTO `item_db` VALUES (5587,'Mosquito_Coil_1Use','Mosquito Coil',4,0,NUL
 #REPLACE INTO `item_db` VALUES (5589,'Leo_Diadem','Leo Diadem',4,20,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,566,'bonus bDex,2; bonus2 bSubEle,Ele_Fire,5; if(getrefine()>6) { bonus bFlee,10; bonus bAspdRate,3; autobonus "{ bonus bSplashRange,1; }",10,10000,BF_WEAPON,"{ specialeffect2 EF_ENHANCE; }"; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5590,'K_Poring_Cake_Cap','Poring Cake Hat',4,20,NULL,200,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,417,NULL,NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5591,'Desert_Prince','Desert Prince',4,20,NULL,100,NULL,1,NULL,1,0xFFFFFFFF,7,2,256,NULL,30,0,567,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (5592,'Sigrun\'s_Wings','Sigrun\'s Wings',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,80,0,568,'if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bStr,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||class==Job_Ninja||class==Job_Soul_Linker) bonus bInt,1; else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bDex,1; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,80; bonus bMaxSP,30; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5593,'Rabbit_Bonnet_','Rabbit Bonnet',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,7,2,768,NULL,1,1,549,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (5592,'Sigrun\'s_Wing','Sigrun\'s Wings',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,80,0,568,'if(BaseClass==Job_Swordman||BaseClass==Job_Merchant||BaseClass==Job_Thief||(BaseJob==Job_Taekwon&&Class!=Job_Soul_Linker)) bonus bStr,1; else if(BaseClass==Job_Mage||BaseClass==Job_Acolyte||class==Job_Ninja||class==Job_Soul_Linker) bonus bInt,1; else if(BaseClass==Job_Archer||BaseClass==Job_Gunslinger) bonus bDex,1; else if(BaseJob==Job_Novice||BaseJob==Job_SuperNovice) { bonus bMaxHP,80; bonus bMaxSP,30; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5593,'K_Rabbit_Bonnet','Rabbit Bonnet',4,20,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,7,2,768,NULL,1,1,549,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5594,'Donut_In_Mouth','Donut In Mouth',4,20,NULL,50,NULL,1,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,569,NULL,NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5595,'Eye_Of_Juno','Eye Of Juno',4,20,NULL,400,NULL,2,NULL,1,0xFFFFFFFF,7,2,256,NULL,1,1,570,'bonus bMdef,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5596,'4Leaf_Clover_In_Mouth','4Leaf Clover In Mouth',4,20,NULL,0,NULL,2,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,571,'bonus bMdef,2;',NULL,NULL);
@@ -2867,7 +2867,7 @@ REPLACE INTO `item_db` VALUES (5654,'Holy_Marching_Hat_J','Holy Marching Hat',4,
 #REPLACE INTO `item_db` VALUES (5656,'Scooter_Hat_J','Scooter Helmet',4,20,NULL,1000,NULL,7,NULL,1,0xFFFFFFFF,7,2,256,NULL,50,1,588,'bonus bUnbreakableHelm,0;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5657,'Antique_Pipe_J','Captain\'s Pipe',4,20,NULL,100,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,30,0,383,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (5658,'Imp_Hat','Imp Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,589,'bonus3 bAutoSpell,"SA_FLAMELAUNCHER",1,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (5659,'Sleeper_Hat','Sleeper Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (5659,'Sleepr_Hat','Sleeper Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,590,'bonus3 bAutoSpell,"SA_SEISMICWEAPON",1,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (5660,'Gryphon_Hat','Gryphon Hat',4,20,NULL,400,NULL,1,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,591,'bonus3 bAutoSpell,"SA_LIGHTNINGLOADER",1,5;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5661,'Red_Pirate_Bandana','Red Pirate Banada',4,0,NULL,0,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,10,1,592,'bonus bStr,1; bonus bDex,1; bonus bAspdRate,2; bonus bCastRate,-2; bonus3 bAutoSpell,"MO_EXTREMITYFIST",1,30;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (5662,'Libra_Crown','Libra Crown',4,10,NULL,300,NULL,3,NULL,0,0xFFFFFFFF,7,2,256,NULL,1,1,593,'bonus bDex,3;',NULL,NULL);
@@ -4253,7 +4253,7 @@ REPLACE INTO `item_db` VALUES (7852,'Pass_F2','Divx Player Raffle Ticket',3,20,N
 REPLACE INTO `item_db` VALUES (7853,'Pass_F3','iPod nano Raffle Ticket',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (7854,'Pass_CF','Comodo Festival Ticket',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (7855,'Heart','Heart',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (7856,'Girl_Bunch_Of_Flower','Girl\'s Bouquet',3,20,NULL,50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (7856,'Girl_Bunch_Of_Flower_','Girl\'s Bouquet',3,20,NULL,50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (7857,'Handmade_Kitty_Doll','Hand-made Kitty Doll',3,20,NULL,30,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (7858,'Dragonball_Yellow_','Dragonball Yellow',3,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (7859,'Game_Ticket','Game Ticket',3,20,NULL,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -4583,7 +4583,7 @@ REPLACE INTO `item_db` VALUES (11528,'Kanafeh','Kanafeh',0,1500,NULL,200,NULL,NU
 REPLACE INTO `item_db` VALUES (11529,'MAAMOUL_','Maamoul',0,500,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal 120,60;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (11530,'Jujube','Jujube',0,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal 30,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (11531,'Coffee','Coffee',0,10,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal 0,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (11701,'Girl_Bunch_Of_Flower_','Girl\'s Bouquet',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal rand(105,145),0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (11701,'Girl_Bunch_Of_Flower','Girl\'s Bouquet',0,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal rand(105,145),0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (11702,'Moon_Cookie','Moon Cookie',0,0,NULL,300,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (11703,'Mysterious_Blood','Mystery Blood',0,0,NULL,30,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal 0,rand(25,35);',NULL,NULL);
 REPLACE INTO `item_db` VALUES (11704,'KETUPAT_F','Ketupat',0,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'itemheal rand(70,90),0;',NULL,NULL);
@@ -4985,9 +4985,9 @@ REPLACE INTO `item_db` VALUES (12388,'Runstone_Crush','Rhydo Runestone For Appre
 REPLACE INTO `item_db` VALUES (12389,'Runstone_Storm','Pertz Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_STORMBLAST",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12390,'Runstone_Millennium','Verkana Runestone For Apprentice',11,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'/* if(strcharinfo(3)=="job3_rune02") { itemskill "RK_MILLENNIUMSHIELD",1; } */',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12391,'Lucky_Egg_C','Lucky Egg',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (12392,'Repair_A','Repair A',2,220,NULL,100,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(200,300),0; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12393,'Repair_B','Repair B',2,500,NULL,140,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(300,400),0; }',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12394,'Repair_C','Repair C',2,1100,NULL,180,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(400,500),0; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12392,'RepairA','Repair A',2,220,NULL,100,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(200,300),0; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12393,'RepairB','Repair B',2,500,NULL,140,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(300,400),0; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12394,'RepairC','Repair C',2,1100,NULL,180,NULL,NULL,NULL,NULL,0x00000400,8,2,NULL,NULL,NULL,NULL,NULL,'if ( checkmadogear() ) { itemheal rand(400,500),0; }',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12395,'Tantanmen','Tantan Noodle',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'pet 1519;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12396,'Fools_Day_Box','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'.@rnd = rand(1,10); if(.@rnd==1) itemskill "AL_TELEPORT",1; else if(.@rnd==2) itemskill "AL_TELEPORT",3; else if(.@rnd==3) percentheal 50,0; else if(.@rnd==4) percentheal 0,50; else if(.@rnd==5) end; else if(.@rnd==6) getitem 512,1; else if(.@rnd==7) itemskill "ALL_REVERSEORCISH",1; else if(.@rnd==8) specialeffect2 EF_MAPPILLAR2; else if(.@rnd==9) specialeffect2 EF_ANGEL2; else specialeffect2 EF_COIN;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12397,'Fools_Day_Box2','Gift Box?',11,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'.@rnd = rand(1,10); if(.@rnd==1) itemskill "TF_DETOXIFY",1; else if(.@rnd==2) itemskill "TF_PICKSTONE",1; else if(.@rnd==3) itemskill "BA_FROSTJOKER",1; else if(.@rnd==4) itemskill "DC_SCREAM",1; else if(.@rnd==5) end; else if(.@rnd==6) getitem 909,1; else if(.@rnd==7) itemskill "AL_RUWACH",1; else if(.@rnd==8) specialeffect2 EF_BEGINASURA; else if(.@rnd==9) specialeffect2 EF_MVP; else specialeffect2 EF_CURSEATTACK;',NULL,NULL);
@@ -4996,7 +4996,7 @@ REPLACE INTO `item_db` VALUES (12399,'Castle_Treasure_Box','Castle Treasure Box'
 REPLACE INTO `item_db` VALUES (12400,'Water_Of_Blessing_','Water Of Blessing',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12401,'Rune_Kn_Test_Int','Rune Kn Test Int',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_INCINT,300000,40;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12402,'29Fruit','29Fruit',2,0,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 5,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12403,'Lucky_Egg2','Lucky Egg2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (12403,'Lucky_Egg_C2','Lucky Egg2',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12404,'Acti_Potion','Acti Potion',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12405,'Underripe_Yggseed','Underripe Yggseed',2,20,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'percentheal 30,30; skilleffect "AL_BLESSING",0; sc_start SC_BLESSING,140000,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12406,'Psychic_ArmorS','Psychic ArmorS',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -5014,23 +5014,23 @@ REPLACE INTO `item_db` VALUES (12417,'Boost500','Boost500',2,100,NULL,50,NULL,NU
 REPLACE INTO `item_db` VALUES (12418,'Full_SwingK','Full SwingK',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_FULL_SWING_K,500000,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12419,'Mana_Plus','Mana Plus',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MANA_PLUS,500000,50;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12420,'Stamina_Up_M','Stamina Up M',2,100,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MUSTLE_M,500000,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12421,'Falmons_F','Falmons F',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LIFE_FORCE_F,500000,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12421,'Digestive_F','Falmons F',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LIFE_FORCE_F,500000,5;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12422,'HP_Increase_PotionS','HP Increase Potion (Small)',2,100,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,1; percentheal 1,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12423,'HP_Increase_PotionM','HP Increase Potion (Medium)',2,100,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,2; percentheal 2,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12424,'HP_Increase_PotionL','HP Increase Potion (Large)',2,100,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_PROMOTE_HEALTH_RESERCH,500000,1,3; percentheal 5,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12425,'SP_Increase_PotionS','SP Increase Potion (Small)',2,100,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,1; percentheal 0,2;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12426,'SP_Increase_PotionM','SP Increase Potion (Medium)',2,100,NULL,40,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,2; percentheal 0,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12427,'SP_Increase_PotionL','SP Increase Potion (Large)',2,100,NULL,80,NULL,NULL,NULL,NULL,0xFFFFFFFF,63,2,NULL,NULL,NULL,NULL,NULL,'sc_start2 SC_ENERGY_DRINK_RESERCH,500000,1,3; percentheal 0,8;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12428,'Concentrated_White_Potion_Z','Concentrated White Potion Z',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXTRACT_WHITE_POTION_Z,500000,20; heal 1000,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12429,'Savage_Full_Roast','Savage Full Roast',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SAVAGE_STEAK,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12430,'Cocktail_Warg_Blood','Cocktail Warg Blood',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_COCKTAIL_WARG_BLOOD,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12431,'Minor_Stew','Minor Stew',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MINOR_BBQ,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12432,'Siroma_Iced_Tea','Siroma Iced Tea',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SIROMA_ICE_TEA,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12433,'Drosera_Herb_Salad','Drosera Herb Salad',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DROCERA_HERB_STEAMED,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12434,'Petite_Tail_Noodles','Petite Tail Noodles',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_PUTTI_TAILS_NOODLES,300000,20;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12435,'Black_Mass','Black Mass',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_STOMACHACHE,60000,rand(5,10);',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12436,'Vitata_500','Vitata 500',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_VITATA_500,500000,0; itemheal 0,200;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12437,'Concentrated_Ceromain_Soup','Concentrated Ceromain Soup',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXTRACT_SALAMINE_JUICE,500000,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12428,'Enrich_White_PotionZ','Concentrated White Potion Z',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXTRACT_WHITE_POTION_Z,500000,20; heal 1000,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12429,'Savage_BBQ','Savage Full Roast',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SAVAGE_STEAK,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12430,'Wug_Blood_Cocktail','Cocktail Warg Blood',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_COCKTAIL_WARG_BLOOD,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12431,'Minor_Brisket','Minor Stew',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MINOR_BBQ,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12432,'Siroma_Icetea','Siroma Iced Tea',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_SIROMA_ICE_TEA,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12433,'Drocera_Herb_Stew','Drosera Herb Salad',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DROCERA_HERB_STEAMED,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12434,'Petti_Tail_Noodle','Petite Tail Noodles',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_PUTTI_TAILS_NOODLES,300000,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12435,'Black_Thing','Black Mass',2,NULL,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_STOMACHACHE,60000,rand(5,10);',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12436,'Vitata500','Vitata 500',0,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_VITATA_500,500000,0; itemheal 0,200;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12437,'Enrich_Celermine_Juice','Concentrated Ceromain Soup',2,10,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXTRACT_SALAMINE_JUICE,500000,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12438,'F_Giant_Fly_Wing','F Giant Fly Wing',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12439,'F_Battle_Manual','F Battle Manual',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12440,'F_Insurance','F Insurance',2,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -5173,7 +5173,7 @@ REPLACE INTO `item_db` VALUES (12578,'Rapid_Life_Water','Rapid Life Water',2,0,N
 REPLACE INTO `item_db` VALUES (12579,'Ring_Of_Valkyrie_Box','Ring Of Valkyrie Box',2,20,NULL,0,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12580,'Vending_Search_Scroll','Universal Catalog Silver',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12581,'Vending_Search_Scroll2','Universal Catalog Gold',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12591,'Vending_Search_Scroll3','Universal Catalog Bronze',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12591,'Uni_Catalog_Bz','Universal Catalog Bronze',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'searchstores 10,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12701,'Old_Blue_Box_F','Old Blue Box',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (12702,'Old_Bleu_Box','Old Navy Box',2,0,NULL,200,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getrandgroupitem(IG_BleuBox),1; getrandgroupitem(IG_BleuBox),1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12703,'Holy_Egg_2','Holy Egg',11,0,NULL,50,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
@@ -5194,7 +5194,7 @@ REPLACE INTO `item_db` VALUES (12716,'Indian_Rice_Cake','Indian Rice Cake',2,0,N
 REPLACE INTO `item_db` VALUES (12717,'Poison_Paralysis','Paralyze',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_PARALYSE,300000,0,10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12718,'Poison_Leech','Leech End',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_LEECHESEND,300000,0,10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12719,'Poison_Oblivion','Oblivion Curse',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_OBLIVIONCURSE,300000,0,10,0;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (12720,'Poison_Disheart','Disheart',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DEATHHURT,300000,0,10,0;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (12720,'Poison_Contamination','Disheart',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_DEATHHURT,300000,0,10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12721,'Poison_Numb','Toxin',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_TOXIN,300000,0,10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12722,'Poison_Fever','Pyrexia',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_PYREXIA,300000,0,10,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (12723,'Poison_Laughing','Magic Mushroom',0,2,NULL,100,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_MAGICMUSHROOM,300000,0,10,0;',NULL,NULL);
@@ -5562,8 +5562,8 @@ REPLACE INTO `item_db` VALUES (13517,'Yggdrasilberry_Box','Yggdrasil Berry Box',
 REPLACE INTO `item_db` VALUES (13518,'Weapon_Card_Scroll_Box','Weapon Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13558,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13519,'Armor_Card_Scroll_Box','Armor Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13559,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13520,'Helmet_Card_Scroll_Box','Helmet Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13560,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13521,'Garment_Card_Scroll_Box','Garment Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13561,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13522,'Shield_Card_Scroll_Box','Shield Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13562,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13521,'Hood_Card_Scroll_Box','Garment Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13561,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13522,'Hood_Card_Scroll_Box2','Shield Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13562,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13523,'Shoes_Card_Scroll_Box','Shoes Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13563,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13524,'Accy_Card_Scroll_Box','Accessory Card Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 13564,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13525,'Zeny_Scroll_Box','Zeny Pet Egg Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14508,1;',NULL,NULL);
@@ -5952,10 +5952,10 @@ REPLACE INTO `item_db` VALUES (13907,'Soft_Core_Set_Box','XM Softcore Set Box',1
 REPLACE INTO `item_db` VALUES (13908,'Deviruchi_Set_Box','XM Deviruchi Set Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5227,1; getitem 5228,1; getitem 5229,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13909,'MVP_Hunt_Box','MVP Hunting Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 7621,1; getitem 12210,1; getitem 12221,1; getitem 12214,3;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13910,'Brewing_Box','XM Brewing Set Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12204,10; getitem 12205,10; getitem 12206,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13911,'Christmas_Pet_Scroll','Christmas Pet Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (13912,'Pty_Blessing_Box','Party Blessing 10 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14588,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13913,'Pty_Inc_Agi_Box','Party Increase Agi 10 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14589,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13914,'Pty_Assumptio_Box','Party Assumptio 5 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14590,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13911,'Xmas_Pet_Scroll','Christmas Pet Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (13912,'Party_Blessing_Box','Party Blessing 10 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14588,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13913,'Party_Inc_Agi_Box','Party Increase Agi 10 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14589,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13914,'Party_Assumptio_Box','Party Assumptio 5 Scroll Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14590,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13915,'Love_Angel_Box','Love Angel Magic Powder Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 12287,604800;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13916,'Squirrel_Box','Squirrel Magic Powder Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 12288,604800;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13917,'Gogo_Box','Gogo Magic Powder Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 12289,604800;',NULL,NULL);
@@ -5977,21 +5977,21 @@ REPLACE INTO `item_db` VALUES (13932,'Sylph_Box','Sylph Box',18,20,NULL,10,NULL,
 REPLACE INTO `item_db` VALUES (13933,'Undine_Box','Undine Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 4350,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13934,'Salamander_Box','Salamander Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 4380,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13935,'Soul_Box','Soul Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 4388,4;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13936,'Noum_Box','Gnome Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 4335,4;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13936,'Noum_Bpx','Gnome Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 4335,4;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13937,'Robo_Eye_Box','Robo Eye Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5325,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13938,'Twin_Ribbon_Box','Maiden\'s Twin Ribbon Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5187,1;',NULL,NULL);
 #REPLACE INTO `item_db` VALUES (13939,'Diadem_Box','Diadem Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5313,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13940,'Siege_Tele_Scroll_Box','WoE Teleport Scroll 100 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14591,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13941,'TW_Valentine_Scroll','Taiwan Valentine Scroll',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (13941,'Valentine_Scroll_TW','Taiwan Valentine Scroll',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (13942,'Love_Angel_Box_1m','Love Angel Magic Powder Box 30 Days',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14009,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13943,'Squirrel_Box_1m','Squirrel Magic Powder Box 30 Days',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14010,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13944,'Gogo_Box_1m','Gogo Magic Powder Box 30 Days',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14011,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13945,'BRO_SM_Package','Brazil Swordsman Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2317,1; getitem 2106,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 2229,1; getitem 2266,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13946,'BRO_MG_Package','Brazil Magician Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2322,1; getitem 2102,1; getitem 2104,1; getitem 2504,1; getitem 4003,1; getitem 4077,1; getitem 2607,2; getitem 5027,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13947,'BRO_AC_Package','Brazil Acolyte Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2326,1; getitem 2104,1; getitem 2404,1; getitem 2504,1; getitem 4003,1; getitem 4100,1; getitem 2607,2; getitem 2217,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13948,'BRO_AR_Package','Brazil Archer package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2331,1; getitem 1716,1; getitem 2406,1; getitem 2504,1; getitem 4064,1; getitem 4102,1; getitem 2607,2; getitem 2285,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13949,'BRO_MC_Package','Brazil Merchant Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2315,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 5021,1;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13950,'BRO_TF_Package','Brazil Thief Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2336,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4097,1; getitem 4102,1; getitem 2607,2; getitem 2274,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13945,'Br_SwordPackage','Brazil Swordsman Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2317,1; getitem 2106,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 2229,1; getitem 2266,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13946,'Br_MagePackage','Brazil Magician Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2322,1; getitem 2102,1; getitem 2104,1; getitem 2504,1; getitem 4003,1; getitem 4077,1; getitem 2607,2; getitem 5027,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13947,'Br_AcolPackage','Brazil Acolyte Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2326,1; getitem 2104,1; getitem 2404,1; getitem 2504,1; getitem 4003,1; getitem 4100,1; getitem 2607,2; getitem 2217,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13948,'Br_ArcherPackage','Brazil Archer package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2331,1; getitem 1716,1; getitem 2406,1; getitem 2504,1; getitem 4064,1; getitem 4102,1; getitem 2607,2; getitem 2285,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13949,'Br_MerPackage','Brazil Merchant Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2315,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4003,1; getitem 4133,1; getitem 2607,2; getitem 5021,1;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13950,'Br_ThiefPackage','Brazil Thief Package',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 2336,1; getitem 2104,1; getitem 2406,1; getitem 2506,1; getitem 4097,1; getitem 4102,1; getitem 2607,2; getitem 2274,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13951,'Wasteland_Outlaw_Box','Western Outlaw Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13109,604800;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13952,'Lever_Action_Rifle_Box','Lever Action Rifle Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 13170,604800;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13953,'All_In_One_Ring_Box','All In One Ring Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'rentitem 2741,604800;',NULL,NULL);
@@ -6039,9 +6039,9 @@ REPLACE INTO `item_db` VALUES (13994,'Speed_Up_Potion_Box5','Speed Potion 5 Box'
 REPLACE INTO `item_db` VALUES (13995,'Speed_Up_Potion_Box10','Speed Potion 10 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12016,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13996,'Big_Bun_Box100','Big Bun 100 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14522,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (13997,'Big_Bun_Box500','Big Bun 500 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14522,500;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13998,'Giant_Flywing_Box500','Giant Fly Wing 500 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12212,500;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (13999,'Pill_Box100','Pill 100 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14523,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (14000,'Pill_Box500','Pill 500 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14523,500;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13998,'Giant_Fly_Wing_Box500','Giant Fly Wing 500 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 12212,500;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (13999,'Pill__Box100','Pill 100 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14523,100;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (14000,'Pill__Box500','Pill 500 Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14523,500;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14001,'Basic_Siege_Supply_Box','Recruit Siege Supply Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 11503,25; getitem 11504,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14002,'Adv_Siege_Supply_Box','Veteran Siege Supply Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 11503,50; getitem 11504,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14003,'Elite_Siege_Supply_Box','Elite Siege Supply Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 11503,100; getitem 11504,50;',NULL,NULL);
@@ -6343,7 +6343,7 @@ REPLACE INTO `item_db` VALUES (14300,'Mask_Of_Ifrit_Box','Mask Of Ifrit Box',18,
 REPLACE INTO `item_db` VALUES (14301,'Ifrit\'s_Ear_Box','Ears Of Ifrit Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5421,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14304,'Scuba_Mask_Box','Scuba Mask Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5397,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14314,'Phreeoni_Scroll_Box','Phreeoni Scroll Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14597,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (14315,'Ghostring_Scroll_Box','Ghostring Scroll Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14598,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (14315,'GhostringS_Box','Ghostring Scroll Box',2,NULL,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 14598,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14316,'July7_Scroll','July7 Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14317,'Bacsojin_Scroll','Bacsojin Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14343,'Spiked_Scarf_Box','Spiked Scarf Box',18,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 5462,1;',NULL,NULL);
@@ -6410,7 +6410,7 @@ REPLACE INTO `item_db` VALUES (14544,'B_Mdef_Potion','Big Magic Defense Potion',
 REPLACE INTO `item_db` VALUES (14545,'Battle_Manual_X3','Field Manual 300%',2,0,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_EXPBOOST,1800000,300;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (14546,'Fire_Cracker_Love','I Love You Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14547,'Fire_Cracker_Wday','Whiteday Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (14548,'Fire_Cracker_Valentine','Valentine\'s Day Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (14548,'Fire_Cracker_Vday','Valentine\'s Day Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14549,'Fire_Cracker_Bday','Birthday Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14550,'Fire_Cracker_Xmas','Xmas Firecracker',2,2,NULL,20,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (14551,'Str_Dish01_','Fried Grasshopper Legs',0,2,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'sc_start SC_STRFOOD,1200000,1; percentheal 5,0;',NULL,NULL);
@@ -6495,10 +6495,10 @@ REPLACE INTO `item_db` VALUES (16248,'Tiger_Arhat_Mask_Box','Tiger Arhat Mask Bo
 #16251,Gemini_Diadem_Box
 #16252,Gemini_Crown_Box
 REPLACE INTO `item_db` VALUES (16257,'Buddah_Scroll','Buddah Scroll',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (16258,'HD_Bradium_5_Box','HD Bradium 5 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6226,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (16259,'HD_Carnium_5_Box','HD Carnium 5 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6225,5;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (16260,'HD_Bradium_10_Box','HD Bradium 10 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6226,10;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (16261,'HD_Carnium_10_Box','HD Carnium 10 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6225,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (16258,'HD_Bradium_Box5','HD Bradium 5 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6226,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (16259,'HD_Carnium_Box5','HD Carnium 5 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6225,5;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (16260,'HD_Bradium_Box10','HD Bradium 10 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6226,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (16261,'HD_Carnium_Box10','HD Carnium 10 Box',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,'getitem 6225,10;',NULL,NULL);
 #16262,HD_Bradium_5_Box,
 #16263,HD_Carnium_5_Box,
 #16264,HD_Bradium_10_Box,
@@ -6507,7 +6507,7 @@ REPLACE INTO `item_db` VALUES (16261,'HD_Carnium_10_Box','HD Carnium 10 Box',2,2
 #16268,HE_Bubble_Gum_Box
 #16269,Cancer_Diadem_Box
 #16270,Cancer_Crown_Box,
-REPLACE INTO `item_db` VALUES (16304,'Evil_Incarnation','Evil Incarnation',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (16304,'Evil_Incarnation_Disable','Evil Incarnation',2,20,NULL,10,NULL,NULL,NULL,NULL,0xFFFFFFFF,7,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
 #16343,Leo_Crown_Box
 #16344,Leo_Diadem_Box
 #16345,Leo_Crown_Box
@@ -6577,14 +6577,14 @@ REPLACE INTO `item_db` VALUES (18002,'Dark_Cannon_Ball','Dark Cannon Ball',10,20
 REPLACE INTO `item_db` VALUES (18003,'Soul_Cannon_Ball','Soul Cannon Ball',10,200,NULL,10,120,NULL,NULL,NULL,0x00040400,8,2,32768,NULL,99,NULL,8,'bonus bAtkEle,Ele_Ghost;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18004,'Iron_Cannon_Ball','Iron Cannon Ball',10,500,NULL,10,250,NULL,NULL,NULL,0x00040400,8,2,32768,NULL,99,NULL,8,NULL,NULL,NULL);
 # More Bows
-REPLACE INTO `item_db` VALUES (18100,'Shooting_Star','Shooting Star',5,20,NULL,0,190,NULL,5,0,0x00080800,7,2,34,4,1,1,11,'bonus bLongAtkRate,20;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18100,'Shooting_Star_C','Shooting Star',5,20,NULL,0,190,NULL,5,0,0x00080800,7,2,34,4,1,1,11,'bonus bLongAtkRate,20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18101,'F_Bow_Of_Rudra_C','Rudra Bow',5,2,NULL,0,185,NULL,5,0,0x000A0848,7,2,34,4,0,0,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18102,'E_Bow_Of_Rudra_C','Rudra Bow',5,2,NULL,0,185,NULL,5,0,0x000A0848,7,2,34,4,0,0,11,'bonus bAtkEle,Ele_Holy; bonus bInt,5; skill "AL_CURE",1; skill "AL_HEAL",1; bonus2 bResEff,Eff_Poison,5000; bonus2 bResEff,Eff_Curse,5000; bonus2 bResEff,Eff_Silence,5000; bonus2 bResEff,Eff_Confusion,5000; bonus2 bResEff,Eff_Blind,5000;',NULL,NULL);
 # More Headgears
 REPLACE INTO `item_db` VALUES (18500,'Cheer_Scarf6','Cheer Scarf6',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (18501,'Cheer_Scarf8','Cheer Scarf8',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (18502,'Cheer_Scarf10','Cheer Scarf10',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1,NULL,1,0,369,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (18503,'Majestic_Devil','Small Devil Horns',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,1,0,562,'bonus bAtkRate,5; bonus bMatkRate,5; bonus bMaxHPRate,10; bonus bMaxSPRate,10;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18503,'Small_Horn_Of_Devil','Small Devil Horns',4,20,NULL,100,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,1,0,562,'bonus bAtkRate,5; bonus bMatkRate,5; bonus bMaxHPRate,10; bonus bMaxSPRate,10;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18505,'Umbala_Spirit','Umbala Spirit',4,0,NULL,200,NULL,1,NULL,1,0xFFFFFFFF,7,2,1,NULL,30,0,675,'bonus bVit,1;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18506,'Hattah_Black','Hattah Black',4,12000,NULL,4000,NULL,2,NULL,1,0xFFFFFFFF,7,2,769,NULL,1,1,676,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (18507,'Elven_Ears_','Elven Ears',4,20,NULL,100,NULL,0,NULL,1,0xFFFFFFFE,7,2,512,NULL,70,0,73,NULL,NULL,NULL);
@@ -6593,16 +6593,16 @@ REPLACE INTO `item_db` VALUES (18539,'Skull_Cap','Skull Cap',4,40,NULL,200,NULL,
 #
 REPLACE INTO `item_db` VALUES (18595,'Horn_Of_Ancient','Horn of Ancient',4,40,NULL,200,NULL,8,NULL,1,0xFFFFFFFF,7,2,256,NULL,50,1,757,'autobonus "{ bonus bBaseAtk,100; }",5,10000,0,"{ specialeffect2 EF_POTION_BERSERK; }";',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18596,'Sprout_Hat','Sprout Hat',4,20,NULL,200,NULL,4,NULL,0,0xFFFFFFFF,7,2,256,NULL,70,1,758,'skill "WZ_HEAVENDRIVE",3;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (18597,'Mercury_Riser','Mercury Riser',4,40,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,759,'bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18597,'Mercury_Helm','Mercury Riser',4,40,NULL,200,NULL,10,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,759,'bonus bAspdRate,3; bonus bCritical,3; if(getrefine() >= 7) { bonus bAspdRate,2; bonus bCritical,2; } if(getrefine() >= 9) { bonus bAspdRate,2; bonus bCritical,2; }',NULL,NULL);
 #
-REPLACE INTO `item_db` VALUES (18600,'Cat_Ear_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,761,'bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; }',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18600,'Cat_Ears_Beret','Cat Ear Beret',4,20,NULL,100,NULL,5,NULL,0,0xFFFFFFFF,7,2,256,NULL,0,1,761,'bonus bAtkRate,5; if(getrefine() > 5 && getrefine() <= 12) { bonus2 bAddRace,RC_DemiHuman,(getrefine() - 5); bonus2 bSubRace,RC_DemiHuman,(getrefine() - 5); bonus2 bAddRace,RC_Player,(getrefine() - 5); bonus2 bSubRace,RC_Player,(getrefine() - 5); } if(getrefine() > 12) { bonus2 bAddRace,RC_DemiHuman,7; bonus2 bAddRace,RC_Player,7; bonus2 bSubRace,RC_DemiHuman,7; bonus2 bSubRace,RC_Player,7; }',NULL,NULL);
 #
 REPLACE INTO `item_db` VALUES (18612,'White_Musang_Hat','White Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,770,'bonus bStr,2; bonus bVit,2; bonus bLuk,1; bonus bUnbreakableHelm,0;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (18613,'Black_Musang_Hat','Black Musang Hat',4,40,NULL,200,NULL,3,NULL,1,0xFFFFFFFF,7,2,256,NULL,0,1,771,'bonus bInt,2; bonus bDex,2; bonus bAgi,1; bonus bUnbreakableHelm,0;',NULL,NULL);
 #
-REPLACE INTO `item_db` VALUES (18620,'Heart_Eye_Patch','Heart Eyepatch',4,5,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,20,1,779,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (18620,'Heart_Eyepatch','Heart Eyepatch',4,5,NULL,200,NULL,2,NULL,0,0xFFFFFFFF,7,2,512,NULL,20,1,779,NULL,NULL,NULL);
 #
-REPLACE INTO `item_db` VALUES (18656,'Witch\'s_Pumpkin_Hat','Witch\'s Pumpkin Hat',4,20,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,717,'bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15;',NULL,NULL);
+REPLACE INTO `item_db` VALUES (18656,'Wit_Pumpkin_Hat','Witch\'s Pumpkin Hat',4,20,NULL,300,NULL,10,NULL,0,0xFFFFFFFF,7,2,256,NULL,20,1,717,'bonus bMdef,10; bonus bStr,2; bonus bInt,2; bonus2 bMagicAddRace,RC_Undead,15; bonus2 bMagicAddRace,RC_Demon,15;',NULL,NULL);
 
 # Costume System
 REPLACE INTO `item_db` VALUES (19500,'T_Mr_Smile','T Mr Smile',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,6144,NULL,0,0,65,'bonus bStr,2;',NULL,NULL);
@@ -6610,5 +6610,5 @@ REPLACE INTO `item_db` VALUES (19501,'T_Spinx_Helm','T Spinx Helm',4,0,NULL,0,NU
 REPLACE INTO `item_db` VALUES (19504,'T_Sunglasses','T Sunglasses',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,2048,NULL,0,0,12,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (19505,'T_Cigarette','T Cigarette',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,4096,NULL,0,0,54,NULL,NULL,NULL);
 REPLACE INTO `item_db` VALUES (19506,'T_Valkyrie_Feather_Band','T Valkyrie Feather Band',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1024,NULL,0,1,300,NULL,NULL,NULL);
-REPLACE INTO `item_db` VALUES (19507,'Clear_Sun','Clear Sun',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1024,NULL,1,0,654,NULL,NULL,NULL);
+REPLACE INTO `item_db` VALUES (19507,'Fine_Sun','Clear Sun',4,0,NULL,0,NULL,0,NULL,0,0xFFFFFFFF,7,2,1024,NULL,1,0,654,NULL,NULL,NULL);
 

Datei-Diff unterdrückt, da er zu groß ist
+ 216 - 211
sql-files/item_db_re.sql


+ 15 - 15
sql-files/logs.sql

@@ -178,21 +178,21 @@ CREATE TABLE IF NOT EXISTS `picklog` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
   `map` varchar(11) NOT NULL default '',
   `bound` tinyint(1) unsigned NOT NULL default '0',

+ 90 - 90
sql-files/main.sql

@@ -70,21 +70,21 @@ CREATE TABLE IF NOT EXISTS `auction` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
   PRIMARY KEY  (`auction_id`)
 ) ENGINE=MyISAM;
@@ -165,21 +165,21 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
@@ -558,21 +558,21 @@ CREATE TABLE IF NOT EXISTS `guild_storage` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',
@@ -660,21 +660,21 @@ CREATE TABLE IF NOT EXISTS `inventory` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `expire_time` int(11) unsigned NOT NULL default '0',
   `favorite` tinyint(3) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
@@ -762,21 +762,21 @@ CREATE TABLE IF NOT EXISTS `mail_attachments` (
   `card1` smallint(5) unsigned NOT NULL DEFAULT '0',
   `card2` smallint(5) unsigned NOT NULL DEFAULT '0',
   `card3` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_id0` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_val0` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `option_id1` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_val1` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `option_id2` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_val2` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `option_id3` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_val3` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `option_id4` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_val4` smallint(5) unsigned NOT NULL DEFAULT '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL DEFAULT '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL DEFAULT '0',
   `bound` tinyint(1) unsigned NOT NULL DEFAULT '0',
     PRIMARY KEY (`id`,`index`)
@@ -1004,21 +1004,21 @@ CREATE TABLE IF NOT EXISTS `storage` (
   `card1` smallint(5) unsigned NOT NULL default '0',
   `card2` smallint(5) unsigned NOT NULL default '0',
   `card3` smallint(5) unsigned NOT NULL default '0',
-  `option_id0` smallint(5) unsigned NOT NULL default '0',
-  `option_val0` smallint(5) unsigned NOT NULL default '0',
-  `option_parm0` tinyint(3) unsigned NOT NULL default '0',
-  `option_id1` smallint(5) unsigned NOT NULL default '0',
-  `option_val1` smallint(5) unsigned NOT NULL default '0',
-  `option_parm1` tinyint(3) unsigned NOT NULL default '0',
-  `option_id2` smallint(5) unsigned NOT NULL default '0',
-  `option_val2` smallint(5) unsigned NOT NULL default '0',
-  `option_parm2` tinyint(3) unsigned NOT NULL default '0',
-  `option_id3` smallint(5) unsigned NOT NULL default '0',
-  `option_val3` smallint(5) unsigned NOT NULL default '0',
-  `option_parm3` tinyint(3) unsigned NOT NULL default '0',
-  `option_id4` smallint(5) unsigned NOT NULL default '0',
-  `option_val4` smallint(5) unsigned NOT NULL default '0',
-  `option_parm4` tinyint(3) unsigned NOT NULL default '0',
+  `option_id0` smallint(5) NOT NULL default '0',
+  `option_val0` smallint(5) NOT NULL default '0',
+  `option_parm0` tinyint(3) NOT NULL default '0',
+  `option_id1` smallint(5) NOT NULL default '0',
+  `option_val1` smallint(5) NOT NULL default '0',
+  `option_parm1` tinyint(3) NOT NULL default '0',
+  `option_id2` smallint(5) NOT NULL default '0',
+  `option_val2` smallint(5) NOT NULL default '0',
+  `option_parm2` tinyint(3) NOT NULL default '0',
+  `option_id3` smallint(5) NOT NULL default '0',
+  `option_val3` smallint(5) NOT NULL default '0',
+  `option_parm3` tinyint(3) NOT NULL default '0',
+  `option_id4` smallint(5) NOT NULL default '0',
+  `option_val4` smallint(5) NOT NULL default '0',
+  `option_parm4` tinyint(3) NOT NULL default '0',
   `expire_time` int(11) unsigned NOT NULL default '0',
   `bound` tinyint(3) unsigned NOT NULL default '0',
   `unique_id` bigint(20) unsigned NOT NULL default '0',

+ 146 - 21
sql-files/mob_db_re.sql

@@ -1017,12 +1017,12 @@ REPLACE INTO `mob_db_re` VALUES (1878,'E_SHINING_PLANT','Shining Plant','Mystic
 REPLACE INTO `mob_db_re` VALUES (1879,'ECLIPSE_P','Eclipse Pet','Eclipse',6,1800,0,0,0,1,20,26,0,40,1,36,6,0,11,80,10,12,1,2,60,0x6203695,200,1456,456,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 
 # Moscovia
-REPLACE INTO `mob_db_re` VALUES (1880,'WOOD_GOBLIN','Wood Goblin','Leshij',81,5499,1,1106,1245,1,193,208,144,12,73,19,56,15,56,25,10,12,1,3,62,0x81,320,2304,840,360,0,0,0,0,0,0,0,2719,5,7203,4000,7201,2000,907,2000,916,500,7032,500,574,50,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (1881,'LES','Les','Lesavka',82,6216,1,1205,1356,1,270,300,123,30,63,20,35,25,52,30,10,12,1,3,82,0x1089,230,1728,720,576,0,0,0,0,0,0,0,7100,2000,511,1000,711,1000,905,2500,2270,1,521,500,510,50,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (1882,'VAVAYAGA','Baba Yaga','Baba-Yaga',87,6498,1,1188,1337,2,282,353,63,60,69,45,30,60,51,35,10,12,1,7,21,0x3885,270,1536,600,420,0,0,0,0,0,0,0,7099,1000,7762,5000,1630,10,7226,150,539,1500,519,1500,580,1500,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (1883,'UZHAS','Uzhas','Kikimora',85,7140,1,1294,1455,1,271,306,49,8,69,14,41,30,55,20,10,12,1,7,61,0x3885,200,576,672,384,0,0,0,0,0,0,0,520,900,1573,5,621,100,522,100,918,3500,579,1500,603,3,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (1884,'MAVKA','Mavka','Mavka',84,5421,1,1253,1530,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,1572,5,629,300,707,300,710,50,747,1500,748,300,510,3000,0,0,0,0,0,0);
-REPLACE INTO `mob_db_re` VALUES (1885,'GOPINICH','Gopinich','Gopinich',97,1120500,1,714240,580320,3,1988,3849,355,121,127,102,143,102,152,76,10,12,2,2,62,0x6283695,150,1536,864,432,357120,607,5500,617,5000,617,5000,617,4000,2621,200,12080,1000,1737,100,1417,5,7444,5000,5007,1,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (1880,'WOOD_GOBLIN','Wood Goblin','Leshij',81,5499,1,1106,1245,1,193,208,144,12,73,19,56,15,56,25,10,12,1,3,62,0x81,320,2304,840,360,0,0,0,0,0,0,0,2719,5,7203,4000,7201,2000,907,2000,916,500,7032,500,574,50,0,0,0,0,27157,1);
+REPLACE INTO `mob_db_re` VALUES (1881,'LES','Les','Lesavka',82,6216,1,1205,1356,1,270,300,123,30,63,20,35,25,52,30,10,12,1,3,82,0x1089,230,1728,720,576,0,0,0,0,0,0,0,7100,2000,511,1000,711,1000,905,2500,2270,1,521,500,510,50,0,0,0,0,27158,1);
+REPLACE INTO `mob_db_re` VALUES (1882,'VAVAYAGA','Baba Yaga','Baba-Yaga',87,6498,1,1188,1337,2,282,353,63,60,69,45,30,60,51,35,10,12,1,7,21,0x3885,270,1536,600,420,0,0,0,0,0,0,0,7099,1000,7762,5000,1630,10,7226,150,539,1500,519,1500,580,1500,0,0,0,0,27160,1);
+REPLACE INTO `mob_db_re` VALUES (1883,'UZHAS','Uzhas','Kikimora',85,7140,1,1294,1455,1,271,306,49,8,69,14,41,30,55,20,10,12,1,7,61,0x3885,200,576,672,384,0,0,0,0,0,0,0,520,900,1573,5,621,100,522,100,918,3500,579,1500,603,3,0,0,0,0,27159,1);
+REPLACE INTO `mob_db_re` VALUES (1884,'MAVKA','Mavka','Mavka',84,5421,1,1253,1530,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,1572,5,629,300,707,300,710,50,747,1500,748,300,510,3000,0,0,0,0,27161,1);
+REPLACE INTO `mob_db_re` VALUES (1885,'GOPINICH','Gopinich','Gopinich',97,1120500,1,714240,580320,3,1988,3849,355,121,127,102,143,102,152,76,10,12,2,2,62,0x6283695,150,1536,864,432,357120,607,5500,617,5000,617,5000,617,4000,2621,200,12080,1000,1737,100,1417,5,7444,5000,5007,1,0,0,0,0,27162,1);
 REPLACE INTO `mob_db_re` VALUES (1886,'G_MAVKA','Mavka','Mavka',84,5421,1,0,0,7,263,323,98,58,65,31,50,35,81,30,10,12,1,3,62,0x3885,170,1536,504,360,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 
 # Additional Monsters
@@ -2345,7 +2345,7 @@ REPLACE INTO `mob_db_re` VALUES (3074,'TIMEHOLDER','Time Holder','Time Holder',1
 #3122,CHARLESTON1
 #3123,CHARLESTON2
 #3124,CHARLESTON3
-REPLACE INTO `mob_db_re` VALUES (3125,'STEP','Step','Step',130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,234894485,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3125,'STEP','Step','Step',130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,0x2000000,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 #3126,ROCK_STEP
 #3127,KICK_STEP
 #3128,KICK_AND_KICK
@@ -2389,8 +2389,8 @@ REPLACE INTO `mob_db_re` VALUES (3125,'STEP','Step','Step',130,55403,0,3088,2392
 #3166,M_E_DEVILING
 #3167,E_POPORING_CRO
 #3168,POURING_SEA_FES
-REPLACE INTO `mob_db_re` VALUES (3169,'J_REB_SHECIL1','Shooting Target','Shooting Target',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,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 (3170,'J_REB_SHECIL2','Shooting Target','Shooting Target',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,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 (3169,'J_REB_SHECIL1','Shooting Target','Shooting Target',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,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 (3170,'J_REB_SHECIL2','Shooting Target','Shooting Target',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
 #3171,EVENT_MONEMUS01
 #3172,EVENT_MONEMUS02
 #3173,EVENT_FIREFOX
@@ -2410,17 +2410,17 @@ REPLACE INTO `mob_db_re` VALUES (3170,'J_REB_SHECIL2','Shooting Target','Shootin
 #3187,E2_G_S_NYDHOG
 #3188,E2_FELOCK
 #3189,WOLF_MOON
-#3190,MM_SARAH
-#3191,MM_M_GIGAN1
-#3192,MM_M_GIGAN2
-#3193,MM_M_GIGAN3
-#3194,MM_L_GIGAN1
-#3195,MM_L_GIGAN2
-#3196,MM_L_GIGAN3
-#3197,MM_M_GARGOYLE
-#3198,MM_M_GALION
-#3199,MM_M_MUTANT_DRAGON
-#3200,MM_M_CHIMERA
+REPLACE INTO `mob_db_re` VALUES (3190,'MM_SARAH','Sarah','Sarah Irene',160,100000000,1,0,0,12,1090,2755,276,255,43,161,6,188,225,136,10,12,0,0,20,0x87700A4,2000,500,500,0,0,0,0,0,0,0,0,15121,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4610,1);
+REPLACE INTO `mob_db_re` VALUES (3191,'MM_M_GIGAN1','Gigantes','Gigantes',160,6653400,1,0,1,2,4635,4755,64,112,156,151,30,62,265,21,10,12,1,6,47,0x62D3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3192,'MM_M_GIGAN2','Gigantes','Gigantes',160,9870000,1,0,0,2,5128,5217,89,175,212,138,43,21,227,15,10,12,1,6,47,0x62A3885,250,500,500,600,0,0,0,0,0,0,0,15121,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3193,'MM_M_GIGAN3','Ancient Medium Gigantes','Ancient Medium Gigantes',160,1126300,1,0,0,2,3967,4132,113,155,121,125,45,35,271,15,10,12,1,6,47,0x6283885,300,500,500,600,0,0,0,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 (3194,'MM_L_GIGAN1','Large Gigantes','Large Gigantes',160,2482000,1,0,0,2,4172,4254,55,177,135,135,12,72,220,91,10,12,2,6,47,0x62D3885,200,500,500,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);
+REPLACE INTO `mob_db_re` VALUES (3195,'MM_L_GIGAN2','Large Gigantes','Large Gigantes',160,2784175,1,0,0,2,3641,3757,71,140,102,119,18,45,275,71,10,12,2,6,47,0x62A3885,200,500,500,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);
+REPLACE INTO `mob_db_re` VALUES (3196,'MM_L_GIGAN3','Ancient Gigantes','Ancient Gigantes',160,12063464,1,0,0,2,8957,9018,48,190,203,141,1,66,355,103,10,12,2,6,47,0x6283885,330,800,800,500,0,0,0,0,0,0,0,6803,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 (3197,'MM_M_GARGOYLE','Gargoyle','Mutant Gargoyle',150,256780,1,0,0,9,712,801,124,43,147,110,66,57,191,70,10,12,1,6,64,0x2002085,200,1020,720,384,0,0,0,0,0,0,0,912,1940,1039,250,1746,3,0,0,2619,1,1769,1000,757,119,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3198,'MM_M_GALION','Galion','Mutant Galion',150,293165,1,0,0,1,801,878,166,71,133,142,71,45,166,45,10,12,1,2,44,0x020108F,150,864,624,360,0,0,0,0,0,0,0,7564,1500,919,1500,996,5,2531,3,0,0,0,0,0,0,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3199,'MM_M_MUTANT_DRAGON','Mutant Dragon','Wicked Mutant Dragon',150,324891,1,0,0,4,1176,1274,185,86,175,161,66,68,201,35,10,12,2,9,43,0x0203695,250,1280,1080,240,0,0,0,0,0,0,0,7054,2425,1035,250,1036,250,930,250,1559,50,7296,750,2527,25,0,0,0,0,0,0);
+REPLACE INTO `mob_db_re` VALUES (3200,'MM_M_CHIMERA','Wicked Chimera','Wicked Chimera',150,301158,1,0,0,1,1029,1177,199,10,166,175,110,88,188,85,10,12,2,2,63,0x0203695,200,772,672,360,0,0,0,0,0,0,0,7054,2668,1048,1250,568,500,1306,1,7295,750,1364,1,984,80,0,0,0,0,0,0);
 #REPLACE INTO `mob_db_re` VALUES (3201,'LUCKYCASE','Poring','Poring',1,60,1,27,20,1,8,9,2,5,6,1,1,0,6,5,10,12,1,3,21,0x83,400,1872,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 (3202,'ORGANIC_JAKK','Organic Pumpkin','Organic Pumpkin',10,40,1,20,13,1,100,100,160,99,1,1,1,1,999,1,0,0,0,3,21,0x4370001,200,0,0,0,0,0,0,0,0,0,0,6804,5000,6804,5000,6804,1000,2267,100,1062,1000,664,100,546,1000,12192,100,0,0,0,0);
 REPLACE INTO `mob_db_re` VALUES (3203,'INORGANIC_JAKK','Inorganic Pumpkin','Inorganic Pumpkin',10,40,1,20,13,1,100,100,160,99,1,1,1,1,999,1,0,0,0,3,21,0x4370001,200,0,0,0,0,0,0,0,0,0,0,6805,5000,6805,5000,6805,1000,2267,100,1062,1000,664,100,546,1000,12192,100,0,0,0,0);
@@ -3127,7 +3127,12 @@ REPLACE INTO `mob_db_re` VALUES (3508,'DR_EGGRING_G','Eggring','Eggring',20,220,
 #3901,MD_ORK_HERO
 #3902,MD_ORC_LORD
 #3903,MD_ORC_FLOWER
-
+#3904,DUCKLING
+#3905,BIG_DUCKLING
+#3906,IA_LOLI_RURI
+#3907,IA_TEDDY_BEAR
+#3908,IA_MIYABI_NINGYO
+#3909,IA_MARIONETTE
 #3910,E_EMPEL_1
 #3911,E_GIBBET
 #3912,E_LOLI_RURI
@@ -3166,4 +3171,124 @@ REPLACE INTO `mob_db_re` VALUES (3508,'DR_EGGRING_G','Eggring','Eggring',20,220,
 #3945,JP_E_MONSTER_103
 #3946,JP_E_MONSTER_104
 #3947,JP_E_MONSTER_105
+#3948,ORC_WARRIOR_MJ
+#3949,ORC_LADY_MJ
+#3950,ORC_BABY_MJ
+#3951,HIGH_ORC_MJ
+#3952,ORC_ARCHER_MJ
+#3953,ORC_HERO_MJ
+#3954,ORC_LORD_MJ
+#3955,E_SAVAGE
+#3956,E_ELDER_WILOW
+#3957,HORNET_MJ
+#3958,MANTIS_MJ
+#3959,ARGOS_MJ
+#3960,MISTRESS_MJ
+#3961,BIGFOOT_MJ
+#3962,SNAKE_MJ
+#3963,WOLF_MJ
+#3964,EDDGA_MJ
+#3965,FRILLDORA_MJ
+#3966,SANDMAN_MJ
+#3967,HODE_MJ
+#3968,PHREEONI_MJ
+#3969,MD_RED_MUSHROOM
+#3970,MD_BLACK_MUSHROOM
+#3971,SKELION
+#3972,MD_THIEF_BUG__
+#3973,MD_THIEF_BUG
+#3974,MD_THIEF_BUG_EGG
+#3975,MD_GOLDEN_BUG
+#3976,EIRA_BRZ
+#3977,AB_MOB_051
+#3978,AB_MOB_052
+#3979,AB_MOB_053
+#3980,AB_MOB_054
+#3981,AB_MOB_055
+#3982,AB_MOB_056
+#3983,AB_MOB_057
+#3984,AB_MOB_058
+#3985,AB_MOB_059
+#3986,AB_MOB_060
+#3987,AB_MOB_061
+#3988,AB_MOB_062
+#3989,AB_MOB_063
+#3990,AB_MOB_064
+#3991,AB_MOB_065
+#3992,AB_MOB_066
+#3993,AB_MOB_067
+#3994,AB_MOB_068
+#3995,AB_MOB_069
+#3996,AB_MOB_070
+#3997,AB_MOB_071
+#3998,AB_MOB_072
+
+# New Monster Range
+#20021,AB_MOB_073
+#20022,AB_MOB_074
+#20023,AB_MOB_075
+#20024,AB_MOB_076
+#20025,JP_CM_MOB_001
+#20026,JP_CM_MOB_002
+#20027,JP_CM_MOB_003
+#20028,JP_CM_MOB_004
+#20029,JP_CM_MOB_005
+#20030,JP_CM_MOB_006
+#20031,JP_CM_MOB_007
+#20032,JP_CM_MOB_008
+#20033,JP_CM_MOB_009
+#20034,JP_CM_MOB_010
+#20035,JP_CM_MOB_011
+#20036,JP_CM_MOB_012
+#20037,JP_CM_MOB_013
+#20038,JP_CM_MOB_014
+#20039,JP_CM_MOB_015
+#20040,JP_CM_MOB_016
+#20041,JP_CM_MOB_017
+#20042,JP_CM_MOB_018
+#20043,JP_CM_MOB_019
+#20044,JP_CM_MOB_020
+#20045,JP_CM_MOB_021
+#20046,JP_CM_MOB_022
+#20047,JP_CM_MOB_023
+#20048,JP_CM_MOB_024
+#20049,JP_CM_MOB_025
+#20050,JP_CM_MOB_026
+#20051,JP_CM_MOB_027
+#20052,JP_CM_MOB_028
+#20053,JP_CM_MOB_029
+#20054,JP_CM_MOB_030
+#20055,JP_CM_MOB_031
+#20056,JP_CM_MOB_032
+#20057,JP_CM_MOB_033
+#20058,JP_CM_MOB_034
+#20059,JP_CM_MOB_035
+#20060,JP_CM_MOB_036
+#20061,EVT_BAPHOMET
+#20062,EVT_BAPHO_JR
+#20063,EVT_V_WOLF
+#20064,EVT_ECLIPSE
+#20065,EVT_VOCAL
+#20066,EVT_UNGOLIANT
+#20067,EVT_GEOGRAPHER
+#20068,EVT_MANTIS
+#20069,EVT_GRIZZLY
+#20070,EVT_KINDOFBEETLE
+#20071,EVT_BIGFOOT
+#20072,EVT_COCO
+#20073,E_SIROMA
+#20074,E_MYSTCASE
+#20075,E_X_PORING
+#20076,MD_MAYA
+#20077,MD_DENIRO
+#20078,MD_VITATA
+#20079,MD_ANDRE
+#20080,MD_PIERE
+#20081,MD_IZ_COELACANTH
+#20082,MD_IZ_MARSE
+#20083,MD_IZ_MERMAN
+#20084,MD_IZ_OBEAUNE
+#20085,MD_IZ_CORNUTUS
+#20086,RED_ERUMA_MJ
+#20087,SIORAVA_MJ
 

+ 118 - 0
sql-files/upgrades/upgrade_20171001.sql

@@ -0,0 +1,118 @@
+ALTER TABLE `auction`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+
+ALTER TABLE `cart_inventory`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+
+ALTER TABLE `guild_storage`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+
+ALTER TABLE `auction`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+
+ALTER TABLE `inventory`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+	
+ALTER TABLE `mail_attachments`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;
+
+ALTER TABLE `storage`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;

+ 16 - 0
sql-files/upgrades/upgrade_20171001_logs.sql

@@ -0,0 +1,16 @@
+ALTER TABLE `picklog`
+	CHANGE COLUMN `option_id0` `option_id0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `card3`,
+	CHANGE COLUMN `option_val0` `option_val0` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id0`,
+	CHANGE COLUMN `option_parm0` `option_parm0` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val0`,
+	CHANGE COLUMN `option_id1` `option_id1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm0`,
+	CHANGE COLUMN `option_val1` `option_val1` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id1`,
+	CHANGE COLUMN `option_parm1` `option_parm1` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val1`,
+	CHANGE COLUMN `option_id2` `option_id2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm1`,
+	CHANGE COLUMN `option_val2` `option_val2` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id2`,
+	CHANGE COLUMN `option_parm2` `option_parm2` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val2`,
+	CHANGE COLUMN `option_id3` `option_id3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm2`,
+	CHANGE COLUMN `option_val3` `option_val3` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id3`,
+	CHANGE COLUMN `option_parm3` `option_parm3` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val3`,
+	CHANGE COLUMN `option_id4` `option_id4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_parm3`,
+	CHANGE COLUMN `option_val4` `option_val4` SMALLINT(5) NOT NULL DEFAULT '0' AFTER `option_id4`,
+	CHANGE COLUMN `option_parm4` `option_parm4` TINYINT(3) NOT NULL DEFAULT '0' AFTER `option_val4`;

+ 2 - 0
sql-files/upgrades/upgrade_20171019.sql

@@ -0,0 +1,2 @@
+INSERT INTO `skill` (`char_id`, `id`, `lv`, `flag`)
+  SELECT `char_id`, 5065, 1, 0 FROM `char` WHERE `father` > 0 OR `mother` > 0;

+ 8 - 39
src/char/CMakeLists.txt

@@ -1,7 +1,7 @@
 #
 # setup
 #
-set( SERVER_CHAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}  CACHE INTERNAL "" )
+set( CHAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}  CACHE INTERNAL "" )
 
 
 #
@@ -9,44 +9,11 @@ set( SERVER_CHAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}  CACHE INTERNAL "" )
 #
 if( BUILD_SERVERS )
 message( STATUS "Creating target char-server" )
-set( CHAR_HEADERS
-	"${SERVER_CHAR_SOURCE_DIR}/char.h"
-	"${SERVER_CHAR_SOURCE_DIR}/char_clif.h"
-	"${SERVER_CHAR_SOURCE_DIR}/char_cnslif.h"
-	"${SERVER_CHAR_SOURCE_DIR}/char_logif.h"
-	"${SERVER_CHAR_SOURCE_DIR}/char_mapif.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_auction.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_clan.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_elemental.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_guild.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_homun.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_mail.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_mercenary.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_party.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_pet.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_quest.h"
-	"${SERVER_CHAR_SOURCE_DIR}/int_storage.h"
-	"${SERVER_CHAR_SOURCE_DIR}/inter.h"
-	)
-set( CHAR_SOURCES
-	"${SERVER_CHAR_SOURCE_DIR}/char.c"
-	"${SERVER_CHAR_SOURCE_DIR}/char_clif.c"
-	"${SERVER_CHAR_SOURCE_DIR}/char_cnslif.c"
-	"${SERVER_CHAR_SOURCE_DIR}/char_logif.c"
-	"${SERVER_CHAR_SOURCE_DIR}/char_mapif.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_auction.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_clan.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_elemental.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_guild.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_homun.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_mail.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_mercenary.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_party.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_pet.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_quest.c"
-	"${SERVER_CHAR_SOURCE_DIR}/int_storage.c"
-	"${SERVER_CHAR_SOURCE_DIR}/inter.c"
-	)
+file(GLOB CHAR_HEADERS ${CHAR_SOURCE_DIR}/*.h)
+file(GLOB CHAR_SOURCES_C ${CHAR_SOURCE_DIR}/*.c)
+file(GLOB CHAR_SOURCES_CXX ${CHAR_SOURCE_DIR}/*.cpp)
+set(CHAR_SOURCES ${CHAR_SOURCES_C} ${CHAR_SOURCES_CXX})
+#message( STATUS "CHAR_SOURCES="${CHAR_SOURCES})
 set( DEPENDENCIES common )
 set( LIBRARIES ${GLOBAL_LIBRARIES} )
 set( INCLUDE_DIRS ${GLOBAL_INCLUDE_DIRS} ${COMMON_BASE_INCLUDE_DIRS} )
@@ -55,10 +22,12 @@ set( SOURCE_FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} ${CHAR_HEADERS} ${CHA
 source_group( common FILES ${COMMON_BASE_HEADERS} ${COMMON_HEADERS} )
 source_group( char FILES ${CHAR_HEADERS} ${CHAR_SOURCES} )
 include_directories( ${INCLUDE_DIRS} )
+
 add_executable( char-server ${SOURCE_FILES} )
 add_dependencies( char-server ${DEPENDENCIES} )
 target_link_libraries( char-server ${LIBRARIES} ${DEPENDENCIES} )
 set_target_properties( char-server PROPERTIES COMPILE_FLAGS "${DEFINITIONS}" )
+
 if( INSTALL_COMPONENT_RUNTIME )
 	cpack_add_component( Runtime_charserver DESCRIPTION "char-server" DISPLAY_NAME "char-server" GROUP Runtime )
 	install( TARGETS char-server

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.