Selaa lähdekoodia

Merge remote-tracking branch 'upstream/master' into refactor/cmake

Vincent Stumpf 1 vuosi sitten
vanhempi
commit
f4c9ed691c

+ 4 - 0
3rdparty/httplib/httplib.vcxproj

@@ -98,6 +98,7 @@
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -112,6 +113,7 @@
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -128,6 +130,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -146,6 +149,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 4 - 0
3rdparty/libconfig/libconfig.vcxproj

@@ -108,6 +108,7 @@
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -122,6 +123,7 @@
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_LIB;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -138,6 +140,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -156,6 +159,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>YY_USE_CONST;LIBCONFIG_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 4 - 0
3rdparty/rapidyaml/ryml.vcxproj

@@ -103,6 +103,7 @@
       <PreprocessorDefinitions>WIN32;_WINDOWS;CMAKE_INTDIR="Debug";_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ObjectFileName>$(IntDir)</ObjectFileName>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -138,6 +139,7 @@
       <PreprocessorDefinitions>WIN32;_WINDOWS;CMAKE_INTDIR="Debug";_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ObjectFileName>$(IntDir)</ObjectFileName>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;CMAKE_INTDIR=\"Debug\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -173,6 +175,7 @@
       <DebugInformationFormat>
       </DebugInformationFormat>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -208,6 +211,7 @@
       <DebugInformationFormat>
       </DebugInformationFormat>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <ResourceCompile>
       <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions>

+ 4 - 0
3rdparty/yaml-cpp/yaml-cpp.vcxproj

@@ -97,6 +97,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\yaml-cpp\src\;</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>YAML_CPP_STATIC_DEFINE;WIN32;_WINDOWS;_DEBUG;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -109,6 +110,7 @@
       <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
       <PreprocessorDefinitions>YAML_CPP_STATIC_DEFINE;WIN32;_WINDOWS;_DEBUG;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -122,6 +124,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\yaml-cpp\src\;</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>YAML_CPP_STATIC_DEFINE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -139,6 +142,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\yaml-cpp\src\;</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>YAML_CPP_STATIC_DEFINE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>

+ 3 - 0
conf/maps_athena.conf

@@ -1607,5 +1607,8 @@ map: 1@vrpop
 map: 2@vrpop
 map: 3@vrpop
 
+// Depth biosphere 2nd floor
+map: bl_depth2
+
 //------------------------- Clone Maps ---------------------------
 //------------------------- Extra Maps ---------------------------

BIN
db/map_cache.dat


+ 1 - 0
db/map_index.txt

@@ -1239,6 +1239,7 @@ t_garden
 1@vrpop
 2@vrpop
 3@vrpop
+bl_depth2
 
 //======================================================================================
 // - Other/Extra maps -

+ 542 - 54
db/re/item_combos.yml

@@ -20081,7 +20081,6 @@ Body:
           - Ramor_Shield_Undead
     Script: |
       bonus2 bSubRace,RC_DemiHuman,getequiprefinerycnt(EQI_GARMENT);
-      bonus2 bSubRace,RC_Player_Human,getequiprefinerycnt(EQI_GARMENT);
       bonus2 bAddEle,Ele_Undead,getequiprefinerycnt(EQI_HAND_L);
       bonus2 bMagicAddEle,Ele_Undead,getequiprefinerycnt(EQI_HAND_L);
   - Combos:
@@ -40554,14 +40553,6 @@ Body:
     Script: |
       bonus bHealPower,30;
       bonus bUseSPrate,-10;
-  - Combos:
-      - Combo:
-          - Heros_TriumphantSong    # 311074
-          - MD_Geffen_Cloth_JP    # 480331
-    Script: |
-      bonus2 bSubClass,Class_Normal,5;
-      bonus2 bSubClass,Class_Boss,5;
-      bonus2 bSubEle,Ele_Ghost,30;
   - Combos:
       - Combo:
           - Illusion_Box_Garden    # 311075
@@ -43428,22 +43419,6 @@ Body:
             }
          }
       }
-  - Combos:
-      - Combo:
-          - Thanatos_Sword_FA   # 480324
-          - Red_Force_Pendant_LT   # 490382
-      - Combo:
-          - Thanatos_Sword_FA   # 480324
-          - Blue_Mental_Pendant_LT   # 490383
-    Script: |
-      bonus bPAtk,3;
-      bonus bSMatk,3;
-      bonus bMatk,50;
-      bonus bBaseAtk,50;
-      bonus2 bAddSize,Size_Medium,15;
-      bonus2 bMagicAddSize,Size_Medium,15;
-      bonus2 bAddSize,Size_Large,15;
-      bonus2 bMagicAddSize,Size_Large,15;
   - Combos:
       - Combo:
           - Bakonawa_Tattoo    # 2910
@@ -43905,31 +43880,6 @@ Body:
     Script: |
       bonus bLongAtkRate,20;
       bonus2 bSkillAtk,"RA_ARROWSTORM",10;
-  - Combos:
-      - Combo:
-          - Dolor_HatK_LT    # 400465
-          - Thanatos_Sword_FA    # 480324
-    Script: |
-      .@r = getequiprefinerycnt(EQI_HEAD_TOP);
-      bonus bVariableCastrate,-10;
-      if (.@r>=7) {
-         bonus2 bAddEle,Ele_Holy,20;
-         bonus2 bAddEle,Ele_Dark,20;
-         bonus2 bMagicAddEle,Ele_Holy,20;
-         bonus2 bMagicAddEle,Ele_Dark,20;
-      }
-      if (.@r>=9) {
-         bonus2 bAddRace,RC_Angel,15;
-         bonus2 bAddRace,RC_Dragon,15;
-         bonus2 bMagicAddRace,RC_Angel,15;
-         bonus2 bMagicAddRace,RC_Dragon,15;
-      }
-      if (.@r>=11) {
-         bonus2 bAddSize,Size_Medium,15;
-         bonus2 bAddSize,Size_Large,15;
-         bonus2 bMagicAddSize,Size_Medium,15;
-         bonus2 bMagicAddSize,Size_Large,15;
-      }
   - Combos:
       - Combo:
           - Thanatos_Sword_FA    # 480324
@@ -43976,12 +43926,12 @@ Body:
           - Comp_Royal_Bow_K    # 700057
       - Combo:
           - Royal_Bow_K    # 18164
-          - aegis_480358    # 480359
+          - aegis_480359    # 480359
       - Combo:
-          - aegis_480358    # 480359
+          - aegis_480359    # 480359
           - Up_Royal_Bow_K    # 700018
       - Combo:
-          - aegis_480358    # 480359
+          - aegis_480359    # 480359
           - Comp_Royal_Bow_K    # 700057
     Script: |
       bonus2 bSkillCooldown,"RA_ARROWSTORM",-2500;
@@ -43991,7 +43941,7 @@ Body:
           - aegis_480358    # 480358
       - Combo:
           - Arrow_Of_Shadow    # 1767
-          - aegis_480358    # 480359
+          - aegis_480359    # 480359
     Script: |
       bonus bLongAtkRate,20;
       bonus2 bSkillAtk,"RA_ARROWSTORM",10;
@@ -46655,3 +46605,541 @@ Body:
       bonus bMaxHPrate,5;
       bonus bMdef,30;
       bonus bDef,200;
