浏览代码

Updated Old Glast Heim instance (#1554)

** Updated Old Glast Heim instance
* Changed hardcoded sprite ID for NPCs in Old Glast Heim to constant
* Cleaned up Old Glast Heim NPC dialogues

* Merged OGH merchants from idathena (credits @exneval)

* Updated Old Glast Heim mobs
* Updated stats and skills for all Old Glast Heim mobs.

* Added Modified Boots (Temporal Boots for Oboro/Kagerou, Rebellion) entries.
* Added Gigant Snake Skin + Modified Boots item combo

Thanks to @secretdataz @aleos89 @srhmike @ecdarreola Heris, @zackdreaver @exneval and the reviewers
Special thanks to Divine-Pride.net!
Jittapan Pluemsumran 7 年之前
父节点
当前提交
c04c2e7ef1

+ 24 - 0
db/re/item_combo_db.txt

@@ -518,6 +518,30 @@
 20718:22009,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20718:22010,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20718:22011,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22107,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22108,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22109,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22110,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22111,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22112,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22113,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22114,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22115,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22116,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22117,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20717:22118,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22107,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22108,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22109,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22110,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22111,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22112,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22113,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22114,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22115,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22116,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22117,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
+20718:22118,{ bonus bMaxHPRate,15; bonus bMaxSPRate,5; }
 20797:2339,{ bonus bInt,15; bonus bMaxHPrate,5; bonus bMaxSPrate,5; if (getequiprefinerycnt(EQI_ARMOR) > 6) bonus bNoCastCancel,1; }
 20797:4174,{ bonus2 bSubEle,Ele_All,50; bonus2 bSubEle,Ele_Neutral,-50; }
 22069:2195,{ bonus2 bSubEle,Ele_Neutral,5; bonus2 bAddEle,Ele_Neutral,getequiprefinerycnt(EQI_HAND_L); }

+ 12 - 0
db/re/item_db.txt

@@ -10878,6 +10878,18 @@
 22101,Angel_Poring_Boots,Angel Poring Boots,4,10,,300,,15,,1,0xFFFFFFFF,63,2,64,,1,1,,{ bonus bAllStats,1; skill "AL_HEAL",1; },{},{}
 22103,Excelion_Leg,Excelion Leg,4,0,,500,,13,,0,0xFFFFFFFF,63,2,64,,100,1,,{ .@r = getrefine(); bonus bMaxHP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; bonus bMaxSP,5+((BaseLevel > 129) ? 4 : 0)+(.@r/3)*3; },{},{}
 22106,Giant_Boots,Giant Boots,4,0,,500,,13,,1,0xFFFFFFFF,63,2,64,,1,1,,{ bonus2 bSubRace,RC_All,1; bonus bMaxHPrate,2; bonus bMaxSPrate,2; .@r = getrefine(); if (.@r > 4) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } if (.@r > 6) { bonus bDefRate,2; bonus bMaxHPrate,4; bonus bMaxSPrate,4; } },{},{}
+22107,Modified_Str_Boots,Modified Str Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{}
+22108,Modified_Int_Boots,Modified Int Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{}
+22109,Modified_Agi_Boots,Modified Agi Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1; },{},{}
+22110,Modified_Vit_Boots,Modified Vit Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{}
+22111,Modified_Dex_Boots,Modified Dex Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{}
+22112,Modified_Luk_Boots,Modified Luk Boots,4,20,,600,,25,,0,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30; },{},{}
+22113,Modified_Str_Boots_,Modified Str Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAtk,7*(.@r/3); if(readparam(bStr)>=120) bonus bBaseAtk,50; },{},{}
+22114,Modified_Int_Boots_,Modified Int Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMdef,5; bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMatk,10*(.@r/3); if(readparam(bInt)>=120) bonus bMatk,60; },{},{}
+22115,Modified_Agi_Boots_,Modified Agi Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bAspdRate,3*(.@r/3); if(readparam(bAgi)>=120) bonus bAspd,1; },{},{}
+22116,Modified_Vit_Boots_,Modified Vit Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(300*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); if(readparam(bVit)>=120) bonus bMaxHPrate,8; },{},{}
+22117,Modified_Dex_Boots_,Modified Dex Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bDex,3*(.@r/3); if(readparam(bDex)>=120){ bonus bLongAtkRate,5; bonus bFixedCast,-500; } },{},{}
+22118,Modified_Luk_Boots_,Modified Luk Boots,4,20,,600,,25,,1,0x60000000,63,2,64,,99,1,,{ .@r = getrefine(); bonus bMaxHP,300+(100*(.@r/3)); bonus bMaxSP,30+(10*(.@r/3)); bonus bMdef,5; bonus bCritAtkRate,2*(.@r/3); if(readparam(bLuk)>=120) bonus bCritAtkRate,30; },{},{}
 22122,Para_Team_Boots100,Awakened Eden Group Boots I,4,0,,0,,22,,0,0xFFFFFFFF,63,2,64,,100,1,,{ bonus bAllStats,1; bonus bHPrecovRate,30; bonus bSPrecovRate,14; },{},{}
 22123,Para_Team_Boots115,Awakened Eden Group Boots II,4,0,,0,,25,,0,0xFFFFFFFF,63,2,64,,115,1,,{ bonus bAllStats,1; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}
 22124,Para_Team_Boots130,Awakened Eden Group Boots III,4,0,,0,,27,,0,0xFFFFFFFF,63,2,64,,130,1,,{ bonus bAllStats,2; bonus bHPrecovRate,36; bonus bSPrecovRate,18; },{},{}

+ 14 - 14
db/re/mob_db.txt

@@ -1616,20 +1616,20 @@
 2462,TREASURE_BOX_TE_10,Treasure Chest,Treasure Chest,99,0,1,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,0,0,0,20,0x1000000,0,0,0,0,0,0,0,0,0,0,0,6600,40,658,500,7444,10000,7444,10000,12399,5000,0,0,616,400,12399,500,0,0,0,0
 //2463,E_BOMBPORING
 
-// Old Glast Heim (currently placeholders)
-2464,MG_ZOMBIE,Zombie,Zombie,17,9340,1,117,87,1,38,50,20,3,15,8,17,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2465,MG_WRAITH,Wraith,Wraith,77,23168,1,1190,1191,1,335,396,80,40,62,26,30,55,76,5,10,12,2,1,89,0x3695,300,1816,576,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2466,MG_GHOUL,Ghoul,Ghoul,61,12614,1,583,656,1,216,245,78,5,56,12,19,11,27,10,10,12,1,1,49,0x3885,250,2456,912,504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2467,MG_ARCLOUSE,Arclouse,Arclouze,107,14020,1,1844,2607,1,269,309,101,36,60,73,45,35,140,15,10,12,1,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2468,MG_RAYDRIC,Raydric,Raydric,115,25408,1,20770,2076,1,572,668,89,15,129,87,55,32,76,27,10,12,2,7,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2469,MG_RAYDRIC_ARCHER,Raydric Archer,Raydric Archer,82,30370,1,1049,1332,9,377,395,63,40,53,24,40,15,112,30,10,12,1,6,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2470,MG_KNIGHT_OF_ABYSS,Knight of Abyss,Abysmal Knight,122,332970,1,4779,4013,1,810,1002,102,50,121,55,68,70,97,37,10,12,2,7,87,0x3695,300,1500,500,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2471,MG_KHALITZBURG,Khalitzburg,Khalitzburg,118,109860,1,2862,2147,1,737,833,125,10,121,48,40,31,89,32,10,12,2,1,29,0x3695,350,528,1000,396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2472,MG_BLOODY_KNIGHT,Bloody Knight,Bloody Knight,116,285000,1,7348,6511,3,942,1065,122,50,132,59,70,57,98,45,10,12,2,0,87,0x3695,250,828,528,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2473,MG_M_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2474,MG_F_UNDEAD_KNIGHT,Undead Knight,Undead Knight,133,500000,0,4500,3375,2,751,880,122,62,122,87,54,65,103,65,14,16,2,7,80,0x6203695,170,140,384,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-2475,MG_CORRUPTION_ROOT,Root of Corruption,Root of Corruption,136,3190000,1,240120,187920,3,710,1762,213,123,86,89,120,131,101,92,14,12,2,7,62,0x6280084,170,854,2016,480,120060,607,5500,608,3500,732,5500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4603,1
-2476,MG_AMDARAIS,Amdarias,Amdarias,143,3283990,1,74288,77950,2,8860,10022,32,66,140,159,30,109,300,90,10,12,2,2,63,0x6283695,200,1152,1152,576,37144,617,5500,617,5000,616,2000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4601,1
+// Old Glast Heim
+2464,MG_ZOMBIE,Corrupted Steward,Corrupted Steward,130,135600,1,13332,15998,1,2364,2808,15,15,44,22,77,25,88,22,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,938,1000,727,500,0,0,0,0,0,0,0,0,0,0
+2465,MG_WRAITH,Corrupted Monk,Corrupted Monk,133,100168,1,13998,16796,1,999,3786,80,200,16,26,30,115,79,5,10,12,2,1,89,0x3695,350,1816,576,240,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,2206,100,731,100,747,500,0,0,0,0,0,0,0,0
+2466,MG_GHOUL,Grand Chamberlain in pain,Grand Chamberlain in pain,132,208100,1,14222,17066,1,2965,3631,30,30,88,44,88,21,95,44,10,12,1,1,49,0x3885,300,2456,912,504,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,756,100,2609,100,7751,1000,0,0,0,0,0,0,0,0
+2467,MG_ARCLOUSE,Maggot,Maggot,133,80811,1,22,26,1,1246,2503,121,36,60,103,45,35,172,15,10,12,0,4,42,0x2003095,100,960,500,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,1096,3000,997,100,0,0,0,0,0,0,0,0,0,0
+2468,MG_RAYDRIC,Corrupted Palace Guard,Corrupted Palace Guard,135,184080,1,16306,6944,2,3167,3305,89,15,159,87,66,33,106,27,10,12,1,1,47,0x3095,150,824,780,420,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2316,200,0,0,0,0,0,0,0,0
+2469,MG_RAYDRIC_ARCHER,Wandering Archer,Wandering Archer,136,144370,1,14248,9378,14,3891,4058,63,40,53,24,40,15,156,30,10,12,1,1,47,0x2002085,200,1152,1152,480,0,0,0,0,0,0,0,6609,1000,6610,1000,6608,10,7054,3000,985,50,2330,200,0,0,0,0,0,0,0,0
+2470,MG_KNIGHT_OF_ABYSS,Corrupted Knight of Abyss,Corrupted Abysmal Knight,142,225789,1,18584,16576,2,3200,3322,102,50,121,55,99,70,126,37,10,12,2,1,87,0x6203695,300,1000,500,1000,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,1064,5000,1004,10,2341,200,0,0,0,0,0,0,0,0
+2471,MG_KHALITZBURG,Suffering Khalitzburg,Suffering Khalitzburg,143,236851,1,17542,14662,2,2800,2900,125,10,121,142,55,81,105,32,10,12,2,1,29,0x6203695,350,0,1000,396,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,985,50,1004,10,1110,300,0,0,0,0,0,0,0,0
+2472,MG_BLOODY_KNIGHT,Bloody Knight,Bloody Knight,143,246751,1,20448,21882,2,1881,5081,122,300,132,55,89,151,137,45,10,12,2,1,87,0x6203695,250,828,528,192,0,0,0,0,0,0,0,6609,3000,6610,2000,6608,50,7054,5000,1160,100,1157,100,0,0,0,0,0,0,0,0
+2473,MG_M_UNDEAD_KNIGHT,1st Commander of Destruction,1st Commander of Destruction,145,950033,1,160018,135184,2,3321,4330,80,150,165,82,110,122,154,52,10,12,1,1,49,0x6203695,130,350,864,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1191,10,1163,100,1463,200,0,0,0,0,0,0,4605,1
+2474,MG_F_UNDEAD_KNIGHT,2nd Commander of Destruction,2nd Commander of Destruction,145,848011,1,159672,120398,2,3090,4578,80,180,155,88,110,135,154,59,10,12,1,1,49,0x6203695,120,350,768,480,0,0,0,0,0,0,0,6609,5000,6610,5000,6608,50,1163,100,1145,50,0,0,0,0,0,0,0,0,4606,1
+2475,MG_CORRUPTION_ROOT,Corrupted Soul,Corrupted Soul,150,1820000,1,2199906,2008478,3,3887,7774,333,333,201,20,90,201,201,20,10,12,2,6,62,0x6280084,2000,576,672,480,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,2854,1000,7566,10000,0,0,0,0,0,0,4603,1
+2476,MG_AMDARAIS,Amdarias,Amdarias,150,4290000,1,2291324,2197024,3,5290,9190,30,40,255,39,90,169,166,20,10,12,2,1,89,0x6283695,120,312,1200,432,0,0,0,0,0,0,0,616,5000,617,10000,6607,5000,607,10000,1186,1000,1004,10000,0,0,0,0,0,0,4601,1
 
 2477,NG_WANDER_MAN,Nightmare Wander Man,Nightmare Wander Man,151,130682,1,19814,17228,2,2827,3045,129,16,208,151,76,39,231,50,12,12,1,6,24,0x2003695,100,672,500,192,0,0,0,0,0,0,0,7005,4850,616,2,13015,5,2270,5,21003,1,984,110,1164,10,0,0,0,0,0,0
 2478,NG_RIDEWORD,Nightmare Rideword,Nightmare Rideword,146,103220,1,10500,15840,1,2320,2486,140,59,131,195,58,66,263,5,12,12,0,0,60,0x3695,150,864,500,192,0,0,0,0,0,0,0,1097,4850,1568,5,1569,5,1570,5,1571,5,7015,150,18752,1,0,0,0,0,0,0

+ 79 - 41
db/re/mob_skill_db.txt

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

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

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

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

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

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

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

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

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

+ 1 - 0
npc/re/scripts_athena.conf

@@ -91,6 +91,7 @@ npc: npc/re/merchants/gld_mission_exchange.txt
 npc: npc/re/merchants/hd_refiner.txt
 npc: npc/re/merchants/HorrorToyFactory_merchants.txt
 npc: npc/re/merchants/inn.txt
+npc: npc/re/merchants/OldGlastHeim_merchants.txt
 npc: npc/re/merchants/quivers.txt
 npc: npc/re/merchants/refine.txt
 npc: npc/re/merchants/renters.txt