浏览代码

* Added Hazy Forest instance.
* Optimized Mora Enchants.
* Updated mapflags for some newer maps. (ea:15238)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17344 54d463be-8e91-2dee-dedb-b68131a5f0ec

euphyy 12 年之前
父节点
当前提交
5000b3d5f9

+ 20 - 5
conf/mapflag/nobranch.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.8
+//= 1.9
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -15,6 +15,7 @@
 //= 1.6a - Updated. [Lupus]
 //= 1.7 - Added all novice maps. [L0ne_W0lf]
 //= 1.8 - Removed restriction on PVP maps. [L0ne_W0lf]
+//= 1.9 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Cities ======================
@@ -268,6 +269,10 @@ turbo_e_4	mapflag	nobranch
 turbo_e_8	mapflag	nobranch
 turbo_e_16	mapflag	nobranch
 
+// Poring War ==================
+poring_w01	mapflag	nobranch
+poring_w02	mapflag	nobranch
+
 // Monster Races ===============
 p_track01	mapflag	nobranch
 p_track02	mapflag	nobranch
@@ -332,14 +337,17 @@ moc_para01	mapflag	nobranch
 job3_arch01	mapflag	nobranch
 job3_arch02	mapflag	nobranch
 job3_arch03	mapflag	nobranch
+job3_gen01	mapflag	nobranch
 job3_guil01	mapflag	nobranch
 job3_guil02	mapflag	nobranch
 job3_guil03	mapflag	nobranch
+job_ko	mapflag	nobranch
 job3_rang01	mapflag	nobranch
 job3_rang02	mapflag	nobranch
 job3_rune01	mapflag	nobranch
 job3_rune02	mapflag	nobranch
 job3_rune03	mapflag	nobranch
+job3_sha01	mapflag	nobranch
 job3_war01	mapflag	nobranch
 job3_war02	mapflag	nobranch
 jupe_core2	mapflag	nobranch
@@ -368,9 +376,19 @@ mal_in02	mapflag	nobranch
 1@pump	mapflag	nobranch
 2@pump	mapflag	nobranch
 1@lhz	mapflag	nobranch
+que_lhz	mapflag	nobranch
 malaya	mapflag	nobranch
 ma_scene01	mapflag	nobranch
 ma_in01	mapflag	nobranch
+ma_zif01	mapflag	nobranch
+ma_zif02	mapflag	nobranch
+ma_zif03	mapflag	nobranch
+ma_zif04	mapflag	nobranch
+ma_zif05	mapflag	nobranch
+ma_zif06	mapflag	nobranch
+ma_zif07	mapflag	nobranch
+ma_zif08	mapflag	nobranch
+ma_zif09	mapflag	nobranch
 1@ma_h	mapflag	nobranch
 1@ma_c	mapflag	nobranch
 1@ma_b	mapflag	nobranch
@@ -383,9 +401,6 @@ ecl_in03	mapflag	nobranch
 ecl_in04	mapflag	nobranch
 1@ecl	mapflag	nobranch
 ecl_hub01	mapflag	nobranch
+que_avan01	mapflag	nobranch
 
 //evt_zombie	mapflag	nobranch
-
-// Poring War ==================
-poring_w01	mapflag	nobranch
-poring_w02	mapflag	nobranch

+ 25 - 5
conf/mapflag/nomemo.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.8b
+//= 1.9
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -16,6 +16,7 @@
 //= 1.8 - Added nameless_i location. [Lupus]
 //= 1.8a - Removed duplicate gef_cas nomemo mapflags. [Yommy]
 //= 1.8b - Removed duplicate arug_dun01 & schg_dun01 entries. [Gepard]
+//= 1.9 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Towns  ====================
@@ -622,6 +623,10 @@ turbo_e_16	mapflag	nomemo
 p_track01	mapflag	nomemo
 p_track02	mapflag	nomemo
 
+// Poring War ====================
+poring_w01	mapflag	nomemo
+poring_w02	mapflag	nomemo
+
 //Vision of Okolnir ==========
 que_qsch01	mapflag	nomemo
 que_qsch02	mapflag	nomemo
@@ -734,6 +739,7 @@ gld2_ald	mapflag	nomemo
 gld2_gef	mapflag	nomemo
 gld2_pay	mapflag	nomemo
 gld2_prt	mapflag	nomemo
+job_ko	mapflag	nomemo
 ma_scene01	mapflag	nomemo
 ma_in01	mapflag	nomemo
 ma_dun01	mapflag	nomemo
@@ -772,11 +778,25 @@ moc_prydn2	mapflag	nomemo
 1@nyd	mapflag	nomemo
 2@nyd	mapflag	nomemo
 
-//evt_zombie	mapflag	nomemo
+// Glast Heim Memorial Dungeon ===
+1@gl_k	mapflag	nomemo
+2@gl_k	mapflag	nomemo
+gl_chyard_	mapflag	nomemo
+gl_cas02_	mapflag	nomemo
 
-// Poring War ====================
-poring_w01	mapflag	nomemo
-poring_w02	mapflag	nomemo
+// Wave Mode Memorial Dungeon ====
+1@def01	mapflag	nomemo
+1@def02	mapflag	nomemo
+1@def03	mapflag	nomemo
+
+// Heroes' Trails - Part 1 =======
+1@gef	mapflag	nomemo
+1@face	mapflag	nomemo
+1@sara	mapflag	nomemo
+1@gef_in	mapflag	nomemo
+dali	mapflag	nomemo
+
+//evt_zombie	mapflag	nomemo
 
 // Bossnia (custom) ==============
 bossnia_01	mapflag	nomemo

+ 6 - 4
conf/mapflag/nopenalty.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -12,6 +12,7 @@
 //= 1.2 - Updated. [Lupus]
 //= 1.3 - Added all novice maps. [L0ne_W0lf]
 //= 1.4 - Removed Nightmare PVP maps. [L0ne_W0lf]
+//= 1.5 - Updated. [L0ne_Wolf]
 //============================================================
 
 // Towns ====================
@@ -169,6 +170,7 @@ ecl_in02	mapflag	nopenalty
 ecl_in03	mapflag	nopenalty
 ecl_in04	mapflag	nopenalty
 ecl_hub01	mapflag	nopenalty
+que_avan01	mapflag	nopenalty
 
 // Job Quests ========================
 job_sword1	mapflag	nopenalty
@@ -292,6 +294,9 @@ turbo_e_16	mapflag	nopenalty
 p_track01	mapflag	nopenalty
 p_track02	mapflag	nopenalty
 
+// Poring War ==================
+poring_w02	mapflag	nopenalty
+
 //Vision of Okolnir =============
 que_qsch01	mapflag	nopenalty
 que_qsch02	mapflag	nopenalty
@@ -315,6 +320,3 @@ bat_a01	mapflag	nopenalty
 bat_a02	mapflag	nopenalty
 
 //evt_zombie	mapflag	nopenalty
-
-// Poring War ==================
-poring_w02	mapflag	nopenalty

+ 23 - 1
conf/mapflag/nopvp.txt

@@ -3,13 +3,14 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.1a
+//= 1.2
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Prevents PvP mode on a map.
 //===== Additional Comments: ================================= 
 //= 1.0 - Initial script.
+//= 1.2 - Updated. [L0ne_W0lf]
 //============================================================
 
 1@cata	mapflag	pvp	off
@@ -33,6 +34,15 @@
 1@ma_c	mapflag	pvp	off
 1@ma_b	mapflag	pvp	off
 1@ecl	mapflag	pvp	off
+1@gl_k	mapflag	pvp	off
+2@gl_k	mapflag	pvp	off
+1@def01	mapflag	pvp	off
+1@def02	mapflag	pvp	off
+1@def03	mapflag	pvp	off
+1@gef	mapflag	pvp	off
+1@face	mapflag	pvp	off
+1@sara	mapflag	pvp	off
+1@gef_in	mapflag	pvp	off
 
 bat_a01	mapflag	pvp	off
 bat_a02	mapflag	pvp	off
@@ -168,6 +178,15 @@ mal_in02	mapflag	pvp	off
 malaya	mapflag	pvp	off
 ma_scene01	mapflag	pvp	off
 ma_in01	mapflag	pvp	off
+ma_zif01	mapflag	pvp	off
+ma_zif02	mapflag	pvp	off
+ma_zif03	mapflag	pvp	off
+ma_zif04	mapflag	pvp	off
+ma_zif05	mapflag	pvp	off
+ma_zif06	mapflag	pvp	off
+ma_zif07	mapflag	pvp	off
+ma_zif08	mapflag	pvp	off
+ma_zif09	mapflag	pvp	off
 
 eclage	mapflag	pvp	off
 ecl_in01	mapflag	pvp	off
@@ -175,5 +194,8 @@ ecl_in02	mapflag	pvp	off
 ecl_in03	mapflag	pvp	off
 ecl_in04	mapflag	pvp	off
 ecl_hub01	mapflag	pvp	off
+que_avan01	mapflag	pvp	off
+
+dali	mapflag	pvp	off
 
 //evt_zombie	mapflag	pvp	off

+ 46 - 16
conf/mapflag/nosave.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.7
+//= 1.8
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -11,6 +11,7 @@
 //= to the map specified in the last field, or "SavePoint".
 //===== Additional Comments: ================================= 
 //= 1.7 - Updated. [Lupus]
+//= 1.8 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Job Quests ====================
@@ -248,6 +249,10 @@ turbo_e_16	mapflag	nosave	SavePoint
 p_track01	mapflag	nosave	SavePoint
 p_track02	mapflag	nosave	SavePoint
 
+// Poring War ====================
+poring_w01	mapflag	nosave	SavePoint
+poring_w02	mapflag	nosave	SavePoint
+
 //Vision of Okolnir ===========================
 que_qsch01	mapflag	nosave	SavePoint
 que_qsch02	mapflag	nosave	SavePoint
@@ -273,7 +278,7 @@ e_tower	mapflag	nosave	SavePoint
 5@tower	mapflag	nosave	SavePoint
 6@tower	mapflag	nosave	SavePoint
 
-// Battle Grounds ==============
+// Battle Grounds =================
 bat_c01	mapflag	nosave	SavePoint
 bat_c02	mapflag	nosave	SavePoint
 bat_c03	mapflag	nosave	SavePoint
@@ -282,7 +287,7 @@ bat_b02	mapflag	nosave	SavePoint
 bat_a01	mapflag	nosave	SavePoint
 bat_a02	mapflag	nosave	SavePoint
 
-// Episode 13 ====================
+// Episode 13 =====================
 moc_fild22b	mapflag	nosave	SavePoint
 que_dan01	mapflag	nosave	SavePoint
 que_dan02	mapflag	nosave	SavePoint
@@ -295,38 +300,63 @@ arug_dun01	mapflag	nosave	SavePoint
 1@orcs	mapflag	nosave	SavePoint
 2@orcs	mapflag	nosave	SavePoint
 
-// Nidhoggr's Instance ===========
+// Nidhoggr's Instance ============
 1@nyd	mapflag	nosave	SavePoint
 2@nyd	mapflag	nosave	SavePoint
 
-// Misty Forest Labyrinth ===========
+// Misty Forest Labyrinth =========
 1@mist	mapflag	nosave	SavePoint
 
-// Octopus Cave ===========
+// Octopus Cave ===================
 1@cash	mapflag	nosave	SavePoint
 
-// Drain ===========
+// Drain ==========================
 1@pump	mapflag	nosave	SavePoint
 2@pump	mapflag	nosave	SavePoint
 
-// Somatology Laboratory ===========
+// Somatology Laboratory ==========
 que_lhz	mapflag	nosave	SavePoint
 1@lhz	mapflag	nosave	SavePoint
 
-// Bangungot Hospital F2 ===========
+// Port Malaya ====================
+ma_zif01	mapflag	nosave	SavePoint
+ma_zif02	mapflag	nosave	SavePoint
+ma_zif03	mapflag	nosave	SavePoint
+ma_zif04	mapflag	nosave	SavePoint
+ma_zif05	mapflag	nosave	SavePoint
+ma_zif06	mapflag	nosave	SavePoint
+ma_zif07	mapflag	nosave	SavePoint
+ma_zif08	mapflag	nosave	SavePoint
+ma_zif09	mapflag	nosave	SavePoint
+
+// Bangungot Hospital F2 ==========
 1@ma_h	mapflag	nosave	SavePoint
 
-// Buwaya Cave ===========
+// Buwaya Cave ====================
 1@ma_c	mapflag	nosave	SavePoint
 
-// Bakonawa Hideout ===========
+// Bakonawa Hideout ===============
 1@ma_b	mapflag	nosave	SavePoint
 
-// Inside Eclage ===========
+// Inside Eclage ==================
+que_avan01	mapflag	nosave	SavePoint
 1@ecl	mapflag	nosave	SavePoint
 
-//evt_zombie	mapflag	nosave	SavePoint
+// Glast Heim Memorial Dungeon ====
+1@gl_k	mapflag	nosave	SavePoint
+2@gl_k	mapflag	nosave	SavePoint
 
-// Poring War ====================
-poring_w01	mapflag	nosave	SavePoint
-poring_w02	mapflag	nosave	SavePoint
+// Wave Mode Memorial Dungeon =====
+1@def01	mapflag	nosave	SavePoint
+1@def02	mapflag	nosave	SavePoint
+1@def03	mapflag	nosave	SavePoint
+
+// Heroes' Trails - Part 1 ========
+1@gef	mapflag	nosave	SavePoint
+1@face	mapflag	nosave	SavePoint
+1@sara	mapflag	nosave	SavePoint
+1@gef_in	mapflag	nosave	SavePoint
+dali	mapflag	nosave	SavePoint
+
+evt_bomb	mapflag	nosave	SavePoint
+//evt_zombie	mapflag	nosave	SavePoint

+ 37 - 6
conf/mapflag/noteleport.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.6a
+//= 1.7
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -16,6 +16,7 @@
 //=   Fly Wing (601), Giant Fly Wing (12212)
 //===== Additional Comments: ================================= 
 //= 1.6a - Updated. [Lupus]
+//= 1.7 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Cities ========================
@@ -323,6 +324,11 @@ turbo_e_16	mapflag	noteleport
 p_track01	mapflag	noteleport
 p_track02	mapflag	noteleport
 
+// Poring War ====================
+poring_w01	mapflag	noteleport
+poring_w02	mapflag	noteleport
+poring_w02	mapflag	monster_noteleport
+
 //Vision of Okolnir ==============
 que_qsch01	mapflag	noteleport
 que_qsch01	mapflag	monster_noteleport
@@ -388,6 +394,8 @@ spl_in01	mapflag	noteleport
 s_atelier	mapflag	noteleport
 bra_in01	mapflag	noteleport
 dic_in01	mapflag	noteleport
+job3_gen01	mapflag	noteleport
+job3_sha01	mapflag	noteleport
 
 // Episode 14 ====================
 1@mist	mapflag	noteleport
@@ -422,6 +430,7 @@ ma_zif06	mapflag	noteleport
 ma_zif07	mapflag	noteleport
 ma_zif08	mapflag	noteleport
 ma_zif09	mapflag	noteleport
+job_ko	mapflag	noteleport
 ecl_in01	mapflag	noteleport
 ecl_in02	mapflag	noteleport
 ecl_in03	mapflag	noteleport
@@ -445,9 +454,31 @@ nyd_dun02	mapflag	noteleport
 2@nyd	mapflag	noteleport
 2@nyd	mapflag	monster_noteleport
 
-//evt_zombie	mapflag	noteleport
+// Glast Heim Memorial Dungeon ===
+1@gl_k	mapflag	noteleport
+1@gl_k	mapflag	monster_noteleport
+2@gl_k	mapflag	noteleport
+2@gl_k	mapflag	monster_noteleport
+gl_chyard_	mapflag	noteleport
+gl_cas02_	mapflag	noteleport
 
-// Poring War ====================
-poring_w01	mapflag	noteleport
-poring_w02	mapflag	noteleport
-poring_w02	mapflag	monster_noteleport
+// Wave Mode Memorial Dungeon ====
+1@def01	mapflag	noteleport
+1@def01	mapflag	monster_noteleport
+1@def02	mapflag	noteleport
+1@def02	mapflag	monster_noteleport
+1@def03	mapflag	noteleport
+1@def03	mapflag	monster_noteleport
+
+// Heroes' Trails - Part 1 =======
+1@gef	mapflag	noteleport
+1@gef	mapflag	monster_noteleport
+1@face	mapflag	noteleport
+1@face	mapflag	monster_noteleport
+1@sara	mapflag	noteleport
+1@sara	mapflag	monster_noteleport
+1@gef_in	mapflag	noteleport
+1@gef_in	mapflag	monster_noteleport
+dali	mapflag	noteleport
+
+//evt_zombie	mapflag	noteleport

+ 50 - 5
conf/mapflag/nowarpto.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.3
+//= 1.4
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -13,6 +13,7 @@
 //= Command /memo is disabled.
 //===== Additional Comments: ================================= 
 //= 1.0 - Initial script.
+//= 1.4 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Guild Castles ========================
@@ -85,6 +86,10 @@ prt_are_in	mapflag	nowarpto
 p_track01	mapflag	nowarpto
 p_track02	mapflag	nowarpto
 
+// Poring War ====================
+poring_w01	mapflag	nowarpto
+poring_w02	mapflag	nowarpto
+
 //Vision of Okolnir ============
 que_qsch01	mapflag	nowarpto
 que_qsch02	mapflag	nowarpto
@@ -110,7 +115,7 @@ e_tower	mapflag	nowarpto
 5@tower	mapflag	nowarpto
 6@tower	mapflag	nowarpto
 
-// Battle Grounds ==============
+// Battle Grounds ================
 bat_c01	mapflag	nowarpto
 bat_c02	mapflag	nowarpto
 bat_c03	mapflag	nowarpto
@@ -150,9 +155,49 @@ spl_in01	mapflag	nowarpto
 1@nyd	mapflag	nowarpto
 2@nyd	mapflag	nowarpto
 
-// Poring War ====================
-poring_w01	mapflag	nowarpto
-poring_w02	mapflag	nowarpto
+// 14.1 Bifrost ==================
+1@mist	mapflag	nowarpto
+
+que_house_s	mapflag	nowarpto
+
+// Malangdo Maps =================
+1@pump	mapflag	nowarpto
+2@pump	mapflag	nowarpto
+1@cash	mapflag	nowarpto
+
+// Lighthalzen Dungeon F4 ========
+1@lhz	mapflag	nowarpto
+lhz_dun04	mapflag	nowarpto
+que_lhz	mapflag	nowarpto
+
+// Port Malaya ===================
+1@ma_b	mapflag	nowarpto
+1@ma_c	mapflag	nowarpto
+1@ma_h	mapflag	nowarpto
+
+// 14.2 Eclage ===================
+1@ecl	mapflag	nowarpto
+
+// Pyramids Basement Nightmare Mode
+moc_prydn1	mapflag	nowarpto
+moc_prydn2	mapflag	nowarpto
+
+// Glast Heim Memorial Dungeon ===
+1@gl_k	mapflag	nowarpto
+2@gl_k	mapflag	nowarpto
+gl_chyard_	mapflag	nowarpto
+gl_cas02_	mapflag	nowarpto
+
+// Wave Mode Memorial Dungeon ====
+1@def01	mapflag	nowarpto
+1@def02	mapflag	nowarpto
+1@def03	mapflag	nowarpto
+
+// Heroes' Trails - Part 1 =======
+1@gef	mapflag	nowarpto
+1@face	mapflag	nowarpto
+1@sara	mapflag	nowarpto
+1@gef_in	mapflag	nowarpto
 
 // Bossnia (custom) ==============
 bossnia_01	mapflag	nowarpto

+ 26 - 10
conf/mapflag/partylock.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Current Version: =====================================
-//= 1.0
+//= 1.1
 //===== Compatible With: =====================================
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -11,6 +11,7 @@
 //=   /organize, /leave, /invite, @changeleader
 //===== Additional Comments: ================================= 
 //= 1.0 - Initial script.
+//= 1.1 - Updated. [L0ne_W0lf]
 //============================================================
 
 // Sealed Shrine ==================
@@ -29,31 +30,46 @@
 1@orcs	mapflag	partylock
 2@orcs	mapflag	partylock
 
-// Nidhoggr's Instance ===========
+// Nidhoggr's Instance ============
 1@nyd	mapflag	partylock
 2@nyd	mapflag	partylock
 
-// Misty Forest Labyrinth ===========
+// Misty Forest Labyrinth =========
 1@mist	mapflag	partylock
 
-// Octopus Cave ===========
+// Octopus Cave ===================
 1@cash	mapflag	partylock
 
-// Drain ===========
+// Drain ==========================
 1@pump	mapflag	partylock
 2@pump	mapflag	partylock
 
-// Somatology Laboratory ===========
+// Somatology Laboratory ==========
 1@lhz	mapflag	partylock
 
-// Bangungot Hospital F2 ===========
+// Bangungot Hospital F2 ==========
 1@ma_h	mapflag	partylock
 
-// Buwaya Cave ===========
+// Buwaya Cave ====================
 1@ma_c	mapflag	partylock
 
-// Bakonawa Hideout ===========
+// Bakonawa Hideout ===============
 1@ma_b	mapflag	partylock
 
-// Inside Eclage ===========
+// Inside Eclage ==================
 1@ecl	mapflag	partylock
+
+// Glast Heim Memorial Dungeon ====
+1@gl_k	mapflag	partylock
+2@gl_k	mapflag	partylock
+
+// Wave Mode Memorial Dungeon =====
+1@def01	mapflag	partylock
+1@def02	mapflag	partylock
+1@def03	mapflag	partylock
+
+// Heroes' Trails - Part 1 ========
+1@gef	mapflag	partylock
+1@face	mapflag	partylock
+1@sara	mapflag	partylock
+1@gef_in	mapflag	partylock

+ 1 - 1
doc/atcommands.txt

@@ -581,7 +581,7 @@ Opens the auction window.
 @identifyall
 
 Opens the Identification window if any unappraised items are in your inventory.
-@identifyall will automaticallyidentify all unappraised items in your inventory.
+@identifyall will automatically identify all unappraised items in your inventory.
 
 ---------------------------------------
 

+ 1193 - 0
npc/re/instances/HazyForest.txt

@@ -0,0 +1,1193 @@
+//===== rAthena Script ======================================= 
+//= Hazy Forest
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Cross through the Hazy Forest to reach the Bifrost.
+//= Contains the Wandering Guardian quest.
+//===== Additional Comments: ================================= 
+//= 1.0 First version. [Euphy]
+//============================================================ 
+
+// Instance Creation
+//============================================================
+bif_fild01,158,340,5	script	Laphine Soldier#mist	447,{
+
+	set .@party_id,getcharid(1);
+	set .@md_name$,"Mistwood Maze";
+
+	mes "[Laphine Soldier]";
+	mes "Are you going into the forest?";
+	next;
+	if (!.@party_id) {
+		mes "[Laphine Soldier]";
+		mes "Well, well, well, aren't you being too rash?";
+		mes "Why don't you at least organize a party?";
+		close;
+	}
+	set .@playtime, checkquest(7211,PLAYTIME);
+	if (getcharid(0) == getpartyleader(.@party_id,2)) {
+		if (.@playtime == 0 || .@playtime == 1) {
+			mes "[Laphine Soldier]";
+			mes "...Are you sure you're not doing too much?";
+			mes "I think you'd better get some rest.";
+			mes "You'll only wear yourself out by trying to do too much";
+			next;
+			mes "[Laphine Soldier]";
+			mes "I don't think the authority will give you permission, either.";
+			mes "...Even a Sapha would be stopped from entering the forest.";
+			next;
+			select("You speak our language quite well, don't you?");
+			mes "[Laphine Soldier]";
+			mes "...Do I?";
+			mes "Actually I'm not speaking your language.";
+			mes "I'm speaking Laphine language.";
+			next;
+			mes "[Laphine Soldier]";
+			mes "But it's one of the mysteries of Bifrost.";
+			mes "That we can understand each other even if we speak different languages.";
+			next;
+			mes "[Laphine Soldier]";
+			mes "To be able to talk with everybody...";
+			mes "Perhaps that's the power of Bifrost.";
+			close;
+		} else if (.@playtime == 2) {
+			mes "[Laphine Soldier]";
+			mes "Great, great.";
+			mes "Now the forest won't reject you.";
+			mes "What are you going to do now?";
+			erasequest 7211;
+		} else {
+			mes "[Laphine Soldier]";
+			mes "You human adventurers are incredible.";
+			mes "You're always going into the forest, where no one else dares to go.";
+			next;
+			mes "[Laphine Soldier]";
+			mes "Phew. But I have to report to the authority";
+			mes "everyone who goes into the forest, just in case.";
+			next;
+			mes "[Laphine Soldier]";
+			mes "You'll get permission";
+			mes "after you register.";
+			mes "Are you going to venture into the Hazy Forest?";
+		}
+		next;
+		switch(select("Venture into the Hazy Forest.:Give up.")) {
+		case 1:
+			set .@instance, instance_create(.@md_name$,.@party_id);
+			if (.@instance >= 0) {
+				if (instance_attachmap("1@mist",.@instance) != "") {
+
+					instance_attach(.@instance);
+					instance_set_timeout 7200,300,.@instance;
+					instance_init(.@instance);
+
+					donpcevent instance_npcname("#Whisper_mist", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Tom's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Tomba's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Remi's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Tired Rem's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Ron's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Rover's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Mona's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Namon's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Sad Neoron's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Spyder's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Tito's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Pumba's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Tete's Garden Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("The Gardeners' Tree", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Dragon Herder", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Mysterious Young Man#mis", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Loki#mist", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("Collapsed Girl#mist", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Mist Mobs Respawn1", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Mist Mobs Respawn2", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Mist Mobs Respawn3", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Mist Mobs Respawn4", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Mist Mobs Respawn5", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#Fragments of Memory", instance_id())+"::OnInstanceInit";
+					donpcevent instance_npcname("#mist_warp_init", instance_id())+"::OnInstanceInit";
+
+					mes "[Laphine Soldier]";
+					mes "Party Name "+getpartyname(.@party_id)+"...";
+					mes "Party Leader "+strcharinfo(0)+"...";
+					mes "I've got it. I've written them down on the report here.";
+					next;
+					mes "[Laphine Soldier]";
+					mes "You'll get permission soon.";
+					mes "Now go to the log tunnel, the only way to get into the Hazy Forest.";
+					mes "You understand?";
+					next;
+					mes "[Laphine Soldier]";
+					mes "We can't go against the forest,";
+					mes "but maybe you humans can.";
+					mes "Good luck!";
+					close;
+				} else
+					instance_destroy(.@instance);
+			}
+			mes "[Laphine Soldier]";
+			mes "Party Name "+getpartyname(.@party_id)+"...";
+			mes "Party Leader "+strcharinfo(0)+"...";
+			mes "Hmm...";
+			next;
+			mes "[Laphine Soldier]";
+			if (.@playtime == -1)
+				mes "It's dangerous in the forest.";
+			else
+				mes "The atmosphere is somewhat tense in the forest.";
+			mes "...Why don't you just go back today?";
+			close;
+		case 2:
+			mes "[Laphine Soldier]";
+			mes "Well, you've made the right decision.";
+			if (.@playtime == -1)
+				mes "That's what's good for you.";
+			close;
+		}
+	} else {
+		mes "[Laphine Soldier]";
+		mes "Where's your party leader?";
+		mes "It's dangerous in there.";
+		next;
+		if (.@playtime == 2) {
+			mes "[Laphine Soldier]";
+			mes "I see you've been into the forest before.";
+			mes "Okay, at least the forest won't reject you.";
+			mes "However...";
+			erasequest 7211;
+			next;
+		}
+		mes "[Laphine Soldier]";
+		mes "Put yourself in my shoes, the entrance guard, and let me meet the representative of your party.";
+		mes "I have to discuss some things with him/her.";
+		close;
+	}
+}
+
+bif_fild01,161,355,0	script	Log Tunnel	844,{
+	mes "I see the forest through the log tunnel.";
+	mes "It looks like I can enter the forest through the log tunnel.";
+	next;
+	if(select("Enter the tunnel.:Give up.") == 2)
+		close;
+	// TODO: Add official MD_Enter cases.
+	if (!getcharid(1)) {
+		mes "[Laphine Soldier]";
+		mes "Hey, look!";
+		mes "Are you going alone?";
+		mes "That's impossible. Too rash.";
+		mes "Team up with some friends and go together!";
+		close;
+	}
+	set .@playtime, checkquest(7211,PLAYTIME);
+	if (has_instance("1@mist") == "") {
+		if (.@playtime == 0 || .@playtime == 1) {
+			mes "You try to crawl into the log, but some mysterious power pushes you back with a gush of wind.";
+			mes "It seems like you can't force your way into the forest.";
+			close;
+		}
+		mes "The world beyond the log tunnel looks dark and suffocating.";
+		mes "Your instinct is screaming that this forest is dangerous.";
+		close;
+	}
+	if (.@playtime == 2) erasequest 7211;
+	if (checkquest(7211,PLAYTIME) == -1) setquest 7211;
+	mapannounce "bif_fild01",getpartyname(getcharid(1))+" party's "+strcharinfo(0)+" member is entering the Mistwood Maze.",bc_map,"0x00ff99"; //FW_NORMAL 12 0 0
+	warp "1@mist",89,29;
+	close;
+}
+
+// Instance Scripts
+//============================================================
+1@mist,89,29,0	script	#Whisper_mist	844,1,1,{
+	end;
+OnInstanceInit:
+	enablenpc instance_npcname("#Whisper_mist", instance_id());
+	end;
+OnTouch:
+	disablenpc instance_npcname("#Whisper_mist", instance_id());
+	initnpctimer;
+	end;
+OnTimer10000:
+OnTimer20000:
+	instance_announce 0,"Whisper: Who's this? Who's this!? The forest is open! Tom, Tomba, Tired Rem, Remi! Wake up!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer60000:
+	instance_announce 0,"Loud Whisper: What are the forest keepers doing? What are the gardeners doing??",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer120000:
+	instance_announce 0,"Loud Whisper: Don't go out, wander around forever, and play with us!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer180000:
+	instance_announce 0,"Loud Whisper: Useless, useless. Wandering around and around, you'll meet your end!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	stopnpctimer;
+	end;
+}
+
+// callfunc "F_Mora_Mist",<warp to enable>,<success message>,<fail message>{,<end flag>}
+function	script	F_Mora_Mist	{
+	if (mobcount("1@mist",instance_npcname(strnpcinfo(0), instance_id())+"::OnMyMobDead") == 0) {
+		mes "Obviously no one is taking care of it.";
+		mes "It seems like you can chop down the garden tree.";
+		next;
+		if(select("Chop down the garden tree.:Give up.") == 2)
+			close;
+		mes "You chop down the tree, which was blocking the path of the maze, "+((getarg(3,0))?"clearing the way out of the forest.":"so now you can continue.");
+		instance_announce 0,getarg(1),bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+		enablenpc instance_npcname(getarg(0), instance_id());
+		disablenpc instance_npcname(strnpcinfo(0), instance_id());
+		close;
+	} else
+		instance_announce 0,((getarg(3,0))?getarg(2):getarg(2)+"'s Cry: Huh? Who's doing bad things to my tree?!"),bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+}
+
+1@mist,251,121,3	script	Tom's Garden	858,{ end; }
+1@mist,247,123,0	script	Tom's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"a25_a18-1",
+		"Roaring Cry: Tom's bolt is broken! Watch out, Tomba! Watch out, Tomba!",
+		"Tom";
+	end;
+OnInstanceInit:
+	monster "1@mist",249,120,"Tom",2136,1,instance_npcname("Tom's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,226,95,3	script	Tomba's Garden	858,{ end; }
+1@mist,225,98,0	script	Tomba's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"a27-2_af1-2",
+		"Roaring Cry: Tomba's Garden Tree is gone with Tomba. Remi, what are you going to do now?",
+		"Tomba";
+	end;
+OnInstanceInit:
+	monster "1@mist",200,64,"Tomba",2136,1,instance_npcname("Tomba's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,157,183,3	script	Remi's Garden	858,{ end; }
+1@mist,159,184,0	script	Remi's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"a15-2_a4-1",
+		"Roaring Cry: Remi, Remi's Garden Tree was chopped down- Rem, it's your turn next. Poor Rem!",
+		"Remi";
+	end;
+OnInstanceInit:
+	monster "1@mist",154,184,"Remi the Tired",2137,1,instance_npcname("Remi's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,58,39,3	script	Tired Rem's Garden	858,{ end; }
+1@mist,61,39,0	script	Tired Rem's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"a4-2_a11",
+		"Rem's Desperate Cry: Argh... Rem will sleep. Rem will sleep now, and won't wake up forever!",
+		"Rem";
+	end;
+OnInstanceInit:
+	monster "1@mist",101,107,"Rem the Gardener",2136,1,instance_npcname("Tired Rem's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnTimer10000:
+	instance_announce 0,"Whisper of the Forest: So Tom's, Tomba's, Remi's, and Rem's garden trees were all chopped down?",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer15000:
+	instance_announce 0,"Whisper of the Forest: Trouble, trouble, we're in big trouble.",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer20000:
+	instance_announce 0,"Loud Whisper: They've come to the second deepest forest. Gardeners of the deep forest, watch out!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	stopnpctimer;
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,227,179,3	script	Ron's Garden	858,{ end; }
+1@mist,230,179,0	script	Ron's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b4-2_b2",
+		"Ron the Gardener's Cry: I'm getting off work! Don't look for Ron, the second gardener, any more!!",
+		"Ron";
+	end;
+OnInstanceInit:
+	monster "1@mist",227,178,"Ron the Gardener",2134,1,instance_npcname("Ron's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,288,226,3	script	Rover's Garden	858,{ end; }
+1@mist,285,225,0	script	Rover's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b7_bf1-2",
+		"Roaring Whisper: Ron's, and Rover's trees were chopped down as well. Who is forcing his way into the forest? Who is it?",
+		"Rover";
+	end;
+OnInstanceInit:
+	monster "1@mist",304,237,"Rover the Strutter",2134,1,instance_npcname("Rover's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,159,318,3	script	Mona's Garden	858,{ end; }
+1@mist,161,316,0	script	Mona's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b31_b16",
+		"Clamoring Whisper: Mona the Seedseeker's garden tree is gone! Mona is gone too! Namon will be okay, because he is brave, right? Namon, are you okay?",
+		"Mona";
+	end;
+OnInstanceInit:
+	monster "1@mist",239,253,"Mona the Seedseeker",2133,1,instance_npcname("Mona's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,205,300,3	script	Namon's Garden	858,{ end; }
+1@mist,204,299,0	script	Namon's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b27-3_bN-1",
+		"Clamoring Whisper: Brave Namon met his fate not so bravely... *giggle*",
+		"Namon";
+	end;
+OnInstanceInit:
+	monster "1@mist",89,173,"Brave Namon",2134,1,instance_npcname("Namon's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,219,232,3	script	Sad Neoron's Garden	858,{ end; }
+1@mist,221,236,0	script	Sad Neoron's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b6-1_b33",
+		"Lamenting Whisper: Sad Neoron has become cheerful! Spyder the Superior Spider, what are you going to do? What are you going to do now?",
+		"Neoron";
+	end;
+OnInstanceInit:
+	monster "1@mist",143,265,"Sad Neoron",2137,1,instance_npcname("Sad Neoron's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,206,202,3	script	Spyder's Garden	858,{ end; }
+1@mist,206,200,0	script	Spyder's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"b5_b14",
+		"Depressed Whisper: Now it's all over with the second deepest forest. Gardeners are dying out-",
+		"Spyder";
+	end;
+OnInstanceInit:
+	monster "1@mist",209,200,"Spyder the Eight-Legged",2132,1,instance_npcname("Spyder's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnTimer5000:
+	instance_announce 0,"Roaring Whisper: The path is about to open. The tight bolts have been removed!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer9000:
+	instance_announce 0,"Roaring Whisper: A forest opened, another opened, and the other is going to open as well. Tito and Pumba, they are heading your way!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer13000:
+	instance_announce 0,"Roaring Whisper: Where you get after wandering around, around and around, everybody you've met while wandering around, around and around,",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	end;
+OnTimer17000:
+	instance_announce 0,"Roaring Whisper: all the gardeners will be waiting for you, with their clippers in their hands-!",bc_map,"0xccffcc"; //FW_NORMAL 12 0 0
+	stopnpctimer;
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,96,288,3	script	Tito's Garden	858,{ end; }
+1@mist,95,287,0	script	Tito's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"c1_c13-1",
+		"Tito's Cry: *sob* *sob* Tito's gone now! Tito's done for! Boo hoo!!",
+		"Tito";
+	end;
+OnInstanceInit:
+	monster "1@mist",264,291,"Tito the Flipper",2133,1,instance_npcname("Tito's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,326,325,3	script	Pumba's Garden	858,{ end; }
+1@mist,324,325,0	script	Pumba's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"c13-3_c4",
+		"Roaring Whisper: Tito the Hard Worker was defeated! Stop playing and go to work, Tete! Start working!",
+		"Pumba";
+	end;
+OnInstanceInit:
+	monster "1@mist",309,165,"Diligent Pumba",2134,1,instance_npcname("Pumba's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,278,345,3	script	Tete's Garden	858,{ end; }
+1@mist,280,344,0	script	Tete's Garden Tree	527,{
+	callfunc "F_Mora_Mist",
+		"c19_c4",
+		"Whisper: They are strong, strong indeed. What are we going to do now? Are there any gardeners left? Are there any?",
+		"Tete";
+	end;
+OnInstanceInit:
+	monster "1@mist",277,343,"Carefree Tete",2136,1,instance_npcname("Tete's Garden Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,345,186,0	script	The Gardeners' Tree	527,{
+	callfunc "F_Mora_Mist",
+		"#to_bif02",
+		"Roaring Whisper: The forest will remember you! It will remember you, the one who broke the clippers of all the gardeners!",
+		"Gardeners: We're not dead, yet!!!!",1;
+	end;
+OnInstanceInit:
+	monster "1@mist",318,137,"Baby Tom",2136,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",321,137,"Tomba the Baby",2136,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",324,137,"Exhausted Remi",2137,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",319,135,"Rem the Exhausted",2136,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",323,135,"Ron the Ex-Gardener",2134,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",320,133,"Rover the Strutter",2134,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",323,133,"Mona the Seedpicker",2133,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",317,132,"Timid Namon",2134,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",326,132,"Indifferent Neoron",2137,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",317,129,"Spyder the Seven-Legged",2132,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",320,129,"Tito the Flapper",2133,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",324,129,"Lazy Pumba",2134,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	monster "1@mist",327,129,"Careless Tete",2136,1,instance_npcname("The Gardeners' Tree", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	end;
+}
+
+1@mist,73,290,0	script	Mysterious Flower#1	844,{
+	specialeffect EF_LEVEL99_4;
+	disablenpc instance_npcname(strnpcinfo(0), instance_id());
+	getitem 12561,1; //Mysterious_Seed
+	end;
+}
+1@mist,69,295,0	duplicate(Mysterious Flower#1)	Mysterious Flower#2	844
+1@mist,62,291,0	duplicate(Mysterious Flower#1)	Mysterious Flower#3	844
+1@mist,54,293,0	duplicate(Mysterious Flower#1)	Mysterious Flower#4	844
+1@mist,48,286,0	duplicate(Mysterious Flower#1)	Mysterious Flower#5	844
+1@mist,54,277,0	duplicate(Mysterious Flower#1)	Mysterious Flower#6	844
+1@mist,52,270,0	duplicate(Mysterious Flower#1)	Mysterious Flower#7	844
+1@mist,62,268,0	duplicate(Mysterious Flower#1)	Mysterious Flower#8	844
+1@mist,72,271,0	duplicate(Mysterious Flower#1)	Mysterious Flower#9	844
+1@mist,72,276,0	duplicate(Mysterious Flower#1)	Mysterious Flower#10	844
+1@mist,118,194,0	duplicate(Mysterious Flower#1)	Mysterious Flower#11	844
+1@mist,122,204,0	duplicate(Mysterious Flower#1)	Mysterious Flower#12	844
+1@mist,137,209,0	duplicate(Mysterious Flower#1)	Mysterious Flower#13	844
+1@mist,144,203,0	duplicate(Mysterious Flower#1)	Mysterious Flower#14	844
+1@mist,146,186,0	duplicate(Mysterious Flower#1)	Mysterious Flower#15	844
+1@mist,142,182,0	duplicate(Mysterious Flower#1)	Mysterious Flower#16	844
+1@mist,132,179,0	duplicate(Mysterious Flower#1)	Mysterious Flower#17	844
+1@mist,123,184,0	duplicate(Mysterious Flower#1)	Mysterious Flower#18	844
+1@mist,194,118,0	duplicate(Mysterious Flower#1)	Mysterious Flower#19	844
+1@mist,188,109,0	duplicate(Mysterious Flower#1)	Mysterious Flower#20	844
+1@mist,193,94,0	duplicate(Mysterious Flower#1)	Mysterious Flower#21	844
+1@mist,205,92,0	duplicate(Mysterious Flower#1)	Mysterious Flower#22	844
+1@mist,213,96,0	duplicate(Mysterious Flower#1)	Mysterious Flower#23	844
+1@mist,216,103,0	duplicate(Mysterious Flower#1)	Mysterious Flower#24	844
+1@mist,212,116,0	duplicate(Mysterious Flower#1)	Mysterious Flower#25	844
+1@mist,207,120,0	duplicate(Mysterious Flower#1)	Mysterious Flower#26	844
+1@mist,169,310,0	duplicate(Mysterious Flower#1)	Mysterious Flower#27	844
+1@mist,172,296,0	duplicate(Mysterious Flower#1)	Mysterious Flower#28	844
+1@mist,191,301,0	duplicate(Mysterious Flower#1)	Mysterious Flower#30	844
+1@mist,195,301,0	duplicate(Mysterious Flower#1)	Mysterious Flower#31	844
+1@mist,192,316,0	duplicate(Mysterious Flower#1)	Mysterious Flower#32	844
+1@mist,187,320,0	duplicate(Mysterious Flower#1)	Mysterious Flower#33	844
+1@mist,174,318,0	duplicate(Mysterious Flower#1)	Mysterious Flower#34	844
+1@mist,308,136,0	duplicate(Mysterious Flower#1)	Mysterious Flower#35	844
+1@mist,314,122,0	duplicate(Mysterious Flower#1)	Mysterious Flower#36	844
+1@mist,321,118,0	duplicate(Mysterious Flower#1)	Mysterious Flower#37	844
+1@mist,331,123,0	duplicate(Mysterious Flower#1)	Mysterious Flower#38	844
+1@mist,335,126,0	duplicate(Mysterious Flower#1)	Mysterious Flower#39	844
+1@mist,332,141,0	duplicate(Mysterious Flower#1)	Mysterious Flower#40	844
+1@mist,328,144,0	duplicate(Mysterious Flower#1)	Mysterious Flower#41	844
+1@mist,314,144,0	duplicate(Mysterious Flower#1)	Mysterious Flower#42	844
+1@mist,238,224,0	duplicate(Mysterious Flower#1)	Mysterious Flower#43	844
+1@mist,244,231,0	duplicate(Mysterious Flower#1)	Mysterious Flower#44	844
+1@mist,257,232,0	duplicate(Mysterious Flower#1)	Mysterious Flower#45	844
+1@mist,262,229,0	duplicate(Mysterious Flower#1)	Mysterious Flower#46	844
+1@mist,265,216,0	duplicate(Mysterious Flower#1)	Mysterious Flower#47	844
+1@mist,260,214,0	duplicate(Mysterious Flower#1)	Mysterious Flower#48	844
+1@mist,252,206,0	duplicate(Mysterious Flower#1)	Mysterious Flower#49	844
+1@mist,244,211,0	duplicate(Mysterious Flower#1)	Mysterious Flower#50	844
+
+// Wandering Guardian Quest
+//============================================================
+1@mist,2,2,0	script	#Dragon Herder	844,{
+	end;
+OnInstanceInit:
+	switch(rand(1,6)) {
+		case 1: setarray .@c[0],77,240; break;
+		case 2: setarray .@c[0],147,261; break;
+		case 3: setarray .@c[0],182,263; break;
+		case 4: setarray .@c[0],194,350; break;
+		case 5: setarray .@c[0],268,183; break;
+		case 6: setarray .@c[0],65,278; break;
+	}
+	monster "1@mist",.@c[0],.@c[1],"Wandering Purple Dragon",2131,1,instance_npcname("#Dragon Herder", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	if (mobcount("1@mist",instance_npcname("#Dragon Herder", instance_id())+"::OnMyMobDead") == 0) {
+		donpcevent instance_npcname("Collapsed Girl#mist", instance_id())+"::OnEnable";
+		donpcevent instance_npcname("Mysterious Young Man#mis", instance_id())+"::OnEnable";
+		donpcevent instance_npcname("Loki#mist", instance_id())+"::OnEnable";
+		instance_announce 0,"The Dragon's Cry: Am I being punished... for abandoning the way... of the guardian...?",bc_map,"0xffff00"; //FW_NORMAL 12 0 0
+		disablenpc instance_npcname("#Dragon Herder", instance_id());
+		initnpctimer;
+	}
+	end;
+OnTimer3000:
+	stopnpctimer;
+	instance_announce 0,"Voice in your head: ...Will you... save... me... please......?",bc_map,"0xffff00"; //FW_NORMAL 12 0 0
+	end;
+}
+
+1@mist,97,30,3	script	Mysterious Young Man#mis	512,{
+	if (BaseLevel < 98) {
+		mes "[Mysterious Young Man]";
+		mes "Huh? Do you plan to pass through here?";
+		mes ".....I'm afraid it's beyond your ability, but I won't meddle in your affairs.";
+		mes "We'll meet again, if you survive.";
+		close;
+	}
+	if (ep14_1_mistwoods == 0) {
+		if (ep13_3_secret > 23) {
+			mes "[Mysterious Young Man]";
+			mes "You... I remember seeing you at the camp.";
+			mes "The information you gave on Ahat was useful.";
+			mes "Thanks!";
+			next;
+			mes "[Mysterious Young Man]";
+			mes "But do you plan to pass through here?";
+			mes "What good is it to go across Bifrost?";
+			next;
+		} else {
+			mes "[Mysterious Young Man]";
+			mes "Do you plan to pass through here?";
+			mes "I will advise against it if you're just curious.";
+			mes "It will only bring about your untimely death...";
+			next;
+		}
+		mes "[Mysterious Young Man]";
+		mes "If you are determined to pass through here,";
+		mes "I will ask for your help with something.";
+		next;
+		select("Who are you?");
+		mes "[Loki]";
+		mes "Loki... from the Assassin's Guild.";
+		mes "That's my name.";
+		mes "And yours?";
+		next;
+		mes "["+strcharinfo(0)+"]";
+		mes "....";
+		mes "...."+strcharinfo(0)+" sir.";
+		next;
+		mes "[Loki]";
+		mes "I see. "+strcharinfo(0)+".";
+		mes "I'm asking you again.";
+		mes "Do you plan to pass through this forest?";
+		next;
+		switch(select("Yes, I do.:No, I don't.")) {
+		case 1:
+			mes "[Loki]";
+			mes "Then I'll ask you a question.";
+			mes "Have you ever seen a guard... a girl with purple hair?";
+			next;
+			switch(select("No, I haven't.:Yes, I might have...")) {
+			case 1:
+				mes "[Loki]";
+				mes "So you haven't.";
+				mes "You're telling the truth.";
+				next;
+				break;
+			case 2:
+				mes "[Loki]";
+				mes "Wait.";
+				mes "(Loki comes closer.)";
+				mes "... No.";
+				mes "You're telling the truth.";
+				next;
+				break;
+			}
+			mes "[Loki]";
+			mes "Now we have to say goodbye here.";
+			mes "If you survive this forest, of course.";
+			set ep14_1_mistwoods,2;
+			setquest 7212;
+			close;
+		case 2:
+			mes "[Loki]";
+			mes "I understand.";
+			mes "Step back if you aren't ready.";
+			mes "This forest doesn't like strangers.";
+			set ep14_1_mistwoods,1;
+			close;
+		}
+	} else if (ep14_1_mistwoods == 1) {
+		mes "[Loki]";
+		mes "I told you - step back if you don't want to die.";
+		mes "It's not easy going through the forest.";
+		mes "It may cost you your life.";
+		next;
+		switch(select("Okay.:What do you want?")) {
+		case 1:
+			mes "- When you step back,";
+			mes "Loki nods slightly and then looks away. -";
+			close;
+		case 2:
+			mes "[Loki]";
+			mes "I'm looking for somebody.";
+			mes "Have you ever seen a guard... a girl with purple hair?";
+			next;
+			switch(select("No, I haven't.:Yes, I might have...")) {
+			case 1:
+				mes "[Loki]";
+				mes "So you haven't.";
+				mes "You're telling the truth.";
+				next;
+				break;
+			case 2:
+				mes "[Loki]";
+				mes "Wait.";
+				mes "(Loki comes closer.)";
+				mes "... No.";
+				mes "You're telling the truth.";
+				next;
+				break;
+			}
+			mes "[Loki]";
+			mes "Now we have to say goodbye here.";
+			mes "Hopefully, we will see each other again in Mora.";
+			set ep14_1_mistwoods,2;
+			setquest 7212;
+			close;
+		}
+	} else if (ep14_1_mistwoods == 2) {
+		mes "[Loki]";
+		mes "I don't want to go with you.";
+		mes "Hopefully, we will see each other again in Mora.";
+		close;
+	} else if (ep14_1_mistwoods == 3) {
+		mes "[Loki]";
+		mes "So we meet again.";
+		mes "Are you used to this place?";
+		mes "Come to the inn in Mora.";
+		mes "I have something to give to you.";
+		close;
+	} else {
+		mes "[Loki]";
+		mes "We're seeing a lot of each other these days.";
+		mes "It seems you are completely comfortable with the place.";
+		mes "You'd better not be too proud of yourself.";
+		close;
+	}
+	end;
+OnInstanceInit:
+OnEnable:
+	enablenpc instance_npcname("Mysterious Young Man#mis", instance_id());
+	end;
+OnDisable:
+	disablenpc instance_npcname("Mysterious Young Man#mis", instance_id());
+	end;
+}
+
+1@mist,183,304,3	script	Loki#mist	512,{
+	if (ep14_1_mistwoods < 2) {
+		mes "[Loki]";
+		mes "An adventurer in the forest.";
+		mes ".....";
+		mes "You can go to Mora through this forest.";
+		close;
+	} else if (ep14_1_mistwoods == 2) {
+		mes "[Loki]";
+		mes "Is it you that took care of this unruly girl?";
+		mes "I guess I have to thank you.";
+		mes "You've calmed her down.";
+		next;
+		select("What's happening?:This girl...?");
+		mes "[Loki]";
+		mes "You might be able to change your appearance, but you cannot change your unique, innate light.";
+		mes "A scent strong enough to burn your nose.";
+		next;
+		mes "[Loki]";
+		mes "This is Nydhogg, the Guardian of Yggdrasil,";
+		mes "whom I was looking for.";
+		mes "Now she won't wander around crazy any more.";
+		next;
+		select("What are you going to do now?");
+		mes "[Loki]";
+		mes "I'll wait for her to wake up and get out of this forest.";
+		mes "I can manage it on my own.";
+		mes "I'll see you in Mora.";
+		set ep14_1_mistwoods,3;
+		erasequest 7212;
+		setquest 7213;
+		close;
+	} else if (ep14_1_mistwoods == 3) {
+		mes "[Loki]";
+		mes "I don't want to go with you.";
+		mes "I can manage her on my own.";
+		mes "If you have something to say, say it after we get out of the forest.";
+		close;
+	} else {
+		mes "[Loki]";
+		mes "I don't want to go with you.";
+		mes "If you have something to say, say it after we get out of the forest.";
+		close;
+	}
+	end;
+OnInstanceInit:
+OnDisable:
+	disablenpc instance_npcname("Loki#mist", instance_id());
+	end;
+OnEnable:
+	enablenpc instance_npcname("Loki#mist", instance_id());
+	end;
+}
+
+1@mist,181,303,3	script	Collapsed Girl#mist	511,{
+	mes "You see a girl with mysterious hair collapsed on the ground.";
+	mes "As you approach her, you smell the scent of flowers so strong that it makes you dizzy.";
+	close;
+OnInstanceInit:
+OnDisable:
+	disablenpc instance_npcname("Collapsed Girl#mist", instance_id());
+	end;
+OnEnable:
+	enablenpc instance_npcname("Collapsed Girl#mist", instance_id());
+	end;
+}
+
+mora,46,152,5	script	Flower Smelling Lady	510,{
+	if (ep14_1_mistwoods < 3) {
+		mes "[Flower Smell Lady]";
+		mes "I need rest.";
+		mes "I'm too tired to talk to you.";
+		mes "I'm sorry.";
+		close;
+	} else if (ep14_1_mistwoods == 3) {
+		mes "[Nydhogg the Guardian]";
+		mes "I've been waiting for you.";
+		mes "I'm still confused, but I know what I did wrong.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "If it weren't for you, I would still be wandering in the abyssal darkness.";
+		mes "I thank you, from the bottom of my heart.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "I'm ashamed of myself, falling for the sweet but empty words that came to me in my loneliness.";
+		mes "....";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "I don't deserve to be a guardian any more.";
+		mes "A dragon gone crazy is not a guardian any more.";
+		next;
+		mes "[Loki]";
+		mes "Yggdrasil doesn't think so.";
+		mes "Nidi, don't forget your duties.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "Are you...?";
+		mes "I see...";
+		mes "I thought I was forsaken...";
+		next;
+		mes "The Guardian slowly looked away as if deep in thought.";
+		set ep14_1_mistwoods,4;
+		close2;
+	} else if (ep14_1_mistwoods == 4) {
+		mes "- He seems to be deep in thought. -";
+		close;
+	} else {
+		mes "[Nydhogg the Guardian]";
+		mes "I haven't gotten all of my powers back.";
+		mes "I'm sorry I can't protect you.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "Loki said...";
+		mes "that I won't cry from loneliness again,";
+		mes "that I will always have new friends like you...";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "...I've lost everything, but I'm happy now.";
+		close;
+	}
+}
+
+mora,48,152,3	script	Sharp Eyed Man	512,{
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 1000) {
+		mes "- You have too many items to do this quest. -";
+		close;
+	}
+	if (ep14_1_mistwoods < 3) {
+		mes "He won't look at you. It's like he's not interested at all.";
+		close;
+	} else if (ep14_1_mistwoods == 3) {
+		mes "[Loki]";
+		mes "So you've passed through the forest.";
+		mes "It seems Niddy has something to say to you.";
+		close;
+	} else if (ep14_1_mistwoods == 4) {
+		mes "[Loki]";
+		mes "Nydhogg was one of the guardians of the World Tree.";
+		mes "But he abandoned his duties as a guardian when he gave in to Morroc's temptation.";
+		next;
+		mes "[Loki]";
+		mes "Some fools performed a ritual to break the seal that held Morroc.";
+		mes "But the ritual didn't work right. The servant of Morroc failed to break the seal.";
+		next;
+		mes "[Loki]";
+		mes "But the seal is so weak that it can break open any time.";
+		mes "It's Yggdrasil the World Tree's will that has kept the seal from breaking.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "That's right. The power of the World Tree is linked to the whole world.";
+		mes "When the bond between the guardians and Yggdrasil broke, Yggdrasil became unstable.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "That's why all those disasters happened to Yggdrasil.";
+		mes "As the World Tree became unstable, the influence it had on the seal grew weak.";
+		next;
+		mes "[Loki]";
+		mes "And Morroc broke himself free from the seal.";
+		mes "Although it seems like he used most of his powers just to break the seal...";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "It's all my fault.";
+		mes "I couldn't break free from Morroc's temptation.";
+		mes "For too... too long...";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "...I wanted to be relieved of my thousands of years of loneliness.";
+		mes "I wasn't in my right mind then.";
+		mes "It was none other than I that broke my bond with Yggdrasil.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "I lost control of myself, and did what I shouldn't have done.";
+		mes "The other side of me became a shadow and a reckless tyrant.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "Facing the world, I realized...";
+		mes "I felt too great a sense of loss... it was much more painful than the loneliness I had endured for thousands of years.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "That's how I was left alone.";
+		mes "I felt too great a sense of loss... it was much more painful than the loneliness I had endured for thousands of years.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "So I became a sinner, forgotten to the world.";
+		next;
+		mes "[Loki]";
+		mes "It's not too late.";
+		mes "You're still a guardian.";
+		mes "You still have things to do.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "... Oh, yes. It's late, but I have to fulfill my duties as a guardian.";
+		mes "Now I know. I'll destroy Morroc with my own hands.";
+		mes "I will fulfill my duties as a guardian.";
+		next;
+		switch(select("You're not alone.:Those are very important duties.")) {
+		case 1:
+			mes "[Nydhogg the Guardian]";
+			mes "You're right.";
+			mes "It may be why I haven't been forsaken - to realize that I'm not alone.";
+			mes "You are a kind soul.";
+			next;
+			break;
+		case 2:
+			mes "[Nydhogg the Guardian]";
+			mes "But this is my atonement.";
+			mes "I'm happy, though.";
+			mes "I don't have to fight the loneliness any more.";
+			next;
+			break;
+		}
+		mes "[Nydhogg the Guardian]";
+		mes strcharinfo(0)+"...";
+		mes "Thanks for listening to my long story.";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "It's what I always have with me.";
+		mes "I'm sure it will protect you someday.";
+		next;
+		mes "[Loki]";
+		mes "(Removes his scarf from around his neck and hands it to you.)";
+		next;
+		mes "[Nydhogg the Guardian]";
+		mes "May the blessing of Mother Yggdrasil be with you...";
+		set ep14_1_mistwoods,10;
+		completequest 7213;
+		getitem 2568,1; //Muffler_Of_Roki
+		getitem 2858,1; //Pendant_Of_Guardian
+		getexp 400000,400000;
+		close;
+	} else {
+		mes "[Loki]";
+		mes "I'll be staying here for a while.";
+		mes "We may meet again.";
+		next;
+		mes "[Loki]";
+		mes "The day when Morroc reveals his despicable nature...";
+		mes "I will be waiting for him.";
+		close;
+	}
+}
+
+// Monster Spawns
+//============================================================
+1@mist,1,1,0	script	#Mist Mobs Respawn1	844,{
+	end;
+OnInstanceInit:
+	monster "1@mist",0,0,"Miming",2137,15,instance_npcname("#Mist Mobs Respawn1", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	set .@num_mobs, 15 - mobcount("1@mist",instance_npcname("#Mist Mobs Respawn1", instance_id())+"::OnMyMobDead");
+	if (.@num_mobs > 0)
+		monster "1@mist",0,0,"Miming",2137,.@num_mobs,instance_npcname("#Mist Mobs Respawn1", instance_id())+"::OnMyMobDead";
+	end;
+}
+
+1@mist,1,2,0	script	#Mist Mobs Respawn2	844,{
+	end;
+OnInstanceInit:
+	monster "1@mist",0,0,"Pom Spider",2132,35,instance_npcname("#Mist Mobs Respawn2", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	set .@num_mobs, 35 - mobcount("1@mist",instance_npcname("#Mist Mobs Respawn2", instance_id())+"::OnMyMobDead");
+	if (.@num_mobs > 0)
+		monster "1@mist",0,0,"Pom Spider",2132,.@num_mobs,instance_npcname("#Mist Mobs Respawn2", instance_id())+"::OnMyMobDead";
+	end;
+}
+
+1@mist,1,3,0	script	#Mist Mobs Respawn3	844,{
+	end;
+OnInstanceInit:
+	monster "1@mist",0,0,"Angra Mantis",2133,35,instance_npcname("#Mist Mobs Respawn3", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	set .@num_mobs, 35 - mobcount("1@mist",instance_npcname("#Mist Mobs Respawn3", instance_id())+"::OnMyMobDead");
+	if (.@num_mobs > 0)
+		monster "1@mist",0,0,"Angra Mantis",2133,.@num_mobs,instance_npcname("#Mist Mobs Respawn3", instance_id())+"::OnMyMobDead";
+	end;
+}
+
+1@mist,1,4,0	script	#Mist Mobs Respawn4	844,{
+	end;
+OnInstanceInit:
+	monster "1@mist",0,0,"Parus",2134,35,instance_npcname("#Mist Mobs Respawn4", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	set .@num_mobs, 35 - mobcount("1@mist",instance_npcname("#Mist Mobs Respawn4", instance_id())+"::OnMyMobDead");
+	if (.@num_mobs > 0)
+		monster "1@mist",0,0,"Parus",2134,.@num_mobs,instance_npcname("#Mist Mobs Respawn4", instance_id())+"::OnMyMobDead";
+	end;
+}
+
+1@mist,1,5,0	script	#Mist Mobs Respawn5	844,{
+	end;
+OnInstanceInit:
+	monster "1@mist",0,0,"Little Fatum",2136,15,instance_npcname("#Mist Mobs Respawn5", instance_id())+"::OnMyMobDead";
+	end;
+OnMyMobDead:
+	set .@num_mobs, 15 - mobcount("1@mist",instance_npcname("#Mist Mobs Respawn5", instance_id())+"::OnMyMobDead");
+	if (.@num_mobs > 0)
+		monster "1@mist",0,0,"Little Fatum",2136,.@num_mobs,instance_npcname("#Mist Mobs Respawn5", instance_id())+"::OnMyMobDead";
+	end;
+}
+
+1@mist,1,6,0	script	#Fragments of Memory	844,{
+	end;
+OnInstanceInit:
+	disablenpc instance_npcname("#Fragments of Memory", instance_id());
+	monster "1@mist",0,0,"Guardian's Fragments of Memory",2138,15;
+	end;
+}
+
+// Warp Portals
+//============================================================
+bif_fild01,38,374,0	script	Mysterious Flower#ep14_1	844,{
+	mes "It's a giant flower with mysterious energy.";
+	if (countitem(12561)) {
+		mes "It's reacting to the Mysterious Flower Seeds you have with you.";
+		next;
+		switch(select("Observe the reaction.:Stop the reaction.")) {
+		case 1:
+			mes "The flower started to shake violently";
+			mes "and swing forward as if trying to send the seeds as far away as possible!!!";
+			close2;
+			delitem 12561,1; //Mysterious_Seed
+			warp "bif_fild02",160,230;
+			end;
+		case 2:
+			mes "As you hold onto the Mysterious Flower Seeds tightly,";
+			mes "the flower shook violently and then became calm again.";
+			close;
+		}
+	}
+	mes "It looks like it has some special use, but you're not sure what.";
+	close;
+}
+
+1@mist,104,23,0	warp	#to_bif01	1,1,bif_fild01,160,352
+
+1@mist,109,70,0	script	a1_a2	45,1,1,{
+	end;
+OnTouch:
+	if (checkquest(7211,PLAYTIME) == -1)
+		setquest 7211;
+	warp "1@mist",116,40;
+	end;
+}
+
+1@mist,113,40,0	warp	a2_a7	1,1,1@mist,90,81
+1@mist,93,81,0	warp	a7_a14	1,1,1@mist,108,152
+1@mist,111,154,0	warp	a14_a24	1,1,1@mist,236,108
+1@mist,236,110,0	warp	a24_a1	1,1,1@mist,106,69
+1@mist,161,67,0	warp	a18-1_a22	1,1,1@mist,159,85
+1@mist,180,116,0	warp	a23_a18-1	1,1,1@mist,164,66
+1@mist,180,63,0	warp	a18-2_a9	1,1,1@mist,141,90
+1@mist,116,84,0	warp	a8_a26	1,1,1@mist,222,133
+1@mist,220,133,0	warp	a26_a27-1	1,1,1@mist,200,64
+1@mist,197,64,0	warp	a27-1_a23	1,1,1@mist,177,116
+1@mist,146,194,0	warp	af1-2_a27-2	1,1,1@mist,225,96
+1@mist,133,195,0	warp	af1-1_af2-1	1,1,1@mist,202,110
+1@mist,202,107,0	warp	af2-1_af1-1	1,1,1@mist,134,189
+1@mist,217,110,0	warp	af2-2_a20-1	1,1,1@mist,240,56
+1@mist,240,54,0	warp	a20-1_af2-2	1,1,1@mist,214,110
+1@mist,234,67,0	warp	a20-2_a21	1,1,1@mist,239,80
+1@mist,242,77,0	warp	a21_a15-1	1,1,1@mist,153,137
+1@mist,156,139,0	warp	a15-1_a3	1,1,1@mist,123,55
+1@mist,124,51,0	warp	a3_a20-1	1,1,1@mist,240,56
+1@mist,48,41,0	warp	a4-1_a17	1,1,1@mist,174,165
+1@mist,171,165,0	warp	a17_a16	1,1,1@mist,168,143
+1@mist,169,141,0	warp	a16_a10	1,1,1@mist,101,107
+1@mist,99,107,0	warp	a10_a4-2	1,1,1@mist,57,38
+1@mist,65,113,0	warp	a11_a28	1,1,1@mist,218,151
+1@mist,221,151,0	warp	a28_a13	1,1,1@mist,117,126
+1@mist,114,126,0	warp	a13_a5	1,1,1@mist,36,62
+1@mist,61,88,0	warp	a6_a19	1,1,1@mist,189,139
+1@mist,186,140,0	warp	a19_a12	1,1,1@mist,98,126
+1@mist,101,126,0	warp	a12_a29-1	1,1,1@mist,238,151
+1@mist,235,152,0	warp	a29-1_af1-2	1,1,1@mist,144,194
+1@mist,254,151,0	warp	a29-2E_b1	1,1,1@mist,271,164
+1@mist,275,211,0	warp	b1_b13	1,1,1@mist,277,112
+1@mist,301,141,0	warp	b14_b24	1,1,1@mist,99,232
+1@mist,99,230,0	warp	b24_b25	1,1,1@mist,103,255
+1@mist,102,253,0	warp	b25_b4-1	1,1,1@mist,215,177
+1@mist,212,177,0	warp	b4-1_b1	1,1,1@mist,276,208
+1@mist,289,167,0	warp	b2_b19	1,1,1@mist,152,219
+1@mist,149,219,0	warp	b19_b20	1,1,1@mist,119,227
+1@mist,115,227,0	warp	b20_b23	1,1,1@mist,230,353
+1@mist,233,353,0	warp	b23_b7	1,1,1@mist,289,225
+1@mist,76,273,0	warp	bf1-2_b7	1,1,1@mist,289,225
+1@mist,61,282,0	warp	bf1-1_bf2-1	1,1,1@mist,256,220
+1@mist,252,220,0	warp	bf2-1_bf1-1	1,1,1@mist,65,282
+1@mist,267,213,0	warp	bf2-2_b28	1,1,1@mist,214,268
+1@mist,212,265,0	warp	b28_b12	1,1,1@mist,288,266
+1@mist,285,266,0	warp	b12_b21	1,1,1@mist,143,234
+1@mist,143,231,0	warp	b21_b29	1,1,1@mist,222,281
+1@mist,223,279,0	warp	b29_b31	1,1,1@mist,158,317
+1@mist,134,287,0	warp	b30_b3	1,1,1@mist,293,195
+1@mist,295,197,0	warp	b3_b10	1,1,1@mist,239,253
+1@mist,236,253,0	warp	b10_b12	1,1,1@mist,288,266
+1@mist,111,203,0	warp	b16_b34	1,1,1@mist,202,333
+1@mist,199,333,0	warp	b34_b27-1	1,1,1@mist,203,251
+1@mist,206,249,0	warp	b27-1_b22	1,1,1@mist,168,239
+1@mist,165,239,0	warp	b22_b15	1,1,1@mist,89,173
+1@mist,177,265,0	warp	b27-2_a14	1,1,1@mist,108,152
+1@mist,166,314,0	warp	bN-1_b27-3	1,1,1@mist,206,297
+1@mist,197,299,0	warp	bN-2_b17	1,1,1@mist,167,200
+1@mist,165,200,0	warp	b17_bN-2	1,1,1@mist,193,299
+1@mist,86,173,0	warp	b15_b32	1,1,1@mist,218,313
+1@mist,215,313,0	warp	b32_b28	1,1,1@mist,214,268
+1@mist,230,324,0	warp	b33_b6-1	1,1,1@mist,221,233
+1@mist,230,230,0	warp	b6-2_b11	1,1,1@mist,263,261
+1@mist,263,258,0	warp	b11_b9	1,1,1@mist,272,246
+1@mist,269,246,0	warp	b9_b26	1,1,1@mist,143,265
+1@mist,140,265,0	warp	b26_b5	1,1,1@mist,209,200
+1@mist,195,206,0	warp	b18_b35	1,1,1@mist,169,341
+1@mist,166,341,0	warp	b35_b36	1,1,1@mist,198,354
+1@mist,201,354,0	warp	b36_b37-1	1,1,1@mist,83,224
+1@mist,87,224,0	warp	b37-1_b35	1,1,1@mist,169,341
+1@mist,84,273,0	warp	b37-2_c1	1,1,1@mist,98,287
+1@mist,111,298,0	warp	c2_c3	1,1,1@mist,82,307
+1@mist,79,307,0	warp	c3_c7	1,1,1@mist,284,89
+1@mist,281,89,0	warp	c7_c12	1,1,1@mist,264,291
+1@mist,261,291,0	warp	c12_c2	1,1,1@mist,115,298
+1@mist,326,275,0	warp	c13-1_b13	1,1,1@mist,277,112
+1@mist,294,293,0	warp	c13-2_c5	1,1,1@mist,78,330
+1@mist,81,330,0	warp	c5_c17	1,1,1@mist,308,330
+1@mist,308,327,0	warp	c17_c10	1,1,1@mist,309,165
+1@mist,306,165,0	warp	c10_c13-2	1,1,1@mist,298,293
+1@mist,46,316,0	warp	c4_c6	1,1,1@mist,113,328
+1@mist,95,328,0	warp	c6_c9	1,1,1@mist,342,157
+1@mist,339,157,0	warp	c9_c16	1,1,1@mist,343,328
+1@mist,343,325,0	warp	c16_c8-2	1,1,1@mist,346,120
+1@mist,344,123,0	warp	c8-2_c19	1,1,1@mist,277,343
+1@mist,256,313,0	warp	c18_c15	1,1,1@mist,343,307
+1@mist,342,305,0	warp	c15_cKEY	1,1,1@mist,332,121
+1@mist,335,120,0	warp	cKEY_c18	1,1,1@mist,259,313
+1@mist,317,89,0	warp	c8-1_c14	1,1,1@mist,339,284
+1@mist,339,281,0	warp	c14_c11-1	1,1,1@mist,332,172
+1@mist,329,171,0	warp	c11-1_c8-2	1,1,1@mist,346,120
+1@mist,301,237,0	warp	b8_b2	1,1,1@mist,289,170
+
+// Disable Garden Tree warps.
+// Custom, but saves processing and lines.
+1@mist,1,1,0	script	#mist_warp_init	844,{
+	end;
+OnInstanceInit:
+	disablenpc instance_npcname("a25_a18-1", instance_id());
+	disablenpc instance_npcname("a27-2_af1-2", instance_id());
+	disablenpc instance_npcname("a15-2_a4-1", instance_id());
+	disablenpc instance_npcname("a4-2_a11", instance_id());
+	disablenpc instance_npcname("b4-2_b2", instance_id());
+	disablenpc instance_npcname("b7_bf1-2", instance_id());
+	disablenpc instance_npcname("b31_b16", instance_id());
+	disablenpc instance_npcname("b27-3_bN-1", instance_id());
+	disablenpc instance_npcname("b6-1_b33", instance_id());
+	disablenpc instance_npcname("b5_b14", instance_id());
+	disablenpc instance_npcname("c1_c13-1", instance_id());
+	disablenpc instance_npcname("c13-3_c4", instance_id());
+	disablenpc instance_npcname("c19_c4", instance_id());
+	disablenpc instance_npcname("#to_bif02", instance_id());
+	disablenpc instance_npcname("#mist_warp_init", instance_id());
+	end;
+}
+1@mist,247,123,0	warp	a25_a18-1	1,1,1@mist,164,66	//Tom
+1@mist,225,98,0	warp	a27-2_af1-2	1,1,1@mist,144,194	//Tomba
+1@mist,159,184,0	warp	a15-2_a4-1	1,1,1@mist,49,37	//Remi
+1@mist,61,39,0	warp	a4-2_a11	1,1,1@mist,68,113	//Rem
+1@mist,230,179,0	warp	b4-2_b2	1,1,1@mist,289,170	//Ron
+1@mist,285,225,0	warp	b7_bf1-2	1,1,1@mist,72,274	//Rover
+1@mist,161,316,0	warp	b31_b16	1,1,1@mist,108,203	//Mona
+1@mist,204,299,0	warp	b27-3_bN-1	1,1,1@mist,169,314	//Namon
+1@mist,221,236,0	warp	b6-1_b33	1,1,1@mist,233,324	//Neoron
+1@mist,206,200,0	warp	b5_b14	1,1,1@mist,298,142	//Spyder
+1@mist,95,287,0	warp	c1_c13-1	1,1,1@mist,323,276	//Tito
+1@mist,324,325,0	warp	c13-3_c4	1,1,1@mist,49,316	//Pumba
+1@mist,280,344,0	warp	c19_c4	1,1,1@mist,49,316	//Tete
+1@mist,345,186,0	warp	#to_bif02	1,1,bif_fild02,151,121	//The Gardeners' Tree

+ 71 - 675
npc/re/merchants/enchan_mora.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Euphy
 //===== Current Version: ===================================== 
-//= 1.0
+//= 1.1
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -12,6 +12,7 @@
 //= Mora coins.
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Euphy]
+//= 1.1 Optimized. [Euphy]
 //============================================================ 
 
 // Arch Bishop Enchants :: coin_arc
@@ -217,70 +218,15 @@ mora,96,74,5	script	Master of Relics#pa0829	495,{
 		switch(.@enchant_type) {
 		case 1:
 			set .@i, rand(1,1487);
-			     if (.@i <= 16) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
-			else if (.@i <= 32) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
-			else if (.@i <= 48) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
-			else if (.@i <= 64) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
-			else if (.@i <= 80) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
-			else if (.@i <= 96) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
-			else if (.@i <= 112) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
-			else if (.@i <= 128) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
-			else if (.@i <= 144) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
-			else if (.@i <= 160) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
-			else if (.@i <= 176) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
-			else if (.@i <= 192) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
-			else if (.@i <= 208) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
-			else if (.@i <= 224) setarray .@enchants[2],4740,4799; //Vitality1 HP500
-			else if (.@i <= 240) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
-			else if (.@i <= 256) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
-			else if (.@i <= 272) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
-			else if (.@i <= 288) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
-			else if (.@i <= 304) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
-			else if (.@i <= 320) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
-			else if (.@i <= 336) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
-			else if (.@i <= 352) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
-			else if (.@i <= 368) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
-			else if (.@i <= 384) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
-			else if (.@i <= 400) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
-			else if (.@i <= 416) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
-			else if (.@i <= 432) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
-			else if (.@i <= 448) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
-			else if (.@i <= 464) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
-			else if (.@i <= 480) setarray .@enchants[2],4740,4799; //Vitality1 HP500
-			else if (.@i <= 496) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
-			else if (.@i <= 512) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
-			else if (.@i <= 528) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
-			else if (.@i <= 544) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
-			else if (.@i <= 560) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
-			else if (.@i <= 576) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
-			else if (.@i <= 592) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
-			else if (.@i <= 608) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
-			else if (.@i <= 624) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
-			else if (.@i <= 640) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
-			else if (.@i <= 656) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
-			else if (.@i <= 672) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
-			else if (.@i <= 688) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
-			else if (.@i <= 704) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
-			else if (.@i <= 720) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
-			else if (.@i <= 736) setarray .@enchants[2],4740,4799; //Vitality1 HP500
-			else if (.@i <= 752) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
-			else if (.@i <= 768) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
-			else if (.@i <= 784) setarray .@enchants[2],4710,.@sp; //Inteligence2 [sp]
-			else if (.@i <= 800) setarray .@enchants[2],4710,4799; //Inteligence2 HP500
-			else if (.@i <= 816) setarray .@enchants[2],4710,4766; //Inteligence2 Atk2
-			else if (.@i <= 832) setarray .@enchants[2],4710,4788; //Inteligence2 Mdef6
-			else if (.@i <= 848) setarray .@enchants[2],4720,.@sp; //Dexterity1 [sp]
-			else if (.@i <= 864) setarray .@enchants[2],4720,4799; //Dexterity1 HP500
-			else if (.@i <= 880) setarray .@enchants[2],4720,4766; //Dexterity1 Atk2
-			else if (.@i <= 896) setarray .@enchants[2],4720,4788; //Dexterity1 Mdef6
-			else if (.@i <= 912) setarray .@enchants[2],4721,.@sp; //Dexterity2 [sp]
-			else if (.@i <= 928) setarray .@enchants[2],4721,4799; //Dexterity2 HP500
-			else if (.@i <= 944) setarray .@enchants[2],4721,4766; //Dexterity2 Atk2
-			else if (.@i <= 960) setarray .@enchants[2],4721,4788; //Dexterity2 Mdef6
-			else if (.@i <= 976) setarray .@enchants[2],4740,.@sp; //Vitality1 [sp]
-			else if (.@i <= 992) setarray .@enchants[2],4740,4799; //Vitality1 HP500
-			else if (.@i <= 1008) setarray .@enchants[2],4740,4766; //Vitality1 Atk2
-			else if (.@i <= 1024) setarray .@enchants[2],4740,4788; //Vitality1 Mdef6
+			if (.@i <= 1024) {
+				// Basic combinations
+				// (raw: .@i increments by 16, 4 repeats)
+				setarray .@enchant_slot2[0],4710,4720,4721,4240; //Inteligence2,Dexterity1,Dexterity2,Vitality1
+				setarray .@enchant_slot3[0],.@sp,4799,4766,4788; //[sp],HP500,Atk2,Mdef6
+				setarray .@enchants[2],
+					.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+					.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+			}
 			else if (.@i <= 1040) setarray .@enchants[2],.@sp,.@sp; //[sp] [sp]
 			else if (.@i <= 1487) {
 				mes "[Relice]";
@@ -290,70 +236,17 @@ mora,96,74,5	script	Master of Relics#pa0829	495,{
 			break;
 		case 2:
 			set .@i, rand(1,1487);
-			     if (.@i <= 16) setarray .@enchants[1],4710,4711,4764; //Inteligence1 Inteligence2 Critical5
-			else if (.@i <= 32) setarray .@enchants[1],4710,4711,4799; //Inteligence1 Inteligence2 HP500
-			else if (.@i <= 48) setarray .@enchants[1],4710,4711,4766; //Inteligence1 Inteligence2 Atk2
-			else if (.@i <= 64) setarray .@enchants[1],4710,4711,4788; //Inteligence1 Inteligence2 Mdef6
-			else if (.@i <= 80) setarray .@enchants[1],4710,4720,4764; //Inteligence1 Dexterity1 Critical5
-			else if (.@i <= 96) setarray .@enchants[1],4710,4720,4799; //Inteligence1 Dexterity1 HP500
-			else if (.@i <= 112) setarray .@enchants[1],4710,4720,4766; //Inteligence1 Dexterity1 Atk2
-			else if (.@i <= 128) setarray .@enchants[1],4710,4720,4788; //Inteligence1 Dexterity1 Mdef6
-			else if (.@i <= 144) setarray .@enchants[1],4710,4721,4764; //Inteligence1 Dexterity2 Critical5
-			else if (.@i <= 160) setarray .@enchants[1],4710,4721,4799; //Inteligence1 Dexterity2 HP500
-			else if (.@i <= 176) setarray .@enchants[1],4710,4721,4766; //Inteligence1 Dexterity2 Atk2
-			else if (.@i <= 192) setarray .@enchants[1],4710,4721,4788; //Inteligence1 Dexterity2 Mdef6
-			else if (.@i <= 208) setarray .@enchants[1],4710,4740,4764; //Inteligence1 Vitality1 Critical5
-			else if (.@i <= 224) setarray .@enchants[1],4710,4740,4799; //Inteligence1 Vitality1 HP500
-			else if (.@i <= 240) setarray .@enchants[1],4710,4740,4766; //Inteligence1 Vitality1 Atk2
-			else if (.@i <= 256) setarray .@enchants[1],4710,4740,4788; //Inteligence1 Vitality1 Mdef6
-			else if (.@i <= 272) setarray .@enchants[1],4711,4711,4764; //Inteligence2 Inteligence2 Critical5
-			else if (.@i <= 288) setarray .@enchants[1],4711,4711,4799; //Inteligence2 Inteligence2 HP500
-			else if (.@i <= 304) setarray .@enchants[1],4711,4711,4766; //Inteligence2 Inteligence2 Atk2
-			else if (.@i <= 320) setarray .@enchants[1],4711,4711,4788; //Inteligence2 Inteligence2 Mdef6
-			else if (.@i <= 336) setarray .@enchants[1],4711,4720,4764; //Inteligence2 Dexterity1 Critical5
-			else if (.@i <= 352) setarray .@enchants[1],4711,4720,4799; //Inteligence2 Dexterity1 HP500
-			else if (.@i <= 368) setarray .@enchants[1],4711,4720,4766; //Inteligence2 Dexterity1 Atk2
-			else if (.@i <= 384) setarray .@enchants[1],4711,4720,4788; //Inteligence2 Dexterity1 Mdef6
-			else if (.@i <= 400) setarray .@enchants[1],4711,4721,4764; //Inteligence2 Dexterity2 Critical5
-			else if (.@i <= 416) setarray .@enchants[1],4711,4721,4799; //Inteligence2 Dexterity2 HP500
-			else if (.@i <= 432) setarray .@enchants[1],4711,4721,4766; //Inteligence2 Dexterity2 Atk2
-			else if (.@i <= 448) setarray .@enchants[1],4711,4721,4788; //Inteligence2 Dexterity2 Mdef6
-			else if (.@i <= 464) setarray .@enchants[1],4711,4740,4764; //Inteligence2 Vitality1 Critical5
-			else if (.@i <= 480) setarray .@enchants[1],4711,4740,4799; //Inteligence2 Vitality1 HP500
-			else if (.@i <= 496) setarray .@enchants[1],4711,4740,4766; //Inteligence2 Vitality1 Atk2
-			else if (.@i <= 512) setarray .@enchants[1],4711,4740,4788; //Inteligence2 Vitality1 Mdef6
-			else if (.@i <= 528) setarray .@enchants[1],4720,4711,4764; //Dexterity1 Inteligence2 Critical5
-			else if (.@i <= 544) setarray .@enchants[1],4720,4711,4799; //Dexterity1 Inteligence2 HP500
-			else if (.@i <= 560) setarray .@enchants[1],4720,4711,4766; //Dexterity1 Inteligence2 Atk2
-			else if (.@i <= 576) setarray .@enchants[1],4720,4711,4788; //Dexterity1 Inteligence2 Mdef6
-			else if (.@i <= 592) setarray .@enchants[1],4720,4720,4764; //Dexterity1 Dexterity1 Critical5
-			else if (.@i <= 608) setarray .@enchants[1],4720,4720,4799; //Dexterity1 Dexterity1 HP500
-			else if (.@i <= 624) setarray .@enchants[1],4720,4720,4766; //Dexterity1 Dexterity1 Atk2
-			else if (.@i <= 640) setarray .@enchants[1],4720,4720,4788; //Dexterity1 Dexterity1 Mdef6
-			else if (.@i <= 656) setarray .@enchants[1],4720,4721,4764; //Dexterity1 Dexterity2 Critical5
-			else if (.@i <= 672) setarray .@enchants[1],4720,4721,4799; //Dexterity1 Dexterity2 HP500
-			else if (.@i <= 688) setarray .@enchants[1],4720,4721,4766; //Dexterity1 Dexterity2 Atk2
-			else if (.@i <= 704) setarray .@enchants[1],4720,4721,4788; //Dexterity1 Dexterity2 Mdef6
-			else if (.@i <= 720) setarray .@enchants[1],4720,4740,4764; //Dexterity1 Vitality1 Critical5
-			else if (.@i <= 736) setarray .@enchants[1],4720,4740,4799; //Dexterity1 Vitality1 HP500
-			else if (.@i <= 752) setarray .@enchants[1],4720,4740,4766; //Dexterity1 Vitality1 Atk2
-			else if (.@i <= 768) setarray .@enchants[1],4720,4740,4788; //Dexterity1 Vitality1 Mdef6
-			else if (.@i <= 784) setarray .@enchants[1],4721,4711,4764; //Dexterity2 Inteligence2 Critical5
-			else if (.@i <= 800) setarray .@enchants[1],4721,4711,4799; //Dexterity2 Inteligence2 HP500
-			else if (.@i <= 816) setarray .@enchants[1],4721,4711,4766; //Dexterity2 Inteligence2 Atk2
-			else if (.@i <= 832) setarray .@enchants[1],4721,4711,4788; //Dexterity2 Inteligence2 Mdef6
-			else if (.@i <= 848) setarray .@enchants[1],4721,4720,4764; //Dexterity2 Dexterity1 Critical5
-			else if (.@i <= 864) setarray .@enchants[1],4721,4720,4799; //Dexterity2 Dexterity1 HP500
-			else if (.@i <= 880) setarray .@enchants[1],4721,4720,4766; //Dexterity2 Dexterity1 Atk2
-			else if (.@i <= 896) setarray .@enchants[1],4721,4720,4788; //Dexterity2 Dexterity1 Mdef6
-			else if (.@i <= 912) setarray .@enchants[1],4721,4721,4764; //Dexterity2 Dexterity2 Critical5
-			else if (.@i <= 928) setarray .@enchants[1],4721,4721,4799; //Dexterity2 Dexterity2 HP500
-			else if (.@i <= 944) setarray .@enchants[1],4721,4721,4766; //Dexterity2 Dexterity2 Atk2
-			else if (.@i <= 960) setarray .@enchants[1],4721,4721,4788; //Dexterity2 Dexterity2 Mdef6
-			else if (.@i <= 976) setarray .@enchants[1],4721,4740,4764; //Dexterity2 Vitality1 Critical5
-			else if (.@i <= 992) setarray .@enchants[1],4721,4740,4799; //Dexterity2 Vitality1 HP500
-			else if (.@i <= 1008) setarray .@enchants[1],4721,4740,4766; //Dexterity2 Vitality1 Atk2
-			else if (.@i <= 1024) setarray .@enchants[1],4721,4740,4788; //Dexterity2 Vitality1 Mdef6
+			if (.@i <= 1024) {
+				// Basic combinations
+				// (raw: .@i increments by 16)
+				setarray .@enchant_slot1[0],4710,4711,4720,4721; //Inteligence1,Inteligence2,Dexterity1,Dexterity2
+				setarray .@enchant_slot2[0],4711,4720,4721,4740; //Inteligence2,Dexterity1,Dexterity2,Vitality1
+				setarray .@enchant_slot3[0],4764,4799,4766,4788; //Critical5,HP500,Atk2,Mdef6
+				setarray .@enchants[1],
+					.@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+					.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+					.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+			}
 			else if (.@i <= 1026) setarray .@enchants[1],4761,4761,4761; //Matk2 Matk2 Matk2
 			else if (.@i <= 1028) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
 			else if (.@i <= 1030) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
@@ -370,70 +263,15 @@ mora,96,74,5	script	Master of Relics#pa0829	495,{
 			break;
 		case 3:
 			set .@i, rand(1,2852);
-			     if (.@i <= 31) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
-			else if (.@i <= 62) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-			else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 124) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-			else if (.@i <= 155) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
-			else if (.@i <= 186) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
-			else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 248) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
-			else if (.@i <= 279) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
-			else if (.@i <= 310) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
-			else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 372) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
-			else if (.@i <= 403) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
-			else if (.@i <= 434) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-			else if (.@i <= 465) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-			else if (.@i <= 496) setarray .@enchants[2],4801,4760; //SP100 Matk1
-			else if (.@i <= 527) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
-			else if (.@i <= 558) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-			else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 620) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-			else if (.@i <= 651) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
-			else if (.@i <= 682) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
-			else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 744) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
-			else if (.@i <= 775) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
-			else if (.@i <= 806) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
-			else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 868) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
-			else if (.@i <= 899) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
-			else if (.@i <= 930) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-			else if (.@i <= 961) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-			else if (.@i <= 992) setarray .@enchants[2],4801,4760; //SP100 Matk1
-			else if (.@i <= 1023) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
-			else if (.@i <= 1054) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-			else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 1116) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-			else if (.@i <= 1147) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
-			else if (.@i <= 1178) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
-			else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 1240) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
-			else if (.@i <= 1271) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
-			else if (.@i <= 1302) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
-			else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 1364) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
-			else if (.@i <= 1395) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
-			else if (.@i <= 1426) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-			else if (.@i <= 1457) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-			else if (.@i <= 1488) setarray .@enchants[2],4801,4760; //SP100 Matk1
-			else if (.@i <= 1519) setarray .@enchants[2],4720,4710; //Dexterity1 Inteligence1
-			else if (.@i <= 1550) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-			else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 1612) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-			else if (.@i <= 1643) setarray .@enchants[2],4740,4710; //Vitality1 Inteligence1
-			else if (.@i <= 1674) setarray .@enchants[2],4740,4711; //Vitality1 Inteligence2
-			else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 1736) setarray .@enchants[2],4740,4760; //Vitality1 Matk1
-			else if (.@i <= 1767) setarray .@enchants[2],4741,4710; //Vitality2 Inteligence1
-			else if (.@i <= 1798) setarray .@enchants[2],4741,4711; //Vitality2 Inteligence2
-			else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 1860) setarray .@enchants[2],4741,4760; //Vitality2 Matk1
-			else if (.@i <= 1891) setarray .@enchants[2],4801,4710; //SP100 Inteligence1
-			else if (.@i <= 1922) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-			else if (.@i <= 1953) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-			else if (.@i <= 1984) setarray .@enchants[2],4801,4760; //SP100 Matk1
+			if (.@i <= 1984) {
+				// Basic combinations
+				// (raw: .@i increments by 31, 4 repeats)
+				setarray .@enchant_slot2[0],4720,4740,4741,4801; //Dexterity1,Vitality1,Vitality2,SP100
+				setarray .@enchant_slot3[0],4710,4711,4721,4760; //Inteligence1,Inteligence2,Dexterity2,Matk1
+				setarray .@enchants[2],
+					.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+					.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+			}
 			else if (.@i <= 1986) setarray .@enchants[2],4761,4761; //Matk2 Matk2
 			else if (.@i <= 1988) setarray .@enchants[2],4761,4723; //Matk2 Dexterity4
 			else if (.@i <= 1990) setarray .@enchants[2],4761,4714; //Matk2 Inteligence5
@@ -448,70 +286,15 @@ mora,96,74,5	script	Master of Relics#pa0829	495,{
 			break;
 		case 4:
 			set .@i, rand(1,2852);
-			     if (.@i <= 31) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
-			else if (.@i <= 62) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
-			else if (.@i <= 93) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 124) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
-			else if (.@i <= 155) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
-			else if (.@i <= 186) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
-			else if (.@i <= 217) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 248) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
-			else if (.@i <= 279) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
-			else if (.@i <= 310) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
-			else if (.@i <= 341) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 372) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
-			else if (.@i <= 403) setarray .@enchants[2],4701,4700; //Strength2 Strength1
-			else if (.@i <= 434) setarray .@enchants[2],4701,4701; //Strength2 Strength2
-			else if (.@i <= 465) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
-			else if (.@i <= 496) setarray .@enchants[2],4701,4767; //Strength2 Atk3
-			else if (.@i <= 527) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
-			else if (.@i <= 558) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
-			else if (.@i <= 589) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 620) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
-			else if (.@i <= 651) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
-			else if (.@i <= 682) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
-			else if (.@i <= 713) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 744) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
-			else if (.@i <= 775) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
-			else if (.@i <= 806) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
-			else if (.@i <= 837) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 868) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
-			else if (.@i <= 899) setarray .@enchants[2],4701,4700; //Strength2 Strength1
-			else if (.@i <= 930) setarray .@enchants[2],4701,4701; //Strength2 Strength2
-			else if (.@i <= 961) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
-			else if (.@i <= 992) setarray .@enchants[2],4701,4767; //Strength2 Atk3
-			else if (.@i <= 1023) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
-			else if (.@i <= 1054) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
-			else if (.@i <= 1085) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 1116) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
-			else if (.@i <= 1147) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
-			else if (.@i <= 1178) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
-			else if (.@i <= 1209) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 1240) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
-			else if (.@i <= 1271) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
-			else if (.@i <= 1302) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
-			else if (.@i <= 1333) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 1364) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
-			else if (.@i <= 1395) setarray .@enchants[2],4701,4700; //Strength2 Strength1
-			else if (.@i <= 1426) setarray .@enchants[2],4701,4701; //Strength2 Strength2
-			else if (.@i <= 1457) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
-			else if (.@i <= 1488) setarray .@enchants[2],4701,4767; //Strength2 Atk3
-			else if (.@i <= 1519) setarray .@enchants[2],4720,4700; //Dexterity1 Strength1
-			else if (.@i <= 1550) setarray .@enchants[2],4720,4701; //Dexterity1 Strength2
-			else if (.@i <= 1581) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-			else if (.@i <= 1612) setarray .@enchants[2],4720,4767; //Dexterity1 Atk3
-			else if (.@i <= 1643) setarray .@enchants[2],4740,4700; //Vitality1 Strength1
-			else if (.@i <= 1674) setarray .@enchants[2],4740,4701; //Vitality1 Strength2
-			else if (.@i <= 1705) setarray .@enchants[2],4740,4721; //Vitality1 Dexterity2
-			else if (.@i <= 1736) setarray .@enchants[2],4740,4767; //Vitality1 Atk3
-			else if (.@i <= 1767) setarray .@enchants[2],4741,4700; //Vitality2 Strength1
-			else if (.@i <= 1798) setarray .@enchants[2],4741,4701; //Vitality2 Strength2
-			else if (.@i <= 1829) setarray .@enchants[2],4741,4721; //Vitality2 Dexterity2
-			else if (.@i <= 1860) setarray .@enchants[2],4741,4767; //Vitality2 Atk3
-			else if (.@i <= 1891) setarray .@enchants[2],4701,4700; //Strength2 Strength1
-			else if (.@i <= 1922) setarray .@enchants[2],4701,4701; //Strength2 Strength2
-			else if (.@i <= 1953) setarray .@enchants[2],4701,4721; //Strength2 Dexterity2
-			else if (.@i <= 1984) setarray .@enchants[2],4701,4767; //Strength2 Atk3
+			if (.@i <= 1984) {
+				// Basic combinations
+				// (raw: .@i increments by 31, 4 repeats)
+				setarray .@enchant_slot2[0],4720,4740,4741,4701; //Dexterity1,Vitality1,Vitality2,Strength2
+				setarray .@enchant_slot3[0],4700,4701,4721,4767; //Strength1,Strength2,Dexterity2,Atk3
+				setarray .@enchants[2],
+					.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+					.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+			}
 			else if (.@i <= 1986) setarray .@enchants[2],4767,4767; //Atk3 Atk3
 			else if (.@i <= 1988) setarray .@enchants[2],4767,4723; //Atk3 Dexterity4
 			else if (.@i <= 1990) setarray .@enchants[2],4767,4704; //Atk3 Strength5
@@ -684,70 +467,15 @@ mora,99,93,5	script	Artifact Crafter#pa0829	495,{
 	switch(.@enchant_type) {
 	case 1:
 		set .@i, rand(1,2847);
-		     if (.@i <= 31) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
-		else if (.@i <= 62) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-		else if (.@i <= 93) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-		else if (.@i <= 124) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-		else if (.@i <= 155) setarray .@enchants[2],4796,4786; //HP200 Mdef2
-		else if (.@i <= 186) setarray .@enchants[2],4796,4760; //HP200 Matk1
-		else if (.@i <= 217) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
-		else if (.@i <= 248) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
-		else if (.@i <= 279) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
-		else if (.@i <= 310) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
-		else if (.@i <= 341) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
-		else if (.@i <= 372) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
-		else if (.@i <= 403) setarray .@enchants[2],4801,4786; //SP100 Mdef2
-		else if (.@i <= 434) setarray .@enchants[2],4801,4760; //SP100 Matk1
-		else if (.@i <= 465) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-		else if (.@i <= 496) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-		else if (.@i <= 527) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
-		else if (.@i <= 558) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-		else if (.@i <= 589) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-		else if (.@i <= 620) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-		else if (.@i <= 651) setarray .@enchants[2],4796,4786; //HP200 Mdef2
-		else if (.@i <= 682) setarray .@enchants[2],4796,4760; //HP200 Matk1
-		else if (.@i <= 713) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
-		else if (.@i <= 744) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
-		else if (.@i <= 775) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
-		else if (.@i <= 806) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
-		else if (.@i <= 837) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
-		else if (.@i <= 868) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
-		else if (.@i <= 899) setarray .@enchants[2],4801,4786; //SP100 Mdef2
-		else if (.@i <= 930) setarray .@enchants[2],4801,4760; //SP100 Matk1
-		else if (.@i <= 961) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-		else if (.@i <= 992) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-		else if (.@i <= 1023) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
-		else if (.@i <= 1054) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-		else if (.@i <= 1085) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-		else if (.@i <= 1116) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-		else if (.@i <= 1147) setarray .@enchants[2],4796,4786; //HP200 Mdef2
-		else if (.@i <= 1178) setarray .@enchants[2],4796,4760; //HP200 Matk1
-		else if (.@i <= 1209) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
-		else if (.@i <= 1240) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
-		else if (.@i <= 1271) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
-		else if (.@i <= 1302) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
-		else if (.@i <= 1333) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
-		else if (.@i <= 1364) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
-		else if (.@i <= 1395) setarray .@enchants[2],4801,4786; //SP100 Mdef2
-		else if (.@i <= 1426) setarray .@enchants[2],4801,4760; //SP100 Matk1
-		else if (.@i <= 1457) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-		else if (.@i <= 1488) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
-		else if (.@i <= 1519) setarray .@enchants[2],4720,4786; //Dexterity1 Mdef2
-		else if (.@i <= 1550) setarray .@enchants[2],4720,4760; //Dexterity1 Matk1
-		else if (.@i <= 1581) setarray .@enchants[2],4720,4711; //Dexterity1 Inteligence2
-		else if (.@i <= 1612) setarray .@enchants[2],4720,4721; //Dexterity1 Dexterity2
-		else if (.@i <= 1643) setarray .@enchants[2],4796,4786; //HP200 Mdef2
-		else if (.@i <= 1674) setarray .@enchants[2],4796,4760; //HP200 Matk1
-		else if (.@i <= 1705) setarray .@enchants[2],4796,4711; //HP200 Inteligence2
-		else if (.@i <= 1736) setarray .@enchants[2],4796,4721; //HP200 Dexterity2
-		else if (.@i <= 1767) setarray .@enchants[2],4710,4786; //Inteligence1 Mdef2
-		else if (.@i <= 1798) setarray .@enchants[2],4710,4760; //Inteligence1 Matk1
-		else if (.@i <= 1829) setarray .@enchants[2],4710,4711; //Inteligence1 Inteligence2
-		else if (.@i <= 1860) setarray .@enchants[2],4710,4721; //Inteligence1 Dexterity2
-		else if (.@i <= 1891) setarray .@enchants[2],4801,4786; //SP100 Mdef2
-		else if (.@i <= 1922) setarray .@enchants[2],4801,4760; //SP100 Matk1
-		else if (.@i <= 1953) setarray .@enchants[2],4801,4711; //SP100 Inteligence2
-		else if (.@i <= 1984) setarray .@enchants[2],4801,4721; //SP100 Dexterity2
+		if (.@i <= 1984) {
+			// Basic combinations
+			// (raw: .@i increments by 31, 4 repeats)
+			setarray .@enchant_slot2[0],4720,4796,4710,4801; //Dexterity1,HP200,Inteligence1,SP100
+			setarray .@enchant_slot3[0],4786,4760,4711,4721; //Mdef2,Matk1,Inteligence2,Dexterity2
+			setarray .@enchants[2],
+				.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+				.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+		}
 		else if (.@i <= 1986) setarray .@enchants[2],4713,4761; //Inteligence4 Matk2
 		else if (.@i <= 1988) setarray .@enchants[2],4713,4713; //Inteligence4 Inteligence4
 		else if (.@i <= 1990) setarray .@enchants[2],4761,4761; //Matk2 Matk2
@@ -760,70 +488,17 @@ mora,99,93,5	script	Artifact Crafter#pa0829	495,{
 		break;
 	case 2:
 		set .@i, rand(1,2858);
-		     if (.@i <= 31) setarray .@enchants[1],4710,4720,4786; //Inteligence1 Dexterity1 Mdef2
-		else if (.@i <= 62) setarray .@enchants[1],4710,4720,4760; //Inteligence1 Dexterity1 Matk1
-		else if (.@i <= 93) setarray .@enchants[1],4710,4720,4711; //Inteligence1 Dexterity1 Inteligence2
-		else if (.@i <= 124) setarray .@enchants[1],4710,4720,4721; //Inteligence1 Dexterity1 Dexterity2
-		else if (.@i <= 155) setarray .@enchants[1],4710,4796,4786; //Inteligence1 HP200 Mdef2
-		else if (.@i <= 186) setarray .@enchants[1],4710,4796,4760; //Inteligence1 HP200 Matk1
-		else if (.@i <= 217) setarray .@enchants[1],4710,4796,4711; //Inteligence1 HP200 Inteligence2
-		else if (.@i <= 248) setarray .@enchants[1],4710,4796,4721; //Inteligence1 HP200 Dexterity2
-		else if (.@i <= 279) setarray .@enchants[1],4710,4710,4786; //Inteligence1 Inteligence1 Mdef2
-		else if (.@i <= 310) setarray .@enchants[1],4710,4710,4760; //Inteligence1 Inteligence1 Matk1
-		else if (.@i <= 341) setarray .@enchants[1],4710,4710,4711; //Inteligence1 Inteligence1 Inteligence2
-		else if (.@i <= 372) setarray .@enchants[1],4710,4710,4721; //Inteligence1 Inteligence1 Dexterity2
-		else if (.@i <= 403) setarray .@enchants[1],4710,4801,4786; //Inteligence1 SP100 Mdef2
-		else if (.@i <= 434) setarray .@enchants[1],4710,4801,4760; //Inteligence1 SP100 Matk1
-		else if (.@i <= 465) setarray .@enchants[1],4710,4801,4711; //Inteligence1 SP100 Inteligence2
-		else if (.@i <= 496) setarray .@enchants[1],4710,4801,4721; //Inteligence1 SP100 Dexterity2
-		else if (.@i <= 527) setarray .@enchants[1],4711,4720,4786; //Inteligence2 Dexterity1 Mdef2
-		else if (.@i <= 558) setarray .@enchants[1],4711,4720,4760; //Inteligence2 Dexterity1 Matk1
-		else if (.@i <= 589) setarray .@enchants[1],4711,4720,4711; //Inteligence2 Dexterity1 Inteligence2
-		else if (.@i <= 620) setarray .@enchants[1],4711,4720,4721; //Inteligence2 Dexterity1 Dexterity2
-		else if (.@i <= 651) setarray .@enchants[1],4711,4796,4786; //Inteligence2 HP200 Mdef2
-		else if (.@i <= 682) setarray .@enchants[1],4711,4796,4760; //Inteligence2 HP200 Matk1
-		else if (.@i <= 713) setarray .@enchants[1],4711,4796,4711; //Inteligence2 HP200 Inteligence2
-		else if (.@i <= 744) setarray .@enchants[1],4711,4796,4721; //Inteligence2 HP200 Dexterity2
-		else if (.@i <= 775) setarray .@enchants[1],4711,4710,4786; //Inteligence2 Inteligence1 Mdef2
-		else if (.@i <= 806) setarray .@enchants[1],4711,4710,4760; //Inteligence2 Inteligence1 Matk1
-		else if (.@i <= 837) setarray .@enchants[1],4711,4710,4711; //Inteligence2 Inteligence1 Inteligence2
-		else if (.@i <= 868) setarray .@enchants[1],4711,4710,4721; //Inteligence2 Inteligence1 Dexterity2
-		else if (.@i <= 899) setarray .@enchants[1],4711,4801,4786; //Inteligence2 SP100 Mdef2
-		else if (.@i <= 930) setarray .@enchants[1],4711,4801,4760; //Inteligence2 SP100 Matk1
-		else if (.@i <= 961) setarray .@enchants[1],4711,4801,4711; //Inteligence2 SP100 Inteligence2
-		else if (.@i <= 992) setarray .@enchants[1],4711,4801,4721; //Inteligence2 SP100 Dexterity2
-		else if (.@i <= 1023) setarray .@enchants[1],4720,4720,4786; //Dexterity1 Dexterity1 Mdef2
-		else if (.@i <= 1054) setarray .@enchants[1],4720,4720,4760; //Dexterity1 Dexterity1 Matk1
-		else if (.@i <= 1085) setarray .@enchants[1],4720,4720,4711; //Dexterity1 Dexterity1 Inteligence2
-		else if (.@i <= 1116) setarray .@enchants[1],4720,4720,4721; //Dexterity1 Dexterity1 Dexterity2
-		else if (.@i <= 1147) setarray .@enchants[1],4720,4796,4786; //Dexterity1 HP200 Mdef2
-		else if (.@i <= 1178) setarray .@enchants[1],4720,4796,4760; //Dexterity1 HP200 Matk1
-		else if (.@i <= 1209) setarray .@enchants[1],4720,4796,4711; //Dexterity1 HP200 Inteligence2
-		else if (.@i <= 1240) setarray .@enchants[1],4720,4796,4721; //Dexterity1 HP200 Dexterity2
-		else if (.@i <= 1271) setarray .@enchants[1],4720,4710,4786; //Dexterity1 Inteligence1 Mdef2
-		else if (.@i <= 1302) setarray .@enchants[1],4720,4710,4760; //Dexterity1 Inteligence1 Matk1
-		else if (.@i <= 1333) setarray .@enchants[1],4720,4710,4711; //Dexterity1 Inteligence1 Inteligence2
-		else if (.@i <= 1364) setarray .@enchants[1],4720,4710,4721; //Dexterity1 Inteligence1 Dexterity2
-		else if (.@i <= 1395) setarray .@enchants[1],4720,4801,4786; //Dexterity1 SP100 Mdef2
-		else if (.@i <= 1426) setarray .@enchants[1],4720,4801,4760; //Dexterity1 SP100 Matk1
-		else if (.@i <= 1457) setarray .@enchants[1],4720,4801,4711; //Dexterity1 SP100 Inteligence2
-		else if (.@i <= 1488) setarray .@enchants[1],4720,4801,4721; //Dexterity1 SP100 Dexterity2
-		else if (.@i <= 1519) setarray .@enchants[1],4721,4720,4786; //Dexterity2 Dexterity1 Mdef2
-		else if (.@i <= 1550) setarray .@enchants[1],4721,4720,4760; //Dexterity2 Dexterity1 Matk1
-		else if (.@i <= 1581) setarray .@enchants[1],4721,4720,4711; //Dexterity2 Dexterity1 Inteligence2
-		else if (.@i <= 1612) setarray .@enchants[1],4721,4720,4721; //Dexterity2 Dexterity1 Dexterity2
-		else if (.@i <= 1643) setarray .@enchants[1],4721,4796,4786; //Dexterity2 HP200 Mdef2
-		else if (.@i <= 1674) setarray .@enchants[1],4721,4796,4760; //Dexterity2 HP200 Matk1
-		else if (.@i <= 1705) setarray .@enchants[1],4721,4796,4711; //Dexterity2 HP200 Inteligence2
-		else if (.@i <= 1736) setarray .@enchants[1],4721,4796,4721; //Dexterity2 HP200 Dexterity2
-		else if (.@i <= 1767) setarray .@enchants[1],4721,4710,4786; //Dexterity2 Inteligence1 Mdef2
-		else if (.@i <= 1798) setarray .@enchants[1],4721,4710,4760; //Dexterity2 Inteligence1 Matk1
-		else if (.@i <= 1829) setarray .@enchants[1],4721,4710,4711; //Dexterity2 Inteligence1 Inteligence2
-		else if (.@i <= 1860) setarray .@enchants[1],4721,4710,4721; //Dexterity2 Inteligence1 Dexterity2
-		else if (.@i <= 1891) setarray .@enchants[1],4721,4801,4786; //Dexterity2 SP100 Mdef2
-		else if (.@i <= 1922) setarray .@enchants[1],4721,4801,4760; //Dexterity2 SP100 Matk1
-		else if (.@i <= 1953) setarray .@enchants[1],4721,4801,4711; //Dexterity2 SP100 Inteligence2
-		else if (.@i <= 1984) setarray .@enchants[1],4721,4801,4721; //Dexterity2 SP100 Dexterity2
+		if (.@i <= 1984) {
+			// Basic combinations
+			// (raw: .@i increments by 31)
+			setarray .@enchant_slot1[0],4710,4711,4720,4721; //Inteligence1,Inteligence2,Dexterity1,Dexterity2
+			setarray .@enchant_slot2[0],4720,4796,4710,4801; //Dexterity1,HP200,Inteligence1,SP100
+			setarray .@enchant_slot3[0],4786,4760,4711,4721; //Mdef2,Matk1,Inteligence2,Dexterity2
+			setarray .@enchants[1],
+				.@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+				.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+				.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+		}
 		else if (.@i <= 1986) setarray .@enchants[1],4712,4713,4761; //Inteligence3 Inteligence4 Matk2
 		else if (.@i <= 1988) setarray .@enchants[1],4712,4713,4713; //Inteligence3 Inteligence4 Inteligence4
 		else if (.@i <= 1990) setarray .@enchants[1],4712,4761,4761; //Inteligence3 Matk2 Matk2
@@ -1803,296 +1478,17 @@ function	script	F_Mora_Enchant	{
 	delitem 6380,5; //Mora_Coin
 	delitem getarg(0),1;
 	set .@i, rand(1,4568);
-	     if (.@i <= 11) setarray .@enchants[1],4766,4720,4700; //Atk2 Dexterity1 Strength1
-	else if (.@i <= 22) setarray .@enchants[1],4766,4720,4701; //Atk2 Dexterity1 Strength2
-	else if (.@i <= 33) setarray .@enchants[1],4766,4720,4730; //Atk2 Dexterity1 Agility1
-	else if (.@i <= 44) setarray .@enchants[1],4766,4720,4731; //Atk2 Dexterity1 Agility2
-	else if (.@i <= 55) setarray .@enchants[1],4766,4720,4740; //Atk2 Dexterity1 Vitality1
-	else if (.@i <= 66) setarray .@enchants[1],4766,4720,4741; //Atk2 Dexterity1 Vitality2
-	else if (.@i <= 77) setarray .@enchants[1],4766,4721,4700; //Atk2 Dexterity2 Strength1
-	else if (.@i <= 88) setarray .@enchants[1],4766,4721,4701; //Atk2 Dexterity2 Strength2
-	else if (.@i <= 99) setarray .@enchants[1],4766,4721,4730; //Atk2 Dexterity2 Agility1
-	else if (.@i <= 110) setarray .@enchants[1],4766,4721,4731; //Atk2 Dexterity2 Agility2
-	else if (.@i <= 121) setarray .@enchants[1],4766,4721,4740; //Atk2 Dexterity2 Vitality1
-	else if (.@i <= 132) setarray .@enchants[1],4766,4721,4741; //Atk2 Dexterity2 Vitality2
-	else if (.@i <= 143) setarray .@enchants[1],4766,4710,4700; //Atk2 Inteligence1 Strength1
-	else if (.@i <= 154) setarray .@enchants[1],4766,4710,4701; //Atk2 Inteligence1 Strength2
-	else if (.@i <= 165) setarray .@enchants[1],4766,4710,4730; //Atk2 Inteligence1 Agility1
-	else if (.@i <= 176) setarray .@enchants[1],4766,4710,4731; //Atk2 Inteligence1 Agility2
-	else if (.@i <= 187) setarray .@enchants[1],4766,4710,4740; //Atk2 Inteligence1 Vitality1
-	else if (.@i <= 198) setarray .@enchants[1],4766,4710,4741; //Atk2 Inteligence1 Vitality2
-	else if (.@i <= 209) setarray .@enchants[1],4766,4711,4700; //Atk2 Inteligence2 Strength1
-	else if (.@i <= 220) setarray .@enchants[1],4766,4711,4701; //Atk2 Inteligence2 Strength2
-	else if (.@i <= 231) setarray .@enchants[1],4766,4711,4730; //Atk2 Inteligence2 Agility1
-	else if (.@i <= 242) setarray .@enchants[1],4766,4711,4731; //Atk2 Inteligence2 Agility2
-	else if (.@i <= 253) setarray .@enchants[1],4766,4711,4740; //Atk2 Inteligence2 Vitality1
-	else if (.@i <= 264) setarray .@enchants[1],4766,4711,4741; //Atk2 Inteligence2 Vitality2
-	else if (.@i <= 275) setarray .@enchants[1],4766,4750,4700; //Atk2 Luck1 Strength1
-	else if (.@i <= 286) setarray .@enchants[1],4766,4750,4701; //Atk2 Luck1 Strength2
-	else if (.@i <= 297) setarray .@enchants[1],4766,4750,4730; //Atk2 Luck1 Agility1
-	else if (.@i <= 308) setarray .@enchants[1],4766,4750,4731; //Atk2 Luck1 Agility2
-	else if (.@i <= 319) setarray .@enchants[1],4766,4750,4740; //Atk2 Luck1 Vitality1
-	else if (.@i <= 330) setarray .@enchants[1],4766,4750,4741; //Atk2 Luck1 Vitality2
-	else if (.@i <= 341) setarray .@enchants[1],4766,4751,4700; //Atk2 Luck2 Strength1
-	else if (.@i <= 352) setarray .@enchants[1],4766,4751,4701; //Atk2 Luck2 Strength2
-	else if (.@i <= 363) setarray .@enchants[1],4766,4751,4730; //Atk2 Luck2 Agility1
-	else if (.@i <= 374) setarray .@enchants[1],4766,4751,4731; //Atk2 Luck2 Agility2
-	else if (.@i <= 385) setarray .@enchants[1],4766,4751,4740; //Atk2 Luck2 Vitality1
-	else if (.@i <= 396) setarray .@enchants[1],4766,4751,4741; //Atk2 Luck2 Vitality2
-	else if (.@i <= 407) setarray .@enchants[1],4767,4720,4700; //Atk3 Dexterity1 Strength1
-	else if (.@i <= 418) setarray .@enchants[1],4767,4720,4701; //Atk3 Dexterity1 Strength2
-	else if (.@i <= 429) setarray .@enchants[1],4767,4720,4730; //Atk3 Dexterity1 Agility1
-	else if (.@i <= 440) setarray .@enchants[1],4767,4720,4731; //Atk3 Dexterity1 Agility2
-	else if (.@i <= 451) setarray .@enchants[1],4767,4720,4740; //Atk3 Dexterity1 Vitality1
-	else if (.@i <= 462) setarray .@enchants[1],4767,4720,4741; //Atk3 Dexterity1 Vitality2
-	else if (.@i <= 473) setarray .@enchants[1],4767,4721,4700; //Atk3 Dexterity2 Strength1
-	else if (.@i <= 484) setarray .@enchants[1],4767,4721,4701; //Atk3 Dexterity2 Strength2
-	else if (.@i <= 495) setarray .@enchants[1],4767,4721,4730; //Atk3 Dexterity2 Agility1
-	else if (.@i <= 506) setarray .@enchants[1],4767,4721,4731; //Atk3 Dexterity2 Agility2
-	else if (.@i <= 517) setarray .@enchants[1],4767,4721,4740; //Atk3 Dexterity2 Vitality1
-	else if (.@i <= 528) setarray .@enchants[1],4767,4721,4741; //Atk3 Dexterity2 Vitality2
-	else if (.@i <= 539) setarray .@enchants[1],4767,4710,4700; //Atk3 Inteligence1 Strength1
-	else if (.@i <= 550) setarray .@enchants[1],4767,4710,4701; //Atk3 Inteligence1 Strength2
-	else if (.@i <= 561) setarray .@enchants[1],4767,4710,4730; //Atk3 Inteligence1 Agility1
-	else if (.@i <= 572) setarray .@enchants[1],4767,4710,4731; //Atk3 Inteligence1 Agility2
-	else if (.@i <= 583) setarray .@enchants[1],4767,4710,4740; //Atk3 Inteligence1 Vitality1
-	else if (.@i <= 594) setarray .@enchants[1],4767,4710,4741; //Atk3 Inteligence1 Vitality2
-	else if (.@i <= 605) setarray .@enchants[1],4767,4711,4700; //Atk3 Inteligence2 Strength1
-	else if (.@i <= 616) setarray .@enchants[1],4767,4711,4701; //Atk3 Inteligence2 Strength2
-	else if (.@i <= 627) setarray .@enchants[1],4767,4711,4730; //Atk3 Inteligence2 Agility1
-	else if (.@i <= 638) setarray .@enchants[1],4767,4711,4731; //Atk3 Inteligence2 Agility2
-	else if (.@i <= 649) setarray .@enchants[1],4767,4711,4740; //Atk3 Inteligence2 Vitality1
-	else if (.@i <= 660) setarray .@enchants[1],4767,4711,4741; //Atk3 Inteligence2 Vitality2
-	else if (.@i <= 671) setarray .@enchants[1],4767,4750,4700; //Atk3 Luck1 Strength1
-	else if (.@i <= 682) setarray .@enchants[1],4767,4750,4701; //Atk3 Luck1 Strength2
-	else if (.@i <= 693) setarray .@enchants[1],4767,4750,4730; //Atk3 Luck1 Agility1
-	else if (.@i <= 704) setarray .@enchants[1],4767,4750,4731; //Atk3 Luck1 Agility2
-	else if (.@i <= 715) setarray .@enchants[1],4767,4750,4740; //Atk3 Luck1 Vitality1
-	else if (.@i <= 726) setarray .@enchants[1],4767,4750,4741; //Atk3 Luck1 Vitality2
-	else if (.@i <= 737) setarray .@enchants[1],4767,4751,4700; //Atk3 Luck2 Strength1
-	else if (.@i <= 748) setarray .@enchants[1],4767,4751,4701; //Atk3 Luck2 Strength2
-	else if (.@i <= 759) setarray .@enchants[1],4767,4751,4730; //Atk3 Luck2 Agility1
-	else if (.@i <= 770) setarray .@enchants[1],4767,4751,4731; //Atk3 Luck2 Agility2
-	else if (.@i <= 781) setarray .@enchants[1],4767,4751,4740; //Atk3 Luck2 Vitality1
-	else if (.@i <= 792) setarray .@enchants[1],4767,4751,4741; //Atk3 Luck2 Vitality2
-	else if (.@i <= 803) setarray .@enchants[1],4764,4720,4700; //Critical5 Dexterity1 Strength1
-	else if (.@i <= 814) setarray .@enchants[1],4764,4720,4701; //Critical5 Dexterity1 Strength2
-	else if (.@i <= 825) setarray .@enchants[1],4764,4720,4730; //Critical5 Dexterity1 Agility1
-	else if (.@i <= 836) setarray .@enchants[1],4764,4720,4731; //Critical5 Dexterity1 Agility2
-	else if (.@i <= 847) setarray .@enchants[1],4764,4720,4740; //Critical5 Dexterity1 Vitality1
-	else if (.@i <= 858) setarray .@enchants[1],4764,4720,4741; //Critical5 Dexterity1 Vitality2
-	else if (.@i <= 869) setarray .@enchants[1],4764,4721,4700; //Critical5 Dexterity2 Strength1
-	else if (.@i <= 880) setarray .@enchants[1],4764,4721,4701; //Critical5 Dexterity2 Strength2
-	else if (.@i <= 891) setarray .@enchants[1],4764,4721,4730; //Critical5 Dexterity2 Agility1
-	else if (.@i <= 902) setarray .@enchants[1],4764,4721,4731; //Critical5 Dexterity2 Agility2
-	else if (.@i <= 913) setarray .@enchants[1],4764,4721,4740; //Critical5 Dexterity2 Vitality1
-	else if (.@i <= 924) setarray .@enchants[1],4764,4721,4741; //Critical5 Dexterity2 Vitality2
-	else if (.@i <= 935) setarray .@enchants[1],4764,4710,4700; //Critical5 Inteligence1 Strength1
-	else if (.@i <= 946) setarray .@enchants[1],4764,4710,4701; //Critical5 Inteligence1 Strength2
-	else if (.@i <= 957) setarray .@enchants[1],4764,4710,4730; //Critical5 Inteligence1 Agility1
-	else if (.@i <= 968) setarray .@enchants[1],4764,4710,4731; //Critical5 Inteligence1 Agility2
-	else if (.@i <= 979) setarray .@enchants[1],4764,4710,4740; //Critical5 Inteligence1 Vitality1
-	else if (.@i <= 990) setarray .@enchants[1],4764,4710,4741; //Critical5 Inteligence1 Vitality2
-	else if (.@i <= 1001) setarray .@enchants[1],4764,4711,4700; //Critical5 Inteligence2 Strength1
-	else if (.@i <= 1012) setarray .@enchants[1],4764,4711,4701; //Critical5 Inteligence2 Strength2
-	else if (.@i <= 1023) setarray .@enchants[1],4764,4711,4730; //Critical5 Inteligence2 Agility1
-	else if (.@i <= 1034) setarray .@enchants[1],4764,4711,4731; //Critical5 Inteligence2 Agility2
-	else if (.@i <= 1045) setarray .@enchants[1],4764,4711,4740; //Critical5 Inteligence2 Vitality1
-	else if (.@i <= 1056) setarray .@enchants[1],4764,4711,4741; //Critical5 Inteligence2 Vitality2
-	else if (.@i <= 1067) setarray .@enchants[1],4764,4750,4700; //Critical5 Luck1 Strength1
-	else if (.@i <= 1078) setarray .@enchants[1],4764,4750,4701; //Critical5 Luck1 Strength2
-	else if (.@i <= 1089) setarray .@enchants[1],4764,4750,4730; //Critical5 Luck1 Agility1
-	else if (.@i <= 1100) setarray .@enchants[1],4764,4750,4731; //Critical5 Luck1 Agility2
-	else if (.@i <= 1111) setarray .@enchants[1],4764,4750,4740; //Critical5 Luck1 Vitality1
-	else if (.@i <= 1122) setarray .@enchants[1],4764,4750,4741; //Critical5 Luck1 Vitality2
-	else if (.@i <= 1133) setarray .@enchants[1],4764,4751,4700; //Critical5 Luck2 Strength1
-	else if (.@i <= 1144) setarray .@enchants[1],4764,4751,4701; //Critical5 Luck2 Strength2
-	else if (.@i <= 1155) setarray .@enchants[1],4764,4751,4730; //Critical5 Luck2 Agility1
-	else if (.@i <= 1166) setarray .@enchants[1],4764,4751,4731; //Critical5 Luck2 Agility2
-	else if (.@i <= 1177) setarray .@enchants[1],4764,4751,4740; //Critical5 Luck2 Vitality1
-	else if (.@i <= 1188) setarray .@enchants[1],4764,4751,4741; //Critical5 Luck2 Vitality2
-	else if (.@i <= 1199) setarray .@enchants[1],4765,4720,4700; //Critical7 Dexterity1 Strength1
-	else if (.@i <= 1210) setarray .@enchants[1],4765,4720,4701; //Critical7 Dexterity1 Strength2
-	else if (.@i <= 1221) setarray .@enchants[1],4765,4720,4730; //Critical7 Dexterity1 Agility1
-	else if (.@i <= 1232) setarray .@enchants[1],4765,4720,4731; //Critical7 Dexterity1 Agility2
-	else if (.@i <= 1243) setarray .@enchants[1],4765,4720,4740; //Critical7 Dexterity1 Vitality1
-	else if (.@i <= 1254) setarray .@enchants[1],4765,4720,4741; //Critical7 Dexterity1 Vitality2
-	else if (.@i <= 1265) setarray .@enchants[1],4765,4721,4700; //Critical7 Dexterity2 Strength1
-	else if (.@i <= 1276) setarray .@enchants[1],4765,4721,4701; //Critical7 Dexterity2 Strength2
-	else if (.@i <= 1287) setarray .@enchants[1],4765,4721,4730; //Critical7 Dexterity2 Agility1
-	else if (.@i <= 1298) setarray .@enchants[1],4765,4721,4731; //Critical7 Dexterity2 Agility2
-	else if (.@i <= 1309) setarray .@enchants[1],4765,4721,4740; //Critical7 Dexterity2 Vitality1
-	else if (.@i <= 1320) setarray .@enchants[1],4765,4721,4741; //Critical7 Dexterity2 Vitality2
-	else if (.@i <= 1331) setarray .@enchants[1],4765,4710,4700; //Critical7 Inteligence1 Strength1
-	else if (.@i <= 1342) setarray .@enchants[1],4765,4710,4701; //Critical7 Inteligence1 Strength2
-	else if (.@i <= 1353) setarray .@enchants[1],4765,4710,4730; //Critical7 Inteligence1 Agility1
-	else if (.@i <= 1364) setarray .@enchants[1],4765,4710,4731; //Critical7 Inteligence1 Agility2
-	else if (.@i <= 1375) setarray .@enchants[1],4765,4710,4740; //Critical7 Inteligence1 Vitality1
-	else if (.@i <= 1386) setarray .@enchants[1],4765,4710,4741; //Critical7 Inteligence1 Vitality2
-	else if (.@i <= 1397) setarray .@enchants[1],4765,4711,4700; //Critical7 Inteligence2 Strength1
-	else if (.@i <= 1408) setarray .@enchants[1],4765,4711,4701; //Critical7 Inteligence2 Strength2
-	else if (.@i <= 1419) setarray .@enchants[1],4765,4711,4730; //Critical7 Inteligence2 Agility1
-	else if (.@i <= 1430) setarray .@enchants[1],4765,4711,4731; //Critical7 Inteligence2 Agility2
-	else if (.@i <= 1441) setarray .@enchants[1],4765,4711,4740; //Critical7 Inteligence2 Vitality1
-	else if (.@i <= 1452) setarray .@enchants[1],4765,4711,4741; //Critical7 Inteligence2 Vitality2
-	else if (.@i <= 1463) setarray .@enchants[1],4765,4750,4700; //Critical7 Luck1 Strength1
-	else if (.@i <= 1474) setarray .@enchants[1],4765,4750,4701; //Critical7 Luck1 Strength2
-	else if (.@i <= 1485) setarray .@enchants[1],4765,4750,4730; //Critical7 Luck1 Agility1
-	else if (.@i <= 1496) setarray .@enchants[1],4765,4750,4731; //Critical7 Luck1 Agility2
-	else if (.@i <= 1507) setarray .@enchants[1],4765,4750,4740; //Critical7 Luck1 Vitality1
-	else if (.@i <= 1518) setarray .@enchants[1],4765,4750,4741; //Critical7 Luck1 Vitality2
-	else if (.@i <= 1529) setarray .@enchants[1],4765,4751,4700; //Critical7 Luck2 Strength1
-	else if (.@i <= 1540) setarray .@enchants[1],4765,4751,4701; //Critical7 Luck2 Strength2
-	else if (.@i <= 1551) setarray .@enchants[1],4765,4751,4730; //Critical7 Luck2 Agility1
-	else if (.@i <= 1562) setarray .@enchants[1],4765,4751,4731; //Critical7 Luck2 Agility2
-	else if (.@i <= 1573) setarray .@enchants[1],4765,4751,4740; //Critical7 Luck2 Vitality1
-	else if (.@i <= 1584) setarray .@enchants[1],4765,4751,4741; //Critical7 Luck2 Vitality2
-	else if (.@i <= 1595) setarray .@enchants[1],4762,4720,4700; //Evasion6 Dexterity1 Strength1
-	else if (.@i <= 1606) setarray .@enchants[1],4762,4720,4701; //Evasion6 Dexterity1 Strength2
-	else if (.@i <= 1617) setarray .@enchants[1],4762,4720,4730; //Evasion6 Dexterity1 Agility1
-	else if (.@i <= 1628) setarray .@enchants[1],4762,4720,4731; //Evasion6 Dexterity1 Agility2
-	else if (.@i <= 1639) setarray .@enchants[1],4762,4720,4740; //Evasion6 Dexterity1 Vitality1
-	else if (.@i <= 1650) setarray .@enchants[1],4762,4720,4741; //Evasion6 Dexterity1 Vitality2
-	else if (.@i <= 1661) setarray .@enchants[1],4762,4721,4700; //Evasion6 Dexterity2 Strength1
-	else if (.@i <= 1672) setarray .@enchants[1],4762,4721,4701; //Evasion6 Dexterity2 Strength2
-	else if (.@i <= 1683) setarray .@enchants[1],4762,4721,4730; //Evasion6 Dexterity2 Agility1
-	else if (.@i <= 1694) setarray .@enchants[1],4762,4721,4731; //Evasion6 Dexterity2 Agility2
-	else if (.@i <= 1705) setarray .@enchants[1],4762,4721,4740; //Evasion6 Dexterity2 Vitality1
-	else if (.@i <= 1716) setarray .@enchants[1],4762,4721,4741; //Evasion6 Dexterity2 Vitality2
-	else if (.@i <= 1727) setarray .@enchants[1],4762,4710,4700; //Evasion6 Inteligence1 Strength1
-	else if (.@i <= 1738) setarray .@enchants[1],4762,4710,4701; //Evasion6 Inteligence1 Strength2
-	else if (.@i <= 1749) setarray .@enchants[1],4762,4710,4730; //Evasion6 Inteligence1 Agility1
-	else if (.@i <= 1760) setarray .@enchants[1],4762,4710,4731; //Evasion6 Inteligence1 Agility2
-	else if (.@i <= 1771) setarray .@enchants[1],4762,4710,4740; //Evasion6 Inteligence1 Vitality1
-	else if (.@i <= 1782) setarray .@enchants[1],4762,4710,4741; //Evasion6 Inteligence1 Vitality2
-	else if (.@i <= 1793) setarray .@enchants[1],4762,4711,4700; //Evasion6 Inteligence2 Strength1
-	else if (.@i <= 1804) setarray .@enchants[1],4762,4711,4701; //Evasion6 Inteligence2 Strength2
-	else if (.@i <= 1815) setarray .@enchants[1],4762,4711,4730; //Evasion6 Inteligence2 Agility1
-	else if (.@i <= 1826) setarray .@enchants[1],4762,4711,4731; //Evasion6 Inteligence2 Agility2
-	else if (.@i <= 1837) setarray .@enchants[1],4762,4711,4740; //Evasion6 Inteligence2 Vitality1
-	else if (.@i <= 1848) setarray .@enchants[1],4762,4711,4741; //Evasion6 Inteligence2 Vitality2
-	else if (.@i <= 1859) setarray .@enchants[1],4762,4750,4700; //Evasion6 Luck1 Strength1
-	else if (.@i <= 1870) setarray .@enchants[1],4762,4750,4701; //Evasion6 Luck1 Strength2
-	else if (.@i <= 1881) setarray .@enchants[1],4762,4750,4730; //Evasion6 Luck1 Agility1
-	else if (.@i <= 1892) setarray .@enchants[1],4762,4750,4731; //Evasion6 Luck1 Agility2
-	else if (.@i <= 1903) setarray .@enchants[1],4762,4750,4740; //Evasion6 Luck1 Vitality1
-	else if (.@i <= 1914) setarray .@enchants[1],4762,4750,4741; //Evasion6 Luck1 Vitality2
-	else if (.@i <= 1925) setarray .@enchants[1],4762,4751,4700; //Evasion6 Luck2 Strength1
-	else if (.@i <= 1936) setarray .@enchants[1],4762,4751,4701; //Evasion6 Luck2 Strength2
-	else if (.@i <= 1947) setarray .@enchants[1],4762,4751,4730; //Evasion6 Luck2 Agility1
-	else if (.@i <= 1958) setarray .@enchants[1],4762,4751,4731; //Evasion6 Luck2 Agility2
-	else if (.@i <= 1969) setarray .@enchants[1],4762,4751,4740; //Evasion6 Luck2 Vitality1
-	else if (.@i <= 1980) setarray .@enchants[1],4762,4751,4741; //Evasion6 Luck2 Vitality2
-	else if (.@i <= 1991) setarray .@enchants[1],4763,4720,4700; //Evasion12 Dexterity1 Strength1
-	else if (.@i <= 2002) setarray .@enchants[1],4763,4720,4701; //Evasion12 Dexterity1 Strength2
-	else if (.@i <= 2013) setarray .@enchants[1],4763,4720,4730; //Evasion12 Dexterity1 Agility1
-	else if (.@i <= 2024) setarray .@enchants[1],4763,4720,4731; //Evasion12 Dexterity1 Agility2
-	else if (.@i <= 2035) setarray .@enchants[1],4763,4720,4740; //Evasion12 Dexterity1 Vitality1
-	else if (.@i <= 2046) setarray .@enchants[1],4763,4720,4741; //Evasion12 Dexterity1 Vitality2
-	else if (.@i <= 2057) setarray .@enchants[1],4763,4721,4700; //Evasion12 Dexterity2 Strength1
-	else if (.@i <= 2068) setarray .@enchants[1],4763,4721,4701; //Evasion12 Dexterity2 Strength2
-	else if (.@i <= 2079) setarray .@enchants[1],4763,4721,4730; //Evasion12 Dexterity2 Agility1
-	else if (.@i <= 2090) setarray .@enchants[1],4763,4721,4731; //Evasion12 Dexterity2 Agility2
-	else if (.@i <= 2101) setarray .@enchants[1],4763,4721,4740; //Evasion12 Dexterity2 Vitality1
-	else if (.@i <= 2112) setarray .@enchants[1],4763,4721,4741; //Evasion12 Dexterity2 Vitality2
-	else if (.@i <= 2123) setarray .@enchants[1],4763,4710,4700; //Evasion12 Inteligence1 Strength1
-	else if (.@i <= 2134) setarray .@enchants[1],4763,4710,4701; //Evasion12 Inteligence1 Strength2
-	else if (.@i <= 2145) setarray .@enchants[1],4763,4710,4730; //Evasion12 Inteligence1 Agility1
-	else if (.@i <= 2156) setarray .@enchants[1],4763,4710,4731; //Evasion12 Inteligence1 Agility2
-	else if (.@i <= 2167) setarray .@enchants[1],4763,4710,4740; //Evasion12 Inteligence1 Vitality1
-	else if (.@i <= 2178) setarray .@enchants[1],4763,4710,4741; //Evasion12 Inteligence1 Vitality2
-	else if (.@i <= 2189) setarray .@enchants[1],4763,4711,4700; //Evasion12 Inteligence2 Strength1
-	else if (.@i <= 2200) setarray .@enchants[1],4763,4711,4701; //Evasion12 Inteligence2 Strength2
-	else if (.@i <= 2211) setarray .@enchants[1],4763,4711,4730; //Evasion12 Inteligence2 Agility1
-	else if (.@i <= 2222) setarray .@enchants[1],4763,4711,4731; //Evasion12 Inteligence2 Agility2
-	else if (.@i <= 2233) setarray .@enchants[1],4763,4711,4740; //Evasion12 Inteligence2 Vitality1
-	else if (.@i <= 2244) setarray .@enchants[1],4763,4711,4741; //Evasion12 Inteligence2 Vitality2
-	else if (.@i <= 2255) setarray .@enchants[1],4763,4750,4700; //Evasion12 Luck1 Strength1
-	else if (.@i <= 2266) setarray .@enchants[1],4763,4750,4701; //Evasion12 Luck1 Strength2
-	else if (.@i <= 2277) setarray .@enchants[1],4763,4750,4730; //Evasion12 Luck1 Agility1
-	else if (.@i <= 2288) setarray .@enchants[1],4763,4750,4731; //Evasion12 Luck1 Agility2
-	else if (.@i <= 2299) setarray .@enchants[1],4763,4750,4740; //Evasion12 Luck1 Vitality1
-	else if (.@i <= 2310) setarray .@enchants[1],4763,4750,4741; //Evasion12 Luck1 Vitality2
-	else if (.@i <= 2321) setarray .@enchants[1],4763,4751,4700; //Evasion12 Luck2 Strength1
-	else if (.@i <= 2332) setarray .@enchants[1],4763,4751,4701; //Evasion12 Luck2 Strength2
-	else if (.@i <= 2343) setarray .@enchants[1],4763,4751,4730; //Evasion12 Luck2 Agility1
-	else if (.@i <= 2354) setarray .@enchants[1],4763,4751,4731; //Evasion12 Luck2 Agility2
-	else if (.@i <= 2365) setarray .@enchants[1],4763,4751,4740; //Evasion12 Luck2 Vitality1
-	else if (.@i <= 2376) setarray .@enchants[1],4763,4751,4741; //Evasion12 Luck2 Vitality2
-	else if (.@i <= 2387) setarray .@enchants[1],4760,4720,4700; //Matk1 Dexterity1 Strength1
-	else if (.@i <= 2398) setarray .@enchants[1],4760,4720,4701; //Matk1 Dexterity1 Strength2
-	else if (.@i <= 2409) setarray .@enchants[1],4760,4720,4730; //Matk1 Dexterity1 Agility1
-	else if (.@i <= 2420) setarray .@enchants[1],4760,4720,4731; //Matk1 Dexterity1 Agility2
-	else if (.@i <= 2431) setarray .@enchants[1],4760,4720,4740; //Matk1 Dexterity1 Vitality1
-	else if (.@i <= 2442) setarray .@enchants[1],4760,4720,4741; //Matk1 Dexterity1 Vitality2
-	else if (.@i <= 2453) setarray .@enchants[1],4760,4721,4700; //Matk1 Dexterity2 Strength1
-	else if (.@i <= 2464) setarray .@enchants[1],4760,4721,4701; //Matk1 Dexterity2 Strength2
-	else if (.@i <= 2475) setarray .@enchants[1],4760,4721,4730; //Matk1 Dexterity2 Agility1
-	else if (.@i <= 2486) setarray .@enchants[1],4760,4721,4731; //Matk1 Dexterity2 Agility2
-	else if (.@i <= 2497) setarray .@enchants[1],4760,4721,4740; //Matk1 Dexterity2 Vitality1
-	else if (.@i <= 2508) setarray .@enchants[1],4760,4721,4741; //Matk1 Dexterity2 Vitality2
-	else if (.@i <= 2519) setarray .@enchants[1],4760,4710,4700; //Matk1 Inteligence1 Strength1
-	else if (.@i <= 2530) setarray .@enchants[1],4760,4710,4701; //Matk1 Inteligence1 Strength2
-	else if (.@i <= 2541) setarray .@enchants[1],4760,4710,4730; //Matk1 Inteligence1 Agility1
-	else if (.@i <= 2552) setarray .@enchants[1],4760,4710,4731; //Matk1 Inteligence1 Agility2
-	else if (.@i <= 2563) setarray .@enchants[1],4760,4710,4740; //Matk1 Inteligence1 Vitality1
-	else if (.@i <= 2574) setarray .@enchants[1],4760,4710,4741; //Matk1 Inteligence1 Vitality2
-	else if (.@i <= 2585) setarray .@enchants[1],4760,4711,4700; //Matk1 Inteligence2 Strength1
-	else if (.@i <= 2596) setarray .@enchants[1],4760,4711,4701; //Matk1 Inteligence2 Strength2
-	else if (.@i <= 2607) setarray .@enchants[1],4760,4711,4730; //Matk1 Inteligence2 Agility1
-	else if (.@i <= 2618) setarray .@enchants[1],4760,4711,4731; //Matk1 Inteligence2 Agility2
-	else if (.@i <= 2629) setarray .@enchants[1],4760,4711,4740; //Matk1 Inteligence2 Vitality1
-	else if (.@i <= 2640) setarray .@enchants[1],4760,4711,4741; //Matk1 Inteligence2 Vitality2
-	else if (.@i <= 2651) setarray .@enchants[1],4760,4750,4700; //Matk1 Luck1 Strength1
-	else if (.@i <= 2662) setarray .@enchants[1],4760,4750,4701; //Matk1 Luck1 Strength2
-	else if (.@i <= 2673) setarray .@enchants[1],4760,4750,4730; //Matk1 Luck1 Agility1
-	else if (.@i <= 2684) setarray .@enchants[1],4760,4750,4731; //Matk1 Luck1 Agility2
-	else if (.@i <= 2695) setarray .@enchants[1],4760,4750,4740; //Matk1 Luck1 Vitality1
-	else if (.@i <= 2706) setarray .@enchants[1],4760,4750,4741; //Matk1 Luck1 Vitality2
-	else if (.@i <= 2717) setarray .@enchants[1],4760,4751,4700; //Matk1 Luck2 Strength1
-	else if (.@i <= 2728) setarray .@enchants[1],4760,4751,4701; //Matk1 Luck2 Strength2
-	else if (.@i <= 2739) setarray .@enchants[1],4760,4751,4730; //Matk1 Luck2 Agility1
-	else if (.@i <= 2750) setarray .@enchants[1],4760,4751,4731; //Matk1 Luck2 Agility2
-	else if (.@i <= 2761) setarray .@enchants[1],4760,4751,4740; //Matk1 Luck2 Vitality1
-	else if (.@i <= 2772) setarray .@enchants[1],4760,4751,4741; //Matk1 Luck2 Vitality2
-	else if (.@i <= 2783) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
-	else if (.@i <= 2794) setarray .@enchants[1],4761,4720,4701; //Matk2 Dexterity1 Strength2
-	else if (.@i <= 2805) setarray .@enchants[1],4761,4720,4730; //Matk2 Dexterity1 Agility1
-	else if (.@i <= 2816) setarray .@enchants[1],4761,4720,4731; //Matk2 Dexterity1 Agility2
-	else if (.@i <= 2827) setarray .@enchants[1],4761,4720,4740; //Matk2 Dexterity1 Vitality1
-	else if (.@i <= 2838) setarray .@enchants[1],4761,4720,4741; //Matk2 Dexterity1 Vitality2
-	else if (.@i <= 2849) setarray .@enchants[1],4761,4721,4700; //Matk2 Dexterity2 Strength1
-	else if (.@i <= 2860) setarray .@enchants[1],4761,4721,4701; //Matk2 Dexterity2 Strength2
-	else if (.@i <= 2871) setarray .@enchants[1],4761,4721,4730; //Matk2 Dexterity2 Agility1
-	else if (.@i <= 2882) setarray .@enchants[1],4761,4721,4731; //Matk2 Dexterity2 Agility2
-	else if (.@i <= 2893) setarray .@enchants[1],4761,4721,4740; //Matk2 Dexterity2 Vitality1
-	else if (.@i <= 2904) setarray .@enchants[1],4761,4721,4741; //Matk2 Dexterity2 Vitality2
-	else if (.@i <= 2915) setarray .@enchants[1],4761,4710,4700; //Matk2 Inteligence1 Strength1
-	else if (.@i <= 2926) setarray .@enchants[1],4761,4710,4701; //Matk2 Inteligence1 Strength2
-	else if (.@i <= 2937) setarray .@enchants[1],4761,4710,4730; //Matk2 Inteligence1 Agility1
-	else if (.@i <= 2948) setarray .@enchants[1],4761,4710,4731; //Matk2 Inteligence1 Agility2
-	else if (.@i <= 2959) setarray .@enchants[1],4761,4710,4740; //Matk2 Inteligence1 Vitality1
-	else if (.@i <= 2970) setarray .@enchants[1],4761,4710,4741; //Matk2 Inteligence1 Vitality2
-	else if (.@i <= 2981) setarray .@enchants[1],4761,4711,4700; //Matk2 Inteligence2 Strength1
-	else if (.@i <= 2992) setarray .@enchants[1],4761,4711,4701; //Matk2 Inteligence2 Strength2
-	else if (.@i <= 3003) setarray .@enchants[1],4761,4711,4730; //Matk2 Inteligence2 Agility1
-	else if (.@i <= 3014) setarray .@enchants[1],4761,4711,4731; //Matk2 Inteligence2 Agility2
-	else if (.@i <= 3025) setarray .@enchants[1],4761,4711,4740; //Matk2 Inteligence2 Vitality1
-	else if (.@i <= 3036) setarray .@enchants[1],4761,4711,4741; //Matk2 Inteligence2 Vitality2
-	else if (.@i <= 3047) setarray .@enchants[1],4761,4750,4700; //Matk2 Luck1 Strength1
-	else if (.@i <= 3058) setarray .@enchants[1],4761,4750,4701; //Matk2 Luck1 Strength2
-	else if (.@i <= 3069) setarray .@enchants[1],4761,4750,4730; //Matk2 Luck1 Agility1
-	else if (.@i <= 3080) setarray .@enchants[1],4761,4750,4731; //Matk2 Luck1 Agility2
-	else if (.@i <= 3091) setarray .@enchants[1],4761,4750,4740; //Matk2 Luck1 Vitality1
-	else if (.@i <= 3102) setarray .@enchants[1],4761,4750,4741; //Matk2 Luck1 Vitality2
-	else if (.@i <= 3113) setarray .@enchants[1],4761,4751,4700; //Matk2 Luck2 Strength1
-	else if (.@i <= 3124) setarray .@enchants[1],4761,4751,4701; //Matk2 Luck2 Strength2
-	else if (.@i <= 3135) setarray .@enchants[1],4761,4751,4730; //Matk2 Luck2 Agility1
-	else if (.@i <= 3146) setarray .@enchants[1],4761,4751,4731; //Matk2 Luck2 Agility2
-	else if (.@i <= 3157) setarray .@enchants[1],4761,4751,4740; //Matk2 Luck2 Vitality1
-	else if (.@i <= 3168) setarray .@enchants[1],4761,4751,4741; //Matk2 Luck2 Vitality2
-	else if (.@i <= 3179) setarray .@enchants[1],4761,4720,4700; //Matk2 Dexterity1 Strength1
-	else if (.@i <= 3181) setarray .@enchants[1],4761,4712,4712; //Matk2 Inteligence3 Inteligence3
+	if (.@i <= 3181) {
+		// Basic combinations
+		// (raw: .@i increments by 11)
+		setarray .@enchant_slot1[0],4766,4767,4764,4765,4762,4763,4760,4761; //Atk2,Atk3,Critical5,Critical7,Evasion6,Evasion12,Matk1,Matk2
+		setarray .@enchant_slot2[0],4720,4721,4710,4711,4750,4751; //Dexterity1,Dexterity2,Inteligence1,Inteligence2,Luck1,Luck2
+		setarray .@enchant_slot3[0],4700,4701,4730,4731,4740,4741; //Strength1,Strength2,Agility1,Agility2,Vitality1,Vitality2
+		setarray .@enchants[1],
+			.@enchant_slot1[rand(getarraysize(.@enchant_slot1))],
+			.@enchant_slot2[rand(getarraysize(.@enchant_slot2))],
+			.@enchant_slot3[rand(getarraysize(.@enchant_slot3))];
+	}
 	else if (.@i <= 3183) setarray .@enchants[1],4765,4732,4732; //Critical7 Agility3 Agility3
 	else if (.@i <= 3185) setarray .@enchants[1],4763,4752,4753; //Evasion12 Luck3 Luck4
 	else if (.@i <= 3187) setarray .@enchants[1],4763,4742,4742; //Evasion12 Vitality3 Vitality3

+ 1 - 0
npc/re/scripts_athena.conf

@@ -46,6 +46,7 @@ npc: npc/re/guides/guides_umbala.txt
 npc: npc/re/guides/guides_veins.txt
 
 // ------------------------ Instances ---------------------------
+npc: npc/re/instances/HazyForest.txt
 npc: npc/re/instances/MalangdoCulvert.txt
 npc: npc/re/instances/OctopusCave.txt