+  - Combos:
+      - Combo:
+          - Dimen_IG_Sword   # 500092
+          - Time_DM_R_Crown_IG   # 400530
+    Script: |
+      bonus2 bSkillCooldown,"LG_RAYOFGENESIS",-500;
+      bonus2 bMagicAtkEle,Ele_Holy,10;
+      bonus2 bMagicAtkEle,Ele_Neutral,10;
+      bonus2 bSkillAtk,"LG_RAYOFGENESIS",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"IG_CROSS_RAIN",-1000;
+         bonus2 bSkillAtk,"LG_RAYOFGENESIS",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_BO_Sword   # 500093
+          - Time_DM_R_Crown_BO   # 400532
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WIND",45;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_FIRE",45;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_WATER",45;
+      bonus2 bSkillAtk,"BO_ACIDIFIED_ZONE_GROUND",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"BO_MAYHEMIC_THORNS",.@sum;
+         bonus2 bSkillCooldown,"BO_MAYHEMIC_THORNS",-200;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_HN_Sword   # 500094
+          - Time_DM_R_Crown_HN   # 400545
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         skill "GC_CROSSIMPACT",5;
+         bonus2 bSkillAtk,"HN_DOUBLEBOWLINGBASH",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_ABC_Knife   # 510139
+          - Time_DM_R_Crown_ABC   # 400534
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"ABC_ABYSS_DAGGER",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"ABC_DEFT_STAB",-200;
+         bonus2 bSkillAtk,"ABC_ABYSS_DAGGER",.@sum;
+         bonus2 bSkillAtk,"ABC_DEFT_STAB",.@sum;
+         if (getskilllv("ABC_ABYSS_DAGGER") > 0) {
+            bonus4 bAutoSpellOnSkill,"ABC_DEFT_STAB","ABC_ABYSS_DAGGER",getskilllv("ABC_ABYSS_DAGGER"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_IG_Spear   # 530054
+          - Time_DM_R_Crown_IG   # 400530
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"LG_OVERBRAND",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"LG_OVERBRAND",2*.@sum;
+         if (getskilllv("LG_OVERBRAND") > 0) {
+            bonus4 bAutoSpellOnSkill,"IG_OVERSLASH","LG_OVERBRAND",getskilllv("LG_OVERBRAND"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_EM_M_Book   # 540079
+          - Time_DM_R_Crown_EM   # 400536
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Water,10;
+      bonus2 bMagicAtkEle,Ele_Fire,10;
+      bonus2 bMagicAtkEle,Ele_Poison,30;
+      bonus2 bSkillAtk,"EM_VENOM_SWAMP",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_FIRE",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WATER",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WIND",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_POISON",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_GROUND",2*.@sum;
+         if (getskilllv("EM_ELEMENTAL_BUSTER") > 0) {
+            bonus4 bAutoSpellOnSkill,"EM_DIAMOND_STORM","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_EM_S_Book   # 540080
+          - Time_DM_R_Crown_EM   # 400536
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Earth,10;
+      bonus2 bMagicAtkEle,Ele_Wind,10;
+      bonus2 bMagicAtkEle,Ele_Poison,30;
+      bonus2 bSkillAtk,"EM_VENOM_SWAMP",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_FIRE",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WATER",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_WIND",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_POISON",2*.@sum;
+         bonus2 bSkillAtk,"EM_ELEMENTAL_BUSTER_GROUND",2*.@sum;
+         if (getskilllv("EM_ELEMENTAL_BUSTER") > 0 && geteleminfo(0) > 0) {
+            bonus4 bAutoSpellOnSkill,"EM_TERRA_DRIVE","EM_ELEMENTAL_BUSTER",getskilllv("EM_ELEMENTAL_BUSTER"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_CD_Bible   # 540081
+          - Time_DM_R_Crown_CD   # 400537
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"CD_EFFLIGO",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         skill "ABC_UNLUCKY_RUSH",3;
+         bonus2 bSkillAtk,"CD_EFFLIGO",.@sum;
+         bonus2 bSkillCooldown,"CD_PETITIO",-150;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SKE_M_Book   # 540082
+          - Time_DM_R_Crown_SKE   # 400543
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"SKE_MIDNIGHT_KICK",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SKE_MIDNIGHT_KICK",.@sum;
+         if (getskilllv("SKE_MIDNIGHT_KICK") > 0) {
+            bonus4 bAutoSpellOnSkill,"SKE_DAWN_BREAK","SKE_MIDNIGHT_KICK",getskilllv("SKE_MIDNIGHT_KICK"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SKE_S_Book   # 540083
+          - Time_DM_R_Crown_SKE   # 400543
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"SKE_NOON_BLAST",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SKE_NOON_BLAST",.@sum;
+         if (getskilllv("SKE_NOON_BLAST") > 0) {
+            bonus4 bAutoSpellOnSkill,"SKE_SUNSET_BLAST","SKE_NOON_BLAST",getskilllv("SKE_NOON_BLAST"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_CD_Rod   # 550130
+          - Time_DM_R_Crown_CD   # 400537
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Holy,10;
+      bonus2 bMagicAtkEle,Ele_Neutral,10;
+      bonus2 bSkillAtk,"AB_ADORAMUS",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"AB_ADORAMUS",2*.@sum;
+         if (getskilllv("AB_ADORAMUS") > 0) {
+            bonus4 bAutoSpellOnSkill,"CD_ARBITRIUM","AB_ADORAMUS",getskilllv("AB_ADORAMUS"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SOA_Stick   # 550131
+          - Time_DM_R_Crown_SOA   # 400544
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_FOUR_BEARING_GOD",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_BLUE_DRAGON",.@sum;
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_RED_PHOENIX",.@sum;
+         if (getskilllv("SOA_TALISMAN_OF_RED_PHOENIX") > 0) {
+            bonus4 bAutoSpellOnSkill,"SOA_TALISMAN_OF_BLUE_DRAGON","SOA_TALISMAN_OF_RED_PHOENIX",getskilllv("SOA_TALISMAN_OF_RED_PHOENIX"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SOA_Rod   # 550132
+          - Time_DM_R_Crown_SOA   # 400544
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bSkillAtk,"SOA_TALISMAN_OF_FOUR_BEARING_GOD",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_WHITE_TIGER",.@sum;
+         bonus2 bSkillAtk,"SOA_TALISMAN_OF_BLACK_TORTOISE",.@sum;
+         if (getskilllv("SOA_TALISMAN_OF_BLACK_TORTOISE") > 0) {
+            bonus4 bAutoSpellOnSkill,"SOA_TALISMAN_OF_WHITE_TIGER","SOA_TALISMAN_OF_BLACK_TORTOISE",getskilllv("SOA_TALISMAN_OF_BLACK_TORTOISE"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_HN_Rod   # 550133
+          - Time_DM_R_Crown_HN   # 400545
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Earth,10;
+      bonus2 bMagicAtkEle,Ele_Fire,10;
+      bonus2 bMagicAtkEle,Ele_Ghost,30;
+      bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",.@sum;
+         bonus4 bAutoSpellOnSkill,"HN_NAPALM_VULCAN_STRIKE","AG_SOUL_VC_STRIKE",5,500;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SH_Foxtail   # 550134
+          - Time_DM_R_Crown_SH   # 400546
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"SH_CHUL_HO_SONIC_CLAW",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"SH_HOWLING_OF_CHUL_HO",-300;
+         bonus2 bSkillAtk,"SH_CHUL_HO_SONIC_CLAW",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SH_F_Model   # 550135
+          - Time_DM_R_Crown_SH   # 400546
+    Script: |
+      bonus2 bSkillAtk,"SH_HYUN_ROK_CANNON",45;
+      bonus2 bMagicAtkEle,Ele_All,10;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"SH_HYUN_ROKS_BREEZE",-2000;
+         bonus2 bSkillAtk,"SH_HYUN_ROK_CANNON",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_IQ_Knuckle   # 560060
+          - Time_DM_R_Crown_IQ   # 400538
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"SR_TIGERCANNON",85;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"IQ_FIRST_BRAND",1500;
+         bonus2 bSkillAtk,"IQ_SECOND_FLAME",.@sum;
+         if (getskilllv("IQ_SECOND_FLAME") > 0) {
+            bonus4 bAutoSpellOnSkill,"IQ_FIRST_BRAND","IQ_SECOND_FLAME",getskilllv("IQ_SECOND_FLAME"),1000;
+            if (getskilllv("IQ_THIRD_FLAME_BOMB") > 0) {
+               bonus4 bAutoSpellOnSkill,"IQ_SECOND_FLAME","IQ_THIRD_FLAME_BOMB",getskilllv("IQ_THIRD_FLAME_BOMB"),1000;
+            }
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_IQ_Claw   # 560061
+          - Time_DM_R_Crown_IQ   # 400538
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"IQ_EXPOSION_BLASTER",-200;
+         bonus2 bSkillCooldown,"IQ_MASSIVE_F_BLASTER",-2000;
+         bonus2 bSkillAtk,"IQ_MASSIVE_F_BLASTER",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_TR_Harp   # 570063
+          - Time_DM_R_Crown_TR   # 400540
+      - Combo:
+          - Dimen_TR_Rope   # 580062
+          - Time_DM_R_Crown_TR   # 400540
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",.@sum;
+         if (getskilllv("TR_SOUNDBLEND") > 0) {
+            bonus4 bAutoSpellOnSkill,"TR_RHYTHMSHOOTING","TR_SOUNDBLEND",getskilllv("TR_SOUNDBLEND"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_TR_Ribbon   # 580061
+          - Time_DM_R_Crown_TR   # 400540
+      - Combo:
+          - Dimen_TR_Vilolin   # 570062
+          - Time_DM_R_Crown_TR   # 400540
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bSkillAtk,"WM_REVERBERATION",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"WM_REVERBERATION",.@sum;
+         if (getskilllv("WM_REVERBERATION") > 0) {
+            bonus4 bAutoSpellOnSkill,"TR_METALIC_FURY","WM_REVERBERATION",getskilllv("WM_REVERBERATION"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_MT_Mace   # 590079
+          - Time_DM_R_Crown_MT   # 400531
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"MT_SPARK_BLASTER",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"MT_TRIPLE_LASER",.@sum;
+         bonus2 bSkillCooldown,"MT_SPARK_BLASTER",-150;
+         bonus2 bSkillAtk,"MT_SPARK_BLASTER",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_BO_Hall   # 590080
+          - Time_DM_R_Crown_BO   # 400532
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bSkillAtk,"GN_CART_TORNADO",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"BO_EXPLOSIVE_POWDER",-200;
+         bonus2 bSkillAtk,"GN_CART_TORNADO",2*.@sum;
+         if (getskilllv("GN_CART_TORNADO") > 0) {
+            bonus4 bAutoSpellOnSkill,"BO_EXPLOSIVE_POWDER","GN_CART_TORNADO",getskilllv("GN_CART_TORNADO"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_DK_T_Sword   # 600054
+          - Time_DM_R_Crown_DK   # 400529
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"DK_STORMSLASH",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"DK_HACKANDSLASHER",-200;
+         bonus2 bSkillAtk,"RK_IGNITIONBREAK",3*.@sum;
+         if (getskilllv("RK_IGNITIONBREAK") > 0) {
+            bonus4 bAutoSpellOnSkill,"DK_HACKANDSLASHER","RK_IGNITIONBREAK",getskilllv("RK_IGNITIONBREAK"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SHC_Katar   # 610064
+          - Time_DM_R_Crown_SHC   # 400533
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"GC_CROSSIMPACT",85;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"SHC_SAVAGE_IMPACT",-200;
+         bonus2 bSkillAtk,"SHC_SAVAGE_IMPACT",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SHC_Cakram   # 610065
+          - Time_DM_R_Crown_SHC   # 400533
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"SHC_IMPACT_CRATER",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"GC_PHANTOMMENACE",5000;
+         bonus2 bSkillCooldown,"GC_ROLLINGCUTTER",2000;
+         bonus2 bSkillAtk,"SHC_ETERNAL_SLASH",.@sum;
+         if (getskilllv("GC_ROLLINGCUTTER") > 0) {
+            bonus4 bAutoSpellOnSkill,"GC_PHANTOMMENACE","GC_ROLLINGCUTTER",getskilllv("GC_ROLLINGCUTTER"),1000;
+            if (getskilllv("SHC_IMPACT_CRATER") > 0) {
+               bonus4 bAutoSpellOnSkill,"GC_ROLLINGCUTTER","SHC_IMPACT_CRATER",getskilllv("SHC_IMPACT_CRATER"),1000;
+            }
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_MT_Axe   # 620037
+          - Time_DM_R_Crown_MT   # 400531
+    Script: |
+      bonus2 bSkillAtk,"MT_AXE_STOMP",45;
+      bonus bShortAtkRate,10;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"NC_AXETORNADO",5*.@sum;
+         if (getskilllv("NC_AXETORNADO") > 0 && !checkmadogear()) {
+            bonus4 bAutoSpellOnSkill,"MT_MIGHTY_SMASH","NC_AXETORNADO",getskilllv("NC_AXETORNADO"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_DK_Lance   # 630041
+          - Time_DM_R_Crown_DK   # 400529
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus2 bSkillAtk,"RK_DRAGONBREATH_WATER",85;
+      bonus2 bSkillAtk,"RK_DRAGONBREATH",85;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillCooldown,"DK_DRAGONIC_BREATH",-150;
+         bonus2 bSkillAtk,"DK_DRAGONIC_BREATH",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_AG_Staff   # 640049
+          - Time_DM_R_Crown_AG   # 400535
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Fire,10;
+      bonus2 bMagicAtkEle,Ele_Wind,10;
+      bonus2 bMagicAtkEle,Ele_Ghost,30;
+      bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",.@sum;
+         if (getskilllv("AG_STORM_CANNON") > 0) {
+            bonus4 bAutoSpellOnSkill,"AG_CRIMSON_ARROW","AG_STORM_CANNON",getskilllv("AG_STORM_CANNON"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_AG_Rod   # 640050
+          - Time_DM_R_Crown_AG   # 400535
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Earth,10;
+      bonus2 bMagicAtkEle,Ele_Water,10;
+      bonus2 bMagicAtkEle,Ele_Ghost,30;
+      bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",.@sum;
+         if (getskilllv("AG_FROZEN_SLASH") > 0) {
+            bonus4 bAutoSpellOnSkill,"AG_ROCK_DOWN","AG_FROZEN_SLASH",getskilllv("AG_FROZEN_SLASH"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SS_Humma   # 650046
+          - Time_DM_R_Crown_SS   # 400541
+    Script: |
+      bonus bShortAtkRate,15;
+      bonus2 bSkillAtk,"SS_KAGENOMAI",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SS_KAGEGISSEN",.@sum;
+         bonus2 bSkillCooldown,"KO_JYUMONJIKIRI",-1500;
+         if (getskilllv("SS_KAGEGISSEN") > 0) {
+            bonus4 bAutoSpellOnSkill,"KO_JYUMONJIKIRI","SS_KAGEGISSEN",getskilllv("SS_KAGEGISSEN"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_SS_Wheel   # 650047
+          - Time_DM_R_Crown_SS   # 400541
+    Script: |
+      bonus2 bMagicAtkEle,Ele_Wind,10;
+      bonus2 bMagicAtkEle,Ele_Fire,10;
+      bonus2 bMagicAtkEle,Ele_Dark,30;
+      bonus2 bSkillAtk,"SS_ANTENPOU",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SS_SEKIENHOU",.@sum;
+         bonus2 bSkillAtk,"SS_RAIDENPOU",.@sum;
+         if (getskilllv("SS_RAIDENPOU") > 0) {
+            bonus4 bAutoSpellOnSkill,"SS_SEKIENHOU","SS_RAIDENPOU",getskilllv("SS_RAIDENPOU"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_ABC_Bow   # 700092
+          - Time_DM_R_Crown_ABC   # 400534
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT",45;
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT_ATK",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         skill "TR_ROSEBLOSSOM",5;
+         bonus2 bSkillAtk,"ABC_FRENZY_SHOT",.@sum;
+         bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT",.@sum;
+         bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT_ATK",.@sum;
+      }
+  - Combos:
+      - Combo:
+          - Dimen_WH_C_Bow   # 700093
+          - Time_DM_R_Crown_WH   # 400539
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"WH_GALESTORM",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"SN_SHARPSHOOTING",2*.@sum;
+         if (getskilllv("SN_SHARPSHOOTING") > 0) {
+            bonus4 bAutoSpellOnSkill,"WH_CRESCIVE_BOLT","SN_SHARPSHOOTING",getskilllv("SN_SHARPSHOOTING"),500;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_WH_Bow   # 700094
+          - Time_DM_R_Crown_WH   # 400539
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"WH_HAWKBOOMERANG",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"WH_HAWKBOOMERANG",.@sum;
+         if (getskilllv("WH_HAWKBOOMERANG") > 0) {
+            bonus4 bAutoSpellOnSkill,"WH_HAWKRUSH","WH_HAWKBOOMERANG",getskilllv("WH_HAWKBOOMERANG"),500;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_NW_Rifle   # 810040
+          - Time_DM_R_Crown_NW   # 400542
+    Script: |
+      bonus bLongAtkRate,15;
+      bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",.@sum;
+         if (getskilllv("NW_SPIRAL_SHOOTING") > 0) {
+            bonus4 bAutoSpellOnSkill,"NW_ONLY_ONE_BULLET","NW_SPIRAL_SHOOTING",getskilllv("NW_SPIRAL_SHOOTING"),1000;
+         }
+      }
+  - Combos:
+      - Combo:
+          - Dimen_NW_Launcher   # 840032
+          - Time_DM_R_Crown_NW   # 400542
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",45;
+      if (getenchantgrade(EQI_HAND_R)>=ENCHANTGRADE_A && getenchantgrade(EQI_HEAD_TOP)>=ENCHANTGRADE_A) {
+         .@sum = getequiprefinerycnt(EQI_HAND_R)+getequiprefinerycnt(EQI_HEAD_TOP);
+         bonus2 bSkillAtk,"NW_WILD_FIRE",.@sum;
+         if (getskilllv("NW_WILD_FIRE") > 0) {
+            bonus4 bAutoSpellOnSkill,"NW_SPIRAL_SHOOTING","NW_WILD_FIRE",getskilllv("NW_WILD_FIRE"),1000;
+         }
+      }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1231 - 60
db/re/item_db_equip.yml


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 2406 - 68
db/re/item_db_etc.yml


+ 2622 - 0
db/re/item_enchant.yml

@@ -27331,3 +27331,2625 @@ Body:
               - Material: GH_Cursed_Crystal
                 Amount: 50
               - Material: Enchant_Ticket
+#  - Id: 117  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Season_Hood_Spring: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 10
+#              - Material: Spring_Material_2
+#                Amount: 10
+#              - Material: Spring_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Spring
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 15
+#              - Material: Spring_Material_2
+#                Amount: 15
+#              - Material: Spring_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Spring
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Spring_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 25
+#              - Material: Spring_Material_2
+#                Amount: 25
+#              - Material: Spring_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Spring
+#                Amount: 140
+#  - Id: 118  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Circul_Of_Life_Spring: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 10
+#              - Material: Spring_Material_2
+#                Amount: 10
+#              - Material: Spring_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Spring
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 15
+#              - Material: Spring_Material_2
+#                Amount: 15
+#              - Material: Spring_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Spring
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Spring_1
+#            Materials:
+#              - Material: Spring_Material_1
+#                Amount: 25
+#              - Material: Spring_Material_2
+#                Amount: 25
+#              - Material: Spring_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Spring
+#                Amount: 140
+#  - Id: 119  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Season_Hood_Summer: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 10
+#              - Material: Summer_Material_2
+#                Amount: 10
+#              - Material: Summer_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Summer
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 15
+#              - Material: Summer_Material_2
+#                Amount: 15
+#              - Material: Summer_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Summer
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Summer_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 25
+#              - Material: Summer_Material_2
+#                Amount: 25
+#              - Material: Summer_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Summer
+#                Amount: 140
+#  - Id: 120  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Circul_Of_Life_Summer: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 10
+#              - Material: Summer_Material_2
+#                Amount: 10
+#              - Material: Summer_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Summer
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 15
+#              - Material: Summer_Material_2
+#                Amount: 15
+#              - Material: Summer_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Summer
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Summer_1
+#            Materials:
+#              - Material: Summer_Material_1
+#                Amount: 25
+#              - Material: Summer_Material_2
+#                Amount: 25
+#              - Material: Summer_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Summer
+#                Amount: 140
+#  - Id: 121  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Season_Hood_Autumn: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Magical_Seed_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 10
+#              - Material: Autumn_Material_2
+#                Amount: 10
+#              - Material: Autumn_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Autumn
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Magical_Fruit_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 15
+#              - Material: Autumn_Material_2
+#                Amount: 15
+#              - Material: Autumn_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Autumn
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Autumn_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 25
+#              - Material: Autumn_Material_2
+#                Amount: 25
+#              - Material: Autumn_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Autumn
+#                Amount: 140
+#  - Id: 122  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Circul_Of_Life_Autumn: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Magical_Seed_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 10
+#              - Material: Autumn_Material_2
+#                Amount: 10
+#              - Material: Autumn_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Autumn
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Magical_Fruit_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 15
+#              - Material: Autumn_Material_2
+#                Amount: 15
+#              - Material: Autumn_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Autumn
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Autumn_1
+#            Materials:
+#              - Material: Autumn_Material_1
+#                Amount: 25
+#              - Material: Autumn_Material_2
+#                Amount: 25
+#              - Material: Autumn_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Autumn
+#                Amount: 140
+#  - Id: 123  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Season_Hood_Winter: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 10
+#              - Material: Winter_Material_2
+#                Amount: 10
+#              - Material: Winter_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Winter
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 15
+#              - Material: Winter_Material_2
+#                Amount: 15
+#              - Material: Winter_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Winter
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Winter_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 25
+#              - Material: Winter_Material_2
+#                Amount: 25
+#              - Material: Winter_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Winter
+#                Amount: 140
+#  - Id: 124  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Circul_Of_Life_Winter: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Physical_Seed_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 10
+#              - Material: Winter_Material_2
+#                Amount: 10
+#              - Material: Winter_Material_3
+#                Amount: 10
+#              - Material: Energy_Of_Winter
+#                Amount: 60
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Physical_Fruit_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 15
+#              - Material: Winter_Material_2
+#                Amount: 15
+#              - Material: Winter_Material_3
+#                Amount: 15
+#              - Material: Energy_Of_Winter
+#                Amount: 90
+#      - Slot: 1
+#        PerfectEnchants:
+#          - Item: Life_of_Winter_1
+#            Materials:
+#              - Material: Winter_Material_1
+#                Amount: 25
+#              - Material: Winter_Material_2
+#                Amount: 25
+#              - Material: Winter_Material_3
+#                Amount: 25
+#              - Material: Energy_Of_Winter
+#                Amount: 140
+  - Id: 125
+    TargetItems:
+      FateSin_Boots_MT: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_MT
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_MT
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 126
+    TargetItems:
+      FateSin_Boots_SHC: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_SHC
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_SHC
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 127
+    TargetItems:
+      FateSin_Boots_SS: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_SS
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_SS
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+#  - Id: 128  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      S_Full_Power_Armor: true
+#      S_Full_Power_Shoes: true
+#      S_Full_Rate_Armor: true
+#      S_Full_Rate_Shoes: true
+#      S_Focusing_Pendant: true
+#      S_Focusing_Earring: true
+#      S_Stout_Pendant: true
+#      S_Stout_Earring: true
+#      S_Full_Spell_Armor: true
+#      S_Full_Spell_Shoes: true
+#      S_Centering_Pendant: true
+#      S_Centering_Earring: true
+#      S_Witty_Pendant: true
+#      S_Witty_Earring: true
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#    Slots:
+#      - Slot: 3
+#        PerfectEnchants:
+#          - Item: Strength3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#          - Item: Dexterity3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#          - Item: Inteligence3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#          - Item: Agility3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#          - Item: Vitality3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#          - Item: Luck3
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 5
+#      - Slot: 2
+#        PerfectEnchants:
+#          - Item: Shadow_ATK_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+#          - Item: Shadow_MATK_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+#          - Item: Shadow_CRI_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+#          - Item: Shadow_CAST_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+#          - Item: Shadow_HP_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+#          - Item: Shadow_SP_1
+#            Materials:
+#              - Material: S_Enchant_Essence
+#                Amount: 7
+  - Id: 129
+    TargetItems:
+      FateSin_Boots_ABC: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_ABC
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_ABC
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 130
+    TargetItems:
+      FateSin_Boots_TR: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_TR
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_TR
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 131
+    TargetItems:
+      FateSin_Boots_HN: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_HN
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_HN
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+#  - Id: 132  # Skipped (some fields are not supported on rAthena for now)
+#    TargetItems:
+#      Time_DM_R_Crown_DK: true
+#      Time_DM_R_Crown_IG: true
+#      Time_DM_R_Crown_MT: true
+#      Time_DM_R_Crown_BO: true
+#      Time_DM_R_Crown_SHC: true
+#      Time_DM_R_Crown_ABC: true
+#      Time_DM_R_Crown_AG: true
+#      Time_DM_R_Crown_EM: true
+#      Time_DM_R_Crown_CD: true
+#      Time_DM_R_Crown_IQ: true
+#      Time_DM_R_Crown_WH: true
+#      Time_DM_R_Crown_TR: true
+#      Time_DM_R_Crown_SS: true
+#      Time_DM_R_Crown_NW: true
+#      Time_DM_R_Crown_SKE: true
+#      Time_DM_R_Crown_SOA: true
+#      Time_DM_R_Crown_HN: true
+#      Time_DM_R_Crown_SH: true
+#    Reset:
+#      Chance: 100000
+#      Materials:
+#        - Material: Zelunium
+#          Amount: 15
+#        - Material: Shadowdecon
+#          Amount: 15
+#        - Material: Etel_Dust
+#          Amount: 30
+#    Order:
+#      - Slot: 3
+#      - Slot: 2
+#      - Slot: 1
+#    Slots:
+#      - Slot: 3
+#        Materials:
+#          - Material: Abyss_Rune
+#            Amount: 5
+#        Enchants:
+#          - Enchantgrade: 0
+#            Items:
+#              - Item: Strength2
+#                Chance: 8000
+#              - Item: Inteligence2
+#                Chance: 8000
+#              - Item: Vitality2
+#                Chance: 8000
+#              - Item: Luck2
+#                Chance: 8000
+#              - Item: Strength1
+#                Chance: 11500
+#              - Item: Inteligence1
+#                Chance: 11500
+#              - Item: Vitality1
+#                Chance: 11500
+#              - Item: Luck1
+#                Chance: 11500
+#              - Item: Strength3
+#                Chance: 3500
+#              - Item: Inteligence3
+#                Chance: 3500
+#              - Item: Vitality3
+#                Chance: 3500
+#              - Item: Luck3
+#                Chance: 3500
+#              - Item: Strength5
+#                Chance: 500
+#              - Item: Inteligence5
+#                Chance: 500
+#              - Item: Vitality5
+#                Chance: 500
+#              - Item: Luck5
+#                Chance: 500
+#              - Item: Strength4
+#                Chance: 1500
+#              - Item: Inteligence4
+#                Chance: 1500
+#              - Item: Vitality4
+#                Chance: 1500
+#              - Item: Luck4
+#                Chance: 1500
+#          - Enchantgrade: 1
+#            Items:
+#              - Item: Strength2
+#                Chance: 8000
+#              - Item: Inteligence2
+#                Chance: 8000
+#              - Item: Vitality2
+#                Chance: 8000
+#              - Item: Luck2
+#                Chance: 8000
+#              - Item: Strength1
+#                Chance: 11500
+#              - Item: Inteligence1
+#                Chance: 11500
+#              - Item: Vitality1
+#                Chance: 11500
+#              - Item: Luck1
+#                Chance: 11500
+#              - Item: Strength3
+#                Chance: 3500
+#              - Item: Inteligence3
+#                Chance: 3500
+#              - Item: Vitality3
+#                Chance: 3500
+#              - Item: Luck3
+#                Chance: 3500
+#              - Item: Strength5
+#                Chance: 500
+#              - Item: Inteligence5
+#                Chance: 500
+#              - Item: Vitality5
+#                Chance: 500
+#              - Item: Luck5
+#                Chance: 500
+#              - Item: Strength4
+#                Chance: 1500
+#              - Item: Inteligence4
+#                Chance: 1500
+#              - Item: Vitality4
+#                Chance: 1500
+#              - Item: Luck4
+#                Chance: 1500
+#          - Enchantgrade: 2
+#            Items:
+#              - Item: Strength2
+#                Chance: 8000
+#              - Item: Inteligence2
+#                Chance: 8000
+#              - Item: Vitality2
+#                Chance: 8000
+#              - Item: Luck2
+#                Chance: 8000
+#              - Item: Strength1
+#                Chance: 11500
+#              - Item: Inteligence1
+#                Chance: 11500
+#              - Item: Vitality1
+#                Chance: 11500
+#              - Item: Luck1
+#                Chance: 11500
+#              - Item: Strength3
+#                Chance: 3500
+#              - Item: Inteligence3
+#                Chance: 3500
+#              - Item: Vitality3
+#                Chance: 3500
+#              - Item: Luck3
+#                Chance: 3500
+#              - Item: Strength5
+#                Chance: 500
+#              - Item: Inteligence5
+#                Chance: 500
+#              - Item: Vitality5
+#                Chance: 500
+#              - Item: Luck5
+#                Chance: 500
+#              - Item: Strength4
+#                Chance: 1500
+#              - Item: Inteligence4
+#                Chance: 1500
+#              - Item: Vitality4
+#                Chance: 1500
+#              - Item: Luck4
+#                Chance: 1500
+#          - Enchantgrade: 3
+#            Items:
+#              - Item: Strength2
+#                Chance: 8000
+#              - Item: Inteligence2
+#                Chance: 8000
+#              - Item: Vitality2
+#                Chance: 8000
+#              - Item: Luck2
+#                Chance: 8000
+#              - Item: Strength1
+#                Chance: 11500
+#              - Item: Inteligence1
+#                Chance: 11500
+#              - Item: Vitality1
+#                Chance: 11500
+#              - Item: Luck1
+#                Chance: 11500
+#              - Item: Strength3
+#                Chance: 3500
+#              - Item: Inteligence3
+#                Chance: 3500
+#              - Item: Vitality3
+#                Chance: 3500
+#              - Item: Luck3
+#                Chance: 3500
+#              - Item: Strength5
+#                Chance: 500
+#              - Item: Inteligence5
+#                Chance: 500
+#              - Item: Vitality5
+#                Chance: 500
+#              - Item: Luck5
+#                Chance: 500
+#              - Item: Strength4
+#                Chance: 1500
+#              - Item: Inteligence4
+#                Chance: 1500
+#              - Item: Vitality4
+#                Chance: 1500
+#              - Item: Luck4
+#                Chance: 1500
+#          - Enchantgrade: 4
+#            Items:
+#              - Item: Strength2
+#                Chance: 8000
+#              - Item: Inteligence2
+#                Chance: 8000
+#              - Item: Vitality2
+#                Chance: 8000
+#              - Item: Luck2
+#                Chance: 8000
+#              - Item: Strength1
+#                Chance: 11500
+#              - Item: Inteligence1
+#                Chance: 11500
+#              - Item: Vitality1
+#                Chance: 11500
+#              - Item: Luck1
+#                Chance: 11500
+#              - Item: Strength3
+#                Chance: 3500
+#              - Item: Inteligence3
+#                Chance: 3500
+#              - Item: Vitality3
+#                Chance: 3500
+#              - Item: Luck3
+#                Chance: 3500
+#              - Item: Strength5
+#                Chance: 500
+#              - Item: Inteligence5
+#                Chance: 500
+#              - Item: Vitality5
+#                Chance: 500
+#              - Item: Luck5
+#                Chance: 500
+#              - Item: Strength4
+#                Chance: 1500
+#              - Item: Inteligence4
+#                Chance: 1500
+#              - Item: Vitality4
+#                Chance: 1500
+#              - Item: Luck4
+#                Chance: 1500
+#      - Slot: 2
+#        Materials:
+#          - Material: Abyss_Rune
+#            Amount: 10
+#        Enchants:
+#          - Enchantgrade: 0
+#            Items:
+#              - Item: T_D_Jewel_STR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_AGI_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_DEX_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_VIT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_INT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_SPR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_WIS_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_LUK_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_STR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_AGI_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_DEX_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_VIT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_INT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_SPR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_WIS_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_LUK_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_STR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_AGI_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_DEX_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_VIT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_INT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_SPR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_WIS_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_LUK_2
+#                Chance: 3700
+#          - Enchantgrade: 1
+#            Items:
+#              - Item: T_D_Jewel_STR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_AGI_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_DEX_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_VIT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_INT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_SPR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_WIS_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_LUK_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_STR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_AGI_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_DEX_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_VIT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_INT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_SPR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_WIS_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_LUK_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_STR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_AGI_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_DEX_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_VIT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_INT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_SPR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_WIS_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_LUK_2
+#                Chance: 3700
+#          - Enchantgrade: 2
+#            Items:
+#              - Item: T_D_Jewel_STR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_AGI_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_DEX_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_VIT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_INT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_SPR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_WIS_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_LUK_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_STR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_AGI_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_DEX_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_VIT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_INT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_SPR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_WIS_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_LUK_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_STR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_AGI_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_DEX_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_VIT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_INT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_SPR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_WIS_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_LUK_2
+#                Chance: 3700
+#          - Enchantgrade: 3
+#            Items:
+#              - Item: T_D_Jewel_STR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_AGI_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_DEX_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_VIT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_INT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_SPR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_WIS_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_LUK_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_STR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_AGI_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_DEX_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_VIT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_INT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_SPR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_WIS_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_LUK_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_STR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_AGI_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_DEX_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_VIT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_INT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_SPR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_WIS_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_LUK_2
+#                Chance: 3700
+#          - Enchantgrade: 4
+#            Items:
+#              - Item: T_D_Jewel_STR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_AGI_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_DEX_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_VIT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_INT_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_SPR_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_WIS_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_LUK_1
+#                Chance: 7000
+#              - Item: T_D_Jewel_STR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_AGI_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_DEX_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_VIT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_INT_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_SPR_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_WIS_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_LUK_3
+#                Chance: 1800
+#              - Item: T_D_Jewel_STR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_AGI_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_DEX_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_VIT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_INT_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_SPR_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_WIS_2
+#                Chance: 3700
+#              - Item: T_D_Jewel_LUK_2
+#                Chance: 3700
+#      - Slot: 1
+#        Materials:
+#          - Material: Time_D_Ma_Rune
+#            Amount: 2
+#        Enchants:
+#          - Enchantgrade: 0
+#            Items:
+#              - Item: Sharp1
+#                Chance: 8000
+#              - Item: Expert_Archer1
+#                Chance: 8000
+#              - Item: Attack_Delay_1
+#                Chance: 8000
+#              - Item: Spell1
+#                Chance: 8000
+#              - Item: Sharp3
+#                Chance: 4500
+#              - Item: Expert_Archer3
+#                Chance: 4500
+#              - Item: Attack_Delay_3
+#                Chance: 4500
+#              - Item: Spell3
+#                Chance: 4500
+#              - Item: Acute_Jewel_1
+#                Chance: 1750
+#              - Item: Mettle_Jewel_1
+#                Chance: 1750
+#              - Item: Tenacity_Jewel_1
+#                Chance: 1750
+#              - Item: Master_A_Jewel_1
+#                Chance: 1750
+#              - Item: Magic_E_Jewel_1
+#                Chance: 1750
+#              - Item: Spell_Jewel_1
+#                Chance: 1750
+#              - Item: Adamatine_Jewel_1
+#                Chance: 1750
+#              - Item: Affection_Jewel_1
+#                Chance: 1750
+#              - Item: Sharp4
+#                Chance: 3000
+#              - Item: Expert_Archer4
+#                Chance: 3000
+#              - Item: Attack_Delay_4
+#                Chance: 3000
+#              - Item: Spell4
+#                Chance: 3000
+#              - Item: Sharp2
+#                Chance: 6000
+#              - Item: Expert_Archer2
+#                Chance: 6000
+#              - Item: Attack_Delay_2
+#                Chance: 6000
+#              - Item: Spell2
+#                Chance: 6000
+#          - Enchantgrade: 1
+#            Items:
+#              - Item: Sharp1
+#                Chance: 8000
+#              - Item: Expert_Archer1
+#                Chance: 8000
+#              - Item: Attack_Delay_1
+#                Chance: 8000
+#              - Item: Spell1
+#                Chance: 8000
+#              - Item: Sharp3
+#                Chance: 4500
+#              - Item: Expert_Archer3
+#                Chance: 4500
+#              - Item: Attack_Delay_3
+#                Chance: 4500
+#              - Item: Spell3
+#                Chance: 4500
+#              - Item: Acute_Jewel_1
+#                Chance: 1750
+#              - Item: Mettle_Jewel_1
+#                Chance: 1750
+#              - Item: Tenacity_Jewel_1
+#                Chance: 1750
+#              - Item: Master_A_Jewel_1
+#                Chance: 1750
+#              - Item: Magic_E_Jewel_1
+#                Chance: 1750
+#              - Item: Spell_Jewel_1
+#                Chance: 1750
+#              - Item: Adamatine_Jewel_1
+#                Chance: 1750
+#              - Item: Affection_Jewel_1
+#                Chance: 1750
+#              - Item: Sharp4
+#                Chance: 3000
+#              - Item: Expert_Archer4
+#                Chance: 3000
+#              - Item: Attack_Delay_4
+#                Chance: 3000
+#              - Item: Spell4
+#                Chance: 3000
+#              - Item: Sharp2
+#                Chance: 6000
+#              - Item: Expert_Archer2
+#                Chance: 6000
+#              - Item: Attack_Delay_2
+#                Chance: 6000
+#              - Item: Spell2
+#                Chance: 6000
+#          - Enchantgrade: 2
+#            Items:
+#              - Item: Sharp1
+#                Chance: 8000
+#              - Item: Expert_Archer1
+#                Chance: 8000
+#              - Item: Attack_Delay_1
+#                Chance: 8000
+#              - Item: Spell1
+#                Chance: 8000
+#              - Item: Sharp3
+#                Chance: 4500
+#              - Item: Expert_Archer3
+#                Chance: 4500
+#              - Item: Attack_Delay_3
+#                Chance: 4500
+#              - Item: Spell3
+#                Chance: 4500
+#              - Item: Acute_Jewel_1
+#                Chance: 1750
+#              - Item: Mettle_Jewel_1
+#                Chance: 1750
+#              - Item: Tenacity_Jewel_1
+#                Chance: 1750
+#              - Item: Master_A_Jewel_1
+#                Chance: 1750
+#              - Item: Magic_E_Jewel_1
+#                Chance: 1750
+#              - Item: Spell_Jewel_1
+#                Chance: 1750
+#              - Item: Adamatine_Jewel_1
+#                Chance: 1750
+#              - Item: Affection_Jewel_1
+#                Chance: 1750
+#              - Item: Sharp4
+#                Chance: 3000
+#              - Item: Expert_Archer4
+#                Chance: 3000
+#              - Item: Attack_Delay_4
+#                Chance: 3000
+#              - Item: Spell4
+#                Chance: 3000
+#              - Item: Sharp2
+#                Chance: 6000
+#              - Item: Expert_Archer2
+#                Chance: 6000
+#              - Item: Attack_Delay_2
+#                Chance: 6000
+#              - Item: Spell2
+#                Chance: 6000
+#          - Enchantgrade: 3
+#            Items:
+#              - Item: Sharp1
+#                Chance: 8000
+#              - Item: Expert_Archer1
+#                Chance: 8000
+#              - Item: Attack_Delay_1
+#                Chance: 8000
+#              - Item: Spell1
+#                Chance: 8000
+#              - Item: Sharp3
+#                Chance: 4500
+#              - Item: Expert_Archer3
+#                Chance: 4500
+#              - Item: Attack_Delay_3
+#                Chance: 4500
+#              - Item: Spell3
+#                Chance: 4500
+#              - Item: Acute_Jewel_1
+#                Chance: 1750
+#              - Item: Mettle_Jewel_1
+#                Chance: 1750
+#              - Item: Tenacity_Jewel_1
+#                Chance: 1750
+#              - Item: Master_A_Jewel_1
+#                Chance: 1750
+#              - Item: Magic_E_Jewel_1
+#                Chance: 1750
+#              - Item: Spell_Jewel_1
+#                Chance: 1750
+#              - Item: Adamatine_Jewel_1
+#                Chance: 1750
+#              - Item: Affection_Jewel_1
+#                Chance: 1750
+#              - Item: Sharp4
+#                Chance: 3000
+#              - Item: Expert_Archer4
+#                Chance: 3000
+#              - Item: Attack_Delay_4
+#                Chance: 3000
+#              - Item: Spell4
+#                Chance: 3000
+#              - Item: Sharp2
+#                Chance: 6000
+#              - Item: Expert_Archer2
+#                Chance: 6000
+#              - Item: Attack_Delay_2
+#                Chance: 6000
+#              - Item: Spell2
+#                Chance: 6000
+#          - Enchantgrade: 4
+#            Items:
+#              - Item: Sharp1
+#                Chance: 8000
+#              - Item: Expert_Archer1
+#                Chance: 8000
+#              - Item: Attack_Delay_1
+#                Chance: 8000
+#              - Item: Spell1
+#                Chance: 8000
+#              - Item: Sharp3
+#                Chance: 4500
+#              - Item: Expert_Archer3
+#                Chance: 4500
+#              - Item: Attack_Delay_3
+#                Chance: 4500
+#              - Item: Spell3
+#                Chance: 4500
+#              - Item: Acute_Jewel_1
+#                Chance: 1750
+#              - Item: Mettle_Jewel_1
+#                Chance: 1750
+#              - Item: Tenacity_Jewel_1
+#                Chance: 1750
+#              - Item: Master_A_Jewel_1
+#                Chance: 1750
+#              - Item: Magic_E_Jewel_1
+#                Chance: 1750
+#              - Item: Spell_Jewel_1
+#                Chance: 1750
+#              - Item: Adamatine_Jewel_1
+#                Chance: 1750
+#              - Item: Affection_Jewel_1
+#                Chance: 1750
+#              - Item: Sharp4
+#                Chance: 3000
+#              - Item: Expert_Archer4
+#                Chance: 3000
+#              - Item: Attack_Delay_4
+#                Chance: 3000
+#              - Item: Spell4
+#                Chance: 3000
+#              - Item: Sharp2
+#                Chance: 6000
+#              - Item: Expert_Archer2
+#                Chance: 6000
+#              - Item: Attack_Delay_2
+#                Chance: 6000
+#              - Item: Spell2
+#                Chance: 6000
+#        PerfectEnchants:
+#          - Item: Acute_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Mettle_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Tenacity_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Master_A_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Magic_E_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Spell_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Adamatine_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+#          - Item: Affection_Jewel_1
+#            Materials:
+#              - Material: Time_D_Ma_Rune
+#                Amount: 125
+  - Id: 133
+    TargetItems:
+      Dimen_DK_T_Sword: true
+      Dimen_SHC_Katar: true
+      Dimen_SHC_Cakram: true
+      Dimen_MT_Axe: true
+      Dimen_DK_Lance: true
+      Dimen_AG_Staff: true
+      Dimen_AG_Rod: true
+      Dimen_SS_Humma: true
+      Dimen_SS_Wheel: true
+      Dimen_ABC_Bow: true
+      Dimen_WH_C_Bow: true
+      Dimen_WH_Bow: true
+      Dimen_NW_Rifle: true
+      Dimen_NW_Launcher: true
+      Dimen_IG_Sword: true
+      Dimen_BO_Sword: true
+      Dimen_HN_Sword: true
+      Dimen_ABC_Knife: true
+      Dimen_IG_Spear: true
+      Dimen_EM_M_Book: true
+      Dimen_EM_S_Book: true
+      Dimen_CD_Bible: true
+      Dimen_SKE_M_Book: true
+      Dimen_SKE_S_Book: true
+      Dimen_CD_Rod: true
+      Dimen_SOA_Stick: true
+      Dimen_SOA_Rod: true
+      Dimen_HN_Rod: true
+      Dimen_SH_Foxtail: true
+      Dimen_SH_F_Model: true
+      Dimen_IQ_Knuckle: true
+      Dimen_IQ_Claw: true
+      Dimen_TR_Vilolin: true
+      Dimen_TR_Ribbon: true
+      Dimen_TR_Harp: true
+      Dimen_TR_Rope: true
+      Dimen_MT_Mace: true
+      Dimen_BO_Hall: true
+    Reset:
+      Chance: 100000
+      Price: 5000000
+      Materials:
+        - Material: Zelunium
+          Amount: 50
+        - Material: Shadowdecon
+          Amount: 50
+        - Material: Etel_Dust
+          Amount: 100
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Bio_Jam_Df2
+            Price: 1000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 50
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Es2
+            Price: 1000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 50
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Vl2
+            Price: 1000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 50
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Eq2
+            Price: 1000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 50
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+          - Item: Bio_Jam_Hd2
+            Price: 1000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 50
+              - Material: Time_D_Ma_Rune
+                Amount: 10
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Barmund_Flame3
+            Price: 3000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 75
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Ice3
+            Price: 3000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 75
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Plain3
+            Price: 3000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 75
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Death3
+            Price: 3000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 75
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+          - Item: Barmund_Poison3
+            Price: 3000000
+            Materials:
+              - Material: Abyss_Rune
+                Amount: 75
+              - Material: Time_D_Ma_Rune
+                Amount: 15
+  - Id: 134
+    TargetItems:
+      FateSin_Boots_IG: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_IG
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_IG
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 135
+    TargetItems:
+      FateSin_Boots_AG: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_AG
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_AG
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+  - Id: 136
+    TargetItems:
+      FateSin_Boots_NW: true
+    Reset:
+      Chance: 90000
+      Price: 1500000
+      Materials:
+        - Material: GH_Cursed_Crystal
+          Amount: 30
+        - Material: GH_Cursed_Gemstone
+          Amount: 30
+    Order:
+      - Slot: 3
+      - Slot: 2
+    Slots:
+      - Slot: 3
+        PerfectEnchants:
+          - Item: Attack_Delay_2
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Spell5
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Archer3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Magician3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+          - Item: Expert_Fighter3
+            Price: 1000000
+            Materials:
+              - Material: GH_Cursed_Gemstone
+                Amount: 50
+              - Material: M_Dimension_Essence
+        Upgrades:
+          - Enchant: Attack_Delay_2
+            Upgrade: Attack_Delay_3
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Spell5
+            Upgrade: Spell6
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer3
+            Upgrade: Expert_Archer4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician3
+            Upgrade: Expert_Magician4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter3
+            Upgrade: Expert_Fighter4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 100
+              - Material: GH_Cursed_Gemstone
+                Amount: 100
+              - Material: M_Dimension_Essence
+          - Enchant: Attack_Delay_3
+            Upgrade: Attack_Delay_4
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Spell6
+            Upgrade: Spell7
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Archer4
+            Upgrade: Expert_Archer5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Magician4
+            Upgrade: Expert_Magician5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+          - Enchant: Expert_Fighter4
+            Upgrade: Expert_Fighter5
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 250
+              - Material: GH_Cursed_Gemstone
+                Amount: 250
+              - Material: M_Dimension_Essence
+      - Slot: 2
+        PerfectEnchants:
+          - Item: Justice_Vigor_NW
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket
+          - Item: Injustice_Vigor_NW
+            Price: 5000000
+            Materials:
+              - Material: GH_Cursed_Crystal
+                Amount: 50
+              - Material: Enchant_Ticket

+ 16 - 1
doc/script_commands.txt

@@ -4212,7 +4212,11 @@ invoking RID. It returns 1 if successful and 0 upon failure.
  4: All players in a specified area of the map of the invoking player (or NPC).
     [ Parameters: <x0>,<y0>,<x1>,<y1> ]
  5: All players in the map.
-    [ Parameters: "<map name>" ]
+    [ Parameters: "<map name>" ] 
+ 6: Battleground members of a specified battleground ID.
+    [ Parameters: <battleground id> ]
+ 7: Clan members of a specified clan ID.
+    [ Parameters: <clan id> ]
  Account ID: If type is Account ID, attach the specified account ID.
 
 <flag> can prevent certain players from being attached:
@@ -11140,6 +11144,17 @@ Returns 1 on success.
 
 ---------------------------------------
 
+*channel_join "<channel_name>"{, <char_id>};
+
+Join an existing channel.
+The command returns 0 upon success, and these values upon failure:
+ -1 : Invalid channel or player
+ -2 : Player already in channel
+ -3 : Player banned
+ -4 : Reached max limit
+
+---------------------------------------
+
 *channel_setopt "<chname>",<option>,<value>;
 
 Set option for the channel. Use 1 in <value> to set it, or 0 to unset.

+ 415 - 26
npc/re/instances/OldGlastHeim.txt

@@ -17,6 +17,8 @@
 //=     Cleaned up the script.
 //=     TODO: Confirm Hugin NPC's code flow.
 //= 1.6 Cleaned up the dialogue. [Aleos]
+//= 1.7 Implemented fast mode. [Atemo]
+//      Note: The treasure room is not accessible in fast mode.
 //============================================================
 
 glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
@@ -180,6 +182,28 @@ glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
 		cutin "gl_barmund2",2;
 		close3;
 	}
+	// If the instance has already been completed once, the player can skip sector 1,2,3 and starts from the 1st boss MG_CORRUPTION_ROOT
+	if (isbegin_quest(12321) == 2) {
+		mes "You have a previous clear record. You can skip the scenario and proceed accordingly.";
+		next;
+		if (select( "Omit moderately.", "Appreciate everything." ) == 1) {
+			cutin "GL_BARMUND1.bmp",2;
+			mes "[Barmund]";
+			mes "Have I seen you " + strcharinfo(0) + "";
+			mes "I'm sure I can trust you. Let's leave right away.";
+			close2;
+			cutin "",255;
+			if ('step == 0) {
+				'step = 1;
+				'mode = 2;
+				disablenpc();
+				enablenpc instance_npcname("Heinrich#1");
+				enablenpc instance_npcname("Varmundt#1");
+			}
+			end;
+		}
+		// (original scenario)
+	}
 	.@account_id = getcharid(3);
 	.@player_name$ = strcharinfo(0);
 	mes "[Varmundt]";
@@ -221,9 +245,13 @@ glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
 	npctalk "Varmundt: Hurry! Report to Sir. Heinrich about Himelmez. I must check the defense barrier here!";
 	close2;
 	cutin "",255;
-	disablenpc instance_npcname("Varmundt#0");
-	enablenpc instance_npcname("Heinrich#1");
-	enablenpc instance_npcname("Varmundt#1");
+	if ('step == 0) {
+		'step = 1;
+		'mode = 1;
+		disablenpc instance_npcname("Varmundt#0");
+		enablenpc instance_npcname("Heinrich#1");
+		enablenpc instance_npcname("Varmundt#1");
+	}
 	end;
 }
 
@@ -311,13 +339,27 @@ glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
 }
 1@gl_k,154,54,3	duplicate(Khalitzburg Knightage#21)	Khalitzburg Knightage#22	4_F_KHALITZBURG
 
-1@gl_k,149,100,6	script	Heinrich#1	4_M_HEINRICH,{
-	if (is_party_leader() == false) {
+1@gl_k,149,100,5	script	Heinrich#1	4_M_HEINRICH,{
+	if (is_party_leader() == false || 'step != 1) {
 		mes "[Heinrich]";
 		mes "Where is your leader? I must talk to him.";
 		cutin "gl_heinrich2",2;
 		close3;
 	}
+	if ('mode == 2) {
+		cutin "GL_HEINRICH2.bmp",2;
+		select( "Heinrich, you are in the castle now..." );
+		mes "[Heinrich]";
+		mes "Ohh " + strcharinfo(0) + "";
+		mes "I guess I can trust you. Let's leave right away.";
+		close2;
+		cutin "",255;
+		if ('step == 1) {
+			'step = 2;
+			donpcevent instance_npcname("#talkinstance2") + "::OnEnable";
+		}
+		end;
+	}
 	.@account_id = getcharid(3);
 	.@player_name$ = strcharinfo(0);
 	cutin "gl_heinrich2",2;
@@ -368,15 +410,15 @@ glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
 	mes "We cannot risk moving the heart just because some stranger says so.";
 	npctalk "Heinrich: We cannot risk moving the heart just because some stranger says so.";
 	close2;
-	disablenpc instance_npcname("Heinrich#1");
-	enablenpc instance_npcname("Heinrich#2");
-	enablenpc instance_npcname("Himelmez#1");
-	donpcevent instance_npcname("#talkinstance1") + "::OnEnable";
 	cutin "",255;
+	if ('step == 1) {
+		'step = 2;
+		donpcevent instance_npcname("#talkinstance1") + "::OnEnable";
+	}
 	end;
 }
 
-1@gl_k,152,97,3	script	Varmundt#1	4_M_BARMUND,{ end; }
+1@gl_k,152,97,3	duplicate(dummy_npc)	Varmundt#1	4_M_BARMUND
 1@gl_k,149,97,5	duplicate(Varmundt#1)	Heinrich#2	4_M_HEINRICH
 1@gl_k,149,100,5	duplicate(Varmundt#1)	Heinrich#3	4_M_HEINRICH
 1@gl_k,149,89,1	duplicate(Varmundt#1)	Himelmez#1	4_F_HIMEL
@@ -386,6 +428,9 @@ glast_01,204,273,5	script	Hugin	4_M_SAGE_C,{
 1@gl_k,1,1,0	script	#talkinstance1	HIDDEN_WARP_NPC,{
 	end;
 OnEnable:
+	disablenpc instance_npcname("Heinrich#1");
+	enablenpc instance_npcname("Heinrich#2");
+	enablenpc instance_npcname("Himelmez#1");
 	mapannounce 'map_name$[0], "????'s: Muahahahaha~!", bc_map,0xFFFF00,FW_NORMAL,18;
 	initnpctimer;
 	'npc_himelmez1$ = instance_npcname("Himelmez#1");
@@ -611,6 +656,174 @@ OnMyMobDead:
 	end;
 }
 
+// Fast mode
+1@gl_k,1,1,0	script	#talkinstance2	HIDDEN_WARP_NPC,{
+	end;
+OnEnable:
+	disablenpc instance_npcname("Heinrich#1");
+	enablenpc instance_npcname("Heinrich#2");
+	enablenpc instance_npcname("Himelmez#1");
+	mapannounce 'map_name$[0], "????'s: Muahahahaha~!", bc_map,0xFFFF00,FW_NORMAL,18;
+	initnpctimer;
+	'npc_himelmez1$ = instance_npcname("Himelmez#1");
+	'npc_varmundt1$ = instance_npcname("Varmundt#1");
+	'npc_heinrich2$ = instance_npcname("Heinrich#2");
+	'npc_heinrich3$ = instance_npcname("Heinrich#3");
+	end;
+OnTimer1500:
+	npctalk "Heinrich: Who are you?", 'npc_heinrich2$;
+	end;
+OnTimer3500:
+	npctalk "Himelmez: Well well~ Am I interrupting you? Weren't you expecting me?", 'npc_himelmez1$;
+	end;
+OnTimer7500:
+	npctalk "Himelmez: I have business to take care of. My minions will treat you well enough for me~", 'npc_himelmez1$;
+	end;
+OnTimer11500:
+	disablenpc 'npc_himelmez1$;
+	end;
+OnTimer12500:
+	npctalk "Heinrich: She probably already knows where the Ymir's heart piece is.", 'npc_heinrich2$;
+	end;
+OnTimer16500:
+	for (.@i = 1; .@i <= 20; .@i += 4) {
+		hideonnpc instance_npcname("Khalitzburg Knightage#" + .@i);
+		hideonnpc instance_npcname("Khalitzburg Knightage#" + (.@i+1));
+		hideonnpc instance_npcname("White Knight#" + (.@i+2));
+		hideonnpc instance_npcname("White Knight#" + (.@i+3));
+	}
+	hideonnpc instance_npcname("Khalitzburg Knightage#21");
+	hideonnpc instance_npcname("Khalitzburg Knightage#22");
+
+	.@label$ = instance_npcname("#talkinstance1") + "::OnMyMobDead";
+	monster 'map_name$[0],145,59,"Abysmal Knight",2470,1,.@label$;// MG_KNIGHT_OF_ABYSS
+	monster 'map_name$[0],154,59,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,69,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,69,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,79,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,79,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,89,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,89,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],145,99,"Abysmal Knight",2470,1,.@label$;
+	monster 'map_name$[0],154,99,"Abysmal Knight",2470,1,.@label$;
+
+	monster 'map_name$[0],145,54,"Khalitzburg",2471,1,.@label$;// G_MG_KHALITZBURG
+	unittalk $@mobid[0],"Water... Someone give me water...";
+	monster 'map_name$[0],154,54,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Kkkrrrruughgh...";
+	monster 'map_name$[0],145,64,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Sir Heinrich. Save me...";
+	monster 'map_name$[0],154,64,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I miss my sister...";
+	monster 'map_name$[0],145,74,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Don't leave me alone, help me.";
+	monster 'map_name$[0],154,74,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Aaarrrrrhhhh";
+	monster 'map_name$[0],145,84,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I am so thirsty.";
+	monster 'map_name$[0],154,84,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Oh...No...I can't die yet...";
+	monster 'map_name$[0],145,94,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"I feel sick to my stomach urrgg";
+	monster 'map_name$[0],154,94,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Can someone...";
+	monster 'map_name$[0],145,104,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"Arrgg... My body";
+	monster 'map_name$[0],154,104,"Khalitzburg",2471,1,.@label$;
+	unittalk $@mobid[0],"My throat is burning!";
+	end;
+OnTimer17500:
+	npctalk "The dead go where the dead belong! Everyone go back!", 'npc_heinrich2$;
+	end;
+OnTimer18500:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#1");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#2");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#1");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#2");
+	end;
+OnTimer19000:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#3");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#4");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#5");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#6");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#3");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#4");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#5");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#6");
+	end;
+OnTimer19500:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#7");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#8");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#9");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#10");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#7");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#8");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#9");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#10");
+	end;
+OnTimer20000:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#11");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#12");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#13");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#14");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#11");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#12");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#13");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#14");
+	end;
+OnTimer20500:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#15");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#16");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#17");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#18");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#15");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#16");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#17");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#18");
+	end;
+OnTimer21500:
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#19");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("White Knight#20");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#21");
+	specialeffect EF_GRANDCROSS,AREA, instance_npcname("Khalitzburg Knightage#22");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#19");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("White Knight#20");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#21");
+	specialeffect EF_LEXAETERNA,AREA, instance_npcname("Khalitzburg Knightage#22");
+	disablenpc 'npc_heinrich2$;
+	enablenpc 'npc_heinrich3$;
+	killmonster 'map_name$[0], instance_npcname("#talkinstance1") + "::OnMyMobDead";
+	npctalk "Heinrich: Very well, Varmundt. Let's find Himelmez.", 'npc_heinrich3$;
+	end;
+OnTimer25500:
+	npctalk "Varmundt: Wait, I don't have time to go around the castle and clear a path. I will open a portal that can be tracked as quickly as possible.", 'npc_varmundt1$;
+	end;
+OnTimer27000:
+	specialeffect EF_BEGINSPELL_N5, AREA, 'npc_varmundt1$;
+	end;
+OnTimer28500:
+	stopnpctimer;
+	disablenpc 'npc_heinrich3$;
+	disablenpc 'npc_varmundt1$;
+	enablenpc instance_npcname("#cut01");
+	enablenpc instance_npcname("#Mimelon");
+	enablenpc instance_npcname("Himelmez#2");
+	enablenpc instance_npcname("Varmundt#2");
+	enablenpc instance_npcname("Heinrich#4");
+	'step = 4;
+
+	'npc_himelmez1$ = 'npc_varmundt1$ = 'npc_heinrich2$ = 'npc_heinrich3$ = "";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@gl_k,149,96,1	script	#cut01	GATE_SKYBLUE,{
+	warp 'map_name$[0],151,232;
+	end;
+}
+
+
 // Sector 1 Mobs
 //============================================================
 1@gl_k,1,1,0	script	#ghmemorialmob01	HIDDEN_WARP_NPC,{
@@ -642,7 +855,7 @@ OnMyMobDead:
 }
 
 1@gl_k,17,51,3	script	Altar boy Domun#1	4_M_KID1,{
-	if (is_party_leader() == false) {
+	if (is_party_leader() == false || 'step != 2) {
 		mes "[Altar boy Domun]";
 		mes "Save me, save me, please...";
 		close;
@@ -683,8 +896,11 @@ OnMyMobDead:
 	mes "[Altar boy Domun]";
 	mes "Ok, I... I'll try.";
 	npctalk "Altar boy Domun: Ok, I... I'll try.";
-	disablenpc instance_npcname("Altar boy Domun#1");
-	donpcevent instance_npcname("#ghmemorialmob02") + "::OnStart";
+	if ('step == 2) {
+		'step = 3;
+		disablenpc instance_npcname("Altar boy Domun#1");
+		donpcevent instance_npcname("#ghmemorialmob02") + "::OnStart";
+	}
 	close;
 }
 
@@ -720,7 +936,7 @@ OnMyMobDead:
 }
 
 1@gl_k,291,145,3	script	Holgren the Destroyer#1	4_F_JOB_BLACKSMITH,{
-	if (is_party_leader() == false) {
+	if (is_party_leader() == false || 'step != 3) {
 		mes "[Holgren the Destroyer]";
 		mes "You human?";
 		close;
@@ -758,8 +974,11 @@ OnMyMobDead:
 	mes "[Holgren the Destroyer]";
 	mes "It's ok. You've already done enough. I can help myself. Good luck to you too.";
 	npctalk "Holgren the Destroyer: It's ok. You've already done enough. I can help myself. Good luck to you too.";
-	disablenpc instance_npcname("Holgren the Destroyer#1");
-	donpcevent instance_npcname("#ghmemorialmob03") + "::OnEnable";
+	if ('step == 3) {
+		'step = 4;
+		disablenpc instance_npcname("Holgren the Destroyer#1");
+		donpcevent instance_npcname("#ghmemorialmob03") + "::OnEnable";
+	}
 	close;
 }
 
@@ -887,7 +1106,20 @@ OnTimer5000:
 1@gl_k,150,257,0	script	#Mimelon	HIDDEN_WARP_NPC,7,7,{
 	end;
 OnTouch_:
-	disablenpc instance_npcname("#Mimelon");
+	if ('step != 4)
+		end;
+	'step = 5;
+	disablenpc();
+	if ('mode == 1)
+		donpcevent instance_npcname("#talkinstance3") + "::OnStart";
+	else if ('mode == 2)
+		donpcevent instance_npcname("#talkinstance4") + "::OnStart";
+	end;
+}
+
+1@gl_k,1,1,0	script	#talkinstance3	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
 	initnpctimer;
 	'npc_himelmez2$ = instance_npcname("Himelmez#2");
 	'npc_heinrich4$ = instance_npcname("Heinrich#4");
@@ -938,6 +1170,33 @@ OnTimer38000:
 	end;
 }
 
+1@gl_k,1,1,0	script	#talkinstance4	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	'npc_himelmez2$ = instance_npcname("Himelmez#2");
+	'npc_heinrich4$ = instance_npcname("Heinrich#4");
+	npctalk "Himelmez: Guess you are either lucky or powerful to make it this far.", 'npc_himelmez2$;
+	end;
+OnTimer3500:
+	disablenpc 'npc_himelmez2$;
+	end;
+OnTimer4500:
+	npctalk "Heinrich: Sir Varmundt! Help those adventurers. I will go after Himelmez!", 'npc_heinrich4$;
+	end;
+OnTimer6500:
+	disablenpc 'npc_heinrich4$;
+	end;
+OnTimer9500:
+	mapannounce 'map_name$[0], "An echoing comes from deep inside of the knight's shrine.", bc_map,0xFFFFFF;
+	end;
+OnTimer14500:
+	stopnpctimer;
+	donpcevent instance_npcname("#ghmemorialmob04") + "::OnStart";
+	'npc_himelmez2$ = 'npc_heinrich4$ = "";
+	end;
+}
+
 1@gl_k,1,1,0	script	#ghmemorialmob04	HIDDEN_WARP_NPC,{
 	end;
 OnStart:
@@ -984,11 +1243,23 @@ OnEffect:
 	end;
 }
 
-// note: this part can be skipped
 2@gl_k,150,66,0	script	#Servanton	HIDDEN_WARP_NPC,7,7,{
 	end;
 OnTouch_:
-	disablenpc instance_npcname("#Servanton");
+	if ('step != 5)
+		end;
+	'step = 6;
+	disablenpc();
+	if ('mode == 1)
+		donpcevent instance_npcname("#talkinstance5") + "::OnStart";
+	else if ('mode == 2)
+		donpcevent instance_npcname("#talkinstance6") + "::OnStart";
+	end;
+}
+
+2@gl_k,1,1,0	script	#talkinstance5	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
 	initnpctimer;
 	'npc_heinrich$ = instance_npcname("Heinrich#21");
 	'npc_varmundt$ = instance_npcname("Varmundt#21");
@@ -1071,6 +1342,28 @@ OnTimer69000:
 	end;
 }
 
+2@gl_k,1,1,0	script	#talkinstance6	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	initnpctimer;
+	'npc_heinrich$ = instance_npcname("Heinrich#21");
+	'npc_varmundt$ = instance_npcname("Varmundt#21");
+	npctalk "Heinrich: This structure was not in the castle before!", 'npc_heinrich$;
+	end;
+OnTimer2000:
+	npctalk "Varmundt: Ok, it's time to begin Heinrich.", 'npc_varmundt$;
+	end;
+OnTimer3500:
+	stopnpctimer;
+	mapannounce 'map_name$[1], "A portal to the west has opened in the central hallway.", bc_map,0xFFFF00;
+	disablenpc 'npc_varmundt$;
+	disablenpc 'npc_heinrich$;
+	'npc_varmundt$ = 'npc_heinrich$ = "";
+	enablenpc instance_npcname("#22 Control");
+	enablenpc instance_npcname("#22 Control2");
+	end;
+}
+
 // Spots
 // Note: timer is the only condition for them to respawn
 2@gl_k,118,141,0	script	#ogh_2-1	HIDDEN_WARP_NPC,20,20,{
@@ -1125,7 +1418,13 @@ OnStart:
 	end;
 
 OnMyMobDead:
-	if (rand(50) == 0) {// can re-spawn
+	if (mobcount('map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnBossDead") > 0)	// Prevent boss re-spawn
+		end;
+	if ('mode == 2)	// Higher (but unknown) spawn rate in fast mode
+		.@r = 10;
+	else
+		.@r = 50;
+	if (rand(.@r) == 0) {
 		mapannounce 'map_name$[1], "Evil Forces are appearing in this area.", bc_map,0xFFFF44,FW_NORMAL,15;
 		killmonster 'map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnBossDead";
 
@@ -1136,14 +1435,17 @@ OnMyMobDead:
 	end;
 
 OnBossDead:
+	disablenpc();
 	mapannounce 'map_name$[1], "A portal has opened to the east in the central hallway.", bc_map,0xFFFF00;
 	enablenpc instance_npcname("#23 Control");
 	enablenpc instance_npcname("#23 Control2");
 	donpcevent instance_npcname("#ghmemorialmob06") + "::OnStart";
 
-	disablenpc instance_npcname("#ghmemorialmob05");
+	// Event stopped and monsters in this sector killed
 	for ( .@i = 1; .@i <= 7; .@i++ )
 		donpcevent instance_npcname("#ogh_2-" + .@i) + "::OnStop";
+
+	killmonster 'map_name$[1], instance_npcname("#ghmemorialmob05") + "::OnMyMobDead";
 	end;
 }
 
@@ -1204,7 +1506,13 @@ OnStart:
 	end;
 
 OnMyMobDead:
-	if (rand(50) == 0) {// can re-spawn
+	if (mobcount('map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnBossDead") > 0)	// Prevent boss re-spawn
+		end;
+	if ('mode == 2)	// Higher (but unknown) spawn rate in fast mode
+		.@r = 10;
+	else
+		.@r = 50;
+	if (rand(.@r) == 0) {
 		mapannounce 'map_name$[1], "An evil presence has teleported into this area.", bc_map,0xFFFF44,FW_NORMAL,15;
 		killmonster 'map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnBossDead";
 
@@ -1215,6 +1523,7 @@ OnMyMobDead:
 	end;
 
 OnBossDead:
+	disablenpc();
 	mapannounce 'map_name$[1], "A new portal has appeared at the end of the central corridor.", bc_map,0xFFFF00;
 	enablenpc instance_npcname("#24 Control");
 	enablenpc instance_npcname("#24 Control2");
@@ -1222,10 +1531,12 @@ OnBossDead:
 	for ( .@i = 1; .@i <= 35; .@i++ )
 		enablenpc instance_npcname("Decomposed body#" + .@i);
 
-	disablenpc instance_npcname("#ghmemorialmob06");
+	// Event stopped and monsters in this sector killed
 	for ( .@i = 1; .@i <= 7; .@i++ )
 		donpcevent instance_npcname("#ogh_3-" + .@i) + "::OnStop";
 
+	killmonster 'map_name$[1], instance_npcname("#ghmemorialmob06") + "::OnMyMobDead";
+
 	// Hidden mobs
 	setarray .@coord[0],
 		 37,265, 57,265, 77,265, 97,265, 117,265, 188,264, 208,264,
@@ -1241,6 +1552,9 @@ OnBossDead:
 2@gl_k,150,180,0	script	#Geron	HIDDEN_WARP_NPC,7,7,{
 	end;
 OnTouch_:
+	if ('step != 6)
+		end;
+	'step = 7;
 	disablenpc instance_npcname("#Geron");
 	mapannounce 'map_name$[1], "???: Do not come here! It's a trap... Kkkkah!!!", bc_map,0xFF7777,FW_NORMAL,15;
 	enablenpc instance_npcname("Himelmez#22");
@@ -1331,11 +1645,21 @@ OnTimer45000:
 	mes "[Himelmez]";
 	mes "That is amazing ~ you made it all the way here. May I say thank you?";
 	close3;
+OnTouch_:
+	if ('step != 7)
+		end;
+	'step = 8;
+	disablenpc();
+	if ('mode == 1)
+		donpcevent instance_npcname("#talkinstance7") + "::OnStart";
+	else if ('mode == 2)
+		donpcevent instance_npcname("#talkinstance8") + "::OnStart";
+	end;
+}
 
-OnTouch:
+2@gl_k,1,1,0	script	#talkinstance7	HIDDEN_WARP_NPC,{
 	end;
-OnTouch_:
-	disablenpc instance_npcname("Himelmez#22");
+OnStart:
 	enablenpc instance_npcname("Himelmez#23");
 	initnpctimer;
 	'npc_himelmez$ = instance_npcname("Himelmez#23");
@@ -1435,6 +1759,62 @@ OnTimer80000:
 	end;
 }
 
+2@gl_k,1,1,0	script	#talkinstance8	HIDDEN_WARP_NPC,{
+	end;
+OnStart:
+	enablenpc instance_npcname("Himelmez#23");
+	initnpctimer;
+	'npc_himelmez$ = instance_npcname("Himelmez#23");
+	'npc_gerhalt$ = instance_npcname("Gerhalt#23");
+	'npc_heinrich$ = instance_npcname("Heinrich#23");
+	'npc_varmundt$ = instance_npcname("Varmundt#23");
+
+	npctalk "Himelmez: Amazing~ I thought that you were not even close to getting here...", 'npc_himelmez$;
+	end;
+OnTimer1500:
+	specialeffect EF_BARRIER, AREA, 'npc_gerhalt$;
+	end;
+OnTimer3500:
+	specialeffect EF_MAPPILLAR, AREA, 'npc_gerhalt$;
+	end;
+OnTimer5000:
+	specialeffect EF_MAPPILLAR2, AREA, 'npc_gerhalt$;
+	end;
+OnTimer5500:
+	disablenpc 'npc_himelmez$;
+	end;
+OnTimer7000:
+	specialeffect EF_CHAINCOMBO, AREA, 'npc_gerhalt$;
+	end;
+OnTimer10000:
+	npctalk "Heinrich: I'll never let you get away Himelmez!!", 'npc_heinrich$;
+	end;
+OnTimer11000:
+	disablenpc 'npc_heinrich$;
+	npctalk "Varmundt: We have no choice. We have to fight against Amdarais!", 'npc_varmundt$;
+	end;
+OnTimer14000:
+	specialeffect EF_MAPPILLAR2, AREA, 'npc_gerhalt$;
+	specialeffect EF_MAPPILLAR, AREA, 'npc_gerhalt$;
+	end;
+OnTimer14500:
+	mapannounce 'map_name$[1], "Gerhalt's body is changing.", bc_map,0xFFFFFF;
+	end;
+OnTimer15500:
+	disablenpc 'npc_varmundt$;
+	mapannounce 'map_name$[1], "Varmundt: Let me help this battle with my illusion. Just follow the illusion's orders.", bc_map,0xFFFF00;
+	end;
+OnTimer17500:
+	specialeffect EF_LORD, AREA, 'npc_gerhalt$;
+	end;
+OnTimer20500:
+	stopnpctimer;
+	disablenpc 'npc_gerhalt$;
+	donpcevent instance_npcname("#ghmemorialmob07") + "::OnStart";
+	'npc_himelmez$ = 'npc_gerhalt$ = 'npc_heinrich$ = 'npc_varmundt$ = "";
+	end;
+}
+
 2@gl_k,158,252,4	script	Himelmez#23	4_F_HIMEL,{
 	cutin "gl_himel2",2;
 	mes "[Himelmez]";
@@ -1592,6 +1972,8 @@ OnTimer10000:
 
 
 2@gl_k,158,241,1	script	Hugin#21	4_M_SAGE_C,{
+	if ('step != 8)
+		end;
 	if (checkquest(12319,HUNTING) == 2) {// note: complete hunting 'Corrupted Soul Hunt' prerequis
 		mes "[Hugin]";
 		mes "Hm, you are very well. First of all, let me give you some loot from Amdarais.";
@@ -1649,6 +2031,8 @@ OnTimer10000:
 // Treasure Room
 //============================================================
 1@gl_k,165,136,3	script	Strange crack#2	CLEAR_NPC,{
+	if ('step != 8)
+		end;
 	if (isbegin_quest(12322) == 0) {// Space Distortion
 		mes "The crack looks suspicious but nothing more to check.";
 		close;
@@ -1729,6 +2113,8 @@ OnTimer10000:
 	end;
 
 OnInstanceInit:
+	'step = 0;
+	'mode = 0;
 	'map_name$[0] = instance_mapname("1@gl_k");
 	'map_name$[1] = instance_mapname("2@gl_k");
 
@@ -1810,5 +2196,8 @@ OnInstanceInit:
 	disablenpc instance_npcname("#24 Control");
 	disablenpc instance_npcname("#24 Control2");
 	disablenpc instance_npcname("#Secret Room Exit");
+
+	// Fast mode
+	disablenpc instance_npcname("#cut01");
 	end;
 }

+ 402 - 0
npc/re/merchants/barters/enchan_illusion_dungeons.yml

@@ -412,3 +412,405 @@ Body:
           - Index: 3
             Item: IllusionStone
             Amount: 120
+  - Name: barter_ill_moonlight
+    Items:
+      - Index: 0
+        Item: Staff_Of_Bordeaux_IL
+        RequiredItems:
+          - Index: 0
+            Item: Staff_Of_Bordeaux
+          - Index: 1
+            Item: IllusionStone
+            Amount: 30
+          - Index: 2
+            Item: HazyDream
+            Amount: 100
+      - Index: 1
+        Item: Moonlight_Sword_IL
+        RequiredItems:
+          - Index: 0
+            Item: Moonlight_Sword
+          - Index: 1
+            Item: IllusionStone
+            Amount: 60
+          - Index: 2
+            Item: HazyDream
+            Amount: 100
+      - Index: 2
+        Item: Long_Mace_IL
+        RequiredItems:
+          - Index: 0
+            Item: Long_Mace
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: HazyDream
+            Amount: 20
+      - Index: 3
+        Item: Spectral_Spear_IL
+        RequiredItems:
+          - Index: 0
+            Item: Spectral_Spear
+          - Index: 1
+            Item: IllusionStone
+            Amount: 20
+          - Index: 2
+            Item: HazyDream
+            Amount: 100
+      - Index: 4
+        Item: Nurse_Cap_IL
+        RequiredItems:
+          - Index: 0
+            Item: Nurse_Cap
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: Bloody_LoveLetter
+            Amount: 100
+      - Index: 5
+        Item: Apple_Of_Archer_IL
+        RequiredItems:
+          - Index: 0
+            Item: Apple_Of_Archer
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: BrokenArrow
+            Amount: 100
+      - Index: 6
+        Item: Puente_Robe_IL
+        RequiredItems:
+          - Index: 0
+            Item: Puente_Robe
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: HazyDream
+            Amount: 100
+      - Index: 7
+        Item: Muffler_IL
+        RequiredItems:
+          - Index: 0
+            Item: Muffler_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: HazyMooncake
+            Amount: 100
+      - Index: 8
+        Item: Shoes_IL
+        RequiredItems:
+          - Index: 0
+            Item: Shoes_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: HazyMooncake
+            Amount: 100
+  - Name: barter_ill_frozen
+    Items:
+      - Index: 0
+        Item: Huuma_Flutter_Snow_IL
+        RequiredItems:
+          - Index: 0
+            Item: Huuma_Fluttering_Snow
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: KTULLANUXsEye
+            Amount: 20
+      - Index: 1
+        Item: Combo_Battle_Glove_IL
+        RequiredItems:
+          - Index: 0
+            Item: Combo_Battle_Glove
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: Snowball
+            Amount: 100
+      - Index: 2
+        Item: Herald_Of_GOD_IL
+        RequiredItems:
+          - Index: 0
+            Item: Herald_Of_GOD_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: SpritJewel
+            Amount: 300
+      - Index: 3
+        Item: Clack_Of_Servival_IL
+        RequiredItems:
+          - Index: 0
+            Item: Clack_Of_Servival
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: Frozen_PieceOfRock
+            Amount: 200
+      - Index: 4
+        Item: Cap_IL
+        RequiredItems:
+          - Index: 0
+            Item: Cap_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: Frozen_PieceOfRock
+            Amount: 100
+  - Name: barter_ill_vampire
+    Items:
+      - Index: 0
+        Item: Infiltrator_IL
+        RequiredItems:
+          - Index: 0
+            Item: Infiltrator_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 80
+          - Index: 2
+            Item: Torn_Diary
+            Amount: 20
+      - Index: 1
+        Item: Ghoul_Leg_IL
+        RequiredItems:
+          - Index: 0
+            Item: Ghoul_Leg
+          - Index: 1
+            Item: IllusionStone
+            Amount: 10
+          - Index: 2
+            Item: NightmareOfLump
+            Amount: 100
+      - Index: 2
+        Item: Wizardy_Staff_IL
+        RequiredItems:
+          - Index: 0
+            Item: Wizardy_Staff
+          - Index: 1
+            Item: IllusionStone
+            Amount: 40
+          - Index: 2
+            Item: SuspiciousMagicCircle
+            Amount: 100
+      - Index: 3
+        Item: Balistar_IL
+        RequiredItems:
+          - Index: 0
+            Item: Balistar_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: Shining_Spore
+            Amount: 100
+      - Index: 4
+        Item: Book_Of_The_Apo_IL
+        RequiredItems:
+          - Index: 0
+            Item: Book_Of_The_Apocalypse
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: Dried_Clover
+            Amount: 10
+      - Index: 5
+        Item: Cape_Of_Ancient_Lord_IL
+        RequiredItems:
+          - Index: 0
+            Item: Cape_Of_Ancient_Lord_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 30
+          - Index: 2
+            Item: Short_Bat_Fur
+            Amount: 200
+      - Index: 6
+        Item: Skul_Ring_IL
+        RequiredItems:
+          - Index: 0
+            Item: Skul_Ring_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: Dried_Leaf_Of_Ygg
+            Amount: 400
+      - Index: 7
+        Item: Ring_IL
+        RequiredItems:
+          - Index: 0
+            Item: Ring_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: SuspiciousMagicCircle
+            Amount: 400
+  - Name: barter_ill_turtle
+    Items:
+      - Index: 0
+        Item: Immaterial_Sword_IL
+        RequiredItems:
+          - Index: 0
+            Item: Immaterial_Sword
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: ShipsLog
+            Amount: 50
+      - Index: 1
+        Item: War_Axe_IL
+        RequiredItems:
+          - Index: 0
+            Item: War_Axe
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: PieceOfBlackSpirit
+            Amount: 200
+      - Index: 2
+        Item: Pole_Axe_IL
+        RequiredItems:
+          - Index: 0
+            Item: Pole_Axe
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: PieceOfBlackSpirit
+            Amount: 200
+      - Index: 3
+        Item: Huuma_Bird_Wing_IL
+        RequiredItems:
+          - Index: 0
+            Item: Huuma_Bird_Wing
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: OldShell
+            Amount: 200
+      - Index: 4
+        Item: Iron_Driver_IL
+        RequiredItems:
+          - Index: 0
+            Item: Iron_Driver
+          - Index: 1
+            Item: IllusionStone
+            Amount: 100
+          - Index: 2
+            Item: OldShell
+            Amount: 200
+      - Index: 5
+        Item: Fancy_Flower_IL
+        RequiredItems:
+          - Index: 0
+            Item: Fancy_Flower
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: OldDoll
+            Amount: 50
+  - Name: barter_ill_luanda
+    Items:
+      - Index: 0
+        Item: Tablet_IL
+        RequiredItems:
+          - Index: 0
+            Item: Tablet
+          - Index: 1
+            Item: IllusionStone
+            Amount: 50
+          - Index: 2
+            Item: Weak_Worm
+            Amount: 100
+      - Index: 1
+        Item: Hunter_Bow_IL
+        RequiredItems:
+          - Index: 0
+            Item: Hunter_Bow_
+          - Index: 1
+            Item: IllusionStone
+            Amount: 80
+          - Index: 2
+            Item: Shooting_Stone
+            Amount: 50
+          - Index: 3
+            Item: Pot_Stone
+            Amount: 50
+          - Index: 4
+            Item: Hair_Leaf
+            Amount: 50
+      - Index: 2
+        Item: Goibne_Helmet_IL
+        RequiredItems:
+          - Index: 0
+            Item: Goibne's_Helmet
+          - Index: 1
+            Item: IllusionStone
+            Amount: 120
+          - Index: 2
+            Item: Wootan_D_S_Piece
+            Amount: 30
+          - Index: 3
+            Item: Token_Of_Wootan
+            Amount: 150
+      - Index: 3
+        Item: Goibne_Armor_IL
+        RequiredItems:
+          - Index: 0
+            Item: Goibne's_Armor
+          - Index: 1
+            Item: IllusionStone
+            Amount: 80
+          - Index: 2
+            Item: Hard_Mud
+            Amount: 100
+          - Index: 3
+            Item: Token_Of_Bigstone
+            Amount: 150
+      - Index: 4
+        Item: Goibne_Boots_IL
+        RequiredItems:
+          - Index: 0
+            Item: Goibne's_Combat_Boots
+          - Index: 1
+            Item: IllusionStone
+            Amount: 80
+          - Index: 2
+            Item: Wootan_F_Fur
+            Amount: 100
+          - Index: 3
+            Item: Token_Of_Wootan
+            Amount: 150
+      - Index: 5
+        Item: Goibne_Shoulder_IL
+        RequiredItems:
+          - Index: 0
+            Item: Goibne's_Shoulder_Arms
+          - Index: 1
+            Item: IllusionStone
+            Amount: 120
+          - Index: 2
+            Item: Fragment_Of_Rock
+            Amount: 30
+          - Index: 3
+            Item: Token_Of_Bigstone
+            Amount: 150

+ 36 - 894
npc/re/merchants/enchan_illusion_dungeons.txt

@@ -23,7 +23,7 @@ pay_d03_i,160,45,3	script	Gemcutter#ilp20	4_TOWER_17,3,3,{
 	mes "[ Gemcutter ]";
 	mes "Do you have business with me?";
 	next;
-	switch (select("What are you doing here?:Upgrade Weapon.:Upgrade Armor.")) {
+	switch( select( "What are you doing here?", "Upgrade equipments" ) ) {
 	case 1:
 		mes "[ Gemcutter ]";
 		mes "I came to the ruined village,";
@@ -40,30 +40,8 @@ pay_d03_i,160,45,3	script	Gemcutter#ilp20	4_TOWER_17,3,3,{
 		mes "If you're interested, we can discuss the details of our bargain.";
 		close;
 	case 2:
-		disable_items;
-		if (checkweight(25271,1) == 0 || (MaxWeight - Weight) < 1000) {
-			mes "- You're carrying too many items to proceed. -";
-			close;
-		}
-		setarray .@reward_id[0],
-			26109,		// Illusion Staff of Bordeaux
-			28725,		// Illusion Moonlight Dagger
-			16063,		// Illusion Long Mace
-			26007;		// Illusion Spectral Spear
-		.@size = getarraysize(.@reward_id);
-
-		.@refine_req = 9;
-
-		for ( .@i = 0; .@i < .@size; ++.@i )
-			.@reward_name$[.@i] = replacestr( getitemname(.@reward_id[.@i]), ":", "" );
-
 		mes "[ Gemcutter ]";
-		mes "The following is the list of equipment I can handle.";
-		for ( .@i = 0; .@i < .@size; ++.@i )
-			mes mesitemlink( .@reward_id[.@i], false );
-		next;
-		mes "[ Gemcutter ]";
-		mes "Make sure ^0000FFyour equipment is refined to at least +" + .@refine_req + "^000000 before bringing it to me.";
+		mes "Make sure ^0000FFyour equipment is refined to at least +9^000000 before bringing it to me.";
 		mes "That's the minimum requirement for my upgrade service to have any visible effects on your equipment.";
 		next;
 		mes "[ Gemcutter ]";
@@ -77,178 +55,11 @@ pay_d03_i,160,45,3	script	Gemcutter#ilp20	4_TOWER_17,3,3,{
 		mes "[ Gemcutter ]";
 		mes "And I need ^0000FFIllusion Stones and some other materials^000000 to upgrade your equipment.";
 		mes "Pick an item you want and I'll tell you what I need.";
-		next;
-		switch( select( .@reward_name$[0], .@reward_name$[1], .@reward_name$[2], .@reward_name$[3] ) ) {
-		case 1:
-			.@reward = .@reward_id[0];		// Illusion Staff of Bordeaux
-			.@eq_req = 1648;				// Staff of Bordeaux
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,30,					// Illusion Stones
-				25256,100;					// Hazy Dreams
-			break;
-		case 2:
-			.@reward = .@reward_id[1];		// Illusion Moonlight Dagger
-			.@eq_req = 1234;				// Moonlight Dagger
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,60,					// Illusion Stones
-				25256,100;					// Hazy Dreams
-			break;
-		case 3:
-			.@reward = .@reward_id[2];		// Illusion Long Mace
-			.@eq_req = 1525;				// Long Mace
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				25256,20;					// Hazy Dreams
-			break;
-		case 4:
-			.@reward = .@reward_id[3];		// Illusion Spectral Spear
-			.@eq_req = 1477;				// Spectral Spear
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,20,					// Illusion Stones
-				25256,100;					// Hazy Dreams
-			break;
-		}
-		break;
-	case 3:
-		disable_items;
-		if (checkweight(25271,1) == 0 || (MaxWeight - Weight) < 1000) {
-			mes "- You're carrying too many items to proceed. -";
-			close;
-		}
-		setarray .@reward_id[0],
-			19209,		// Illusion Nurse Cap
-			19210,		// Illusion Apple of Archer
-			15195,		// Illusion Puente Robe
-			20838,		// Illusion Muffler [1]
-			22133;		// Illusion Shoes [1]
-		.@size = getarraysize(.@reward_id);
-
-		.@refine_req = 9;
-
-		for ( .@i = 0; .@i < .@size; ++.@i )
-			.@reward_name$[.@i] = replacestr( getitemname(.@reward_id[.@i]), ":", "" );
-
-		mes "[ Gemcutter ]";
-		mes "The following is the list of equipment I can handle.";
-		for ( .@i = 0; .@i < .@size; ++.@i )
-			mes mesitemlink( .@reward_id[.@i], false );
-		next;
-		mes "[ Gemcutter ]";
-		mes "Make sure ^0000FFyour equipment is refined to at least +" + .@refine_req + "^000000 before bringing it to me.";
-		mes "That's the minimum requirement for my upgrade service to have any visible effects on your equipment.";
-		next;
-		mes "[ Gemcutter ]";
-		mes "Make sure you're ^0000FFequipped with the item that you want to improve.^000000";
-		mes "Otherwise, I can't evaluate its condition.";
-		next;
-		mes "[ Gemcutter ]";
-		mes "As you may have guessed, your equipment will transform into something new after this.";
-		mes "In other words, ^0000FFIt'll lose its current refining levels, cards and enchantments.^000000";
-		next;
-		mes "[ Gemcutter ]";
-		mes "And I need ^0000FFIllusion Stones and some other materials^000000 to upgrade your equipment.";
-		mes "Pick an item you want and I'll tell you what I need.";
-		next;
-		switch( select( .@reward_name$[0], .@reward_name$[1], .@reward_name$[2], .@reward_name$[3], .@reward_name$[4] ) ) {
-		case 1:
-			.@reward = .@reward_id[0];		// Illusion Nurse Cap
-			.@eq_req = 2277;				// Nurse Cap
-			.@part = EQI_HEAD_TOP;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				25257,100;					// Bloody_Love_Letter
-			break;
-		case 2:
-			.@reward = .@reward_id[1];		// Illusion Apple of Archer
-			.@eq_req = 2285;				// Apple of Archer
-			.@part = EQI_HEAD_TOP;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				25258,100;					// Broken_Arrow
-			break;
-		case 3:
-			.@reward = .@reward_id[2];		// Illusion Puente Robe
-			.@eq_req = 15012;				// Puente Robe
-			.@part = EQI_ARMOR;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				25256,100;					// Hazy Dreams
-			break;
-		case 4:
-			.@reward = .@reward_id[3];		// Illusion Muffler [1]
-			.@eq_req = 2504;				// Muffler
-			.@part = EQI_GARMENT;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				23228,100;					// Hazy_Mooncake
-			break;
-		case 5:
-			.@reward = .@reward_id[4];		// Illusion Shoes [1]
-			.@eq_req = 2404;				// Shoes
-			.@part = EQI_SHOES;
-
-			setarray .@items_req[0],
-				25271,10,					// Illusion Stones
-				23228,100;					// Hazy_Mooncake
-			break;
-		}
-		break;
-	}
-	mes "[Gemcutter]";
-	mes "For that equipment, I need the following materials.";
-	mes "^4d4fff +" + .@refine_req + " " + getitemname(.@eq_req) + "";
-	mes "" + .@items_req[1] + " " + getitemname(.@items_req[0]) + "";
-	mes "" + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000";
-	mes "Do you want to continue?";
-	next;
-	if (select( "Continue.", "I'll bring those materials." ) == 2) {
-		mes "[Gemcutter]";
-		mes "Come back when you're ready.";
-		close;
-	}
-	if (countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) {
-		mes "[Gemcutter]";
-		mes "You don't have all the materials.";
-		close;
-	}
-	.@equip_id = getequipid(.@part);
-	if (.@equip_id == -1) {
-		mes "[Gemcutter]";
-		if (.@part == EQI_HAND_R)
-			mes "Where's your weapon?";
-		else
-			mes "Why don't you go wear that equipment first?";
-		close;
-	}
-	if (.@equip_id != .@eq_req) {
-		mes "[Gemcutter]";
-		mes "Please equip a ^4d4fff+9 " + getitemname(.@eq_req) + ".^000000";
-		close;
-	}
-	if (getequiprefinerycnt(.@part) < .@refine_req) {
-		mes "[Gemcutter]";
-		mes "I can only upgrade equipment that is ^4d4fffrefined to at least +" + .@refine_req + ".^000000";
-		close;
+		close2;
+		callshop( "barter_ill_moonlight" );
+		end;
 	}
-	mes "[Gemcutter]";
-	mes "There you go.";
-	delequip .@part;
-	delitem .@items_req[0], .@items_req[1];
-	delitem .@items_req[2], .@items_req[3];
-	getitem .@reward,1;
-	close;
+	end;
 
 OnTouch:
 	if (illusion_moonlight > 7)
@@ -261,222 +72,23 @@ OnTouch:
 //= Illusion of Vampire
 //============================================================
 gef_dun01,139,228,3	script	Great Merchant#illgef	4_M_HUMERCHANT,{
-	if (checkweight(501,1) == 0 || (MaxWeight - Weight) < 1000) {
-		mes "[Great Merchant]";
-		mes "You don't seem to be able to carry any more stuff. Why don't you lighten your bag?";
-		close;
-	}
-	disable_items;
 	mes "[Great Merchant]";
 	mes "Adventurer, do you have ^0000cdIllusion Stones^000000? If you have a ^0000cdweapon, a piece armor^000000, or ^0000cdan accessory at Refining Level 9 or higher^000000, ";
 	mes "then I can exchange it for something better at the cost of some Illusion Stones and other materials.";
 	next;
 	mes "[Great Merchant]";
-	mes "Check the ^0000cdcatalog^000000 for the available equipment and necessary materials.";
-	next;
-	mes "[Great Merchant]";
 	mes "So, what do you want?";
 	next;
-	switch( select( "Weapon exchange (5 kinds)", "Armor exchange (1 kind)", "Accessory exchange (2 kinds)", "Check the catalog.", "What are Illusion Stones?", "Can I refine the equipment I get in exchange for my Illusion Stones?" ) ) {
+	switch( select( "Exchange illusion equipment", "What are Illusion Stones?", "Can I strengthen the exchanged item?", "Cancel" ) ) {
 	case 1:
-		setarray .@item_req[0],		// item equipped aren't required to build the menu color
-			28022, 25271,80, 25261,20,			// Illusion_Infiltrator
-			28023, 25271,10, 25264,100,			// Illusion_Sharpened_Legbone_of_Ghoul
-			2039,  25271,40, 25261,100,			// Illusion_Wizardry_Staff
-			18149, 25271,50, 25265,100,			// Illusion_Ballista
-			28612, 25271,50, 25262,10;			// Illusion_Apocalypse
-		.@size = getarraysize(.@item_req);
-		for ( .@i = 0; .@i < .@size; .@i += 5 ) {
-			if (countitem(.@item_req[.@i+1]) < .@item_req[.@i+2] || countitem(.@item_req[.@i+3]) < .@item_req[.@i+4])
-				.@menu$ += "^aaaaaa" + getitemname(.@item_req[.@i]) + ".^000000:";
-			else
-				.@menu$ += getitemname(.@item_req[.@i]) + ".:";
-		}
-		switch( select(.@menu$) ) {
-		case 1:
-			mes "[Great Merchant]";
-			mes "Illusion Infiltrator, huh? That's a good weapon. Dreadful name, though. Let's see what you've got.";
-			callsub( S_WeaponArmor, 28022,	// Illusion_Infiltrator
-				EQI_HAND_R,
-				1266,						// Infiltrator_
-				25271,80,					// Illusion Stones
-				25261,20					// Torn_Diary
-			);
-		case 2:
-			mes "[Great Merchant]";
-			mes "Illusion Sharpened Legbone of Ghoul. It perfectly fits in this place. Let's see what you've got.";
-			callsub( S_WeaponArmor, 28023,	// Illusion_Sharpened_Legbone_of_Ghoul
-				EQI_HAND_R,
-				1260,						// Ghoul_Leg
-				25271,10,					// Illusion Stones
-				25264,100					// NightmareOfLump
-			);
-		case 3:
-			mes "[Great Merchant]";
-			mes "Illusion Wizardry Staff, huh? *Chuckle* Having that is every mage's dream. Let's see what you've got.";
-			callsub( S_WeaponArmor, 2039,	// Illusion_Wizardry_Staff
-				EQI_HAND_R,
-				1473,						// Wizardy_Staff
-				25271,40,					// Illusion Stones
-				25261,100					// SuspiciousMagicCircle
-			);
-		case 4:
-			mes "[Great Merchant]";
-			mes "Illusion Ballista... I would've loved to have this when, sigh, never mind. Let's see what you've got.";
-			callsub( S_WeaponArmor, 18149,	// Illusion_Ballista
-				EQI_HAND_R,
-				1727,						// Balistar_
-				25271,50,					// Illusion Stones
-				25265,100					// Shining_Spore
-			);
-		case 5:
-			mes "[Great Merchant]";
-			mes "Illusion Book of the Apocalypse, huh? It's been a long time since I heard the story behind this book. Anyway, let's see what you've got.";
-			callsub( S_WeaponArmor, 28612,	// Illusion_Apocalypse
-				EQI_HAND_R,
-				1557,						// Book_Of_The_Apocalypse
-				25271,50,					// Illusion Stones
-				25262,10					// Dried_Clover
-			);
-		}
-	case 2:
-		if (countitem(25271) < 30 || countitem(25263) < 200)
-			.@menu$ = "^aaaaaa" + getitemname(20840) + ".^000000";
-		else
-			.@menu$ = getitemname(20840);
-		select(.@menu$);
+		specialeffect EF_HFLIMOON3;
+		emotion ET_BEST;
 		mes "[Great Merchant]";
-		mes "Illusion Ancient Cape. Someone in this place? *Ahem* Let's see what you've got.";
-		callsub( S_WeaponArmor, 20840,	// Illusion_Ancient_Cape
-			EQI_GARMENT,
-			2525,						// Cape_Of_Ancient_Lord_
-			25271,30,					// Illusion Stones
-			25263,200					// Short_Bat_Fur
-		);
-	case 3:
-		setarray .@item_req[0],		// item equipped aren't required to build the menu color
-			28508, 25271,50, 25266,400,			// Illusion_Skull_Ring
-			28509, 25271,50, 25267,400;			// Illusion_Ring
-		.@size = getarraysize(.@item_req);
-		for ( .@i = 0; .@i < .@size; .@i += 5 ) {
-			if (countitem(.@item_req[.@i+1]) < .@item_req[.@i+2] || countitem(.@item_req[.@i+3]) < .@item_req[.@i+4])
-				.@menu$ += "^aaaaaa" + getitemname(.@item_req[.@i]) + ".^000000:";
-			else
-				.@menu$ += getitemname(.@item_req[.@i]) + ".:";
-		}
-		switch( select(.@menu$) ) {
-		case 1:
-			mes "[Great Merchant]";
-			mes "Illusion Skull Ring. *Chuckle* I remember when I was young, my friends and I wore this ring and played pranks, hah hah, never mind. That was a long time ago. Anyway, let's see what you've got.";
-			callsub( S_Accessory, 28508,	// Illusion_Skull_Ring
-				2715,						// Skul_Ring_
-				25271,50,					// Illusion Stones
-				25266,400					// Dried_Yggdrasil_Leaf
-			);
-		case 2:
-			mes "[Great Merchant]";
-			mes "Illusion Ring... It may not look much, but it has an important meaning to me. Anyway, let's see what you've got.";
-			callsub( S_Accessory, 28509,	// Illusion_Ring
-				2621,						// Ring_
-				25271,50,					// Illusion Stones
-				25267,400					// SuspiciousMagicCircle
-			);
-		}
-	case 4:
-		while( true ) {
-			mes "[Great Merchant]";
-			mes "Do you want to see my catalog? Sure thing.";
-			next;
-			switch( select( "Weapons (5 kinds)", "Armor (1 kind)", "Accessory (2 kinds)", "Cancel." ) ) {
-			case 1:
-				switch( select( "Illusion Infiltrator", "Illusion Sharpened Legbone of Ghoul", "Illusion Wizardry Staff", "Illusion Ballista", "Illusion Book of the Apocalypse" ) ) {
-				case 1:
-					mes mesitemlink( 28022, false );
-					mes "***********************************";
-					mes "Necessary Items";
-					mes "^0000cd+9 or higher^000000 Infiltrator ^C71585[1]^000000 x1";
-					mes "Socket Artisan";
-					mes "<NAVI>: Seiyablem in Prontera<INFO>prt_in,33,70,000,0,</INFO></NAVI>";
-					mes "80 Illusion Stones";
-					mes "20 Torn Papers";
-					break;
-				case 2:
-					mes mesitemlink( 28023, false );
-					mes "********************************";
-					mes "Necessary Items";
-					mes "^0000cd+9 or higher^000000 Sharpened Legbone of Ghoul x1";
-					mes "10 Illusion Stones";
-					mes "100 Clusters of Nightmares";
-					break;
-				case 3:
-					mes mesitemlink( 2039, false );
-					mes "********************************";
-					mes "Necessary Items";
-					mes "^0000cd+9 or higher^000000 Wizardry Staff x1";
-					mes "40 Illusion Stones";
-					mes "100 Suspicious Pentacles";
-					break;
-				case 4:
-					mes mesitemlink( 18149, false );
-					mes "*************************";
-					mes "Necessary Items";
-					mes "^0000cd+9 or higher^000000 Ballista ^C71585[1]^000000 x1";
-					mes "Socket Artisan";
-					mes "<NAVI>: Seiyablem in Prontera<INFO>prt_in,33,70,000,0,</INFO></NAVI>";
-					mes "50 Illusion Stones";
-					mes "100 Shining Spores";
-					break;
-				case 5:
-					mes mesitemlink( 28612, false );
-					mes "***********************";
-					mes "Necessary Items";
-					mes "^0000cd+9 or higher^000000 Book of the Apocalypse x1";
-					mes "50 Illusion Stones";
-					mes "10 Well-dried Clovers";
-					break;
-				}
-				break;
-			case 2:
-				select("Illusion Ancient Cape");
-				mes mesitemlink( 20840, false );
-				mes "*******************************";
-				mes "Necessary Items";
-				mes "^0000cd+9 or higher^000000 Ancient Cape ^C71585[1]^000000 x1";
-				mes "Socket Artisan";
-				mes "<NAVI>: Leablem in Prontera<INFO>prontera,244,169,000,0,</INFO></NAVI>";
-				mes "30 Illusion Stones";
-				mes "200 Short Bat Hairs";
-				break;
-			case 3:
-				switch( select( "Illusion Skull Ring", "Illusion Ring" ) ) {
-				case 1:
-					mes mesitemlink( 28508, false );
-					mes "*************************";
-					mes "Necessary Items";
-					mes "Skull Ring ^C71585[1]^000000 x1";
-					mes "Socket Artisan";
-					mes "<NAVI>: Leablem in Prontera<INFO>prontera,244,169,000,0,</INFO></NAVI>";
-					mes "50 Illusion Stones";
-					mes "400 Dried Yggdrasil Leaves";
-					break;
-				case 2:
-					mes mesitemlink( 28509, false );
-					mes "********************";
-					mes "Necessary Items";
-					mes "Ring ^C71585[1]^000000 x1";
-					mes "50 Illusion Stones";
-					mes "400 Suspicious Pentacles";
-					break;
-				}
-				break;
-			case 4:
-				mes "[Great Merchant]";
-				mes "Did you find something you like? Let me know if I can help you.";
-				close;
-			}
-			next;
-		}
-	case 5:
+		mes "Use it well and come see me later if you find more Illusion Stones! *Chuckle*";
+		close2;
+		callshop( "barter_ill_vampire" );
+		end;
+	case 2:
 		mes "[Great Merchant]";
 		mes "What are ^0000cdIllusion Stones^000000, you ask? Well... I don't think anyone knows exactly what they are.";
 		next;
@@ -495,7 +107,7 @@ gef_dun01,139,228,3	script	Great Merchant#illgef	4_M_HUMERCHANT,{
 		mes "[Great Merchant]";
 		mes "This benefits both of us. Let me know if you're interested in my proposition.";
 		close;
-	case 6:
+	case 3:
 		mes "[Great Merchant]";
 		mes "So, you want to reinforce the equipment you get. You're thorough. I like that!";
 		next;
@@ -508,116 +120,11 @@ gef_dun01,139,228,3	script	Great Merchant#illgef	4_M_HUMERCHANT,{
 		mes "[Great Merchant]";
 		mes "If you want to refine your equipment, then go to the <NAVI>Illusion Enchanter<INFO>prontera,90,115,000,0,</INFO></NAVI> near the Town Office.";
 		close;
-	}
-
-S_WeaponArmor:
-	.@reward = getarg(0);
-	.@part = getarg(1);
-	.@eq_req = getarg(2);
-
-	setarray .@items_req[0],
-		getarg(3),getarg(4),
-		getarg(5),getarg(6);
-
-	next;
-	donpcevent "Great Merchant#illgef::OnProgress";
-	sleep2 1000;
-	.@slots = getitemslots(.@eq_req);
-	.@eq_req_name$ = getitemname(.@eq_req) + ( .@slots ? "[" + .@slots + "]" : "" );
-	.@equip_id = getequipid(.@part);
-	if (.@equip_id == -1) {
-		mes "[Great Merchant]";
-		if (.@part == EQI_HAND_R)
-			mes "Oh, you must have been in a hurry: you forgot to bring a weapon.";
-		else
-			mes "Oh, you must have been in a hurry: you forgot to bring an armor.";
-		mes "Please come back equipped with a ^0000cd+9 " + .@eq_req_name$ + "^000000. I'll wait here.";
-		close;
-	}
-	if (.@equip_id != .@eq_req) {
-		mes "[Great Merchant]";
-		mes "Let's see... Mm? What did you bring? Come back equipped with a ^0000cd+9 " + .@eq_req_name$ + "^000000.";
-		close;
-	}
-	if (getequiprefinerycnt(.@part) < 9) {
-		mes "[Great Merchant]";
-		if (.@part == EQI_HAND_R)
-			mes "Um, this one isn't refined enough. I told you the armor has to be ^0000cdrefined to as least +9^000000.";
-		else
-			mes "Um, this one isn't refined enough. I told you the weapon has to be ^0000cdrefined to as least +9^000000.";
-		close;
-	}
-	mes "[Great Merchant]";
-	mes "Ah, you're equipped with the correct item. Now, let me check the other materials.";
-	next;
-	if (countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) {
-		mes "[Great Merchant]";
-		mes "Mm, you're so impatient. I told you, I need ^4d4fff" + .@items_req[1] + " " + getitemname(.@items_req[0]) + " and " + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000. Check your inventory and bring all of them.";
-		close;
-	}
-	mes "[Great Merchant]";
-	mes "Alright, you've got everything.";
-	next;
-	mes "[Great Merchant]";
-	mes "Are you ready to make the exchange?";
-	next;
-	if (select( "Wait! Let me think.", "Yes, I am." ) == 1) {
-		mes "[Great Merchant]";
-		mes "Sure, no problem. Come back when you're ready.";
-		close;
-	}
-	mes "[Great Merchant]";
-	mes "Alright! Let's see...";
-	next;
-	mes "[Great Merchant]";
-	mes "Here, take this. I hope you'll enjoy. If you find more Illusion Stones, feel free to bring them to me! *Chuckle*";
-	delequip .@part;
-	delitem .@items_req[0], .@items_req[1];
-	delitem .@items_req[2], .@items_req[3];
-	getitem .@reward,1;
-	close;
-
-S_Accessory:	// the structure is slightly different from above
-	.@reward = getarg(0);
-	.@eq_req = getarg(1);
-
-	setarray .@items_req[0],
-		getarg(2),getarg(3),
-		getarg(4),getarg(5);
-
-	next;
-	donpcevent "Great Merchant#illgef::OnProgress";
-	sleep2 1000;
-	.@count = countitem(.@eq_req) - (getequipid(EQI_ACC_L) == .@eq_req) - (getequipid(EQI_ACC_R) == .@eq_req);
-	if (.@count < 1 || countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) {
-		mes "[Great Merchant]";
-		mes "Mm, you're so impatient. I told you, I need ^4d4fff1 socketed " + getitemname(.@eq_req) + ", " + .@items_req[1] + " " + getitemname(.@items_req[0]) + " and " + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000. Check your inventory and bring all of them.";
-		close;
-	}
-	mes "[Great Merchant]";
-	mes "Alright, you've got everything.";
-	next;
-	mes "[Great Merchant]";
-	mes "Are you ready to make the exchange?";
-	next;
-	if (select( "Wait! Let me think.", "Yes, I am." ) == 1) {
+	case 4:
 		mes "[Great Merchant]";
-		mes "Sure, no problem. Come back when you're ready.";
+		mes "Did you find anything you liked? If you need anything, please let me know at any time.";
 		close;
 	}
-	mes "[Great Merchant]";
-	mes "Alright! Let's see...";
-	next;
-	mes "[Great Merchant]";
-	mes "Here, take this. I hope you'll enjoy. If you find more Illusion Stones, feel free to bring them to me! *Chuckle*";
-	delitem .@eq_req,1;
-	delitem .@items_req[0], .@items_req[1];
-	delitem .@items_req[2], .@items_req[3];
-	getitem .@reward,1;
-	close;
-
-OnProgress:
-	progressbar_npc "000000",1;
 	end;
 }
 
@@ -631,7 +138,7 @@ ice_dun02,153,18,3	script	Illusion Stone Research	4_M_ALCHE_B,{
 	mes "[Illusion Stone Researcher]";
 	mes "Ah, Illusion Stones are truly mysterious...";
 	next;
-	switch( select( "What are you doing here?", "Upgrade weapon.", "Upgrade armor." ) ) {
+	switch( select( "What are you doing here?", "Upgrade equipments", "Cancel" ) ) {
 	case 1:
 		mes "[Illusion Stone Researcher]";
 		mes "I'm here to find some Illusion Stones that I need for my research.";
@@ -645,17 +152,6 @@ ice_dun02,153,18,3	script	Illusion Stone Research	4_M_ALCHE_B,{
 		mes "What do you say?";
 		close;
 	case 2:
-		setarray .@reward_id[0],
-			13337,	// Huuma_Flutter_Snow_IL
-			1846;	// Combo_Battle_Glove_IL
-		setarray .@reward_name$[0],
-			getitemname(.@reward_id[0]),
-			getitemname(.@reward_id[1]);
-		mes "[Illusion Stone Researcher]";
-		mes "The following is the list of equipment I can handle.";
-		mes mesitemlink( .@reward_id[0], false );
-		mes mesitemlink( .@reward_id[1], false );
-		next;
 		mes "[Illusion Stone Researcher]";
 		mes "Make sure ^4d4dffyour equipment is refined to at least +9^000000 before bringing it to me.";
 		mes "Make sure you're ^4d4dffequipped with the item that you want to improve^000000.";
@@ -667,127 +163,15 @@ ice_dun02,153,18,3	script	Illusion Stone Research	4_M_ALCHE_B,{
 		mes "[Illusion Stone Researcher]";
 		mes "And I need ^4d4dffIllusion Stones and some other materials^000000 to upgrade your equipment.";
 		mes "Pick an item you want. I'll tell you what I need.";
-		next;
-		.@s = select( .@reward_name$[0], .@reward_name$[1], "Cancel." ) - 1;
-		switch(.@s) {
-		case 0:		// Huuma_Flutter_Snow_IL
-			.@eq_req = 13314;		// Huuma_Fluttering_Snow
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// IllusionStone
-				25300,20;			// KTULLANUXsEye
-			break;
-		case 1:		// Combo_Battle_Glove_IL
-			.@eq_req = 1822;		// Combo_Battle_Glove
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// IllusionStone
-				25299,100;			// Snowball
-			break;
-		case 2:
-			end;
-		}
-		break;
+		close2;
+		callshop( "barter_ill_frozen" );
+		end;
 	case 3:
-		setarray .@reward_id[0],
-			28922,	// Herald_Of_GOD_IL
-			20847,	// Clack_Of_Servival_IL
-			19223;	// Cap_IL
-		setarray .@reward_name$[0],
-			getitemname(.@reward_id[0]),
-			getitemname(.@reward_id[1]),
-			getitemname(.@reward_id[2]);
-		mes "[Illusion Stone Researcher]";
-		mes "The following is the list of equipment I can handle.";
-		mes mesitemlink( .@reward_id[0], false );
-		mes mesitemlink( .@reward_id[1], false );
-		mes mesitemlink( .@reward_id[2], false );
-		next;
-		mes "[Illusion Stone Researcher]";
-		mes "Make sure ^4d4dffyour equipment is refined to at least +9^000000 before bringing it to me.";
-		mes "Make sure you're ^4d4dffequipped with the item that you want to improve^000000.";
-		next;
 		mes "[Illusion Stone Researcher]";
-		mes "As you may have guessed, your equipment will transform into something new after this.";
-		mes "In other words, ^4d4dffit'll lose its current Refining and Upgrade levels.^000000";
-		mes "Are you ready?";
-		next;
-		.@s = select( .@reward_name$[0], .@reward_name$[1], .@reward_name$[2], "Cancel." ) - 1;
-		switch(.@s) {
-		case 0:		// Herald_Of_GOD_IL
-			.@eq_req = 2128;		// Herald_Of_GOD_
-			.@part = EQI_HAND_L;
-
-			setarray .@items_req[0],
-				25271,100,			// IllusionStone
-				25298,300;			// SpritJewel
-			break;
-		case 1:		// Clack_Of_Servival_IL
-			.@eq_req = 2509;		// Clack_Of_Servival
-			.@part = EQI_GARMENT;
-
-			setarray .@items_req[0],
-				25271,100,			// IllusionStone
-				25297,200;			// Frozen_PieceOfRock
-			break;
-		case 2:		// Cap_IL
-			.@eq_req = 2227;		// Cap_
-			.@part = EQI_HEAD_TOP;
-
-			setarray .@items_req[0],
-				25271,50,			// IllusionStone
-				25297,100;			// Frozen_PieceOfRock
-			break;
-		case 3:
-			end;
-		}
-		break;
-	}
-	mes "[Illusion Stone Researcher]";
-	mes "For that equipment, I need the following materials.";
-	mes "^4d4fff +9 " + getitemname(.@eq_req) + "";
-	mes "" + .@items_req[1] + " " + getitemname(.@items_req[0]) + "";
-	mes "" + .@items_req[3] + " " + getitemname(.@items_req[2]) + "^000000";
-	mes "Do you want to continue?";
-	next;
-	if (select( "Continue.", "I'll bring those materials." ) == 2) {
-		mes "[Illusion Stone Researcher]";
-		mes "Come back when you're ready.";
-		close;
-	}
-	if (countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) {
-		mes "[Illusion Stone Researcher]";
-		mes "You don't have all the materials.";
-		close;
-	}
-	.@equip_id = getequipid(.@part);
-	if (.@equip_id == -1) {
-		mes "[Illusion Stone Researcher]";
-		if (.@part == EQI_HAND_R)
-			mes "Where's your weapon?";
-		else
-			mes "Why don't you go wear that equipment first?";
-		close;
-	}
-	if (.@equip_id != .@eq_req) {
-		mes "[Illusion Stone Researcher]";
-		mes "Please equip a ^4d4fff+9 " + getitemname(.@eq_req) + ".^000000";
+		mes "It's just hard to get..";
 		close;
 	}
-	if (getequiprefinerycnt(.@part) < 9) {
-		mes "[Illusion Stone Researcher]";
-		mes "I can only upgrade equipment that is ^4d4fffrefined to at least +9.^000000";
-		close;
-	}
-	mes "[Illusion Stone Researcher]";
-	mes "There you go.";
-	delequip .@part;
-	delitem .@items_req[0], .@items_req[1];
-	delitem .@items_req[2], .@items_req[3];
-	getitem .@reward_id[.@s],1;
-	close;
+	end;
 }
 
 
@@ -1349,8 +733,6 @@ OnTouch:
 
 // Exchange npc
 alberta,226,28,3	script	Equipment Researcher	4_TOWER_15,{
-	disable_items;
-
 	.@illusion_stone_name$ = getitemname(25271);
 
 	mes "[Equipment Researcher]";
@@ -1358,7 +740,7 @@ alberta,226,28,3	script	Equipment Researcher	4_TOWER_15,{
 	mes "If you have the materials I need for my research, wouldn't you hand them over?";
 	mes "If you give me some equipment and some materials, I'll exchange them for my reinforced equipment.";
 	next;
-	switch( select( "What are you doing here?", "Exchange Weapon", "Exchange Armor" ) ) {
+	switch( select( "What are you doing here?", "Exchange equipment" ) ) {
 	case 1:
 		mes "[Equipment Researcher]";
 		mes "I'm working on how to use an " + .@illusion_stone_name$ + " to strengthen equipment.";
@@ -1371,137 +753,19 @@ alberta,226,28,3	script	Equipment Researcher	4_TOWER_15,{
 		close;
 	case 2:
 		mes "[Equipment Researcher]";
-		mes "What are the weapons I can exchange? Wait a minute. I'll name them.";
-		next;
-		mes "[Equipment Researcher]";
-		mes "" + mesitemlink(13469, false) + ",";
-		mes "" + mesitemlink(1326, false) + ",";
-		mes "" + mesitemlink(32005, false) + ",";
-		mes "" + mesitemlink(13338, false) + ",";
-		mes "" + mesitemlink(16065, false) + ".";
-		mes "Each has two slots.";
+		mes "What are the equipment I can exchange? Wait a minute. I'll let you know.";
 		next;
 		mes "[Equipment Researcher]";
-		mes "As a material, you can bring ^0000CDexisting weapons that have been refined over +9.^000000";
+		mes "As a material, you can bring ^0000CDexisting equipment that have been refined to +9 or higher.^000000";
 		mes "And I need some ^0000CD" + .@illusion_stone_name$ + " and other materials.^000000";
-		mes "If you pick the weapon you want, I'll tell you in detail.";
 		next;
 		mes "[Equipment Researcher]";
-		mes "Of course, we're giving you new weapons, so don't forget that all the existing ^0000CDsmelting and enchantments^000000 will disappear.";
-		mes "I need to see the performance of the weapons to be exchanged, so you must ^0000CDwear them^000000.";
+		mes "Of course, we're giving you new equipment, so don't forget that all the existing ^0000CDsmelting and enchantments^000000 will disappear.";
 		mes "So, what kind of weapon do you want?";
-		next;
-		switch( select( "Illusion Immaterial Sword", "Illusion War Axe", "Illusion Pole Axe", "Illusion Wing Shuriken", "Illusion Iron Driver" ) ) {
-		case 1:
-			.@reward = 13469;		// Illusion Immaterial Sword
-			.@eq_req = 1141;		// Immaterial Sword
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// Illusion Stones
-				25314,50;			// Ships Log
-			break;
-		case 2:
-			.@reward = 1326;		// Illusion War Axe
-			.@eq_req = 1306;		// War Axe
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// Illusion Stones
-				25311,200;			// Black Piece of Soul
-			break;
-		case 3:
-			.@reward = 32005;		// Illusion Pole Axe
-			.@eq_req = 1417;		// Pole Axe
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// Illusion Stones
-				25311,200;			// Black Piece of Soul
-			break;
-		case 4:
-			.@reward = 13338;		// Illusion Wing Shuriken
-			.@eq_req = 13300;		// Huuma Wing Shuriken
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// Illusion Stones
-				25313,200;			// Old Turtle Shells
-			break;
-		case 5:
-			.@reward = 16065;		// Illusion Iron Driver
-			.@eq_req = 1529;		// Iron Driver
-			.@part = EQI_HAND_R;
-
-			setarray .@items_req[0],
-				25271,100,			// Illusion Stones
-				25313,200;			// Old Turtle Shells
-			break;
-		}
-		mes "[Equipment Researcher]";
-		mes "" + mesitemlink(.@reward, false) + "?";
-		mes "I need " + callfunc("F_GetArticle",getitemname(.@eq_req)) + " ^0000CD+9 " + getitemname(.@eq_req) + " ^000000,";
-		mes "^0000CD" + getitemname(.@items_req[0]) + " " + .@items_req[1] + "ea^000000 and ^0000CD" + getitemname(.@items_req[2]) + " " + .@items_req[3] + "ea^000000 as materials.";
-		break;
-	case 3:
-		.@reward = 19247;		// Illusion Fancy Flower
-		.@eq_req = 2207;		// Fancy Flower
-		.@part = EQI_HEAD_TOP;
-
-		setarray .@items_req[0],
-			25271,50,			// Illusion Stones
-			25312,50;			// Pretty Old Doll
-
-		mes "[Equipment Researcher]";
-		mes "You can only exchange one type of armor, " + mesitemlink(.@reward, false) + ". It has 1 slot.";
-		mes "I need " + callfunc("F_GetArticle",getitemname(.@eq_req)) + " ^0000CD" + getitemname(.@eq_req) + "^000000,";
-		mes "^0000CD" + getitemname(.@items_req[0]) + " " + .@items_req[1] + " ea^000000 and ^0000CD" + getitemname(.@items_req[2]) + " " + .@items_req[3] + " ea^000000 as materials.";
-		next;
-		mes "[Equipment Researcher]";
-		mes "Of course, we're giving you new weapons, so don't forget that all the existing ^0000CDsmelting and enchantments^000000 will disappear.";
-		mes "I need to see the performance of the weapons to be exchanged, so you must ^0000CDwear them^000000.";
-		break;
-	}
-	mes "Would you like to exchange it right now?";
-	next;
-	if (select( "Exchange " + getitemname(.@reward), "Cancel" ) == 2) {
-		mes "[Equipment Researcher]";
-		mes "Yeah, come back if you change your mind.";
-		close;
-	}
-	if (countitem(.@items_req[0]) < .@items_req[1] || countitem(.@items_req[2]) < .@items_req[3]) {
-		mes "[Equipment Researcher]";
-		mes "Well... you're running out of ingredients.";
-		mes "Bring me ^0000CD" + getitemname(.@items_req[0]) + " " + .@items_req[1] + "ea^000000 and ^0000CD" + getitemname(.@items_req[2]) + " " + .@items_req[3] + " ea^000000. Then I'll exchange it for you..";
-		close;
-	}
-	// custom texts and checks
-	.@equip_id = getequipid(.@part);
-	if (.@equip_id == -1) {
-		mes "[Equipment Researcher]";
-		if (.@part == EQI_HAND_R)
-			mes "Where's your weapon?";
-		else
-			mes "Why don't you go wear that equipment first?";
-		close;
-	}
-	if (.@equip_id != .@eq_req) {
-		mes "[Equipment Researcher]";
-		mes "Please equip " + callfunc("F_GetArticle",getitemname(.@eq_req)) + " ^4d4fff+9 " + getitemname(.@eq_req) + ".^000000";
-		close;
-	}
-	if (getequiprefinerycnt(.@part) < 9) {
-		mes "[Equipment Researcher]";
-		mes "I can only upgrade equipment that is ^4d4fffrefined to at least +9.^000000";
-		close;
+		close2;
+		callshop( "barter_ill_turtle" );
+		end;
 	}
-	mes "[Equipment Researcher]";
-	mes "There you go.";
-	delequip .@part;
-	delitem .@items_req[0], .@items_req[1];
-	delitem .@items_req[2], .@items_req[3];
-	getitem .@reward,1;
-	close;
 }
 
 
@@ -1511,141 +775,19 @@ alberta,226,28,3	script	Equipment Researcher	4_TOWER_15,{
 
 // Exchange npc
 com_d02_i,234,266,6	script	Village Soap#Lu	4_M_ORIENT01,{
-	if (checkweight(1201,3) == 0) {
-		mes "- You cannot proceed because you have too many items. -";
-		close;
-	}
-	disable_items;
-	setarray .@equipment_id[0],
-		18174,
-		28626,
-		19366,
-		15348,
-		22192,
-		20923;
-	setarray .@equipment_name$[0],
-		getitemname(.@equipment_id[0]),
-		getitemname(.@equipment_id[1]),
-		getitemname(.@equipment_id[2]),
-		getitemname(.@equipment_id[3]),
-		getitemname(.@equipment_id[4]),
-		getitemname(.@equipment_id[5]);
-
 	mes "[Village Soap]";
 	mes "I've also rolled up my sleeves for the adventurers who work hard for the village. Can I make your equipment stronger? Is there anything on the list you want?";
 	next;
-	.@s = select( "[Material Check] View catalog.", "[Production Request] " + .@equipment_name$[0], "[Production Request] " + .@equipment_name$[1], "[Production Request] " + .@equipment_name$[2],
-		"[Production Request] " + .@equipment_name$[3], "[Production Request] " + .@equipment_name$[4], "[Production Request] " + .@equipment_name$[5] ) - 2;
-	if (.@s == -1) {
+	if (select( "Look at the illusion equipment", "Cancel" ) == 2) {
 		mes "[Village Soap]";
-		mes "Are you curious about the ingredients? Take a look.";
-		while(1) {
-			next;
-			.@s = select( "Stop watching", "[Material Check] " + .@equipment_name$[0], "[Material Check] " + .@equipment_name$[1], "[Material Check] " + .@equipment_name$[2],
-				"[Material Check] " + .@equipment_name$[3], "[Material Check] " + .@equipment_name$[4], "[Material Check] " + .@equipment_name$[5] ) - 2;
-			if (.@s == -1) {
-				mes "[Village Soap]";
-				mes "If you equip the required equipment and bring the ingredients, I'll make it for you in no time.";
-				close;
-			}
-			.@size = callsub( S_Data, .@equipment_id[.@s], .@equip_id_refined, .@req_id, .@req_amount, .@part );
-
-			mes "" + mesitemlink(.@equipment_id[.@s]) + "";
-			mes "**********************************";
-			if (.@equipment_id[.@s] == 18174)
-				mes "1 " + mesitemlink(.@equip_id_refined) + "";
-			else
-				mes "1 " + mesitemlink(.@equip_id_refined) + "";
-			for ( .@i = 0; .@i < .@size; ++.@i )
-				mes "" + .@req_amount[.@i] + " " + mesitemlink(.@req_id[.@i]) + "";
-		}
-		end;
-	}
-	.@size = callsub( S_Data, .@equipment_id[.@s], .@equip_id_refined, .@req_id, .@req_amount, .@part );
-
-	if (getequiprefinerycnt(.@part) < 9) {
-		mes "[Village Soap]";
-		mes "I don't care what this equipment is, but it needs to be refined to at least +9.";
+		mes "Please come later. Just bring the ingredients and I'll make it for you.";
 		close;
 	}
-	if (getequipid(.@part) != .@equip_id_refined) {
-		mes "[Village Soap]";
-		mes "Eheh- This dude misunderstood me. Do you have to equip the equipment that becomes the material?";
-		close;
-	}
-	// todo text (currently custom)
-
-	for ( .@i = 0; .@i < .@size; ++.@i ) {
-		if (countitem(.@req_id[.@i]) < .@req_amount[.@i]) {
-			mes "[Village Soap]";
-			mes "You don't have enough items.";
-			close;
-		}
-	}
-	delequip .@part;
-	for ( .@i = 0; .@i < .@size; ++.@i )
-		delitem .@req_id[.@i], .@req_amount[.@i];
-	getitem .@equipment_id[.@s],1;
+	mes "[Village Soap]";
+	mes "Who made it? It might be useful for you to take it with you.";
+	close2;
+	callshop( "barter_ill_luanda" );
 	end;
-
-S_Data:
-	switch( getarg(0) ) {
-	case 18174:
-		set getarg(1), 1726;	// .@equip_id_refined,
-		setarray .@req[0],
-			25636,50,
-			25640,50,
-			25637,50,
-			25271,80;
-		set getarg(4), EQI_HAND_R;
-		break;
-	case 28626:
-		set getarg(1), 1552;
-		setarray .@req[0],
-			25642,100,
-			25271,50;
-		set getarg(4), EQI_HAND_R;
-		break;
-	case 19366:
-		set getarg(1), 5128;
-		setarray .@req[0],
-			25634,30,
-			25633,150,
-			25271,120;
-		set getarg(4), EQI_HEAD_TOP;
-		break;
-	case 15348:
-		set getarg(1), 2354;
-		setarray .@req[0],
-			25641,100,
-			25638,150,
-			25271,80;
-		set getarg(4), EQI_ARMOR;
-		break;
-	case 22192:
-		set getarg(1), 2419;
-		setarray .@req[0],
-			25635,100,
-			25633,150,
-			25271,80;
-		set getarg(4), EQI_SHOES;
-		break;
-	case 20923:
-		set getarg(1), 2520;
-		setarray .@req[0],
-			25639,30,
-			25638,150,
-			25271,120;
-		set getarg(4), EQI_GARMENT;
-		break;
-	}
-	.@size = getarraysize(.@req);
-
-	for ( .@i = 0; .@i < .@size; .@i += 2 ) {
-		set getelementofarray(getarg(2), .@i/2), .@req[.@i];
-		set getelementofarray(getarg(3), .@i/2), .@req[.@i+1];
-	}
-	return (.@size/2);
 }
 
 

+ 19 - 2
npc/re/mobs/dungeons/pay_dun.txt

@@ -169,8 +169,7 @@ pay_d03_i	monster	Resentful Munak	3760,20,5000,0
 pay_d03_i	monster	Resentful Bongun	3761,20,5000,0
 pay_d03_i	monster	Resentful Sohee	3762,20,5000,0
 pay_d03_i	monster	Resentful Soldier	3763,15
-pay_d03_i	monster	Deranged Adventurer	3765,5,15000,0
-pay_d03_i,55,75	monster	Wizard of the Truth	3764,1,30000,0
+pay_d03_i	monster	Deranged Adventurer	3765,5,15000,0,"ill_moonlight_wizard::OnMobDead"
 pay_d03_i	monster	Angry Nine Tail	3759,10,5000,0,"illusion_mob#moonlight::OnKill"
 
 -	script	illusion_mob#moonlight	-1,{
@@ -198,3 +197,21 @@ OnBossKill:
 	.kill_count = 0;
 	end;
 }
+
+-	script	ill_moonlight_wizard	-1,{
+	end;
+OnMobDead:
+	if (.spawn || playerattached() < 1)
+		end;
+	.kill_count += 1;
+	if (.kill_count == 10) {
+		.spawn = true;
+		.kill_count = 0;
+		getunitdata( killedgid, .@data );
+		monster "pay_d03_i",.@data[UMOB_X],.@data[UMOB_Y],"Wizard of the Truth",3764,1,"ill_moonlight_wizard::OnBossDead";
+	}
+	end;
+OnBossDead:
+	.spawn = false;
+	end;
+}

+ 4 - 0
src/char/char-server.vcxproj

@@ -112,6 +112,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -129,6 +130,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -148,6 +150,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -169,6 +172,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 3 - 3
src/char/int_storage.cpp

@@ -369,9 +369,9 @@ bool mapif_parse_itembound_retrieve(int fd)
 	for( j = 0; j < MAX_SLOTS; ++j )
 		SqlStmt_BindColumn(stmt,11+j, SQLDT_UINT, &item.card[j], 0, NULL, NULL);
 	for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) {
-		SqlStmt_BindColumn(stmt, 12+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].id, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 13+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].value, 0, NULL, NULL);
-		SqlStmt_BindColumn(stmt, 14+MAX_SLOTS+j*3, SQLDT_CHAR, &item.option[j].param, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].id, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 12+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].value, 0, NULL, NULL);
+		SqlStmt_BindColumn(stmt, 13+MAX_SLOTS+j*3, SQLDT_CHAR, &item.option[j].param, 0, NULL, NULL);
 	}
 	memset(&items, 0, sizeof(items));
 	while( SQL_SUCCESS == SqlStmt_NextRow(stmt) )

+ 4 - 0
src/common/common-minicore.vcxproj

@@ -129,6 +129,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -145,6 +146,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -163,6 +165,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -183,6 +186,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\zlib\include\;$(SolutionDir)3rdparty\libconfig\</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 4 - 0
src/common/common.vcxproj

@@ -162,6 +162,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -181,6 +182,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -202,6 +204,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -225,6 +228,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 4 - 0
src/login/login-server.vcxproj

@@ -112,6 +112,7 @@
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -129,6 +130,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -148,6 +150,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -169,6 +172,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 3 - 0
src/map/map-server-generator.vcxproj

@@ -132,6 +132,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -152,6 +153,7 @@
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -175,6 +177,7 @@
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 3 - 0
src/map/map-server.vcxproj

@@ -132,6 +132,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -152,6 +153,7 @@
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -175,6 +177,7 @@
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\pcre\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 60 - 0
src/map/script.cpp

@@ -13179,6 +13179,10 @@ void script_detach_rid(struct script_state* st)
  *	    [ Parameters: <x0>,<y0>,<x1>,<y1> ]
  *	5 : All players in the map.
  *	    [ Parameters: "<map name>" ]
+ *	6 : Battleground members of a specified battleground ID.
+ *	    [ Parameters: <battleground id> ]
+ *	7 : Clan members of a specified clan ID.
+ *	    [ Parameters: <clan id> ]
  *	Account ID: The specified account ID.
  * <flag>:
  *	0 : Players are always attached. (default)
@@ -13272,6 +13276,30 @@ BUILDIN_FUNC(addrid)
 			}
 			map_foreachinmap(buildin_addrid_sub, map_mapname2mapid(script_getstr(st, 4)), BL_PC, st, script_getnum(st, 3));
 			break;
+		case 6:
+			if (script_getnum(st, 4) == 0) {
+				script_pushint(st, 0);
+				mapit_free(iter);
+				return SCRIPT_CMD_FAILURE;
+			}
+			for (sd = (TBL_PC *)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC *)mapit_next(iter)) {
+				if (!forceflag || !sd->st)
+					if ((sd->status.account_id != st->rid) && (sd->bg_id == script_getnum(st, 4))) //attached player already runs.
+						run_script(st->script, st->pos, sd->status.account_id, st->oid);
+			}
+			break;
+		case 7:
+			if (script_getnum(st, 4) == 0) {
+				script_pushint(st, 0);
+				mapit_free(iter);
+				return SCRIPT_CMD_FAILURE;
+			}
+			for (sd = (TBL_PC *)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC *)mapit_next(iter)) {
+				if (!forceflag || !sd->st)
+					if ((sd->status.account_id != st->rid) && (sd->status.clan_id == script_getnum(st, 4))) //attached player already runs.
+						run_script(st->script, st->pos, sd->status.account_id, st->oid);
+			}
+			break;
 		default:
 			mapit_free(iter);
 			if((map_id2sd(type)) == NULL) { // Player not found.
@@ -24656,6 +24684,37 @@ BUILDIN_FUNC(channel_create) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
+// ===================================
+// *channel_join "<channel_name>"{, <char_id>};
+// Join an existing channel.
+// The command returns 0 upon success, and these values upon failure:
+// -1 : Invalid channel or player
+// -2 : Player already in channel
+// -3 : Player banned
+// -4 : Reached max limit
+// ===================================
+BUILDIN_FUNC(channel_join) {
+	map_session_data *sd = nullptr;
+
+	if (!script_charid2sd(3, sd)) {
+		script_pushint(st, -1);
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	struct Channel *channel = nullptr;
+	const char *chname = script_getstr(st, 2);
+
+	if (!(channel = channel_name2channel((char *)chname, nullptr, 0))) {
+		ShowError("buildin_channel_join: Channel name '%s' is invalid.\n", chname);
+		script_pushint(st, -1);
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	script_pushint(st, channel_join(channel, sd));
+
+	return SCRIPT_CMD_SUCCESS;
+}
+
 /**
  * Set channel option
  * channel_setopt "<chname>",<option>,<value>;
@@ -27634,6 +27693,7 @@ struct script_function buildin_func[] = {
 
 	// Channel System
 	BUILDIN_DEF(channel_create,"ss?????"),
+	BUILDIN_DEF(channel_join, "s?"),
 	BUILDIN_DEF(channel_setopt,"sii"),
 	BUILDIN_DEF(channel_getopt,"si"),
 	BUILDIN_DEF(channel_setcolor,"si"),

+ 4 - 0
src/tool/csv2yaml.vcxproj

@@ -116,6 +116,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -133,6 +134,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -152,6 +154,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -173,6 +176,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 4 - 0
src/tool/mapcache.vcxproj

@@ -97,6 +97,7 @@
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -114,6 +115,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -133,6 +135,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -154,6 +157,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 4 - 0
src/tool/yaml2sql.vcxproj

@@ -97,6 +97,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -114,6 +115,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -133,6 +135,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -154,6 +157,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 4 - 0
src/tool/yamlupgrade.vcxproj

@@ -97,6 +97,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <ConformanceMode>true</ConformanceMode>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -114,6 +115,7 @@
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -133,6 +135,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -154,6 +157,7 @@
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <LanguageStandard>stdcpp17</LanguageStandard>
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\yaml-cpp\include\;$(SolutionDir)3rdparty\rapidyaml\src;$(SolutionDir)3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

+ 3 - 0
src/web/web-server.vcxproj

@@ -117,6 +117,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\httplib\;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -137,6 +138,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\httplib\;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>
@@ -159,6 +161,7 @@
       <AdditionalIncludeDirectories>$(SolutionDir)src;$(SolutionDir)3rdparty\httplib\;$(SolutionDir)\3rdparty\rapidyaml\src;$(SolutionDir)\3rdparty\rapidyaml\ext\c4core\src;$(SolutionDir)\3rdparty\json\include;$(SolutionDir)3rdparty\libconfig\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4018</DisableSpecificWarnings>
       <LanguageStandard>stdcpp17</LanguageStandard>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
     </ClCompile>
     <Link>
       <SubSystem>Console</SubSystem>

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä