瀏覽代碼

* Added more Port Malaya NPCs, adapted from Masao's conversion.
* Optimized Sage skills quest and cleaned Rogue skills quest.
* Small edit to mapflag documentation - thanks, Lighta!
* Code by Zopokx:
-- Optimized Eden Quests 56-70 (adapted).
-- Moved "Dollshoi" and "Ponka-Hontas" NPCs (Morroc and Payon Solutions) out of Pre-Renewal directory to npc/quests/mage_solution.txt.
-- Added support for Baby Novices in Novice Skills quest.

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

euphyy 12 年之前
父節點
當前提交
87c832625c

+ 3 - 2
doc/mapflags.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= rAthena Dev Team
 //= rAthena Dev Team
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 20130526
+//= 20130527
 //===== Description: =========================================
 //===== Description: =========================================
 //= List of available mapflags and their functions.
 //= List of available mapflags and their functions.
 //============================================================
 //============================================================
@@ -154,6 +154,7 @@ Disables chatroom and shop creation on a map.
 *nousecart
 *nousecart
 
 
 Disables cart usage on a map.
 Disables cart usage on a map.
+[Not fully implemented.]
 
 
 ---------------------------------------
 ---------------------------------------
 
 
@@ -186,7 +187,7 @@ Disables usage of monster-spawning items on a map:
  - Red Pouch (ID 12024)
  - Red Pouch (ID 12024)
 
 
 Note that when 'mob_warp' is enabled in '/conf/battle/monster.conf' and flag 4 is set, this will
 Note that when 'mob_warp' is enabled in '/conf/battle/monster.conf' and flag 4 is set, this will
-also prevent mobs from being warped onto the map.
+also prevent mobs from being warped onto the map (except slave mobs).
 
 
 ---------------------------------------
 ---------------------------------------
 
 

+ 8 - 42
npc/pre-re/jobs/1-1/mage.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= kobra_k88; L0ne_W0lf
 //= kobra_k88; L0ne_W0lf
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.9
+//= 2.0
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -22,6 +22,7 @@
 //= 1.7a Fixed a "If" in the quest. (bugreport:489) [Samuray22]
 //= 1.7a Fixed a "If" in the quest. (bugreport:489) [Samuray22]
 //= 1.8 Added Quest Log commands. [L0ne_W0lf]
 //= 1.8 Added Quest Log commands. [L0ne_W0lf]
 //= 1.9 Fixed an issue with completequest by adding checkquest. [Kisuka]
 //= 1.9 Fixed an issue with completequest by adding checkquest. [Kisuka]
+//= 2.0 Moved "Dollshoi" and "Ponka-Hontas" NPCs. [Euphy]
 //============================================================ 
 //============================================================ 
 
 
 geffen_in,164,124,4	script	Mage Guildsman	123,{
 geffen_in,164,124,4	script	Mage Guildsman	123,{
@@ -596,47 +597,12 @@ geffen_in,164,112,4	script	Mixing Machine	111,{
 	close;
 	close;
 }
 }
 
 
-pay_arche,122,100,0	script	Dollshoi	88,{
-	mes "[Mage Guildsman]";
-	mes "You want a Solution? Hmm, give me 50 Zeny and at least 1 Empty Test Tube.";
-	next;
-	if (select("Alright, Deal.:Nah, forget it.") == 1) {
-		mes "[Mage Guildsman]";
-		if (Zeny < 50) {
-			mes "Hey! You don't have enough money to cover my 50 Zeny charge.";
-			close;
-		}
-		if (countitem(1092) == 0) {
-			mes "You can't carry solutions without a bottle! Bring me an Empty Test Tube.";
-			close;
-		}
-		delitem 1092,1; //Empty_Cylinder
-		set zeny,zeny-50;
-		getitem 1089,1; //Payon_Potion
-	}
-	close;
-}
-
-moc_ruins,91,150,0	script	Ponka-Hontas	93,{
-	mes "[Mage Guildsman]";
-	mes "Would you like a Solution? Then please give me 50 Zeny and at least 1 Empty Testtube.";
-	next;
-	if (select("Alright, Deal.:Nah, forget it.") == 1) {
-		mes "[Mage Guildsman]";
-		if (zeny < 50) {
-			mes "I'm sorry, but you don't have enough money to cover the 50 Zeny fee.";
-			close;
-		}
-		if (countitem(1092) == 0) {
-			mes "You can't carry liquids without using a bottle. Bring an Empty Test Tube the next time you see me.";
-			close;
-		}
-		delitem 1092,1; //Empty_Cylinder
-		set zeny,zeny-50;
-		getitem 1088,1; //Morocc_Potion
-	}
-	close;
-}
+// The Morroc Solution and Payon Solution traders
+// are also used in the Sage skill quests, and have
+// been moved to npc/quests/mage_solution.txt.
+//
+// pay_arche,122,100,0	script	Dollshoi	88,{}
+// moc_ruins,91,150,0	script	Ponka-Hontas	93,{}
 
 
 geffen_in,177,112,4	script	Bookshelf	111,{
 geffen_in,177,112,4	script	Bookshelf	111,{
 	mes "[Guide Book]";
 	mes "[Guide Book]";

+ 57 - 0
npc/quests/mage_solution.txt

@@ -0,0 +1,57 @@
+//===== rAthena Script ======================================= 
+//= Mage Solutions
+//===== By: ================================================== 
+//= kobra_k88; L0ne_W0lf
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Traders for Morroc Solution and Payon Solution, used in
+//= the Sage skill quests and the Pre-Renewal Mage job quest.
+//===== Additional Comments: ================================= 
+//= 1.0 Split from Pre-Renewal Mage job quest. [Zopokx]
+//============================================================ 
+
+pay_arche,122,100,0	script	Dollshoi	88,{
+	mes "[Mage Guildsman]";
+	mes "You want a Solution? Hmm, give me 50 Zeny and at least 1 Empty Test Tube.";
+	next;
+	if (select("Alright, Deal.:Nah, forget it.") == 1) {
+		mes "[Mage Guildsman]";
+		if (Zeny < 50) {
+			mes "Hey! You don't have enough money to cover my 50 Zeny charge.";
+			close;
+		}
+		if (countitem(1092) == 0) {
+			mes "You can't carry solutions without a bottle! Bring me an Empty Test Tube.";
+			close;
+		}
+		delitem 1092,1; //Empty_Cylinder
+		set zeny,zeny-50;
+		getitem 1089,1; //Payon_Potion
+	}
+	close;
+}
+
+moc_ruins,91,150,0	script	Ponka-Hontas	93,{
+	mes "[Mage Guildsman]";
+	mes "Would you like a Solution? Then please give me 50 Zeny and at least 1 Empty Test Tube.";
+	next;
+	if (select("Alright, Deal.:Nah, forget it.") == 1) {
+		mes "[Mage Guildsman]";
+		if (zeny < 50) {
+			mes "I'm sorry, but you don't have enough money to cover the 50 Zeny fee.";
+			close;
+		}
+		if (countitem(1092) == 0) {
+			mes "You can't carry liquids without using a bottle. Bring an Empty Test Tube the next time you see me.";
+			close;
+		}
+		delitem 1092,1; //Empty_Cylinder
+		set zeny,zeny-50;
+		getitem 1088,1; //Morocc_Potion
+	}
+	close;
+}

+ 4 - 3
npc/quests/skills/novice_skills.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= kobra_k88
 //= kobra_k88
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.7
+//= 1.8
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -12,10 +12,11 @@
 //= 1.5 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
 //= 1.5 Rescripted to Aegis 10.3 stadards. [L0ne_W0lf]
 //= 1.6 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 1.6 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 1.7 Updated to latest available official file. [Masao]
 //= 1.7 Updated to latest available official file. [Masao]
+//= 1.8 Added Baby support. [Zopokx]
 //============================================================ 
 //============================================================ 
 
 
 prt_in,234,133,4	script	Nami	66,{
 prt_in,234,133,4	script	Nami	66,{
-	if ((Class == Job_Novice) && (JobLevel > 3 || BaseLevel > 11) && (skill_nov < 3)) {
+	if ((Class == Job_Novice || Class == Job_Baby) && (JobLevel > 3 || BaseLevel > 11) && (skill_nov < 3)) {
 		mes "[Nami]";
 		mes "[Nami]";
 		mes "Hello!";
 		mes "Hello!";
 		mes "I want to be a nurse so bad!";
 		mes "I want to be a nurse so bad!";
@@ -189,7 +190,7 @@ prt_in,234,133,4	script	Nami	66,{
 }
 }
 
 
 prt_in,73,87,4	script	Chivalry Member	65,{
 prt_in,73,87,4	script	Chivalry Member	65,{
-	if ((Class == Job_Novice) && (JobLevel > 6) && ((skill_nov >= 3) && (skill_nov <= 5))) {
+	if ((Class == Job_Novice || Class == Job_Baby) && (JobLevel > 6) && ((skill_nov >= 3) && (skill_nov <= 5))) {
 		mes "[Bulma]";
 		mes "[Bulma]";
 		mes "Yeah. . . I look great. . .";
 		mes "Yeah. . . I look great. . .";
 		mes "I am a knight in the knight's";
 		mes "I am a knight in the knight's";

+ 44 - 184
npc/quests/skills/rogue_skills.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= Lupus, Reddozen
 //= Lupus, Reddozen
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.7
+//= 1.8
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -16,6 +16,7 @@
 //= 1.6a Fixed(?) antoher problem (NPCs not disabling) hopefully. [L0ne_W0lf]
 //= 1.6a Fixed(?) antoher problem (NPCs not disabling) hopefully. [L0ne_W0lf]
 //= 1.6b Corrected a Typo error with "rouge". (bugreport:909) [Samuray22]
 //= 1.6b Corrected a Typo error with "rouge". (bugreport:909) [Samuray22]
 //= 1.7 Replaced effect numerics with constants. [L0ne_W0lf]
 //= 1.7 Replaced effect numerics with constants. [L0ne_W0lf]
+//= 1.8 Some cleaning. [Euphy]
 //============================================================
 //============================================================
 
 
 in_rogue,359,177,0	script	#killershow01	-1,{
 in_rogue,359,177,0	script	#killershow01	-1,{
@@ -85,80 +86,28 @@ OnTouch:
 		mes "yellow. If he intends to go";
 		mes "yellow. If he intends to go";
 		mes "backward, it will be pale red.";
 		mes "backward, it will be pale red.";
 		next;
 		next;
-		while(1) {
-			if (.@lim_1 == 10) {
-				break;
+		setarray .@Effects[1],EF_CHANGECOLD,EF_CHANGEWIND,EF_CHANGEEARTH;
+		for(set .@lim_1,0; .@lim_1<10; set .@lim_1,.@lim_1+1) {
+			set .@move_1,rand(1,3);
+			specialeffect .@Effects[.@move_1];
+			if (select("Block him to the Left:Block him to the Right:Block his Retreat") == .@move_1) {
+				mes "^3355FFThe killer remains";
+				mes "unable to move and looks";
+				mes "incredibly confused! Right";
+				mes "now, you're using the Close";
+				mes "Confine skill perfectly!^000000";
+				specialeffect EF_POTION1;
+				specialeffect2 EF_POTION7;
 			}
 			}
 			else {
 			else {
-				set .@lim_1,.@lim_1 + 1;
-				set .@move_1,rand(1,3);
-				if (.@move_1 == 1) {
-					specialeffect EF_CHANGECOLD;
-					if (select("Block him to the Left:Block him to the Right:Block his Retreat") == 1) {
-						mes "^3355FFThe killer remains";
-						mes "unable to move and looks";
-						mes "incredibly confused! Right";
-						mes "now, you're using the Close";
-						mes "Confine skill perfectly!^000000";
-						specialeffect EF_POTION1;
-						specialeffect2 EF_POTION7;
-						next;
-					}
-					else {
-						mes "^3355FFWait--!";
-						mes "For some reason,";
-						mes "you sense that's not";
-						mes "the direction the killer";
-						mes "is moving at this moment.";
-						mes "You naturally correct yourself.^000000";
-						next;
-					}
-				}
-				else if (.@move_1 == 2) {
-					specialeffect EF_CHANGEWIND;
-					if (select("Block him at the Left:Block him at the Right:Block him at the back") == 2) {
-						mes "^3355FFThe killer remains";
-						mes "unable to move and looks";
-						mes "incredibly confused! Right";
-						mes "now, you're using the Close";
-						mes "Confine skill perfectly!^000000";
-						specialeffect EF_POTION1;
-						specialeffect2 EF_POTION7;
-						next;
-					}
-					else {
-						mes "^3355FFWait--!";
-						mes "For some reason,";
-						mes "you sense that's not";
-						mes "the direction the killer";
-						mes "is moving at this moment.";
-						mes "You naturally correct yourself.^000000";
-						next;
-					}
-				}
-				else if (.@move_1 == 3) {
-					specialeffect EF_CHANGEEARTH;
-					if (select("Block him at the Left:Block him at the Right:Block him at the back") == 3) {
-						mes "^3355FFThe killer remains";
-						mes "unable to move and looks";
-						mes "incredibly confused! Right";
-						mes "now, you're using the Close";
-						mes "Confine skill perfectly!^000000";
-						specialeffect EF_POTION1;
-						specialeffect2 EF_POTION7;
-						next;
-					}
-					else {
-						mes "^3355FFWait--!";
-						mes "For some reason,";
-						mes "you sense that's not";
-						mes "the direction the killer";
-						mes "is moving at this moment.";
-						mes "You naturally correct yourself.^000000";
-						next;
-					}
-				}
+				mes "^3355FFWait--!";
+				mes "For some reason,";
+				mes "you sense that's not";
+				mes "the direction the killer";
+				mes "is moving at this moment.";
+				mes "You naturally correct yourself.^000000";
 			}
 			}
+			next;
 		}
 		}
 		mes "^3355FFYou successfully";
 		mes "^3355FFYou successfully";
 		mes "retrieved the priceless";
 		mes "retrieved the priceless";
@@ -1207,58 +1156,16 @@ OnDisable:
 prt_are01,149,162,0	script	Kienna#1st	700,1,1,{
 prt_are01,149,162,0	script	Kienna#1st	700,1,1,{
 	end;
 	end;
 OnTouch:
 OnTouch:
-	callfunc "F_Kienna","1st";
-	end;
-}
-
-prt_are01,136,150,0	script	Kienna#2nd	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","2nd";
-	end;
-}
-
-prt_are01,150,138,0	script	Kienna#3rd	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","3rd";
-	end;
-}
-
-prt_are01,163,147,0	script	Kienna#4th	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","4th";
-	end;
-}
-
-prt_are01,134,140,0	script	Kienna#5th	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","5th";
-	end;
-}
-
-prt_are01,161,140,0	script	Kienna#6th	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","6th";
-	end;
-}
-
-prt_are01,161,160,0	script	Kienna#7th	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","7th";
-	end;
-}
-
-prt_are01,138,159,0	script	Kienna#8th	700,1,1,{
-	end;
-OnTouch:
-	callfunc "F_Kienna","8th";
+	callfunc "F_Kienna",strnpcinfo(2);
 	end;
 	end;
 }
 }
+prt_are01,136,150,0	duplicate(Kienna#1st)	Kienna#2nd	700,1,1
+prt_are01,150,138,0	duplicate(Kienna#1st)	Kienna#3rd	700,1,1
+prt_are01,163,147,0	duplicate(Kienna#1st)	Kienna#4th	700,1,1
+prt_are01,134,140,0	duplicate(Kienna#1st)	Kienna#5th	700,1,1
+prt_are01,161,140,0	duplicate(Kienna#1st)	Kienna#6th	700,1,1
+prt_are01,161,160,0	duplicate(Kienna#1st)	Kienna#7th	700,1,1
+prt_are01,138,159,0	duplicate(Kienna#1st)	Kienna#8th	700,1,1
 
 
 function	script	F_Kienna	{
 function	script	F_Kienna	{
 	if (ROG_SK == 6) {
 	if (ROG_SK == 6) {
@@ -1272,71 +1179,24 @@ function	script	F_Kienna	{
 		mes "immobilizing me. Get ready~";
 		mes "immobilizing me. Get ready~";
 		set ROG_SK,7;
 		set ROG_SK,7;
 		next;
 		next;
-		while(1) {
-			if (.@lim_1 == 10) {
-				break;
+		for(set .@lim_1,0; .@lim_1<10; set .@lim_1,.@lim_1+1) {
+			set .@move_1,rand(1,3);
+			if (select("Block her to the Left:Block her to the Right:Block her retreat") == .@move_1) {
+				mes "[Kienna]";
+				mes "Huh...?";
+				mes "You blocked me!";
+				mes "Very nice work~";
+				specialeffect EF_POTION1;
+				specialeffect2 EF_POTION7;
+				set .@suc_1,.@suc_1 + 1;
 			}
 			}
 			else {
 			else {
-				set .@lim_1,.@lim_1 + 1;
-				set .@move_1,rand(1,3);
-				if (.@move_1 == 1) {
-					if (select("Block her to the Left:Block her to the Right:Block her retreat") == 1) {
-						mes "[Kienna]";
-						mes "Huh...?";
-						mes "You blocked me!";
-						mes "Very nice work~";
-						specialeffect 204; //EF_POTION1
-						specialeffect2 210; // EF_POTION7
-						set .@suc_1,.@suc_1 + 1;
-						next;
-					}
-					else {
-						mes "[Kienna]";
-						mes "Sorry, but I wasn't";
-						mes "moving in that direction.";
-						mes "Your block attempt failed...";
-						next;
-					}
-				}
-				else if (.@move_1 == 2) {
-					if (select("Block her to the Left:Block her to the Right:Block her retreat") == 2) {
-						mes "[Kienna]";
-						mes "Huh...?";
-						mes "You blocked me!";
-						mes "Very nice work~";
-						specialeffect 204; //EF_POTION1
-						specialeffect2 210; // EF_POTION7
-						set .@suc_1,.@suc_1 + 1;
-						next;
-					}
-					else {
-						mes "[Kienna]";
-						mes "Sorry, but I wasn't";
-						mes "moving in that direction.";
-						mes "Your block attempt failed...";
-						next;
-					}
-				}
-				else if (.@move_1 == 3) {
-					if (select("Block her to the Left:Block her to the Right:Block her retreat") == 3) {
-						mes "[Kienna]";
-						mes "Huh...?";
-						mes "You blocked me!";
-						mes "Very nice work~";
-						specialeffect 204; //EF_POTION1
-						specialeffect2 210; // EF_POTION7
-						set .@suc_1,.@suc_1 + 1;
-						next;
-					}
-					else {
-						mes "[Kienna]";
-						mes "Sorry, but I wasn't";
-						mes "moving in that direction.";
-						mes "Your block attempt failed...";
-						next;
-					}
-				}
+				mes "[Kienna]";
+				mes "Sorry, but I wasn't";
+				mes "moving in that direction.";
+				mes "Your block attempt failed...";
 			}
 			}
+			next;
 		}
 		}
 		mes "[Kienna]";
 		mes "[Kienna]";
 		mes "Alright, we're done";
 		mes "Alright, we're done";

+ 402 - 1032
npc/quests/skills/sage_skills.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= Lupus, Reddozen
 //= Lupus, Reddozen
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.4
+//= 1.5
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -11,660 +11,61 @@
 //= Quests for skills: Create Converter, Elemental Change
 //= Quests for skills: Create Converter, Elemental Change
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= 1.4 Rescripted to Aegis 10.3 standards. [5511]
 //= 1.4 Rescripted to Aegis 10.3 standards. [5511]
+//= 1.5 Optimized. [Euphy]
 //============================================================
 //============================================================
 
 
 yuno_in03,176,24,3	script	Mischna	755,{
 yuno_in03,176,24,3	script	Mischna	755,{
-	if(BaseJob == Job_Sage) {
-		if(SAG_SK == 100) {
-			if(getskilllv("SA_ELEMENTFIRE") == 0 && getskilllv("SA_ELEMENTGROUND") == 0 && getskilllv("SA_ELEMENTWIND") == 0 && getskilllv("SA_ELEMENTWATER") == 0 && getskilllv("SA_CREATECON") == 0) {
-				mes "[Mishuna]";
-				mes "Ah, you must have";
-				mes "forgotten what I taught";
-				mes "you somehow. Perhaps";
-				mes "you lost your copy of the";
-				mes "skill scroll I gave you? No";
-				mes "matter, I'll help you remember.";
-				next;
-				mes "[Mishuna]";
-				mes "You'll be given the chance to";
-				mes "choose which kind of ^FF0000Elemental";
-				mes "Change^000000 skill that you want, even one that you didn't previously";
-				mes "learn, so long as you fulfill";
-				mes "the skill's requirements.";
-				next;
-				mes "[Mishuna]";
-				mes "Keep in mind that once";
-				mes "you learn your Elemental";
-				mes "Change skill, you won't be";
-				mes "able to change it. Now, which";
-				mes "skill would you like to learn?";
-				next;
-				while(1) {
-					switch(select("Fire Elemental Change:Earth Elemental Change:Wind Elemental Change:Water Elemental Change")) {
-					case 1:
-						if (getskilllv("SA_FLAMELAUNCHER") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Blaze^000000, the skill";
-							mes "required for ^FF0000Fire Elemental";
-							mes "Change^000000. You'll need to learn";
-							mes "Endow Blaze or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Fire";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Fire Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTFIRE",1,0;
-							skill "SA_CREATECON",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 2:
-						if (getskilllv("SA_SEISMICWEAPON") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Quake^000000, the skill";
-							mes "required for ^FF0000Earth Elemental";
-							mes "Change^000000. You'll need to learn";
-							mes "Endow Quake or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Earth";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Earth Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTGROUND",1,0;
-							skill "SA_CREATECON",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 3:
-						if (getskilllv("SA_LIGHTNINGLOADER") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Tornado^000000, the";
-							mes "skill required for ^FF0000Wind Elemental Change^000000. You must learn Endow";
-							mes "Tornado or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Wind";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Wind Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTWIND",1,0;
-							skill "SA_CREATECON",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 4:
-						if (getskilllv("SA_FROSTWEAPON") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Tsunami^000000, the";
-							mes "skill required for ^FF0000Water Elemental Change^000000. You must learn Endow";
-							mes "Tsunami or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Water";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Water Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTWATER",1,0;
-							skill "SA_CREATECON",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					}
-				}
-			}
-			else if(getskilllv("SA_ELEMENTFIRE") == 0 && getskilllv("SA_ELEMENTGROUND") == 0 && getskilllv("SA_ELEMENTWIND") == 0 && getskilllv("SA_ELEMENTWATER") == 0) {
-				mes "[Mishuna]";
-				mes "Ah, you must have";
-				mes "forgotten what I taught";
-				mes "you somehow. Perhaps";
-				mes "you lost your copy of the";
-				mes "skill scroll I gave you? No";
-				mes "matter, I'll help you remember.";
-				next;
-				mes "[Mishuna]";
-				mes "You'll be given the chance to";
-				mes "choose which kind of ^FF0000Elemental";
-				mes "Change^000000 skill that you want, even one that you didn't previously";
-				mes "learn, so long as you fulfill";
-				mes "the skill's requirements.";
-				next;
-				mes "[Mishuna]";
-				mes "Keep in mind that once";
-				mes "you learn your Elemental";
-				mes "Change skill, you won't be";
-				mes "able to change it. Now, which";
-				mes "skill would you like to learn?";
-				next;
-				while(1) {
-					switch(select("Fire Elemental Change:Earth Elemental Change:Wind Elemental Change:Water Elemental Change")) {
-					case 1:
-						if (getskilllv("SA_FLAMELAUNCHER") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Blaze^000000, the skill";
-							mes "required for ^FF0000Fire Elemental";
-							mes "Change^000000. You'll need to learn";
-							mes "Endow Blaze or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Fire";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Fire Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTFIRE",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 2:
-						if (getskilllv("SA_SEISMICWEAPON") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Quake^000000, the skill";
-							mes "required for ^FF0000Earth Elemental";
-							mes "Change^000000. You'll need to learn";
-							mes "Endow Quake or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Earth";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Earth Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTGROUND",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 3:
-						if (getskilllv("SA_LIGHTNINGLOADER") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Tornado^000000, the";
-							mes "skill required for ^FF0000Wind Elemental Change^000000. You must learn Endow";
-							mes "Tornado or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Wind";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Wind Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTWIND",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					case 4:
-						if (getskilllv("SA_FROSTWEAPON") == 0) {
-							mes "[Mishuna]";
-							mes "I'm sorry, but you haven't";
-							mes "learned ^FF0000Endow Tsunami^000000, the";
-							mes "skill required for ^FF0000Water Elemental Change^000000. You must learn Endow";
-							mes "Tsunami or select another";
-							mes "Elemental Change skill.";
-							next;
-						}
-						else {
-							mes "[Mishuna]";
-							mes "Very well, I shall";
-							mes "teach you the ^FF0000Water";
-							mes "Elemental Change^000000 skill";
-							mes "and the ^FF0000Elemental Converter";
-							mes "Creation skill^000000. Please remain";
-							mes "still while I chant this spell.";
-							next;
-							mes "[Mishuna]";
-							mes "%$#@!#$% Yap~~";
-							specialeffect2 EF_RUWACH;
-							next;
-							mes "[Mishuna]";
-							mes "Yap!";
-							specialeffect2 EF_BRANDISHSPEAR;
-							next;
-							mes "^3355FFYou've successfully";
-							mes "learned the Water Elemental";
-							mes "Change skill and the Elemental";
-							mes "Converter Creation skill.^000000";
-							skill "SA_ELEMENTWATER",1,0;
-							next;
-							mes "[Mishuna]";
-							mes "Ah, you've learned these";
-							mes "skills as quickly as I thought";
-							mes "you would. Very well then, ";
-							mes "I hope you adeptly use these";
-							mes "talents for the right purposes.";
-							mes "Farewell for now, "+strcharinfo(0)+".";
-							close;
-						}
-						break;
-					}
-				}
-			}
-			else if(getskilllv("SA_CREATECON") == 0) {
-				mes "[Mishuna]";
-				mes "Ah, you must have";
-				mes "forgotten what I taught";
-				mes "you somehow. Perhaps";
-				mes "you lost your copy of the";
-				mes "skill scroll I gave you? No";
-				mes "matter, I'll help you remember.";
-				next;
-				mes "[Mishuna]";
-				mes "Alright, I'm going";
-				mes "to cast a spell that";
-				mes "will help you remember";
-				mes "the skills you forgot.";
-				mes "Don't move, and try to";
-				mes "stay as still as possible...";
-				next;
-				mes "[Mishuna]";
-				mes "%$#@!#$% Yap~~";
-				specialeffect2 EF_RUWACH;
-				next;
-				mes "[Mishuna]";
-				mes "Yap!";
-				specialeffect2 EF_BRANDISHSPEAR;
-				next;
-				mes "^3355FFYou successfully recalled";
-				mes "the Elemental Coverter";
-				mes "Creation skill and are";
-				mes "able to use it again.^000000";
-				skill "SA_CREATECON",1,0;
-				next;
-				mes "[Mishuna]";
-				mes "Ah, you've learned these";
-				mes "skills as quickly as I thought";
-				mes "you would. Very well then, ";
-				mes "I hope you adeptly use these";
-				mes "talents for the right purposes.";
-				mes "Farewell for now, "+strcharinfo(0)+".";
-				close;
-			}
-			else {
-				mes "[Mishuna]";
-				mes "If you have any Sage or";
-				mes "Scholar friends who haven't";
-				mes "learned the skills from Sir";
-				mes "Barmundt's scrolls, then";
-				mes "please refer them to me.";
-				next;
-				mes "[Mishuna]";
-				mes "I trust that you are";
-				mes "finding that these";
-				mes "element based skills";
-				mes "are very useful in battle.";
-				mes "Knowledge truly equates";
-				mes "to power in the long run...";
-				close;
-			}
-		}
-		else if(SAG_SK == 0) {
-			mes "[Mishuna]";
-			mes "Good day, I'm Mishuna, one";
-			mes "of the instructors here in the";
-			mes "Schweicherbil Magic Academy.";
-			mes "How may I be of service?";
-			next;
-			select("I seek new knowledge.");
-			mes "[Mishuna]";
-			mes "Ah, you must be "+strcharinfo(0)+".";
-			mes "I've looked forward to meeting";
-			mes "you. In the noble pursuit of";
-			mes "knowledge, might I suggest";
-			mes "reading the recently restored";
-			mes "scrolls of Sir Barmundt?";
-			next;
-			mes "[Mishuna]";
-			mes "Sir Barmundt's scrolls contain";
-			mes "knowledge about the 4 elements,";
-			mes "which are Fire, Water, Earth, and Wind. The knowledge of these";
-			mes "scrolls can be applied in the";
-			mes "use of 2 new Sage skills.";
-			next;
-			mes "[Mishuna]";
-			mes "The first is called ^FF0000Elemental";
-			mes "Change^000000, which enables you";
-			mes "to change a monster's attribute";
-			mes "according to the specific element^FFFFFF ^000000 of the Elemental Change skill";
-			mes "that you have learned.";
-			next;
-			mes "[Mishuna]";
-			mes "The second is called";
-			mes "Elemental Converter Creation,";
-			mes "which enables you to create";
-			mes "converter items that are required^FFFFFF ^000000 to use the Elemental Change skill.";
-			next;
-			mes "[Mishuna]";
-			mes "Although the knowledge of";
-			mes "these two skills has been";
-			mes "lost for years, we've finally";
-			mes "been able to recover most";
-			mes "of it. So, do you think you're";
-			mes "ready to learn these skills?";
-			next;
-			if(select("Maybe later.:Yes, I am.") == 1) {
-				mes "[Mishuna]";
-				mes "Ah, you must be busy right";
-				mes "now. No problem, just come";
-				mes "back when you think you're";
-				mes "ready to learn. Well then,";
-				mes "farewell and have a good day~";
-				close;
-			}
-			mes "[Mishuna]";
-			mes "Very well, then. First, you";
-			mes "must learn the Elemental";
-			mes "Coverter Creation skill, which";
-			mes "is essential to learning the";
-			mes "Elemental Change skill.";
-			next;
-			mes "[Mishuna]";
-			mes "Please bring the required";
-			mes "materials so that we can";
-			mes "construct a basic elemental";
-			mes "converter in order for you to";
-			mes "learn the skill. Let's see,";
-			mes "you will need to bring...";
-			next;
+	if(BaseJob != Job_Sage) {
+		mes "[Mishuna]";
+		mes "Good day, I'm Mishuna, one";
+		mes "of the instructors here in the";
+		mes "Schweicherbil Magic Academy.";
+		mes "By any chance, are you a Sage";
+		mes "or Scholar? Oh... You're not?";
+		next;
+		mes "[Mishuna]";
+		mes "Oh, that's too bad.";
+		mes "My apologies. But if you";
+		mes "happen to know any, or meet";
+		mes "any in your journeys, please";
+		mes "direct them to me if they haven't heard of the lessons I provide.";
+		next;
+		mes "[Mishuna]";
+		mes "I'm sorry to bother";
+		mes "you, and I thank you";
+		mes "for your time. Good";
+		mes "day to you, adventurer.";
+		close;
+	}
+	if(SAG_SK == 100) {
+		set .@Element, getskilllv("SA_ELEMENTFIRE") + getskilllv("SA_ELEMENTGROUND") + getskilllv("SA_ELEMENTWIND") + getskilllv("SA_ELEMENTWATER");
+		set .@Convert, getskilllv("SA_CREATECON");
+		if(.@Element && .@Convert) {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "^ff00007 Horns^000000,";
-			mes "^ff000012 Rainbow Shells^000000,";
-			mes "^ff000010 Snail's Shells^000000,";
-			mes "^ff00004 Blank Scrolls^000000 and";
-			mes "^ff000010 Scorpion Tails^000000.^000000";
+			mes "If you have any Sage or";
+			mes "Scholar friends who haven't";
+			mes "learned the skills from Sir";
+			mes "Barmundt's scrolls, then";
+			mes "please refer them to me.";
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "Alright, I shall be";
-			mes "nexting here for your";
-			mes "return. Remember that we";
-			mes "need these items to create";
-			mes "a converter so that you can^FFFFFF ^000000 learn the skill from my example...";
-			set SAG_SK,1;
+			mes "I trust that you are";
+			mes "finding that these";
+			mes "element based skills";
+			mes "are very useful in battle.";
+			mes "Knowledge truly equates";
+			mes "to power in the long run...";
 			close;
 			close;
 		}
 		}
-		else if(SAG_SK == 1) {
-			if (countitem(904) < 10 || countitem(947) < 7 || countitem(1013) < 12 || countitem(946) < 10 || countitem(7433) < 4) {
-				mes "[Mishuna]";
-				mes "Hm, you still haven't";
-				mes "gathered all of the materials";
-				mes "required to create an elemental";
-				mes "coverter. Let me remind you";
-				mes "what to bring so that you";
-				mes "don't forget next time...";
-				next;
-				mes "[Mishuna]";
-				mes "^ff00007 Horns^000000,";
-				mes "^ff000012 Rainbow Shells^000000,";
-				mes "^ff000010 Snail's Shells^000000,";
-				mes "^ff00004 Blank Scrolls^000000 and";
-				mes "^ff000010 Scorpion Tails^000000.^000000";
-				next;
-				mes "[Mishuna]";
-				mes "Don't forget that we need";
-				mes "all of these items to create";
-				mes "a converter so that you can";
-				mes "learn the Elemental Converter";
-				mes "Creation skill by watching";
-				mes "me demonstrate it for you.";
-				close;
-			}
-			else {
-				mes "[Mishuna]";
-				mes "Great, you brought everything.";
-				mes "Now, let me explain the skill.";
-				mes "The skills you learn as a Sage";
-				mes "determine what kind of elemental converters that you can craft.";
-				next;
-				mes "[Mishuna]";
-				mes "The ^FF0000Endow Blaze^000000 skill enables";
-				mes "you to create Fire elemental";
-				mes "converters. The ^FF0000Endow Quake^000000";
-				mes "skill enables the creation";
-				mes "of Earth elemental converters.";
-				next;
-				mes "[Mishuna]";
-				mes "^FF0000Endow Tornado^000000 enables";
-				mes "the creation of Wind elemental";
-				mes "converters, and ^FF0000Endow Tsunami^000000";
-				mes "enables the creation of Water";
-				mes "elemental converters. That";
-				mes "all makes sense, right?";
-				next;
-				mes "[Mishuna]";
-				mes "Now, your elemental coverter";
-				mes "creation success rate depends";
-				mes "on the level of the Endow Blaze, Endow Quake, Endow Tornado,";
-				mes "or Endow Tsunami skills, and";
-				mes "your abilities.";
-				next;
-				mes "[Mishuna]";
-				mes "Now, please take this copy";
-				mes "of Barmundt's scroll, and use";
-				mes "it as a reference when you try";
-				mes "to craft elemental converters";
-				mes "when you use the Elemental";
-				mes "Converter Creation skill.";
-				next;
-				mes "^3355FFYou have learned the";
-				mes "Elemental Converter";
-				mes "Creation skill by reviewing";
-				mes "your copy of Barmundt's scroll.^000000";
-				specialeffect2 EF_ABSORBSPIRITS;
-				delitem 904,10; // Scorpion_Tail
-				delitem 947,7; // Horn
-				delitem 1013,12; // Rainbow_Shell
-				delitem 946,10; // Snail's_Shell
-				delitem 7433,4; // Blank_Scroll
-				set SAG_SK,2;
-				skill "SA_CREATECON",1,0;
-				next;
-				mes "[Mishuna]";
-				mes "Wow, "+strcharinfo(0)+"!";
-				mes "You learned that skill";
-				mes "really quickly! No wonder";
-				mes "people say that you're one";
-				mes "of the best Sages around!";
-				next;
-				mes "[Mishuna]";
-				mes "Now you're ready to";
-				mes "learn the other skill,";
-				mes "Elemental Change. Alright,";
-				mes "I need to prepare a few things";
-				mes "for this lesson, so we'll meet";
-				mes "and discuss this later, okay?";
-				close;
-			}
-		}
-		else if(SAG_SK == 2) {
-			if(getskilllv("SA_CREATECON") == 0) {
-				skill "SA_CREATECON",1,0;
-				mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
-				next;
-			}
+		mes "[Mishuna]";
+		mes "Ah, you must have";
+		mes "forgotten what I taught";
+		mes "you somehow. Perhaps";
+		mes "you lost your copy of the";
+		mes "skill scroll I gave you? No";
+		mes "matter, I'll help you remember.";
+		next;
+		if(.@Element == 0) {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
 			mes "You'll be given the chance to";
 			mes "You'll be given the chance to";
 			mes "choose which kind of ^FF0000Elemental";
 			mes "choose which kind of ^FF0000Elemental";
@@ -679,435 +80,404 @@ yuno_in03,176,24,3	script	Mischna	755,{
 			mes "able to change it. Now, which";
 			mes "able to change it. Now, which";
 			mes "skill would you like to learn?";
 			mes "skill would you like to learn?";
 			next;
 			next;
+			setarray .@ReqSkill[0],280,283,282,281;
+			setarray .@ReqSkill$[0],"Blaze","Quake","Tornado","Tsunami";
+			setarray .@Skill[0],1018,1017,1019,1008;
+			setarray .@Skill$[0],"Fire","Earth","Wind","Water";
 			while(1) {
 			while(1) {
-				switch(select("Fire Elemental Change:Earth Elemental Change:Wind Elemental Change:Water Elemental Change")) {
-				case 1:
-					if(getskilllv("SA_FLAMELAUNCHER") == 0) {
-						mes "[Mishuna]";
-						mes "I'm sorry, but you have not";
-						mes "learned ^FF0000Endow Blaze^000000, the skill";
-						mes "required for the Fire Elemental Change skill. Please learn Endow";
-						mes "Blaze or select another Elemental Change skill for me to teach you.";
-						next;
-					}
-					else {
-						mes "[Mishuna]";
-						mes "Very well, then. Please";
-						mes "bring the following items";
-						mes "so that you can learn the";
-						mes "Fire Elemental Change skill.";
-						next;
-						mes "[Mishuna]";
-						mes "^FF000020 Red Bloods^000000,";
-						mes "^FF00001 Payon Solution^000000 and";
-						mes "^FF00001 Morroc Solution^000000. Please";
-						mes "return to me once you have";
-						mes "all the materials ready.";
-						set SAG_SK,10;
-						close;
-					}
-					break;
-				case 2:
-					if(getskilllv("SA_SEISMICWEAPON") == 0) {
-						mes "[Mishuna]";
-						mes "I'm sorry, but you have not";
-						mes "learned ^FF0000Endow Quake^000000, the skill";
-						mes "required for the Earth Elemental Change skill. Please learn Endow";
-						mes "Quake or select another Elemental Change skill for me to teach you.";
-						next;
-					}
-					else {
-						mes "[Mishuna]";
-						mes "Very well, then. Please";
-						mes "bring the following items";
-						mes "so that you can learn the";
-						mes "Earth Elemental Change skill.";
-						next;
-						mes "[Mishuna]";
-						mes "^ff000020 Green Lives^000000,";
-						mes "^ff00001 Payon Solution^000000 and";
-						mes "^ff00001 Morroc Solution^000000. Please";
-						mes "return to me once you have";
-						mes "all the materials ready.";
-						set SAG_SK,20;
-						close;
-					}
-					break;
-				case 3:
-					if(getskilllv("SA_LIGHTNINGLOADER") == 0) {
-						mes "[Mishuna]";
-						mes "I'm sorry, but you have not learned ^FF0000Endow Tornado^000000, the skill";
-						mes "required for the Wind Elemental Change skill. Please learn Endow";
-						mes "Tornado or pick another Elemental Change skill for me to teach you.";
-						next;
-					}
-					else {
-						mes "[Mishuna]";
-						mes "Very well, then. Please";
-						mes "bring the following items";
-						mes "so that you can learn the";
-						mes "Wind Elemental Change skill.";
-						next;
-						mes "[Mishuna]";
-						mes "^ff000020 Winds of Verdure^000000,";
-						mes "^ff00001 Payon Solution^000000 and";
-						mes "^ff00001 Morroc Solution^000000. Please";
-						mes "return to me once you have";
-						mes "all the materials ready.";
-						set SAG_SK,30;
-						close;
-					}
-					break;
-				case 4:
-					if(getskilllv("SA_FROSTWEAPON") == 0) {
-						mes "[Mishuna]";
-						mes "I'm sorry, but you have not learned ^FF0000Endow Tsunami^000000, the skill";
-						mes "required for the Water Elemental Change skill. Please learn Endow";
-						mes "Tsunami or pick another Elemental Change skill for me to teach you.";
-						next;
-					}
-					else {
-						mes "[Mishuna]";
-						mes "Very well, then. Please";
-						mes "bring the following items";
-						mes "so that you can learn the";
-						mes "Water Elemental Change skill.";
-						next;
-						mes "[Mishuna]";
-						mes "^ff000020 Crystal Blues^000000,";
-						mes "^ff00001 Payon Solution^000000 and";
-						mes "^ff00001 Morroc Solution^000000. Please";
-						mes "return to me once you have";
-						mes "all the materials ready.";
-						set SAG_SK,40;
-						close;
-					}
+				set .@i, select("Fire Elemental Change:Earth Elemental Change:Wind Elemental Change:Water Elemental Change")-1;
+				if(getskilllv(.@ReqSkill[.@i]) == 0) {
+					mes "[Mishuna]";
+					mes "I'm sorry, but you haven't";
+					mes "learned ^FF0000Endow "+.@ReqSkill$[.@i]+"^000000, the skill";
+					mes "required for ^FF0000"+.@Skill$[.@i]+" Elemental";
+					mes "Change^000000. You'll need to learn";
+					mes "Endow "+.@ReqSkill$[.@i]+" or select another";
+					mes "Elemental Change skill.";
+					next;
+				}
+				else {
+					mes "[Mishuna]";
+					mes "Very well, I shall";
+					mes "teach you the ^FF0000"+.@Skill$[.@i];
+					mes "Elemental Change^000000 skill";
+					mes "and the ^FF0000Elemental Converter";
+					mes "Creation skill^000000. Please remain";
+					mes "still while I chant this spell.";
+					next;
+					mes "[Mishuna]";
+					mes "%$#@!#$% Yap~~";
+					specialeffect2 EF_RUWACH;
+					next;
+					mes "[Mishuna]";
+					mes "Yap!";
+					specialeffect2 EF_BRANDISHSPEAR;
+					next;
+					mes "^3355FFYou've successfully";
+					mes "learned the "+.@Skill$[.@i]+" Elemental";
+					mes "Change skill and the Elemental";
+					mes "Converter Creation skill.^000000";
+					skill .@Skill[.@i],1,0;
+					if(.@Convert == 0)
+						skill "SA_CREATECON",1,0;
+					next;
 					break;
 					break;
 				}
 				}
 			}
 			}
 		}
 		}
-		else if(SAG_SK == 10) {
-			if(getskilllv("SA_CREATECON") == 0) {
-				skill "SA_CREATECON",1,0;
-				mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
-				next;
-			}
-			if (countitem(990) < 20 || countitem(1089) < 1 || countitem(1088) < 1) {
-				mes "[Mishuna]";
-				mes "Are you having trouble";
-				mes "gathering all the required";
-				mes "items? Just in case, let me";
-				mes "remind you of what you need";
-				mes "to bring me to learn the Fire";
-				mes "Elemental Change skill.";
-				next;
-				mes "[Mishuna]";
-				mes "^ff000020 Red Bloods^000000,";
-				mes "^ff00001 Payon Solution^000000 and";
-				mes "^ff00001 Morroc Solution^000000. Please";
-				mes "don't forget and have the";
-				mes "materials ready for the next";
-				mes "time you see me, alright?";
-				close;
-			}
+		else if(.@Convert == 0) {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "Ah, you're back. I can now";
-			mes "finally teach you about the";
-			mes "Fire Elemental Change skill.";
-			mes "This skill has the chance to";
-			mes "permanently change a targeted";
-			mes "monster's attribute to ^FF0000Fire^000000.";
+			mes "Alright, I'm going";
+			mes "to cast a spell that";
+			mes "will help you remember";
+			mes "the skills you forgot.";
+			mes "Don't move, and try to";
+			mes "stay as still as possible...";
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "Remember that you must";
-			mes "use an elemental converter to";
-			mes "cast this skill, and that it has^FFFFFF ^000000a success rate, similarly to the";
-			mes "Elemental Converter Creation";
-			mes "skill. So be aware of that.";
-			next;
-			mes "[Mishuna]";
-			mes "Now, "+strcharinfo(0)+",";
-			mes "I'm going to cast a spell";
-			mes "that will help you memorize";
-			mes "the Fire Elemental Change";
-			mes "skill. Try to stay still...";
-			next;
-			mes "^3355FFMishuna begins to chant";
-			mes "a strange incantation as";
-			mes "a soft blue glow surrounds";
-			mes "his body and slowly grows";
-			mes "brighter and more intense.^000000";
+			mes "%$#@!#$% Yap~~";
 			specialeffect2 EF_RUWACH;
 			specialeffect2 EF_RUWACH;
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "@#$%^~ Yap!";
+			mes "Yap!";
 			specialeffect2 EF_BRANDISHSPEAR;
 			specialeffect2 EF_BRANDISHSPEAR;
-			delitem 990,20; // Boody Red
-			delitem 1089,1; // Payon Potion
-			delitem 1088,1; // Morocc Potion
-			set SAG_SK,100;
-			skill "SA_ELEMENTFIRE",1,0;
 			next;
 			next;
+			mes "^3355FFYou successfully recalled";
+			mes "the Elemental Coverter";
+			mes "Creation skill and are";
+			mes "able to use it again.^000000";
+			skill "SA_CREATECON",1,0;
+			next;
+		}
+		mes "[Mishuna]";
+		mes "Ah, you've learned these";
+		mes "skills as quickly as I thought";
+		mes "you would. Very well then,";
+		mes "I hope you adeptly use these";
+		mes "talents for the right purposes.";
+		mes "Farewell for now, "+strcharinfo(0)+".";
+		close;
+	}
+	else if(SAG_SK == 0) {
+		mes "[Mishuna]";
+		mes "Good day, I'm Mishuna, one";
+		mes "of the instructors here in the";
+		mes "Schweicherbil Magic Academy.";
+		mes "How may I be of service?";
+		next;
+		select("I seek new knowledge.");
+		mes "[Mishuna]";
+		mes "Ah, you must be "+strcharinfo(0)+".";
+		mes "I've looked forward to meeting";
+		mes "you. In the noble pursuit of";
+		mes "knowledge, might I suggest";
+		mes "reading the recently restored";
+		mes "scrolls of Sir Barmundt?";
+		next;
+		mes "[Mishuna]";
+		mes "Sir Barmundt's scrolls contain";
+		mes "knowledge about the 4 elements,";
+		mes "which are Fire, Water, Earth, and Wind. The knowledge of these";
+		mes "scrolls can be applied in the";
+		mes "use of 2 new Sage skills.";
+		next;
+		mes "[Mishuna]";
+		mes "The first is called ^FF0000Elemental";
+		mes "Change^000000, which enables you";
+		mes "to change a monster's attribute";
+		mes "according to the specific element^FFFFFF ^000000 of the Elemental Change skill";
+		mes "that you have learned.";
+		next;
+		mes "[Mishuna]";
+		mes "The second is called";
+		mes "Elemental Converter Creation,";
+		mes "which enables you to create";
+		mes "converter items that are required^FFFFFF ^000000 to use the Elemental Change skill.";
+		next;
+		mes "[Mishuna]";
+		mes "Although the knowledge of";
+		mes "these two skills has been";
+		mes "lost for years, we've finally";
+		mes "been able to recover most";
+		mes "of it. So, do you think you're";
+		mes "ready to learn these skills?";
+		next;
+		if(select("Maybe later.:Yes, I am.") == 1) {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes ""+strcharinfo(0)+"...";
-			mes "I'm happy to say that you've";
-			mes "successfully memorized the";
-			mes "Fire Elemental Change skill.";
-			mes "I hope that it serves you well";
-			mes "in battle. Farewell for now~";
+			mes "Ah, you must be busy right";
+			mes "now. No problem, just come";
+			mes "back when you think you're";
+			mes "ready to learn. Well then,";
+			mes "farewell and have a good day~";
 			close;
 			close;
 		}
 		}
-		else if(SAG_SK == 20) {
-			if(getskilllv("SA_CREATECON") == 0) {
-				skill "SA_CREATECON",1,0;
-				mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
-				next;
-			}
-			if (countitem(993) < 20 || countitem(1089) < 1 || countitem(1088) < 1) {
-				mes "[Mishuna]";
-				mes "Are you having trouble";
-				mes "gathering all the required";
-				mes "items? Just in case, let me";
-				mes "remind you of what you need";
-				mes "to bring me to learn the Earth";
-				mes "Elemental Change skill.";
-				next;
-				mes "[Mishuna]";
-				mes "^ff000020 Green Lives^000000,";
-				mes "^ff00001 Payon Solution^000000 and";
-				mes "^ff00001 Morroc Solution^000000. Please";
-				mes "don't forget and have the";
-				mes "materials ready for the next";
-				mes "time you see me, alright?";
-				close;
-			}
-			mes "[Mishuna]";
-			mes "Ah, you're back. I can now";
-			mes "finally teach you about the";
-			mes "Earth Elemental Change skill.";
-			mes "This skill has the chance to";
-			mes "permanently change a targeted";
-			mes "monster's attribute to Earth.";
-			next;
-			mes "[Mishuna]";
-			mes "Remember that you must";
-			mes "use an elemental converter to";
-			mes "cast this skill, and that it has^FFFFFF ^000000 a success rate, similarly to the";
-			mes "Elemental Converter Creation";
-			mes "skill. So be aware of that.";
-			next;
+		mes "[Mishuna]";
+		mes "Very well, then. First, you";
+		mes "must learn the Elemental";
+		mes "Coverter Creation skill, which";
+		mes "is essential to learning the";
+		mes "Elemental Change skill.";
+		next;
+		mes "[Mishuna]";
+		mes "Please bring the required";
+		mes "materials so that we can";
+		mes "construct a basic elemental";
+		mes "converter in order for you to";
+		mes "learn the skill. Let's see,";
+		mes "you will need to bring...";
+		next;
+		mes "[Mishuna]";
+		mes "^ff00007 Horns^000000,";
+		mes "^ff000012 Rainbow Shells^000000,";
+		mes "^ff000010 Snail's Shells^000000,";
+		mes "^ff00004 Blank Scrolls^000000 and";
+		mes "^ff000010 Scorpion Tails^000000.^000000";
+		next;
+		mes "[Mishuna]";
+		mes "Alright, I shall be";
+		mes "nexting here for your";
+		mes "return. Remember that we";
+		mes "need these items to create";
+		mes "a converter so that you can^FFFFFF ^000000 learn the skill from my example...";
+		set SAG_SK,1;
+		close;
+	}
+	else if(SAG_SK == 1) {
+		if (countitem(904) < 10 || countitem(947) < 7 || countitem(1013) < 12 || countitem(946) < 10 || countitem(7433) < 4) {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "Now, "+strcharinfo(0)+",";
-			mes "I'm going to cast a spell";
-			mes "that will help you memorize";
-			mes "the Earth Elemental Change";
-			mes "skill. Try to stay still...";
-			next;
-			mes "^3355FFMishuna begins to chant";
-			mes "a strange incantation as";
-			mes "a soft blue glow surrounds";
-			mes "his body and slowly grows";
-			mes "brighter and more intense.^000000";
-			specialeffect2 EF_RUWACH;
+			mes "Hm, you still haven't";
+			mes "gathered all of the materials";
+			mes "required to create an elemental";
+			mes "coverter. Let me remind you";
+			mes "what to bring so that you";
+			mes "don't forget next time...";
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "@#$%^~ Yap!";
-			specialeffect2 EF_BRANDISHSPEAR;
-			delitem 993,20; // Yellow Live
-			delitem 1089,1; // Payon Potion
-			delitem 1088,1; // Morocc Potion
-			set SAG_SK,100;
-			skill "SA_ELEMENTGROUND",1,0;
+			mes "^ff00007 Horns^000000,";
+			mes "^ff000012 Rainbow Shells^000000,";
+			mes "^ff000010 Snail's Shells^000000,";
+			mes "^ff00004 Blank Scrolls^000000 and";
+			mes "^ff000010 Scorpion Tails^000000.^000000";
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes ""+strcharinfo(0)+"...";
-			mes "I'm happy to say that you've";
-			mes "successfully memorized the";
-			mes "Earth Elemental Change skill.";
-			mes "I hope that it serves you well";
-			mes "in battle. Farewell for now~";
+			mes "Don't forget that we need";
+			mes "all of these items to create";
+			mes "a converter so that you can";
+			mes "learn the Elemental Converter";
+			mes "Creation skill by watching";
+			mes "me demonstrate it for you.";
 			close;
 			close;
 		}
 		}
-		else if(SAG_SK == 30) {
-			if(getskilllv("SA_CREATECON") == 0) {
-				skill "SA_CREATECON",1,0;
-				mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
-				next;
-			}
-			if (countitem(992) < 20 || countitem(1089) < 1 || countitem(1088) < 1) {
-				mes "[Mishuna]";
-				mes "Are you having trouble";
-				mes "gathering all the required";
-				mes "items? Just in case, let me";
-				mes "remind you of what you need";
-				mes "to bring me to learn the Wind";
-				mes "Elemental Change skill.";
-				next;
-				mes "[Mishuna]";
-				mes "^ff000020 Winds of Verdure^000000,";
-				mes "^ff00001 Payon Solution^000000 and";
-				mes "^ff00001 Morroc Solution^000000. Please";
-				mes "don't forget and have the";
-				mes "materials ready for the next";
-				mes "time you see me, alright?";
-				close;
-			}
-			mes "[Mishuna]";
-			mes "Ah, you're back. I can now";
-			mes "finally teach you about the";
-			mes "Wind Elemental Change skill.";
-			mes "This skill has the chance to";
-			mes "permanently change a targeted";
-			mes "monster's attribute to Wind.";
-			next;
-			mes "[Mishuna]";
-			mes "Remember that you must";
-			mes "use an elemental converter to";
-			mes "cast this skill, and that it has^FFFFFF ^000000 a success rate, similarly to the";
-			mes "Elemental Converter Creation";
-			mes "skill. So be aware of that.";
-			next;
-			mes "[Mishuna]";
-			mes "Now, "+strcharinfo(0)+",";
-			mes "I'm going to cast a spell";
-			mes "that will help you memorize";
-			mes "the Wind Elemental Change";
-			mes "skill. Try to stay still...";
-			next;
-			mes "^3355FFMishuna begins to chant";
-			mes "a strange incantation as";
-			mes "a soft blue glow surrounds";
-			mes "his body and slowly grows";
-			mes "brighter and more intense.^000000";
-			specialeffect2 EF_RUWACH;
-			next;
-			mes "[Mishuna]";
-			mes "@#$%^~ Yap!";
-			specialeffect2 EF_BRANDISHSPEAR;
-			delitem 992,20; // Wind Of Verdure
-			delitem 1089,1; // Payon Potion
-			delitem 1088,1; // Morocc Potion
-			set SAG_SK,100;
-			skill "SA_ELEMENTWIND",1,0;
-			next;
+		else {
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes ""+strcharinfo(0)+"...";
-			mes "I'm happy to say that you've";
-			mes "successfully memorized the";
-			mes "Wind Elemental Change skill.";
-			mes "I hope that it serves you well";
-			mes "in battle. Farewell for now~";
+			mes "Great, you brought everything.";
+			mes "Now, let me explain the skill.";
+			mes "The skills you learn as a Sage";
+			mes "determine what kind of elemental converters that you can craft.";
+			next;
+			mes "[Mishuna]";
+			mes "The ^FF0000Endow Blaze^000000 skill enables";
+			mes "you to create Fire elemental";
+			mes "converters. The ^FF0000Endow Quake^000000";
+			mes "skill enables the creation";
+			mes "of Earth elemental converters.";
+			next;
+			mes "[Mishuna]";
+			mes "^FF0000Endow Tornado^000000 enables";
+			mes "the creation of Wind elemental";
+			mes "converters, and ^FF0000Endow Tsunami^000000";
+			mes "enables the creation of Water";
+			mes "elemental converters. That";
+			mes "all makes sense, right?";
+			next;
+			mes "[Mishuna]";
+			mes "Now, your elemental coverter";
+			mes "creation success rate depends";
+			mes "on the level of the Endow Blaze, Endow Quake, Endow Tornado,";
+			mes "or Endow Tsunami skills, and";
+			mes "your abilities.";
+			next;
+			mes "[Mishuna]";
+			mes "Now, please take this copy";
+			mes "of Barmundt's scroll, and use";
+			mes "it as a reference when you try";
+			mes "to craft elemental converters";
+			mes "when you use the Elemental";
+			mes "Converter Creation skill.";
+			next;
+			mes "^3355FFYou have learned the";
+			mes "Elemental Converter";
+			mes "Creation skill by reviewing";
+			mes "your copy of Barmundt's scroll.^000000";
+			specialeffect2 EF_ABSORBSPIRITS;
+			delitem 904,10; // Scorpion_Tail
+			delitem 947,7; // Horn
+			delitem 1013,12; // Rainbow_Shell
+			delitem 946,10; // Snail's_Shell
+			delitem 7433,4; // Blank_Scroll
+			set SAG_SK,2;
+			skill "SA_CREATECON",1,0;
+			next;
+			mes "[Mishuna]";
+			mes "Wow, "+strcharinfo(0)+"!";
+			mes "You learned that skill";
+			mes "really quickly! No wonder";
+			mes "people say that you're one";
+			mes "of the best Sages around!";
+			next;
+			mes "[Mishuna]";
+			mes "Now you're ready to";
+			mes "learn the other skill,";
+			mes "Elemental Change. Alright,";
+			mes "I need to prepare a few things";
+			mes "for this lesson, so we'll meet";
+			mes "and discuss this later, okay?";
 			close;
 			close;
 		}
 		}
-		else if(SAG_SK == 40) {
-			if(getskilllv("SA_CREATECON") == 0) {
-				skill "SA_CREATECON",1,0;
-				mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
+	}
+	else if(SAG_SK == 2) {
+		if(getskilllv("SA_CREATECON") == 0) {
+			skill "SA_CREATECON",1,0;
+			mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
+			next;
+		}
+		mes "[Mishuna]";
+		mes "You'll be given the chance to";
+		mes "choose which kind of ^FF0000Elemental";
+		mes "Change^000000 skill that you want, even one that you didn't previously";
+		mes "learn, so long as you fulfill";
+		mes "the skill's requirements.";
+		next;
+		mes "[Mishuna]";
+		mes "Keep in mind that once";
+		mes "you learn your Elemental";
+		mes "Change skill, you won't be";
+		mes "able to change it. Now, which";
+		mes "skill would you like to learn?";
+		next;
+		setarray .@ReqSkill[0],280,283,282,281;
+		setarray .@ReqSkill$[0],"Blaze","Quake","Tornado","Tsunami";
+		setarray .@ReqItem$[0],"Red Bloods","Green Lives","Wind of Verdure","Crystal Blues";
+		setarray .@Skill$[0],"Fire","Earth","Wind","Water";
+		while(1) {
+			set .@i, select("Fire Elemental Change:Earth Elemental Change:Wind Elemental Change:Water Elemental Change")-1;
+			if(getskilllv(.@ReqSkill[.@i]) == 0) {
+				mes "[Mishuna]";
+				mes "I'm sorry, but you have not";
+				mes "learned ^FF0000Endow "+.@ReqSkill$[.@i]+"^000000, the skill";
+				mes "required for the "+.@Skill$[.@i]+" Elemental Change skill. Please learn Endow";
+				mes .@ReqSkill$[.@i]+" or select another Elemental Change skill for me to teach you.";
 				next;
 				next;
 			}
 			}
-			if (countitem(991) < 20 || countitem(1089) < 1 || countitem(1088) < 1) {
+			else {
 				mes "[Mishuna]";
 				mes "[Mishuna]";
-				mes "Are you having trouble";
-				mes "gathering all the required";
-				mes "items? Just in case, let me";
-				mes "remind you of what you need";
-				mes "to bring me to learn the Water";
-				mes "Elemental Change skill.";
+				mes "Very well, then. Please";
+				mes "bring the following items";
+				mes "so that you can learn the";
+				mes .@Skill$[.@i]+" Elemental Change skill.";
 				next;
 				next;
 				mes "[Mishuna]";
 				mes "[Mishuna]";
-				mes "^ff000020 Crystal Blues^000000,";
-				mes "^ff00001 Payon Solution^000000 and";
-				mes "^ff00001 Morroc Solution^000000. Please";
-				mes "don't forget and have the";
-				mes "materials ready for the next";
-				mes "time you see me, alright?";
+				mes "^FF000020 "+.@ReqItem$[.@i]+"^000000,";
+				mes "^FF00001 Payon Solution^000000 and";
+				mes "^FF00001 Morroc Solution^000000. Please";
+				mes "return to me once you have";
+				mes "all the materials ready.";
+				set SAG_SK, 10 * (.@i+1); //10,20,30,40
 				close;
 				close;
 			}
 			}
-			mes "[Mishuna]";
-			mes "Ah, you're back. I can now";
-			mes "finally teach you about the";
-			mes "Water Elemental Change skill.";
-			mes "This skill has the chance to";
-			mes "permanently change a targeted";
-			mes "monster's attribute to Water.";
-			next;
-			mes "[Mishuna]";
-			mes "Remember that you must";
-			mes "use an elemental converter to";
-			mes "cast this skill, and that it has^FFFFFF ^000000 a success rate, similarly to the";
-			mes "Elemental Converter Creation";
-			mes "skill. So be aware of that.";
-			next;
-			mes "[Mishuna]";
-			mes "Now, "+strcharinfo(0)+",";
-			mes "I'm going to cast a spell";
-			mes "that will help you memorize";
-			mes "the Water Elemental Change";
-			mes "skill. Try to stay still...";
-			next;
-			mes "^3355FFMishuna begins to chant";
-			mes "a strange incantation as";
-			mes "a soft blue glow surrounds";
-			mes "his body and slowly grows";
-			mes "brighter and more intense.^000000";
-			specialeffect2 EF_RUWACH;
-			next;
-			mes "[Mishuna]";
-			mes "@#$%^~ Yap!";
-			specialeffect2 EF_BRANDISHSPEAR;
-			delitem 991,20; // Crystal Blue
-			delitem 1089,1; // Payon Potion
-			delitem 1088,1; // Morocc Potion
-			set SAG_SK,100;
-			skill "SA_ELEMENTWATER",1,0;
+		}
+	}
+	else if(SAG_SK == 10 || SAG_SK == 20 || SAG_SK == 30 || SAG_SK == 40) {
+		if(getskilllv("SA_CREATECON") == 0) {
+			skill "SA_CREATECON",1,0;
+			mes "- I recalled ^ff0000Elemental Converter Creation skill^000000 While I talk to Mishuna! -";
 			next;
 			next;
-			mes "[Mishuna]";
-			mes ""+strcharinfo(0)+"...";
-			mes "I'm happy to say that you've";
-			mes "successfully memorized the";
-			mes "Water Elemental Change skill.";
-			mes "I hope that it serves you well";
-			mes "in battle. Farewell for now~";
-			close;
 		}
 		}
-		else {
-			mes "[Mishuna]";
-			mes "If you have any Sage or";
-			mes "Scholar friends who haven't";
-			mes "learned the skills from Sir";
-			mes "Barmundt's scrolls, then";
-			mes "please refer them to me.";
+		set .@i, (SAG_SK/10) - 1;
+		setarray .@ReqItem[0],990,993,992,991;
+		setarray .@ReqItem$[0],"Red Bloods","Green Lives","Wind of Verdure","Crystal Blues";
+		setarray .@Skill[0],1018,1017,1019,1008;
+		setarray .@Skill$[0],"Fire","Earth","Wind","Water";
+		if (countitem(.@ReqItem[.@i]) < 20 || countitem(1089) < 1 || countitem(1088) < 1) {
+			mes "[Mishuna]";
+			mes "Are you having trouble";
+			mes "gathering all the required";
+			mes "items? Just in case, let me";
+			mes "remind you of what you need";
+			mes "to bring me to learn the "+.@Skill$[.@i];
+			mes "Elemental Change skill.";
 			next;
 			next;
 			mes "[Mishuna]";
 			mes "[Mishuna]";
-			mes "I trust that you are";
-			mes "finding that these";
-			mes "element based skills";
-			mes "are very useful in battle.";
-			mes "Knowledge truly equates";
-			mes "to power in the long run...";
+			mes "^ff000020 "+.@ReqItem$[.@i]+"^000000,";
+			mes "^ff00001 Payon Solution^000000 and";
+			mes "^ff00001 Morroc Solution^000000. Please";
+			mes "don't forget and have the";
+			mes "materials ready for the next";
+			mes "time you see me, alright?";
 			close;
 			close;
 		}
 		}
-	}
-	else {
 		mes "[Mishuna]";
 		mes "[Mishuna]";
-		mes "Good day, I'm Mishuna, one";
-		mes "of the instructors here in the";
-		mes "Schweicherbil Magic Academy.";
-		mes "By any chance, are you a Sage";
-		mes "or Scholar? Oh... You're not?";
+		mes "Ah, you're back. I can now";
+		mes "finally teach you about the";
+		mes .@Skill$[.@i]+" Elemental Change skill.";
+		mes "This skill has the chance to";
+		mes "permanently change a targeted";
+		mes "monster's attribute to "+.@Skill$[.@i]+".";
 		next;
 		next;
 		mes "[Mishuna]";
 		mes "[Mishuna]";
-		mes "Oh, that's too bad.";
-		mes "My apologies. But if you";
-		mes "happen to know any, or meet";
-		mes "any in your journeys, please";
-		mes "direct them to me if they haven't heard of the lessons I provide.";
+		mes "Remember that you must";
+		mes "use an elemental converter to";
+		mes "cast this skill, and that it has a success rate, similarly to the";
+		mes "Elemental Converter Creation";
+		mes "skill. So be aware of that.";
 		next;
 		next;
 		mes "[Mishuna]";
 		mes "[Mishuna]";
-		mes "I'm sorry to bother";
-		mes "you, and I thank you";
-		mes "for your time. Good";
-		mes "day to you, adventurer.";
+		mes "Now, "+strcharinfo(0)+",";
+		mes "I'm going to cast a spell";
+		mes "that will help you memorize";
+		mes "the "+.@Skill$[.@i]+" Elemental Change";
+		mes "skill. Try to stay still...";
+		next;
+		mes "^3355FFMishuna begins to chant";
+		mes "a strange incantation as";
+		mes "a soft blue glow surrounds";
+		mes "his body and slowly grows";
+		mes "brighter and more intense.^000000";
+		specialeffect2 EF_RUWACH;
+		next;
+		mes "[Mishuna]";
+		mes "@#$%^~ Yap!";
+		specialeffect2 EF_BRANDISHSPEAR;
+		delitem .@ReqItem[.@i],20;
+		delitem 1089,1; // Payon Potion
+		delitem 1088,1; // Morocc Potion
+		set SAG_SK,100;
+		skill .@Skill[.@i],1,0;
+		next;
+		mes "[Mishuna]";
+		mes strcharinfo(0)+"...";
+		mes "I'm happy to say that you've";
+		mes "successfully memorized the";
+		mes .@Skill$[.@i]+" Elemental Change skill.";
+		mes "I hope that it serves you well";
+		mes "in battle. Farewell for now~";
+		close;
+	}
+	else {
+		mes "[Mishuna]";
+		mes "If you have any Sage or";
+		mes "Scholar friends who haven't";
+		mes "learned the skills from Sir";
+		mes "Barmundt's scrolls, then";
+		mes "please refer them to me.";
+		next;
+		mes "[Mishuna]";
+		mes "I trust that you are";
+		mes "finding that these";
+		mes "element based skills";
+		mes "are very useful in battle.";
+		mes "Knowledge truly equates";
+		mes "to power in the long run...";
 		close;
 		close;
 	}
 	}
 }
 }

+ 477 - 6
npc/re/cities/malaya.txt

@@ -3,18 +3,19 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= Euphy
 //= Euphy
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 0.1
+//= 0.2
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
 //= Port Malaya Town Script
 //= Port Malaya Town Script
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= 0.1 Alberta sailors only. [Euphy]
 //= 0.1 Alberta sailors only. [Euphy]
+//= 0.2 Adapted from Masao's conversion.
 //============================================================ 
 //============================================================ 
 
 
 // Port Malaya Transportation
 // Port Malaya Transportation
 //============================================================
 //============================================================
-alberta,237,71,4	script	Optamara Crew#alberta	100,{
+alberta,237,71,3	script	Optamara Crew#alberta	100,{
 	mes "[Optamara Crew]";
 	mes "[Optamara Crew]";
 	mes "Hey, there!";
 	mes "Hey, there!";
 	mes "It's 10,000 Zeny to go to Port Malaya. Interested?";
 	mes "It's 10,000 Zeny to go to Port Malaya. Interested?";
@@ -39,7 +40,8 @@ alberta,237,71,4	script	Optamara Crew#alberta	100,{
 	case 2:
 	case 2:
 		if (Zeny < 10000) {
 		if (Zeny < 10000) {
 			mes "[Optamara Crew]";
 			mes "[Optamara Crew]";
-			mes "You don't have enough Zeny.";
+			mes "Oh God!!";
+			mes "You don't know how far it is from here. Of course it's not free. Please come back with 10,000 Zeny. Sorry!";
 			close;
 			close;
 		}
 		}
 		mes "[Optamara Crew]";
 		mes "[Optamara Crew]";
@@ -57,9 +59,19 @@ alberta,237,71,4	script	Optamara Crew#alberta	100,{
 }
 }
 
 
 malaya,276,55,4	script	Optamara Crew#malaya	100,{
 malaya,276,55,4	script	Optamara Crew#malaya	100,{
-	mes "[Optamara Crew]";
-	mes "I think the village is still busy. Done with your visit? There is always a ship heading for Alberta.";
-	next;
+	if (malaya_hi < 10) {
+		mes "[Optamara Crew]";
+		mes "I think the village is still busy. Done with your visit? There is always a ship heading for Alberta.";
+		next;
+	} else if (malaya_hi < 20) {
+		mes "[Optamara Crew]";
+		mes "I think a nameless adventurer helped take a load off the villagers' minds. Yahoo! Would you like to go back to Alberta?";
+		next;
+	} else {
+		mes "[Optamara Crew]";
+		mes "Would you like to go back to Alberta with me?";
+		next;
+	}
 	switch(select("Return.:Do not return.")) {
 	switch(select("Return.:Do not return.")) {
 	case 1:
 	case 1:
 		mes "[Optamara Crew]";
 		mes "[Optamara Crew]";
@@ -73,3 +85,462 @@ malaya,276,55,4	script	Optamara Crew#malaya	100,{
 		close;
 		close;
 	}
 	}
 }
 }
+
+// Generic Port Malaya NPCs
+//============================================================
+ma_in01,30,94,4	script	Inn Keeper#ma	583,{
+	if (malaya_hi < 10) {
+		mes "[Inn Keeper]";
+		mes "Oh my! Visiting?";
+		mes "What bad timing. The village is a bit unorganized at the moment so I'm actually closed. Sorry.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Inn Keeper]";
+		mes "So you are the adventurer villagers are talking about? I reopened my inn thanks to you. Thank you.";
+		next;
+	} else {
+		mes "[Inn Keeper]";
+		mes "Welcome.";
+		mes "This is Port Malaya's best inn, 'Cabin in the City'.";
+		next;
+	}
+	mes "[Inn Keeper]";
+	mes "Come for a rest? Lodging will be 5,000 Zeny.";
+	next;
+	switch(select("Store.:Lodge. - 5,000z:Cancel.")) {
+	case 1:
+		mes "[Inn Keeper]";
+		mes "Successfully stored. See you next time.";
+		savepoint "ma_in01",43,98;
+		close;
+	case 2:
+		if (Zeny < 5000) {
+			mes "[Inn Keeper]";
+			mes "Sorry. I think you are a bit short.";
+			close;
+		}
+		mes "[Inn Keeper]";
+		mes "Hope you enjoy your stay.";
+		close2;
+		set Zeny, Zeny-5000;
+		percentheal 100,100;
+		warp "ma_in01",43,98;
+		end;
+	case 3:
+		close;
+	}
+}
+
+malaya,227,311,4	script	Grandma#ma01	575,{
+	if (malaya_hi < 10) {
+		mes "[Grandma]";
+		mes "You're not from around here? Take care of yourself.";
+		next;
+		mes "[Grandma]";
+		mes "I'm worried because my daughter-in-law is pregnant. I hope nothing goes wrong.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Grandma]";
+		mes "I heard there is an outsider that is helping the village.";
+		next;
+		mes "[Grandma]";
+		mes "Then my daughter-in-law will be safe.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		mes "[Grandma]";
+		mes "Heard there is this "+getd("$ma_name0"+rand(1,6)+"$")+" that follows Meoneonuncle around.";
+		next;
+		mes "[Grandma]";
+		mes "I will cheer for their forbidden love.";
+		close;
+	}
+	mes "[Grandma]";
+	mes "I'm worried about my pregnant daughter-in-law. Hope Meoneonuncle won't bother her.";
+	next;
+	select("Meoneonuncle?");
+	mes "[Grandma]";
+	mes "Not from around here? Let me tell you why even a foreigner like you should be careful.";
+	next;
+	mes "[Grandma]";
+	mes "Meoneonuncle was a woman who lived in Port Malaya long ago. She married a decent man and also had a baby.";
+	next;
+	mes "[Grandma]";
+	mes "But happiness never lasts forever, right? The baby was miscarried from an accident...";
+	next;
+	mes "[Grandma]";
+	mes "She eventually passed away after grieving over her lost baby for days.";
+	next;
+	select("That is a sad story.");
+	mes "[Grandma]";
+	mes "Meoneonuncle then started to appear in spirit and take away babies from pregnant women in the village.";
+	next;
+	mes "[Grandma]";
+	mes "If you ever walk around Port Malaya at night...";
+	next;
+	mes "[Grandma]";
+	mes "And hear either tik-tik or wak-wak, be cautious because that is the sound of Meoneonuncle's wings flapping.";
+	close;
+}
+
+malaya,189,263,4	script	Drumming Young Man#ma02	578,{
+	if (malaya_hi < 10) {
+		emotion e_omg;
+		mes "[Drumming Young Man]";
+		mes "Ugh... it's just like that time before...";
+		next;
+		emotion e_omg;
+		mes "[Drumming Young Man]";
+		mes "When the moon was swallowed. Argh!";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Drumming Young Man]";
+		mes "I think the village was saved by a nameless adventurer.";
+		next;
+		emotion e_sigh;
+		mes "[Drumming Young Man]";
+		mes "Phew... I thought Bakonawa appeared again.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		mes "[Drumming Young Man]";
+		mes getd("$ma_name0"+rand(1,6)+"$")+" is said to have stopped Bakonawa from swallowing the moon. Isn't it awesome? I'm so relieved.";
+		close;
+	}
+	mes "[Drumming Young Man]";
+	mes "Bakonawa is also known as the 'monster that swallows the moon' in Port Malaya.";
+	next;
+	mes "[Drumming Young Man]";
+	mes "But I know that Bakonawa could also 'swallow people', too.";
+	next;
+	select("Huk! Then isn't it dangerous?");
+	emotion e_gg;
+	mes "[Drumming Young Man]";
+	mes "Ha ha ha. There is a way to stop Bakonawa from swallowing a person.";
+	next;
+	mes "[Drumming Young Man]";
+	mes "Yes, there is a weakness to even the worst monster that swallowed 6 moons already.";
+	next;
+	select("Wow. What is it?");
+	mes "[Drumming Young Man]";
+	mes "He is sensitive to noise so when he's about to swallow the moon!!";
+	next;
+	mes "[Drumming Young Man]";
+	mes "That's your chance!! It doesn't matter what kind of noise!! Whether it's a caldron, symbol, drum, pot or fry pan, just keep on making noise.";
+	next;
+	mes "[Drumming Young Man]";
+	mes "Then Bakonawa will get surprised, spit out the moon and run away!";
+	next;
+	mes "[Drumming Young Man]";
+	mes "Carry a drum around with you. You'll find it handy.";
+	close;
+}
+
+malaya,270,59,4	script	Port Guard#ma03	570,{
+	if (malaya_hi < 10) {
+		emotion e_swt2;
+		mes "[Port Guard]";
+		mes "The village is chaotic these days. Is it okay for me to be off like this?";
+		close;
+	} else if (malaya_hi < 20) {
+		emotion e_no;
+		mes "[Port Guard]";
+		mes "The village is somewhat stable now but you should still be careful walking around at night.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		mes "[Port Guard]";
+		mes getd("$ma_name0"+rand(1,6)+"$")+" is said to escape from Buwaya alive after being captured. This person must be powerful.";
+		close;
+	}
+	emotion e_omg;
+	mes "[Port Guard]";
+	mes "What!! Port all clear!!";
+	next;
+	mes "[Port Guard]";
+	mes "Huh? You're not the captain? You scared me. Shoot! Ah, right! I received an official document for travelers.";
+	next;
+	select("What document?");
+	mes "[Port Guard]";
+	mes "It says that travelers should be careful of monsters when walking in the village at night.";
+	next;
+	mes "[Port Guard]";
+	mes "Buwaya don't come to the village often but there are cases when they snatch people in the boxes they carry at night.";
+	next;
+	mes "[Port Guard]";
+	mes "Huh?! And it says here that a monster named Wokwok especially visits the village often at night and should be avoided.";
+	next;
+	switch(select("I see.:Is there any way to prevent them from coming?")) {
+	case 1:
+		mes "[Port Guard]";
+		mes "Be careful at night!";
+		close;
+	case 2:
+		mes "[Port Guard]";
+		mes "They say you can attack Buwaya's weak point inside the box they carry if you ever get caught in one.";
+		next;
+		mes "[Port Guard]";
+		mes "And you should run into the nearest building when you hear Wokwoks wings fluttering from afar.";
+		next;
+		emotion e_hmm;
+		mes "[Port Guard]";
+		mes "But if the fluttering sound is small or if you don't hear anything, let's just say you should prepare for attack and wish for luck.";
+		close;
+	}
+}
+
+malaya,88,252,4	script	Little Girl#ma04	576,{
+	if (malaya_hi < 10) {
+		mes "[Little Girl]";
+		mes "I'm scared but I have to visit the fairy in the forest.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Little Girl]";
+		mes "He he. Father said I can visit the fairy in the forest when the village calms down.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		set .@name$, getd("$ma_name0"+rand(1,6)+"$");
+		mes "[Little Girl]";
+		mes "A little while ago "+.@name$+" came and told me a fun story.";
+		next;
+		mes "[Little Girl]";
+		mes "'I planted a pair of pear trees in the yard.'";
+		mes "He he. Isn't it fun? "+.@name$+" seems like a fun person.";
+		close;
+	}
+	mes "[Little Girl]";
+	mes "Father said I won't catch skin diseases once I'm friends with the fairy from the forest.";
+	next;
+	select("What is this fairy?");
+	mes "[Little Girl]";
+	mes "Encan'to! Encan'to fairies live in big trees or rocks in the forest. There are boy fairies and girl fairies...";
+	next;
+	mes "[Little Girl]";
+	mes "But boy fairies are prettier. Why is that?";
+	close;
+}
+
+malaya,219,92,6	script	Little Kid#ma05	577,{
+	if (malaya_hi < 10) {
+		mes "[Little Kid]";
+		mes "My mom told me not to play outside because its dangerous. Why?";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Little Kid]";
+		mes "My mom told me I can play but only in Port Malaya.";
+		next;
+		mes "[Little Kid]";
+		mes "He he. But I never thought of going outside of Port Malaya.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		mes "[Little Kid]";
+		mes "I heard someone took Jejelings hat in Baryo Mahiwaga.";
+		next;
+		mes "[Little Kid]";
+		mes "Why would someone steal a monster's hat? "+getd("$ma_name0"+rand(1,6)+"$")+" must be desperate.";
+		next;
+		mes "[Little Kid]";
+		mes "Oh wait! This was suppose to be a secret. Shsh! Please pretend you didn't hear me.";
+		close;
+	}
+	mes "[Little Kid]";
+	mes "I think someone is stealing all the hats in the village.";
+	next;
+	mes "[Little Kid]";
+	mes "The hat my mom washed yesterday disappeared. Our neighbor's hat also disappeared a few days ago.";
+	next;
+	mes "[Little Kid]";
+	mes "Hmm... do you think Jejeling took it?";
+	next;
+	mes "[Little Kid]";
+	mes "I visited a friend in Baryo Mahiwaga and he said he saw Jejeling wearing the missing hat...";
+	close;
+}
+
+malaya,363,283,4	script	Local#ma06	582,{
+	if (malaya_hi < 10) {
+		mes "[Local]";
+		mes "Hmm... is it time to be careful of the witches' curse?";
+		next;
+		mes "[Local]";
+		mes "Beware of Mongkukurums needle, foreigner.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Local]";
+		mes "Welcome to Port Malaya, foreigner..";
+		next;
+		mes "[Local]";
+		mes "The village is chaotic these days. If you see someone with red eyes, try not to stare at their eyes.";
+		close;
+	}
+	set .@name$, getd("$ma_name0"+rand(1,6)+"$");
+	switch(rand(1,6)) {
+	case 1:
+		mes "[Local]";
+		mes "Be careful walking around the village at night. "+.@name$+" was taken down by Wokwok.";
+		close;
+	case 2:
+		mes "[Local]";
+		mes .@name$+" is said to have successfully tamed a Tikbalang. This person must be courageous. Wonder if I'll get to see this tamed Tikbalang?";
+		close;
+	case 3:
+		mes "[Local]";
+		mes "Have you ever seen Bongisungisu? I heard "+.@name$+" is hunting down Bongisungisus.";
+		close;
+	case 4:
+		mes "[Local]";
+		mes "If you plan to go out of the village, be careful of Tiucknuc. "+.@name$+" is said to be tricked by Tiucknuc and had to go to the hospital.";
+		close;
+	case 5:
+	case 6:
+		break;
+	}
+	mes "[Local]";
+	mes "The village is chaotic these days. Looks like Mongkukurum is back in the village.";
+	next;
+	select("Mongkukurum?");
+	mes "[Local]";
+	mes "A monster that is also called witch. Looks like a person and also wears clothes.";
+	next;
+	mes "[Local]";
+	mes "Mongkukurum makes a doll out of the people it sees and curses it with needles.";
+	next;
+	select("Is there a way to recognize this monster?");
+	mes "[Local]";
+	mes "There is one way. All Mongkukurum have red eyes.";
+	next;
+	mes "[Local]";
+	mes "You can recognize them by their eyes but! You must remember one thing.";
+	next;
+	mes "[Local]";
+	mes "You will be captivated by Mongkukurum if you stare at their eyes too long.";
+	next;
+	mes "[Local]";
+	mes "Never ever stare into their eyes for too long.";
+	close;
+}
+
+malaya,41,127,6	script	Old Man #ma07	574,{
+	if (malaya_hi < 10) {
+		mes "[Old Man]";
+		mes "Foreigners are not welcomed that much when our village is chaotic like these days.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Old Man]";
+		mes "You are out of luck visiting the village at a time like this and not being welcomed.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		mes "[Old Man]";
+		mes getd("$ma_name0"+rand(1,6)+"$")+" is said to throw out Jellopy in this village.";
+		next;
+		mes "[Old Man]";
+		mes "Tsk, tsk... Must be a person that isn't worthy of a Jellopy.";
+		close;
+	}
+	mes "[Old Man]";
+	mes "You must also look out to see if Bangungot lives in a tree you are about to cut down.";
+	next;
+	mes "[Old Man]";
+	mes "Because strange things happen if logs from trees that Bangungot lived in are used as building pillars.";
+	next;
+	select("What happens?");
+	mes "[Old Man]";
+	mes "Well, for a Bangungot, it means losing its home so they get vengeful.";
+	next;
+	mes "[Old Man]";
+	mes "When you try to sleep near the pillar, it will keep awake by playing pranks at first.";
+	next;
+	mes "[Old Man]";
+	mes "But as time goes by and their vengeance grows, they sit on top of you until you suffocate.";
+	next;
+	select("Oh, gosh...");
+	mes "[Old Man]";
+	mes "Ha ha ha. There are no Bangungots in normal pillars, so don't lose sleep over it.";
+	close;
+}
+
+malaya,63,185,4	script	Woman#ma08	583,{
+	if (malaya_hi < 10) {
+		mes "[Woman]";
+		mes "I don't have anything to share with you.";
+		close;
+	} else if (malaya_hi < 20) {
+		mes "[Woman]";
+		mes "Im worried about the children. I hope they aren't terrified from whats going on in the village.";
+		close;
+	}
+	if (rand(1,3) == 2) {
+		set .@name$, getd("$ma_name0"+rand(1,6)+"$");
+		set .@rand, rand(1,10);
+		if (.@rand < 5) {
+			mes "[Woman]";
+			mes "I like fun stories. Not so long ago, "+.@name$+" came and told me a funny story.";
+			next;
+		}
+		switch(.@rand) {
+		case 1:
+			mes "[Woman]";
+			mes "'My aunt stepped on an ant.'";
+			next;
+			break;
+		case 2:
+			mes "[Woman]";
+			mes "'You eat chili on a chilly day.'";
+			next;
+			break;
+		case 3:
+			mes "[Woman]";
+			mes "'Why are you putting flour on that flower?'";
+			next;
+			break;
+		case 4:
+			mes "[Woman]";
+			mes "At the Tool Store, 'Ill buy the needle and thread! You buy the hay to lose the needle in.'";
+			next;
+			mes "[Woman]";
+			mes .@name$+" said that and was kicked out of the Tool Store.";
+			next;
+			break;
+		case 5:
+			mes "[Woman]";
+			mes "A Kafra Employee I'm friends with told me a story about a customer.";
+			next;
+			mes "[Woman]";
+			mes "'Kafra, the wise never marry and when they marry, they become otherwise.'";
+			next;
+			mes "[Woman]";
+			mes "He he... I do like funny stories but a bit difficult for my taste.";
+			close;
+		default:
+			mes "[Woman]";
+			mes "I like fun stories. Oh by the way! "+.@name$+", love is photogenic. Don't you agree?";
+			next;
+			mes "[Woman]";
+			mes "It needs darkness to develop.";
+			next;
+		}
+		mes "[Woman]";
+		mes "He he. Isn't it fun?";
+		close;
+	}
+	mes "[Woman]";
+	mes "If you hear a baby crying from the forest outside of the village, never go near it.";
+	next;
+	select("Why?");
+	mes "[Woman]";
+	mes "There is a monster named Tiucknuc that roams around outside of the village and cries after transforming himself into a baby.";
+	next;
+	mes "[Woman]";
+	mes "But when kind travelers pick up the baby, it turns back into its original form and attacks.";
+	next;
+	select("Sounds like a sneaky monster.");
+	mes "[Woman]";
+	mes "Yes, this monster is bad to trick the kindness of travelers but...";
+	next;
+	mes "[Woman]";
+	mes "There is rumor that the monster came from the soul of a baby that never been born. So sad.";
+	close;
+}

+ 1 - 1
npc/re/quests/eden/26-40.txt

@@ -86,7 +86,7 @@ L_Quest:
 		mes "You have declined the "+getarg(2)+" mission.";
 		mes "You have declined the "+getarg(2)+" mission.";
 		close;
 		close;
 	}
 	}
-	if (checkquest(getarg(0)) == 1) mes "You are already doing this mission.";
+	if (checkquest(getarg(0)) > -1) mes "You are already doing this mission.";
 	else {
 	else {
 		setquest getarg(0);
 		setquest getarg(0);
 		mes "You have accepted the "+getarg(2)+" mission.";
 		mes "You have accepted the "+getarg(2)+" mission.";

+ 336 - 1064
npc/re/quests/eden/56-70.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= L0ne_W0lf
 //= L0ne_W0lf
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 1.4
+//= 1.5
 //===== Compatible With: =====================================
 //===== Compatible With: =====================================
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: =========================================
 //===== Description: =========================================
@@ -14,1076 +14,348 @@
 //= 1.2 Added checkquest confirmation for -1. [Euphy]
 //= 1.2 Added checkquest confirmation for -1. [Euphy]
 //= 1.3 Fixed Puppet Master's Agony Quest (12217 -> 3259). [Joseph]
 //= 1.3 Fixed Puppet Master's Agony Quest (12217 -> 3259). [Joseph]
 //= 1.4 Fixed invalid check (Magic Wand Quest). [Joseph]
 //= 1.4 Fixed invalid check (Magic Wand Quest). [Joseph]
+//= 1.5 Optimized, based on code by Zopokx. [Euphy]
 //============================================================
 //============================================================
 
 
 moc_para01,42,38,3	script	Mission [56 - 70]	857,{
 moc_para01,42,38,3	script	Mission [56 - 70]	857,{
-	if (checkquest(12217) > -1) erasequest 12217;
-	if (countitem(6219)) {
-		mes "Here is the list of various adventures for level 55~70 adventurers.";
-		next;
-		mes "Lots of missions such as a Monster Hunting, Delivery Goods, Finding People.";
-		next;
-		switch (select("Mission Numbers 1~5:Mission Numbers 6~10:Mission Numbers 11~15")) {
-		case 1:
-			switch (select("What is this Bandage?:Dangerous Alligators.:That wasn't a mermaid...:My country is calling me!")) {
-			case 1:
-				if (checkquest(3250) <= 0) {
-					mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
-					next;
-					mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
-					next;
-					mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
-					next;
-					mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "- Rekenber corporation chief director 'Julie E Delph' -";
-					next;
-					mes " ";
-					next;
-					mes "Would you like to accept this mission?";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3250;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3250,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
-						next;
-						mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
-						next;
-						mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
-						next;
-						mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "- Rekenber corporation chief director 'Julie E Delph' -";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3250,HUNTING) == 2) && (countitem(930) > 19)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 930,20; //Rotten_Bandage
-						getexp 15000,5000;
-						erasequest 3250;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 2:
-				if (checkquest(3251) <= 0) {
-					mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
-					next;
-					mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
-					next;
-					mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
-					next;
-					mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes " ";
-					next;
-					mes "Would you like to accept this mission?";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3251;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3251,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
-						next;
-						mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
-						next;
-						mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
-						next;
-						mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3251,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 16000,6000;
-						erasequest 3251;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 3:
-				if (checkquest(3252) <= 0) {
-					mes "This mission is assigned by an unknown client from Izlude.";
-					next;
-					mes "I have admired the beach of Izlude, ever since I was born.";
-					next;
-					mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before...";
-					next;
-					mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
-					next;
-					mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
-					next;
-					mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
-					next;
-					mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Izlude 'The Lost dream mermaid' --";
-					next;
-					mes " ";
-					next;
-					mes "Would you like to accept this mission?";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3252;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3252,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by an unknown client from Izlude.";
-						next;
-						mes "I have admired the beach of Izlude, ever since I was born.";
-						next;
-						mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before.";
-						next;
-						mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
-						next;
-						mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
-						next;
-						mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
-						next;
-						mes " Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Izlude 'The Lost dream mermaid' --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3252,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 17000,8000;
-						erasequest 3252;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 4:
-				if (checkquest(3254) <= 0) {
-					mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
-					next;
-					mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
-					next;
-					mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
-					next;
-					mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
-					next;
-					mes "You can get those materials from Sand Man, I wish you good luck!";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3254;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3254) == 1) && (countitem(7043) < 10) && (countitem(1056) < 30)) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
-						next;
-						mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
-						next;
-						mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
-						next;
-						mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
-						next;
-						mes "You can get those materials from Sand Man, I wish you good luck!";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3254) == 1) && (countitem(7043) > 9) && (countitem(1056) > 29)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 7043,10; //Fine_Sand
-						delitem 1056,30; //Grit
-						getexp 18000,8000;
-						erasequest 3254;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3254) == 2) {
-					mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
-					next;
-					mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
-					next;
-					mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
-					next;
-					mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
-					next;
-					mes "You can get those materials from Sand Man, I wish you good luck!";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3254;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
+	if (countitem(6219) < 1) {
+		mes "To get these missions, I need to Join the Eden Group first. I must find Secretary Lime Evenor and become a member.";
+		close;
+	}
+	mes "Here is the list of various adventures for level 56~70 adventurers.";
+	next;
+	mes "Lots of missions such as a Monster Hunting, Delivery Goods, Finding People.";
+	next;
+	switch(select("Mission Numbers 1~5:Mission Numbers 6~10:Mission Numbers 11~15")) {
+	case 1:
+		switch(select("What is this Bandage?:Dangerous Alligators.:That wasn't a mermaid...:My country is calling me!")) {
+			case 1: callsub L_HuntingQuest,3250,15000,5000,930,30;
+			case 2: callsub L_HuntingQuest,3251,16000,6000;
+			case 3: callsub L_HuntingQuest,3252,17000,8000;
+			case 4: callsub L_Quest,3254,18000,8000,7043,10,1056,30;
+		}
+	case 2:
+		switch(select("Hunt Wild Boar:Preparing the Summer:A Woman's Grudge:Special ingredients:Puppet Master's Agony")) {
+			case 1: callsub L_HuntingQuest,3255,16000,7000;
+			case 2: callsub L_Quest,3256,15000,5000,918,30;
+			case 3: callsub L_HuntingQuest,3257,17000,8000;
+			case 4: callsub L_Quest,3258,16000,7000,7198,40;
+			case 5: callsub L_HuntingQuest,3259,17000,7000,1060,30;
+		}
+	case 3:
+		switch(select("Tiresome Flies:Dangerous Munak:Make the World green:Magic Wand")) {
+			case 1: callsub L_HuntingQuest,3260,16000,6000;
+			case 2: callsub L_HuntingQuest,3261,16000,7000;
+			case 3: callsub L_Quest,3262,17000,7000,1032,40;
+			case 4: callsub L_Quest,3263,18000,8000,1021,30,7150,30;
+		}
+	}
+	end;
+
+L_Quest:
+	if (checkquest(getarg(0)) == -1) {
+		callsub L_Details, getarg(0);
+		next;
+		mes "Would you like to accept this mission?";
+		next;
+		if(select("Accept the mission.:Do not accept the mission.") == 1) {
+			if (BaseLevel < 55 || BaseLevel > 70) {
+				mes "These missions are not fit for my level. I should look for other missions.";
 				close;
 				close;
 			}
 			}
-		case 2:
-			switch (select("Hunt Wild Boar:Preparing the Summer:A Woman's Grudge:Special ingredients:Puppet Master's Agony")) {
-			case 1:
-				if (checkquest(3255) <= 0) {
-					mes "This mission is assigned by the Payon town hall.";
-					next;
-					mes "Wild animals are always annoyances to farmers.";
-					next;
-					mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
-					next;
-					mes "So, we would like to ask for the help from brave adventurers.";
-					next;
-					mes "Please, hunt 30 Savages to save our crops!";
-					next;
-					mes "You can easily find those monsters around our town and field.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Payon town hall members --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3255;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3255,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the Payon town hall.";
-						next;
-						mes "Wild animals are always an annoyance to farmers.";
-						next;
-						mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
-						next;
-						mes "So, we would like to ask for the help from brave adventurers.";
-						next;
-						mes "Please, hunt 30 Savages to save our crops!";
-						next;
-						mes "You can easily find those monsters around our town and field.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Payon town hall members --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3255,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 16000,7000;
-						erasequest 3255;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 2:
-				if (checkquest(3256) <= 0) {
-					mes "This mission is assigned by the Morroc blacksmith Aragham.";
-					next;
-					mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
-					next;
-					mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
-					next;
-					mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
-					next;
-					mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
-					next;
-					mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
-					next;
-					mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
-					next;
-					mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3256;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3256) == 1) && (countitem(918) < 30)) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the Morroc blacksmith Aragham.";
-						next;
-						mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
-						next;
-						mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
-						next;
-						mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
-						next;
-						mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
-						next;
-						mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
-						next;
-						mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
-						next;
-						mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3256) == 1) && (countitem(918) > 29)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 918,30; //Sticky_Webfoot
-						getexp 15000,5000;
-						erasequest 3256;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3256) == 2) {
-					mes "This mission is assigned by the Morroc blacksmith Aragham.";
-					next;
-					mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
-					next;
-					mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
-					next;
-					mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
-					next;
-					mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
-					next;
-					mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
-					next;
-					mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
-					next;
-					mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3256;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				close;
-			case 3:
-				if (checkquest(3257) <= 0) {
-					mes "This mission is assigned by an inventor Dorian from Izlude.";
-					next;
-					mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
-					next;
-					mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
-					next;
-					mes "Women can bring strange phenomenons with them!";
-					next;
-					mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
-					next;
-					mes "So I need to make women upset! Haha, I know what a mean idea, right?";
-					next;
-					mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
-					next;
-					mes "So I can keep observing the case.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Elegance inventor Dorian --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3257;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3257,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by an inventor Dorian from Izlude.";
-						next;
-						mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
-						next;
-						mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
-						next;
-						mes "Women can bring strange phenomenons with them!";
-						next;
-						mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
-						next;
-						mes "So I need to make women upset! Haha, I know what a mean idea, right?";
-						next;
-						mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
-						next;
-						mes "So I can keep observing the case.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Elegance inventor Dorian --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3257,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 17000,8000;
-						erasequest 3257;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 4:
-				if (checkquest(3258) <= 0) {
-					mes "This mission is assigned by Wallah from Payon.";
-					next;
-					mes "Hello, adventurer. How are you? How is your health?";
-					next;
-					mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
-					next;
-					mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
-					next;
-					mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
-					next;
-					mes "Please bring it as soon as possible, people need my medicine.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Wallah --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3258;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3258) == 1) && (countitem(7198) < 40)) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by Wallah from Payon.";
-						next;
-						mes "Hello, adventurer. How are you? How is your health?";
-						next;
-						mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
-						next;
-						mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
-						next;
-						mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
-						next;
-						mes "Please bring it as soon as possible, people need my medicine.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Wallah --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3258) == 1) && (countitem(7198) > 39)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 7198,40; //Great_Leaf
-						getexp 16000,7000;
-						erasequest 3258;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3258) == 2) {
-					mes "This mission is assigned by Wallah from Payon.";
-					next;
-					mes "Hello, adventurer. How are you? How is your health?";
-					next;
-					mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
-					next;
-					mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
-					next;
-					mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
-					next;
-					mes "Please bring it as soon as possible, people need my medicine.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Wallah --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3258;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
+			setquest getarg(0);
+			mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
+			next;
+			mes "This mission doesn't have time limits.";
+		}
+		close;
+	}
+	if (getargcount() > 5) {
+		if (countitem(getarg(5)) < getarg(6))
+			set .@items,1; //incomplete
+		else
+			set .@items,2; //complete
+	}
+	if (checkquest(getarg(0)) < 2 && (countitem(getarg(3)) < getarg(4) || .@items == 1)) {
+		mes "You have an on-going mission. Would you like to check the details?";
+		next;
+		if(select("Check the details.:Cancel.") == 1)
+			callsub L_Details, getarg(0);
+		close;
+	} else {
+		mes "I have done pretty well for the mission. Should I report it now?";
+		next;
+		if(select("Report the mission.:Do not report it yet.") == 1) {
+			delitem getarg(3),getarg(4);
+			if (.@items)
+				delitem getarg(5),getarg(6);
+			getexp getarg(1),getarg(2);
+			erasequest getarg(0);
+			mes "You have completed the mission. Get rewards.";
+		}
+		close;
+	}
+	end;
+
+L_HuntingQuest:
+	if (checkquest(getarg(0)) == -1) {
+		callsub L_Details, getarg(0);
+		next;
+		mes "Would you like to accept this mission?";
+		next;
+		if(select("Accept the mission.:Do not accept the mission.") == 1) {
+			if (BaseLevel < 55 || BaseLevel > 70) {
+				mes "These missions are not fit for my level. I should look for other missions.";
 				close;
 				close;
-			case 5:
-				if (checkquest(3259) <= 0) {
-					mes "This mission is assigned by puppet master Woonute from Geffen.";
-					next;
-					mes "You know being a puppet master is kind of a hard job to satisfy people.";
-					next;
-					mes "People can search and see so many different things on their own thesedays.";
-					next;
-					mes "Their expectations are getting high, I can't satisfy them anymore.";
-					next;
-					mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
-					next;
-					mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Puppet Master Woonute --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3259;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3259,HUNTING) == 1) && (countitem(1060) < 30)) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by puppet master Woonute from Geffen.";
-						next;
-						mes "You know being a puppet master is kind of a hard job to satisfy people.";
-						next;
-						mes "People can search and see so many different things on their own thesedays.";
-						next;
-						mes "Their expectations are getting high, I can't satisfy them anymore.";
-						next;
-						mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
-						next;
-						mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Puppet Master Woonute --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3259,HUNTING) == 2) && (countitem(1060) > 29)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 1060,30; //Golden_Hair
-						getexp 17000,7000;
-						erasequest 3259;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			}
-		case 3:
-			switch (select("Tiresome Flies:Dangerous Munak:Make the World green:Magic Wand")) {
-			case 1:
-				if (checkquest(3260) <= 0) {
-					mes "This mission is assigned by an exterminator from Prontera.";
-					next;
-					mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
-					next;
-					mes "People in Prontera cannot sleep because of all the bugs in their house.";
-					next;
-					mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- The Prontera exterminator --";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3260;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-							mes "These missions are not fit for my level. I should look for other missions.";
-							close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3260,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by an exterminator from Prontera.";
-						next;
-						mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
-						next;
-						mes "People in Prontera cannot sleep because of all the bugs in their house.";
-						next;
-						mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- The Prontera exterminator --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3260,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 16000,6000;
-						erasequest 3260;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 2:
-				if (checkquest(3261) <= 0) {
-					mes "This mission is assigned by Cheese Dongja from Payon.";
-					next;
-					mes "Have you heard about Munak?";
-					next;
-					mes "The ugly monster Munak is threatening people in Payon.";
-					next;
-					mes "So we need brave adventurers like you!";
-					next;
-					mes "Please hunt 30 Munaks then Payon will be in peace.";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "- Payon Cheese Dongja -";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3261;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3261,HUNTING) == 1) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by Cheese Dongja from Payon.";
-						next;
-						mes "Have you heard about Munak?";
-						next;
-						mes "The ugly monster Munak is threatening people in Payon.";
-						next;
-						mes "So we need brave adventurers like you!";
-						next;
-						mes "Please hunt 30 Munaks then Payon will be in peace.";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "- Payon Cheese Dongja -";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if (checkquest(3261,HUNTING) == 2) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						getexp 16000,7000;
-						erasequest 3261;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 3:
-				if (checkquest(3262) <= 0) {
-					mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
-					next;
-					mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
-					next;
-					mes "Planting flowers can make the world green and it will be so pretty everywhere.";
-					next;
-					mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
-					next;
-					mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
-					next;
-					mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Morroc Ibraham --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3262;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3262) == 1) && (countitem(1032) < 40)) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
-						next;
-						mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
-						next;
-						mes "Planting flowers can make the world green and it will be so pretty everywhere.";
-						next;
-						mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
-						next;
-						mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
-						next;
-						mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Morroc Ibraham --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3262) == 1) && (countitem(1032) > 39)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 1032,40; //Blossom_Of_Maneater
-						getexp 17000,7000;
-						erasequest 3262;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
-			case 4:
-				if (checkquest(3263) <= 0) {
-					mes "This mission is assigned by the Payon blacksmith Antonio.";
-					next;
-					mes "Magic wand! Have you heard about it? It is an incredible wand!";
-					next;
-					mes "If you say the magic words and swing the wand, it will make your wishes come true.";
-					next;
-					mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
-					next;
-					mes "To make the wand, I need some special materials.";
-					next;
-					mes "Please bring me 30 Dokebi Horns and 30 Bamboo Cut. If you do so, I will lend you my magic wand once. Haha, good deal?";
-					next;
-					mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-					next;
-					mes "-- Payon blacksmith Antonio --";
-					next;
-					mes " ";
-					next;
-					switch (select("Accept the mission.:Do not accept the mission.")) {
-					case 1:
-						if ((BaseLevel > 54) && (BaseLevel < 71)) {
-							setquest 3263;
-							mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
-							next;
-							mes "This mission doesn't have time limits.";
-							close;
-						}
-						mes "These missions are not fit for my level. I should look for other missions.";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3263) == 1) && ((countitem(1021) < 30) || (countitem(7150) < 30))) {
-					mes "You have an on-going mission. Would you like to check the details?";
-					next;
-					switch (select("Check the details.:Cancel.")) {
-					case 1:
-						mes "This mission is assigned by the Payon blacksmith Antonio.";
-						next;
-						mes "Magic wand! Have you heard about it? It is an incredible wand!";
-						next;
-						mes "If you say the magic words and swing the wand, it will make your wishes come true.";
-						next;
-						mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
-						next;
-						mes "To make the wand, I need some special materials.";
-						next;
-						mes "Please bring me 30 Dokebi Horns and 30 Bamboo Cut. If you do so, I will lend you my magic wand once. Haha, good deal?";
-						next;
-						mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
-						next;
-						mes "-- Payon blacksmith Antonio --";
-						close;
-					case 2:
-						close;
-					}
-				}
-				if ((checkquest(3263) == 1) && (countitem(1021) > 29) && (countitem(7150) > 29)) {
-					mes "I have done pretty well for the mission. Should I report it now?";
-					next;
-					switch (select("Report the mission.:Do not report it yet.")) {
-					case 1:
-						delitem 1021,30; //Dokkaebi_Horn
-						delitem 7150,30; //Bamboo_Cut
-						getexp 18000,8000;
-						erasequest 3263;
-						mes "You have completed the mission. Get rewards.";
-						close;
-					case 2:
-						close;
-					}
-				}
 			}
 			}
+			setquest getarg(0);
+			mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
+			next;
+			mes "This mission doesn't have time limits.";
+		}
+		close;
+	}
+	if (getargcount() > 3) {
+		if (countitem(getarg(3)) < getarg(4))
+			set .@items,1; //incomplete
+		else
+			set .@items,2; //complete
+	}
+	if (checkquest(getarg(0),HUNTING) < 2 || .@items == 1) {
+		mes "You have an on-going mission. Would you like to check the details?";
+		next;
+		if(select("Check the details.:Cancel.") == 1)
+			callsub L_Details, getarg(0);
+		close;
+	} else if (checkquest(getarg(0),HUNTING) == 2) {
+		mes "I have done pretty well for the mission. Should I report it now?";
+		next;
+		if(select("Report the mission.:Do not report it yet.") == 1) {
+			if (.@items)
+				delitem getarg(3),getarg(4);
+			getexp getarg(1),getarg(2);
+			erasequest getarg(0);
+			mes "You have completed the mission. Get rewards.";
 		}
 		}
+		close;
+	}
+	end;
+
+L_Details:
+	switch(getarg(0)){
+	case 3250:
+		mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
+		next;
+		mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
+		next;
+		mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
+		next;
+		mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "- Rekenber corporation chief director 'Julie E Delph' -";
+		break;
+	case 3251:
+		mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
+		next;
+		mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
+		next;
+		mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
+		next;
+		mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		break;
+	case 3252:
+		mes "This mission is assigned by an unknown client from Izlude.";
+		next;
+		mes "I have admired the beach of Izlude, ever since I was born.";
+		next;
+		mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before...";
+		next;
+		mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
+		next;
+		mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
+		next;
+		mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
+		next;
+		mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Izlude 'The Lost dream mermaid' --";
+		break;
+	case 3254:
+		mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
+		next;
+		mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
+		next;
+		mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
+		next;
+		mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
+		next;
+		mes "You can get those materials from Sand Man, I wish you good luck!";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
+		break;
+	case 3255:
+		mes "This mission is assigned by the Payon town hall.";
+		next;
+		mes "Wild animals are always annoyances to farmers.";
+		next;
+		mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
+		next;
+		mes "So, we would like to ask for the help from brave adventurers.";
+		next;
+		mes "Please, hunt 30 Savages to save our crops!";
+		next;
+		mes "You can easily find those monsters around our town and field.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Payon town hall members --";
+		break;
+	case 3256:
+		mes "This mission is assigned by the Morroc blacksmith Aragham.";
+		next;
+		mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
+		next;
+		mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
+		next;
+		mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
+		next;
+		mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
+		next;
+		mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
+		next;
+		mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
+		next;
+		mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
+		break;
+	case 3257:
+		mes "This mission is assigned by an inventor Dorian from Izlude.";
+		next;
+		mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
+		next;
+		mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
+		next;
+		mes "Women can bring strange phenomenons with them!";
+		next;
+		mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
+		next;
+		mes "So I need to make women upset! Haha, I know what a mean idea, right?";
+		next;
+		mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
+		next;
+		mes "So I can keep observing the case.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Elegance inventor Dorian --";
+		break;
+	case 3258:
+		mes "This mission is assigned by Wallah from Payon.";
+		next;
+		mes "Hello, adventurer. How are you? How is your health?";
+		next;
+		mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
+		next;
+		mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
+		next;
+		mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
+		next;
+		mes "Please bring it as soon as possible, people need my medicine.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Wallah --";
+		break;
+	case 3259:
+		mes "This mission is assigned by puppet master Woonute from Geffen.";
+		next;
+		mes "You know being a puppet master is kind of a hard job to satisfy people.";
+		next;
+		mes "People can search and see so many different things on their own thesedays.";
+		next;
+		mes "Their expectations are getting high, I can't satisfy them anymore.";
+		next;
+		mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
+		next;
+		mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Puppet Master Woonute --";
+		break;
+	case 3260:
+		mes "This mission is assigned by an exterminator from Prontera.";
+		next;
+		mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
+		next;
+		mes "People in Prontera cannot sleep because of all the bugs in their house.";
+		next;
+		mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- The Prontera exterminator --";
+		break;
+	case 3261:
+		mes "This mission is assigned by Cheese Dongja from Payon.";
+		next;
+		mes "Have you heard about Munak?";
+		next;
+		mes "The ugly monster Munak is threatening people in Payon.";
+		next;
+		mes "So we need brave adventurers like you!";
+		next;
+		mes "Please hunt 30 Munaks then Payon will be in peace.";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "- Payon Cheese Dongja -";
+		break;
+	case 3262:
+		mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
+		next;
+		mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
+		next;
+		mes "Planting flowers can make the world green and it will be so pretty everywhere.";
+		next;
+		mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
+		next;
+		mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
+		next;
+		mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Morroc Ibraham --";
+		break;
+	case 3263:
+		mes "This mission is assigned by the Payon blacksmith Antonio.";
+		next;
+		mes "Magic wand! Have you heard about it? It is an incredible wand!";
+		next;
+		mes "If you say the magic words and swing the wand, it will make your wishes come true.";
+		next;
+		mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
+		next;
+		mes "To make the wand, I need some special materials.";
+		next;
+		mes "Please bring me 30 Dokebi Horns and 30 Bamboo Cut. If you do so, I will lend you my magic wand once. Haha, good deal?";
+		next;
+		mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
+		next;
+		mes "-- Payon blacksmith Antonio --";
+		break;
 	}
 	}
-	mes "To get these missions, I need to Join the Eden Group first. I must find Secretary Lime Evenor and become a member.";
-	close;
+	return;
 }
 }

+ 2 - 2
npc/re/quests/eden/eden_common.txt

@@ -68,12 +68,12 @@ moc_para01,27,35,5	script	Secretary Lime Evenor	952,{
 					mes "Let me see.";
 					mes "Let me see.";
 					next;
 					next;
 					mes "[Lime Evenor]";
 					mes "[Lime Evenor]";
-					mes "Your name is ^3131FFBo"+.@input$+"Ba^000000..? Is that right?";
+					mes "Your name is ^3131FFBo"+.@input$+"Ba^000000...? Is that right?";
 					mes "Huh? Isn't it??";
 					mes "Huh? Isn't it??";
 					next;
 					next;
 					emotion e_swt;
 					emotion e_swt;
 					mes "[Lime Evenor]";
 					mes "[Lime Evenor]";
-					mes "Hmm that isn't what you wrote?.";
+					mes "Hmm, that isn't what you wrote?";
 					mes "Ok, hmm, it seems a bit hard to read.";
 					mes "Ok, hmm, it seems a bit hard to read.";
 					next;
 					next;
 					mes "[Lime Evenor]";
 					mes "[Lime Evenor]";

+ 274 - 0
npc/re/quests/quests_malaya.txt

@@ -0,0 +1,274 @@
+//===== rAthena Script =======================================
+//= Port Malaya Quest NPCs
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 0.1
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Quest NPCs related to Port Malaya.
+//===== Additional Comments: =================================
+//= 0.1 Traders only. Adapted from Masao's conversion. [Euphy]
+//============================================================
+
+// Traders
+//============================================================
+ma_fild01,166,214,6	script	Old Man in Dilemma#GA	575,{
+	if (MaxWeight - Weight < 600 || checkweight(1201,1) == 0) {
+		mes "Cannot proceed because you have too many items in your possession.";
+		close;
+	}
+	mes "[Old Man in Dilemma]";
+	mes "Oh! Demons are gaining more and more power in this world.";
+	next;
+	switch(select("We need to gather items to fight them off.:Ignore.")) {
+	case 1:
+		if (countitem(6497) >= 3 && Zeny >= 1000) {
+			mes "[Old Man in Dilemma]";
+			mes "You don't seem to be strong enough to fight off demons.";
+			next;
+			mes "[Old Man in Dilemma]";
+			mes "Will you create a Greater Agimat of Ancient Spirit with 3 Lesser Agimats and 1,000 Zeny?";
+			next;
+			if(select("Create.:No, thank you.") == 1) {
+				if (countitem(6497) >= 3 && Zeny >= 1000) {
+					specialeffect2 EF_CONE;
+					specialeffect EF_FORESTLIGHT2;
+					set Zeny, Zeny-1000;
+					getitem 12775,1; //Ancient_Spirit_Agimat
+				} else {
+					mes "[Old Man in Dilemma]";
+					mes "Short on materials.";
+					close;
+				}
+			}
+			mes "[Old Man in Dilemma]";
+			mes "Hope you win the fight with the demon.";
+			close;
+		}
+		mes "[Old Man in Dilemma]";
+		mes "Can't make it now but there is an old way of making it handed down by generations.";
+		next;
+		mes "[Old Man in Dilemma]";
+		mes "You need to call upon the power of Ancient Spirits. But you'll need several important materials first.";
+		next;
+		select("What are they?");
+		mes "[Old Man in Dilemma]";
+		mes "3 Lesser Agimats to hold the power of Ancient Spirits here and another special material handed down for generations.";
+		next;
+		mes "[Old Man in Dilemma]";
+		mes "But nobody can get this special item anymore.";
+		next;
+		select("Something money cannot buy?");
+		mes "[Old Man in Dilemma]";
+		mes "No, no... It's this round little thing, you see?";
+		next;
+		select("Are you talking about Zeny?");
+		mes "[Old Man in Dilemma]";
+		mes "Looks similar to the special items handed down from generations.";
+		next;
+		mes "[Old Man in Dilemma]";
+		mes "As long as we have enough of that, we could make the Greater Agimat of Ancient Spirit to fight against the demons.";
+		next;
+		select("Sounds good.");
+		mes "[Old Man in Dilemma]";
+		mes "In case you are too weary to take on the demons...";
+		next;
+		mes "[Old Man in Dilemma]";
+		mes "Come by with 3 Lesser Agimats and 1,000 of those so-called Zeny.";
+		next;
+		mes "[Old Man in Dilemma]";
+		mes "I will make a Greater Agimat of Ancient Spirit that will increase your attacks against demons by 10% for 20 min.";
+		close;
+	case 2:
+		mes "[Old Man in Dilemma]";
+		mes "Hope you win the fight with the demon.";
+		close;
+	}
+}
+
+ma_fild01,238,198,4	script	Tikbalang Expert#malaya	582,{
+	if (MaxWeight - Weight < 50 || checkweight(1201,1) == 0) {
+		mes "Cannot proceed because you have too many items in your possession.";
+		close;
+	}
+	mes "[Tikbalang Expert]";
+	mes "I spent 90% of my life studying Tikbalang.";
+	next;
+	switch(select("But you look young?:What is Tikbalang?:Teach me how to catch a Tikbalang.")) {
+	case 1:
+		mes "[Tikbalang Expert]";
+		mes "What! I might be imagining things.";
+		next;
+		mes "[Tikbalang Expert]";
+		mes "I look younger than I am because of my baby face. Ha ha ha~";
+		next;
+		select("... ... ...");
+		mes "[Tikbalang Expert]";
+		mes "Trust!! They say faith will bring you luck.";
+		close;
+	case 2:
+		mes "[Tikbalang Expert]";
+		mes "Ha ha... You ask the right question.";
+		mes "I'm a specialist in that field. Ask me anything.";
+		next;
+		select("Why won't you answer me?");
+		mes "[Tikbalang Expert]";
+		mes "Have you... ever been fooled by anyone around you? Why can't you believe someone's word for it? Really, ask me anything.";
+		next;
+		while(1) {
+			switch(select("I don't have any questions.:Characteristics?:Features?:Rumors?:Habitat?")) {
+			case 1:
+				mes "[Tikbalang Expert]";
+				mes "I think this is enough explanation for now. You wouldn't understand other highly sophisticated topics with specific terminology and all anyway.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Oh! Do you have any other questions?";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "What do you think? Impressed at how much I know? Come by anytime when you have any more questions.";
+				close;
+			case 2:
+				mes "[Tikbalang Expert]";
+				mes "Tikbalangs have a way to confuse travelers when they meet them by making them turn in circles regardless of wherever and how far they travel.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "They are mischievous creatures.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "But of course there is a way to stop their pranks. You know about the Inside-out Shirt? You can either wear your top inside-out.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Or go on your way quietly without disrupting the Tikbalangs.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Ha ha ha ha~ But everyone knows adventurers are never quiet while they travel, right?";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Never...";
+				break;
+			case 3:
+				mes "[Tikbalang Expert]";
+				mes "They say Tikbalangs have several distinctions.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "First, they are very tall ^AAAAAA(tsk... wish I were tall)^000000 and have skinny, imbalanced legs and arms. Looks almost like a human but their knees are higher than their upper body when they sit down.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Second, is the standard characteristics acknowledged by the association. They have heads and feet like a horse.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "So with all these appearance traits, Tikbalang is sometimes called the creature from hell.";
+				break;
+			case 4:
+				mes "[Tikbalang Expert]";
+				mes "There are several fun rumors about Tikbalangs.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "One of them is about Tikbalangs being the guardians of some kingdom that worships nature.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "So the Tikbalangs will trick travelers who come with bad intentions to the kingdom by making them travel in circles.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Another rumor is that people around here say that 'if it rains on a clear day, then it must be Tikbalang's wedding day'.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "The association speculates that sayings like 'it rains on Bathory's wedding day' or 'it rains on Moonlight Flower's wedding day' might have derived from the Tikbalang's saying.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Lastly, ancient fairy tales say that Tikbalangs can transform into human form or even make themselves transparen't but nobody has verified this yet.";
+				break;
+			case 5:
+				mes "[Tikbalang Expert]";
+				mes "Tikbalangs usually live in dark, busy places where there aren't many people around.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "Hmm... For example, they are known to live beneath bridges, in banana and bamboo forests and beneath large trees.";
+				next;
+				mes "[Tikbalang Expert]";
+				mes "And this is just my opinion but wouldn't you agree that they are living in dark places because it is easier to play pranks on people?";
+				break;
+			}
+			next;
+		}
+	case 3:
+		mes "[Tikbalang Expert]";
+		mes "Ha ha ha. Do you now know how great I am?";
+		next;
+		if (countitem(6496) >= 3 && countitem(6497) >= 5) {
+			mes "[Tikbalang Expert]";
+			mes "Oh! Isn't this material to make 'Tikbalang Belt' used to tame Tikbalangs?";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "The '^F80835Tikbalang Belt^000000' is used to capture Tikbalangs without the hassle. But that doesn't mean it's 100% successful. Interested? Do you want me to make one for you?";
+			next;
+			switch(select("Yes, Im interested.:No, I can capture one myself.")) {
+			case 1:
+				delitem 6496,3; //Tikbalang_Thick_Spine
+				getitem 12699,1; //Tikbalang_Belt
+				mes "[Tikbalang Expert]";
+				mes "Yiiiiiiiiiiii! Yap!";
+				next;
+				specialeffect EF_SONICBLOW2;
+				select("Huh?");
+				mes "[Tikbalang Expert]";
+				mes "The '^F80835Tikbalang Belt^000000' is already created.";
+				close;
+			case 2:
+				mes "[Tikbalang Expert]";
+				mes "You? Ha... You can try if you want to.";
+				close;
+			}
+		}
+		mes "[Tikbalang Expert]";
+		mes "There is the easy way and the hard way to capture Tikbalangs. Which one do you prefer?";
+		next;
+		switch(select("Easy way.:Hard way.")) {
+		case 1:
+			mes "[Tikbalang Expert]";
+			mes "Ha ha. I've come up with the easy way myself.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Bring me 3 Tikbalang's Thick Spines and 5 Lesser Agimats to make a '^F80835Tikbalang Belt^000000' to help you easily capture Tikbalangs.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Ha ha ha ha ha!";
+			mes "I will say it again.";
+			mes "It's 3 Tikbalang's Thick Spines and 5 Lesser Agimats. Understood?";
+			close;
+		case 2:
+			mes "[Tikbalang Expert]";
+			mes "It's easy for me but I don't know about you.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Tikbalangs have a sharp, pointy mane behind their neck.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Of course! There are several of them but you must get the three thickest ones.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "These three manes are the weak point. You can tame a Tikbalang by pulling the manes out.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Now let me explain how to pull these manes out.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "You must fly like a butterfly and land like a bee on the back of a Tikbalang.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Of course! The Tikbalang will get mad and try to shake you off with all its might.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "All you have to do is hold on until the Tikbalang gets exhausted.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Then again, itll take 4 days and 3 nights for Tikbalangs to get tired since they are strong creatures. But let's not focus on too much details.";
+			next;
+			mes "[Tikbalang Expert]";
+			mes "Which means!! The Tikbalang is already tamed.";
+			close;
+		}
+	}
+}

+ 1 - 0
npc/re/scripts_athena.conf

@@ -96,5 +96,6 @@ npc: npc/re/quests/quests_dicastes.txt
 npc: npc/re/quests/quests_izlude.txt
 npc: npc/re/quests/quests_izlude.txt
 npc: npc/re/quests/quests_lighthalzen.txt
 npc: npc/re/quests/quests_lighthalzen.txt
 npc: npc/re/quests/quests_malangdo.txt
 npc: npc/re/quests/quests_malangdo.txt
+npc: npc/re/quests/quests_malaya.txt
 npc: npc/re/quests/quests_mora.txt
 npc: npc/re/quests/quests_mora.txt
 npc: npc/re/quests/quests_veins.txt
 npc: npc/re/quests/quests_veins.txt

+ 1 - 0
npc/scripts_athena.conf

@@ -220,6 +220,7 @@ npc: npc/quests/gunslinger_quests.txt
 npc: npc/quests/juice_maker.txt
 npc: npc/quests/juice_maker.txt
 npc: npc/quests/kiel_hyre_quest.txt
 npc: npc/quests/kiel_hyre_quest.txt
 npc: npc/quests/lvl4_weapon_quest.txt
 npc: npc/quests/lvl4_weapon_quest.txt
+npc: npc/quests/mage_solution.txt
 npc: npc/quests/monstertamers.txt
 npc: npc/quests/monstertamers.txt
 npc: npc/quests/mrsmile.txt
 npc: npc/quests/mrsmile.txt
 npc: npc/quests/ninja_quests.txt
 npc: npc/quests/ninja_quests.txt